Continuous Project Revenue Recognition in AX R3 CU8
One of the requests that we have gotten over the last several years in Dynamics AX Project Accounting is for better visibility into project revenue, especially for fixed-price projects. Unlike time and materials projects (where revenue is recognized upon invoicing), revenue for fixed-price projects is recognized using the estimate system. The word estimate is a bit confusing; in this context it refers to the estimation of fixed-price project completion during project execution rather than the initial estimates of cost and duration that are made during the project planning phase. When using the "completed percentage" revenue recognition rule (specified on the project group), the amount to be recognized is calculated using the formula: Amount to Recognized = Project Contract Value * Percent Complete. The contract value is expressed as the total of the on-account transactions (milestones). For an overview of the estimate system, take a look at the e-learning courses we released a few months ago.
Although it was certainly possible to get revenue recognition working in previous versions of Dynamics AX, there were several limitations. First, the estimate process was very slow for projects with a large number of transactions. We addressed this issue in the R3 release by making some optimization in the estimate creation code. Here are some representative numbers from our improvements to the estimate creation process.
Hour Transactions |
AX 2012 CU7 Time (seconds) |
AX 2012 R3 Time (seconds) |
500 |
3 |
3 |
1000 |
5 |
3 |
5000 |
19 |
5 |
10000 |
41 |
6 |
25000 |
107 |
9 |
50000 |
215 |
17 |
100000 |
431 |
26 |
250000 |
1198 |
68 |
500000 |
2935 |
99 |
As you can see, even estimates for projects with a large number (500K) of transactions can now be created or recalculated in a few minutes.
The second limitation was the difficulty in setting up a periodic batch process for the estimate system. You are only allowed to create a single estimate per project per period and any transactions that are posted after an estimate is created are not reflected in the estimate unless you use the Recalculate estimates periodic process or delete the estimate and recreate it. In the upcoming cumulative update 8 (CU8) release, we are making some changes in the periodic Create estimates form to support running the estimate system as an automated process for all fixed price projects.
First, we have made the Period code field optional. This means it will run for every project in the system, even if they are using different revenue recognition period codes (monthly, bi-monthly, etc.). Second, we have made the Estimate date field optional so you do not have to create a batch job each period. For example, if you are recognizing revenue on a monthly basis, you can set up a single batch job that runs all year long instead of different jobs for January, February, etc.
Finally, we have added the behavior that if the estimate for the period has already been created, then it will simply recalculate the percentage complete based on any new transactions (or an update on the WBS effort tracking form). This means you should never need to run the Calculate estimate process again. Note that the system will not create a new estimate for a period until the estimate for the project in the previous period has been posted.
In general, I would recommend that you set the batch job recurrence at most for once or twice per day. Recalculating the estimates for medium to large projects takes a reasonable amount of processing time (all of the transactions are copied into a temp table) so running the batch too often may impact your system performance.
These changes would not be useful if you couldn't see the results. Therefore we have enhanced the Estimate form in CU8 as well. You can now access it from Project management and accounting > Inquiries > Estimates > Estimates. Here is a picture of the form:
A couple of things to notice. First, you can see all active fixed-price projects in the same form. Previously, you would have to go to the project list page, select a single project and click the Estimates button to get values for the project.
Next, we promoted the following columns to the Overview grid:
- Percentage complete
- Contract value
- invoiced revenue (per-period or accumulated)
- Accrued revenue (per-period or accumulated)
- Total cost (per-period or accumulated)
- Gross margin (per-period or accumulated)
These columns make it easy to see whether you are over-billed (billings in excess of revenue) or under-billed (revenue in excess of billings) and spot any anomalies before the end of the month.
We also added some filters to the form. For example, you can select the period for the estimates that are displayed in the form. It will default to the current period but you can select a different period to see previously posted values. We also have a Columns selector that lets you choose whether you are seeing the period to date (estimate) or project to date (accumulated) values in the grid.
Finally, you can multi-select projects on the form to post once you are satisfied with the numbers.
I hope that these changes will make it easier for you to manage your revenue in fixed-price projects.
*This post is locked for comments