The finance model contains Revenue Recognition Schedule and Revenue Recognition Schedule Line records. A due-line processor can post an existing unrecognized line by debiting deferred revenue and crediting revenue. What is not currently wired is the step that materializes schedule lines from a saved schedule header or source invoice/contract.
The demo2 create form shows only header configuration and cannot prove that period lines exist or will be generated. It is omitted rather than presenting a partial model as an unattended accounting workflow.
Implemented pieces
RevenueRecognitionService.BuildStraightLinecan calculate an even period plan in memory.- A schedule can reference deferred-revenue and revenue GL accounts and own explicit schedule lines.
VoucherPostingService.PostRevenueRecognitionLineAsyncvalidates an unrecognized positive line, creates the recognition journal and links it back to that line.- The subscription evaluator finds due, unrecognized lines on active schedules, and the processor posts them.
- Already recognized lines are rejected, which protects a materialized line from a second posting.
Missing end-to-end connection
No production caller was found that invokes the straight-line builder and persists its calculated rows when a schedule is created. An invoice or contract also does not automatically create those lines in the audited flow. The scheduler cannot post a header by itself; it needs Revenue Recognition Schedule Line records that already exist.
Before using this feature operationally, implement or verify a server-side creation path that:
- validates total amount, dates, period count and both GL accounts;
- calls the appropriate plan builder;
- persists one line per intended period with fiscal-period context;
- proves the rounded line sum equals the deferred total;
- makes creation idempotent; and
- adds an integration test from source document through generated lines to posted journals.
Until that path exists, use an approved manual-journal schedule or tenant-specific implementation and reconcile it independently. Do not rely on saving the standard schedule header.
Due-line posting
Where lines have been created by a verified integration, the scheduled processor can post those whose due date has arrived. Verify each generated journal's date, organization, deferred account, revenue account, amount and schedule-line link. A missed scheduler run can be caught up because due unrecognized lines remain eligible, but the actual posting date and open fiscal period still matter.
There is no first-party “generate lines” or general on-demand recognition action documented by the audited handlers. An internal service method is not the same as a supported UI action.
Common questions
Does creating a schedule automatically spread the amount?
Not in the audited production wiring. A calculation helper exists, but no save handler persists its result as schedule lines.
Can the scheduler post an empty schedule?
No useful recognition occurs. The evaluator operates on due Revenue Recognition Schedule Line rows, not the header's dates alone.
Can a line post twice?
The line poster refuses a line already marked recognized. Still test transaction/retry behaviour in the deployment that creates the lines and runs the subscription job.
