Job Status Report (JSR / PSR) — Controller Guide
The Job Status Report is the one-page-per-contract answer to "how is this job doing?" — what's funded, what's been billed, what's been spent, how much room is left, and where it's headed. On a single screen you can scan every contract, sort by size, and spot the jobs that are burning too fast or projected to overrun. This guide explains what the report shows, then walks the exact clicks to pull it, read it, and drill into one contract. It assumes you run a business but aren't necessarily a career government accountant.
For: controllers and project managers · Time: ~10 minutes · You'll need: the Accounting module.
The Job Status Report lives in the left nav under Accounting → Reports → JSR (/accounting/reports/jsr). It also sits inside the Reports library at Accounting → Reports (/accounting/reports) under the Contract Performance category. Drilling into a single contract lands you on /accounting/reports/psr/:contract_id — the Project Status Report route for that job.
Part 1 — The ideas you need first (read once)
What the JSR tells you
For each contract, the JSR lines up the numbers that matter to whoever's running the work — one row per contract, all in one table:
- Ceiling — the contract's total value.
- Funding — the amount obligated (funded) against that ceiling: base + exercised options + mods, from the contract record. Funding is what you may spend today; ceiling is what the contract could grow to.
- Revenue, Direct, Indirect, Gross Profit and Net Profit — each carries the window you are reading in its own heading, so the column says Revenue Jul in month view and Revenue YTD in year-to-date view. There is no separate set of columns for the two; one toggle moves all five.
- Direct is cost charged straight to the job — labor from timecards and vendor cost coded to the contract.
- Indirect is the contract's share of fringe, overhead and G&A.
- Gross Profit is revenue less direct cost: what the contract earns before indirect burden. If it looks wrong, check the coding on the direct side rather than the rates.
- Net Profit is revenue less direct cost and indirect burden. Green when positive, red when negative. A negative here on a contract you believe is healthy usually means cost was booked without a contract somewhere else — the footing line under the table is where you see that.
- ITD Revenue — revenue recognized from contract inception through the report month.
- Total Backlog — ceiling less ITD revenue: how much of the contract's total value is still ahead of you.
- Funded Backlog — funding less ITD revenue: how much of the obligated money is still ahead of you. This is the number to watch for a mod conversation, and the cell turns red and bold when the funding runway is short at the current pace — a job about to run dry stands out even while its dollar balance is still positive.
(The old Consumed / Remaining / Runway columns — percentages of funding measured against inception-to-date cost — are off the report. They read as opaque; the backlog columns say the same thing in dollars against revenue, which is the number a mod conversation is actually about.)
Only the five money columns follow the window. Ceiling, Funding, ITD Revenue, Total Backlog and Funded Backlog are cumulative by nature and do not move when you switch between a month and the year to date — a contract's ceiling is not a monthly quantity. Expect them to sit still while the rest of the row changes.
Together they answer three questions at a glance: are we within budget, how much room is left (in dollars and in time), and are we making money on the work.
JSR vs. PSR — same numbers, two audiences
- JSR is the internal operating-management view — the portfolio table you scan as a PM or controller.
- PSR (Project Status Report) is the same picture for one contract, the format you'd hand to a customer as a CDRL deliverable on contracts that require it. In Arcvue you reach the PSR by clicking a contract name on the JSR — it opens that contract's status route.
Same underlying data, different lens: the JSR is the whole portfolio; the PSR is one job.
Where the numbers come from
The JSR is a view, not a separate set of books. It's assembled from data you already maintain — the contract's funding (the contract record), incurred costs and allocated indirect (the ledger), and recognized revenue. Because it reads the ledger, it's only as current as your last close. If a month isn't closed and its indirect hasn't been allocated, that contract's costs will look light until you close.
What period the report shows
The JSR always reports as of a period — a specific month and year. It defaults to the last closed period, and the header tells you which one ("as of {Month} {Year}"). Pick a different month with the Reporting period picker beside the title (see Part 2, Step 3). This is a read/monitor screen — you don't edit any numbers here; you fix problems at their source (the close, the ledger, or the contract record) and the JSR follows.
What Arcvue deliberately will not do
- It won't show a rosier remaining than the ledger supports — actuals are actuals.
- It won't invent funding — the funded column comes from the contract's recorded funding, so if it looks wrong, fix it on the contract, not here.
Part 2 — How to run it
Step 1 — Open the Job Status Report
In the left nav, go to Accounting → Reports → JSR. The page header reads Job Status Report with the sub-line "Per-contract revenue, cost, and burn — as of {Month} {Year}" so you can confirm which period you're looking at.
Alternatively, open the Reports library at Accounting → Reports, click the Contract Performance category in the left column, and press Preview on the Job Status Report (JSR) card. (The Project Status Report (PSR) card in the same category previews to this same JSR page — you pick the single contract from here.)
The top of the page shows four summary cards: Contracts (how many are in the report), Funded (portfolio total), Revenue and Net Profit — the last two carrying the reporting window in their labels, and Net Profit shown green if positive, red if negative. Read these first for the health of the whole book of business.
Step 2 — Read the portfolio table
Below the cards is the contract table. It's sorted largest-funded first, so your biggest jobs are at the top. The columns, left to right, are: Contract (name, with the contract number underneath), Type (T&M, FFP, CPFF, CPAF, and so on), Ceiling, Funding, Revenue, Direct, Indirect, Gross Profit, Net Profit, ITD Revenue, Total Backlog, and Funded Backlog — with the five money columns labeled for whichever window you are reading.
Above the table, the Contract status filter narrows it to all, active
or closed. It appears on the portfolio view only — inside a single
contract's report there is nothing to filter — and on a narrow screen it is
hidden rather than wrapped. On a tenant carrying several years of finished
work, active is what makes the table readable.
Scan for the color cues — they're the whole point of the layout:
- Funded Backlog in red bold → the funding runway is short at the current pace; a mod conversation should start now, not when the balance hits zero.
- Net Profit in red → the job is running at a loss over the window you are reading. Check Gross Profit beside it: positive gross with negative net means indirect burden is what put it under.
Step 3 — (Optional) look at a different period
Two controls, and they answer different questions.
The Reporting window toggle, above the table, switches between the reporting month (the button carries the month and year, e.g. Jul 2026) and Year to date. This changes what the five money columns and the two money cards measure, and every affected heading renames itself so the table always says which window you are reading. Ceiling, Funding, ITD Revenue, Total Backlog and Funded Backlog do not move.
Which month is the Reporting period picker beside the title. It opens on the last closed period, and every month in its list carries a Closed, Locked or Open pill, so you can see which months are finished before you pick one. An Open month is still being posted to, so its numbers will move. The header's "as of" line confirms the month you are reading. A link can still carry the month — /accounting/reports/jsr?y=2026&m=5 opens May 2026 — and arriving from another screen brings that screen's month with you.
Step 3b — Read the footing line
Under the table is a footing that ties the contract rows to the income statement for the same window. It is the answer to "these rows look right, so why doesn't the P&L agree", and it has two halves.
Not charged to a contract — revenue, direct and indirect that landed in the ledger against no contract. Anything here is in your income statement and in none of the rows above, so it is the first place to look when the table foots low.
Income statement — the same three figures straight from the ledger for that window, so you can see the gap rather than compute it.
The indirect figures are deliberately not the same number, and that is not an error. Indirect by contract is the filed provisional rate applied to each contract's base; the income-statement figure is the pools' actual cost. The difference is over/under absorption, and the footing is where it shows.
Where a tenant has cut over to Arcvue's own ledger part-way through a year, the line also names the month that happened: figures from then on come from Arcvue, and earlier months are carried from the prior system by project.
Step 4 — Drill into one contract (the PSR view)
To go from the portfolio to a single job, click the contract's name in the leftmost column. That opens the contract's Project Status Report (/accounting/reports/psr/{contract_id}), carrying the same period forward: the same funding and P&L columns scoped to that one contract, with the summary cards recomputed for it (the first card shows its Type) and the portfolio footing set aside — a ledger tie across one contract is not meaningful. Back to Job Status Report returns to the portfolio at the same period.
Below the contract's row sits Hours by Person — hours charged to this contract, by individual and month. It exists for one question: is someone burning through their hours — especially a part-time person working against a weekly schedule. A person's row carries their roster context (% FTE and h/wk scheduled) when they are less than full-time, so the reader does not have to remember who is part-time. The All hours row totals each month; the Total column totals each person.
Two windows, one toggle — the Hours window control above the table:
| Window | What it covers |
|---|---|
| Calendar year | January through December of the current year |
| Contract year | The current funded Base period or Option year, resolved from the dates on the contract record. The panel names which one it found and its exact dates. |
Things the panel tells you rather than hiding:
- Hours are as entered on timecards — including entries not yet certified or approved (approval happens at period close, and waiting for it would hide the month you are asking about). The panel states the latest charge date it has, so you know how current it is.
- Indirect time never appears. PTO, holiday and overhead hours are charged to pools, not contracts, so they are not part of a contract's hours by construction.
- Boundary months are partial by design. A contract year that starts September 10 counts September hours from the 10th onward.
- An option year counts as exercised once the contract's period of performance covers it, whether or not the record marks it. When the period of performance runs past the last dated option, the missing years are filled in a year at a time, continuing the record's numbering, with a note that their dates were derived from the period of performance; record the option periods on the contract to make them explicit. Nothing is filled in past the period of performance end.
- An option year that is not marked exercised and is not covered by the period of performance still shows its hours when today falls inside its dates, with a note saying the contract record needs the exercise recorded.
- If the contract record carries no base or option dates, the contract-year view says so and names the fix — add the dates to the contract record. It never silently substitutes a calendar year.
The Download button in the top-right corner (its tooltip reads Export to Excel) streams the full report as a spreadsheet — Job_Status_Report_<year>-<month>.xlsx, built server-side from the same query behind the on-screen table. It enables as soon as the period has contracts.
One thing to know before you send it to anyone: the export always contains every contract for the period, regardless of the All / Active / Expired filter you have set on screen. The filter narrows the table only. So if you filtered to Active and then downloaded, the file will still include the expired contracts — check the file rather than assuming it matches the page.
Next to it, the contract-status filter — All / Active / Closed — narrows the report by the contract's own status tag, which is kept in step with the FP&A Contracts Portfolio active/inactive tags. It is not a period-of-performance guess: a contract whose PoP is still open but whose work is wound down reads Closed here because the portfolio says so, and the fix for a wrong status is the portfolio tag, not this screen. The summary cards recompute from the filtered set, so the cards always match the table you are looking at. Use Active when you are reviewing work in flight and do not want closed-out contracts padding the page. (In the Reports library, a report that can produce a file has a working Download; one that cannot says so — "No file export for this report yet — open Preview to view it" — so the button tells you which kind you are looking at.)
Step 5 — Act on what you see
The JSR earns its keep by driving decisions:
- Funded Backlog thin or red → start the funding (mod) conversation before you run out.
- Funded Backlog negative → recognized revenue has passed the obligated funding; stop and reconcile before it becomes an unallowable overrun.
- Margin negative → the job is losing money; find out why (mispriced, over-running labor, indirect heavier than bid).
- Costs look suspiciously light → the period may not be closed yet (see Part 3).
Part 3 — When something looks wrong
"The actuals look too low"
The JSR reflects only what's posted through the reporting period. If a month isn't closed — or is closed but its indirect allocation hasn't run — that contract's Direct and especially Indirect YTD will look light, which also makes Net Profit look better than reality (the backlog columns move with recognized revenue, so they understate rather than flatter). Confirm the period you're viewing is closed (and allocation has run) before treating the numbers as final. See Close a Month (Period Close).
"Funded Backlog doesn't match what I think is left"
The Ceiling and Funding columns come from the contract record — base value plus exercised options plus mods, kept in step with the FP&A Contracts Portfolio. If either looks off, the contract record is wrong or stale. Fix it on the contract, not on this report, and the JSR will follow. This report never edits funding.
"Funded Backlog is negative — is that a bug?"
No — it means recognized revenue has passed the obligated funding on that contract. Either funding hasn't caught up to a mod that's already been signed (fix the contract record), or you are working past the money (act on it). Don't ignore it.
"Funded Backlog is red but the balance is still positive"
The red is a runway signal, not a balance signal: at the contract's current pace, the remaining funding runs out soon. A positive balance with a short runway is exactly the moment a mod conversation still has time to land — that's why it turns red before the balance does.
"A person I expect is missing from Hours by Person"
They have no timecard hours charged to this contract in the window you are reading. Time charged to a different contract, indirect time (PTO, holiday, overhead — charged to pools), and discarded entries never appear here. Switch the window toggle before concluding anything: a person can be present in the contract year and absent from the calendar year, or the reverse.
"The Contract year toggle says no dates are recorded"
The contract record has no base or option period dates, so there is no contract year to resolve. Add the base period (and option periods as they are exercised) on the contract record; the Calendar year view works regardless.
"Indirect YTD seems high or low on one contract"
Indirect is that contract's allocated share of fringe/overhead/G&A, driven by your indirect rates and its direct base. If it looks off across the board, the issue is upstream in the rates or the allocation, not the JSR. See Indirect Rates.
"I can't export it"
Export works — use Download in the top right (tooltip: Export to Excel). If the button is grayed out, the period you selected has no contracts at all, so check the month. The contract-status filter cannot gray it out — that filter narrows the table on screen and does not reach the export.
One-line summary
The JSR is the per-contract status view — Ceiling, Funding, the five windowed money columns, and ITD Revenue / Total Backlog / Funded Backlog, one row per contract, sorted largest first — read from your closed ledger; open it at Accounting → Reports → JSR, scan for red Funded Backlog and negative Net Profit, and click a contract name to drill into its single-contract PSR view.
Related
-
The Reports Library — every other downloadable report, the period picker that governs them, and why an open period is called out before you send one onward.
-
Freeze the month so these numbers are final → Close a Month (Period Close)
-
Understand the indirect load in the Indirect YTD column → Indirect Rates
-
Browse and preview every standard report → Reports (
/accounting/reports)