Find Weak Project Margins with an OpenAir Heat Map Report

Read a NetSuite OpenAir billing-margin heat map grouped by class, project and job code, and drill from a slipping practice to the project and roles behind it.

The quick answer

Open a billing-margin report in NetSuite OpenAir laid out as a heat map, grouped by Class, Project and Job code with a column per quarter. The report colors each value by the thresholds in its definition, so start with the class whose color slips, and confirm it with the numbers. Expand it to see its projects, then expand the weakest project to see its job codes. In the example, Implementation drops to 68.90% in Q3 26, the ERP Rollout for Tidewater Logistics is behind it at 64.70%, and inside that project Data migration specialist (41.60%) and Trainer (12.90%, after -38.50% in Q2 26) are the job codes losing margin.

The screenshots show sample data. The person, company, client and project names are fictional.

Before you start

OpenAir is Oracle's professional services automation (PSA) application, now sold as NetSuite SuiteProjects Pro. The screens here show the OpenAir interface. It integrates with NetSuite, but it's a separate product, and this report runs in OpenAir under Reports. You need access to reporting and to the projects the report covers, and your role and access settings decide which rows you see.

The report here is a saved report someone already built. Its title reads Quarterly Companies Report - All receipts - INV - Billing margin [Heat Map], filtered by Class and Project stage, for 10/01/25 to 09/30/26. Its layout, dimensions, periods and color thresholds come from the report definition, which is configured per account. If a number surprises you, modify report shows how it's defined, if your role is allowed to open it.

Billing margin is commonly (billed revenue − cost) ÷ billed revenue. Which revenue and which costs count depends on how the report is set up, so treat that formula as a guide and the report definition as the answer. Margin isn't markup, so 75% margin is not 75% on top of cost. A billing-margin report can also disagree with a project profitability or revenue report, because they can use different revenue, costs and dates.

01. Read the class totals against the color coding

Open the heat map from Reports. Start with the Color Coding legend at the top: 0-60 red, 60-70 orange, 70-75 yellow and >= 75 green. These are this report's thresholds, not fixed OpenAir values, and the legend doesn't say which band a value of exactly 60, 70 or 75 falls into.

The report opens collapsed to its three classes, with one Billing margin (%) (USD) column per quarter from Q4 25 to Q3 26. Advisory and Managed Services are green in every quarter. Implementation is green at 77.40% in Q4 25 and 76.10% in Q1 26, then turns yellow at 72.80% in Q2 26 and orange at 68.90% in Q3 26.

Implementation slides from green to yellow to orange by Q3 26.

02. Find the project behind the class

Click the arrow next to Implementation to expand it. Its two projects appear with their Client and Project owner.

  • Hangar maintenance app for Kessel Aerospace is green at 75.80% in Q4 25, then yellow for three quarters, ending at 73.20% in Q3 26.
  • 1. ERP Rollout - Tidewater Logistics is green at 78.90% and 77.30%, yellow at 73.40% in Q2 26, and orange at 64.70% in Q3 26.

The ERP Rollout is the lower of the two and the only one in orange.

The ERP Rollout drops to 64.70% in Q3 26, while Hangar maintenance app holds at 73.20%.

03. Find the job codes behind the project

Click the arrow next to 1. ERP Rollout - Tidewater Logistics. Its job codes appear under it: Project manager, Consultant, Data migration specialist and Trainer.

  • Data migration specialist falls every quarter: 76.40%, 72.20%, 63.10% and then red at 41.60% in Q3 26.
  • Trainer shows * in Q4 25 and Q1 26, which means no data for those periods. It's -38.50% in Q2 26 and red at 12.90% in Q3 26.
  • Consultant stays green, ending at 76.90%.
  • Project manager shows * in Q4 25 and ends at 71.80%, in yellow.
Data migration specialist ends at 41.60%, and Trainer at 12.90% after -38.50% in Q2 26.

Check the result

  1. Implementation is the only class that isn't green, at 72.80% in Q2 26 and 68.90% in Q3 26.
  2. Its ERP Rollout project is 64.70% in Q3 26, below Hangar maintenance app's 73.20%.
  3. Inside the ERP Rollout, Data migration specialist (41.60%) and Trainer (12.90%) are red in Q3 26.
  4. Trainer's -38.50% in Q2 26 has no color, so you have to read it.

Two details in this report are worth knowing before you trust the colors. Negative values like Trainer's -38.50% get no color at all, so a loss can look calmer than a red cell. And the * cells for no data are still shaded green, so green alone doesn't prove a role made money in that quarter. Read the number, not just the color.

That narrows a slipping practice down to migration and training work on one project. The heat map doesn't say why. For those two job codes, check billing rates, cost rates, staffing, non-billable time, expenses and write-offs.

Common questions

What does an OpenAir heat map report show?

The same numbers as a normal report, with each value colored by thresholds set in the report. This one shows billing margin by quarter, grouped Class > Project > Job code, so a practice that slips from green to orange stands out before you read a single number. Implementation at 68.90% in Q3 26 is the first thing you see.

How is billing margin calculated in OpenAir reports?

Commonly as (billed revenue − cost) ÷ billed revenue, so 75% means three quarters of what you billed is left after cost. The report definition decides which revenue and which costs are included, so check it before comparing against another report.

Why is a billing margin negative in my OpenAir report?

Cost was higher than billed revenue for that row and period. Trainer on the ERP Rollout was -38.50% in Q2 26. In this report negative values get no color, so they don't jump out the way red cells do. Look at the time, cost rates and billing for that job code in that quarter.

How do I drill from a class to a job code in an OpenAir report?

Click the arrow next to the class to see its projects, then the arrow next to a project to see its job codes. Here that goes Implementation, then 1. ERP Rollout - Tidewater Logistics, then Data migration specialist and Trainer.

What does an asterisk (*) mean in the report?

No data for that row and period. It isn't a zero margin. In this report the asterisk cells are still shaded green, so ignore the color on those.

Can I change the heat map's color thresholds?

The thresholds live in the report definition. If your role can modify the report, change them there. The ones shown, 0-60 red up to >= 75 green, are just this report's setup.

Is billing margin the same as project profitability?

Not necessarily. A billing-margin report works from billed revenue and the costs it's set up to include, while a profitability report can use different revenue, costs and dates. Expect them to differ and compare the definitions before you pick one.