5Step 5 in detail: what Customer Central sends to Business Central
For each applied line, three existing price-update messages go to AIS. No bill is sent at this step.
The example is a fortnightly subscription, split at its cutover on 15 Jul, $34.54 to $35.92. A subscription re-priced in place sends the same three messages, but the schedule message has one row: the same schedule id with the new amount.
1. Billing schedule: cc.bsschedule.priceupdateExtended
{ "billingSchedule": [
{ "id": "a2F…old", "order": "801…", "orderNo": "00081302", "amountToBeBilled": 34.54, "status": "Active",
"orderItem": "802…", "billingStartDate": "2025-03-05", "billingEndDate": "2026-07-14",
"billingFrequency": "2W", "billingType": "AR", "firstPaymentDate": "2025-03-18",
"priceChangeId": "a3X…", "cutoverDate": "2026-07-15", "idempotencyKey": "a3X…:a2F…old" },
{ "id": "a2F…new", "order": "801…", "orderNo": "00081302", "amountToBeBilled": 35.92, "status": "Active",
"orderItem": "802…", "billingStartDate": "2026-07-15", "billingEndDate": null,
"billingFrequency": "2W", "billingType": "AR", "firstPaymentDate": "2026-07-28",
"priceChangeId": "a3X…", "cutoverDate": "2026-07-15", "idempotencyKey": "a3X…:a2F…old" }
]}
Highlighted fields are new. Today this message carries only id, order, orderNo, amountToBeBilled and status. With just those, Business Central can't tell when the old price stops or when the new one starts.
2. Order line: cc.bsline.priceupdateNo change
{ "orderItem": [{ "id": "802…", "order": "801…", "orderNo": "00081302", "unitPrice": 31.2348, "quantity": 1,
"lineTotalAmount": 35.92, "lineGSTAmount": 4.6852, "listPrice": 30.03, "lineDiscountAmount": 0,
"costPrice": 0, "productCode": "01t…", "productFamily": "Telecare Products" }]}
There's one row per re-priced order line: the base and any peripherals the schedule bills. listPrice stays at the old price, because Salesforce doesn't allow OrderItem.ListPrice to be updated. Business Central should price from unitPrice and lineTotalAmount.
3. Order: cc.bsorder.priceupdateNo change
{ "order": [{ "order": "801…", "orderNo": "00081302", "actionRequired": null,
"orderTotalGSTAmount": 4.6852, "orderTotalAmount": 35.92, "orderSubTotalAmount": 31.23 }]}
Later, when the first new-price bill is due: cc.billingtransaction.updateNo change
{ "jobId": "707…", "jobDateTime": "2026-07-28 06:00:00Z", "jobCurrentBatchCount": "1", "jobTotalBatchCount": "3",
"recordCount": "500", "totalRecordCount": "1340",
"transactionDetails": [{ "billingTransactionID": "a2G…", "orderNo": "00081302", "billingScheduleID": "a2F…new",
"paymentDueDate": "2026-07-28", "billStartDate": "2026-07-15", "billEndDate": "2026-07-28", "billingAmount": 35.92 }]}
This is today's bill message. It's sent when a bill is Upcoming and its invoice date has arrived (BillingTransactionAISBatch), and the bill then becomes Submitted. A new-price bill simply carries the new amount and the new schedule's id.
| Question | Answer |
| New API? | No. The same AIS endpoint (named credential AIS, subject header), and the same three topics Business Central is already being built to receive. |
| New wrapper? | No. These payloads are built by Plinqx mapping records and flows, not Apex DTOs. One mapping is extended: Outbound_BillingScheduleAPI_PatchMap, plus the fields its flow SF_To_AIS_BillingSchedule_Sync_Flow reads. |
| New build | A small Apex sync job that calls the existing three flows for each applied line and updates the line's sync status (Sent, Acknowledged, Failed). |
| Acknowledgement back | New, inbound. Either a Plinqx inbound event with a handler flow (the same pattern as Inbound_BillingTransactions_API), or AIS calls Salesforce's standard bulk upsert on Price_Change_Line__c keyed on Idempotency_Key__c. |
| Sent twice? | The hourly patch batches select records changed in the last hour, so they send the same changes too. That's harmless if Business Central upserts on the Salesforce id; otherwise they can skip records changed by a price change. |
Alternative, if the Business Central team prefers it: one new topic (for example cc.pricechange.apply) with one combined message per subscription: order line, order, old and new schedule, cutover date and key. It makes acknowledging per subscription cleaner, but needs a new mapping, a new flow, a new AIS route and a new Business Central handler.