Codeunit 8026 "Process Usage Data Billing"
Subscription Billing · Microsoft.SubscriptionBilling
Across versions
- BC23-28not present
- BC29-30present
Neighbourhood 1 connected objects and pages
Subscription Billing · Microsoft.SubscriptionBilling · BC29-30 · source at ea08af5e · facts from BC29
Properties
| Property | Value |
|---|---|
| TableNo | Usage Data Import |
Events published
OnBeforeProcessUsageDataBilling(UsageDataImport: Record "Usage Data Import")(integration)OnAfterProcessUsageDataBilling(UsageDataImport: Record "Usage Data Import")(integration)OnUsageBasedPricingElseCaseOnProcessSubscriptionLine(var UnitCost: Decimal; var NewServiceObjectQuantity: Decimal; var SubscriptionLine: Record "Subscription Line"; LastUsageDataBilling: Record "Usage Data Billing"; var IsHandled: Boolean)(integration)OnUsageBasedPricingElseCaseOnCalculateCustomerUsageDataBillingPrice(var UnitPrice: Decimal; var Amount: Decimal; var UsageDataBilling: Record "Usage Data Billing"; CustomerSubscriptionContract: Record "Customer Subscription Contract"; var IsHandled: Boolean)(integration)OnBeforeProcessSubscriptionLine(var SubscriptionLine: Record "Subscription Line")(integration)OnAfterProcessSubscriptionLine(var SubscriptionLine: Record "Subscription Line")(integration)OnBeforeCalculateUsageDataUnitPriceForPeriod(UnitPrice: Decimal; var ServiceCommitment: Record "Subscription Line"; var UsageDataBilling: Record "Usage Data Billing")(integration): Raised before UnitPriceForPeriod is called in CalculateUsageDataPrices. Passes the UnitPrice that was calculated prior to the period scaling (for example, a tier-calculated per-unit price from GetSalesPriceForItem). Subscribers can observe this value and store it for later use. No code is skipped - …OnAfterCalculateUsageDataUnitPriceForPeriod(var UnitPrice: Decimal; var ServiceCommitment: Record "Subscription Line"; var UsageDataBilling: Record "Usage Data Billing")(integration): Raised after the unit price for the billing period has been calculated via UnitPriceForPeriod. Subscribers can override UnitPrice with a custom value (for example, a price from a different source or price list).
Procedures
SetRoundingPrecision(var RoundingPrecision: Decimal; UnitPrice: Decimal; Currency: Record Currency)(internal)
Plus 12 local procedures.
Triggers
OnRun
Relations
- runs on Table 8013 “Usage Data Import”
Recent changes
- 2026-09-25 #9293 [Bug][SubscriptionBilling] Process Usage Data Billing uses lines marked Processing Status = Error (currency mismatch) (main, BC30, fix)
- 2026-07-31 #9876 [Subscription Billing] Rename progress tracker (main, BC30, refactor)
- 2026-07-30 #8553 [Bug][SubscriptionBilling]: Performance: Billing document creation does not scale to large datasets (4M+ subscription lines) (main, BC30, performance)
Ask your agent
Procedure bodies are not stored here (D10). For a procedure body or the calls of one procedure, ask bc-code-atlas (external, by Stefan Maron, MIT; default corpus w1-28), which the bc-observatory plugin connects: bcatlas_resolve_node(object_type: "codeunit", object_name: "Process Usage Data Billing"), then bcatlas_get_procedure_body or bcatlas_get_neighbors on the returned id.