71 test cases for the MSD price change at design v17: 29 positive, 19 negative and 23 edge. Each case gives the test data, steps, expected result and what to check on the record. All prices here are made-up examples.
DraftAdd products, count
Pricebook ConfirmedPrices increased
PreviewedRun preview
AppliedApply now
SyncedSend to BC now
ClosedReconcile, then close
Before you start
Where: UAT only, with BC test. Never in QA or Production.
Approval: every UAT data change needs the tech lead's go: raising prices, Apply, Send, roll back.
Prices: raise test prices in UAT only, all or nothing. Never touch the Product sandbox, which is read only.
Billing runs at 01:00 and 03:00. Bills dated that day go out at whatever price they hold. Finish or roll back first, unless the case is testing the run.
Evidence: turn on debug logs before you start. Keep a screenshot and the record name for each result.
BC: agree the message count with the BC team before any Send. Everything sent stays in BC test until it is reset (RB-03).
Set up before each run
Check the old scheduled price change job is paused and no price change is in flight.
Check the three price-update feeds and the billing transaction switch are on.
Take a snapshot: pricebook entries, live schedules, order lines, orders (Action Required) and Upcoming bills.
Check the test subscriptions cover the table below, and move bill days only with a saved revert file.
Test data
Id
Data
Use
TC-1
Go-live = today
Runs that apply
PC-A
Price change, 2 of 26 products raised 5%, for example $20.00 to $21.00, about 100 subscriptions
Most cases
PC-B
Same as PC-A, go-live next week
Apply gate
PC-C
All 26 products raised 5%, about 22,900 subscriptions in UAT
Full volume
Users
Finance user, Approver user, user with neither, Finance user who can't see the orders
Permissions
Known gaps: expected to fail until fixed
A review of the design against the code on 02-Nov-26 found these. Don't mark them as new defects. Retest each one after its fix.
G7: today it is not picked up or listed. Expected to fail until fixed.
Exit criteria
Every High case passes, and every Medium case passes or has an agreed plan.
The BC team confirms prices and invoices (SB-11, BL-03).
Full-volume run times are recorded and scaled to about 43,000 lines.
UAT and BC test are restored (RB-01, RB-03).
0 of 71 done
Results save in this browser only. Download them to share.
Automated tests
Run first. A failure here stops the run.
AT-01
All price change Apex tests pass with coverage
PositiveHighDeveloper
Test data
No test data needed.
Steps
Run every PriceChange test class in UAT, with code coverage turned on.
Expected
All tests pass.
Each price change class has at least 75% coverage.
Price list
Create the price change, count what customers pay today, confirm the new prices.
PL-01
Create a price change
PositiveHighFinance
Test data
Funder MSD, go-live date TC-1.
Steps
Create a Price Change with a description, Funder and go-live date.
Expected
Status is Draft.
Price rule defaults to Bills dated on or after go-live.
The path shows step 1 and what to do next.
PL-02
Add products finds every MSD product
PositiveHighFinance
Test data
PC-A.
Steps
Click Add products.
Compare the list with the products that have live MSD subscriptions.
Expected
One row per product, including inactive and grandfathered ones that still bill.
Peripheral products are not added.
Each row shows its frequency and price group.
PL-03
Old price is what customers are billed today
PositiveHighFinance
Test data
A product where most subscriptions bill the same amount and a few differ.
Steps
Wait for the count to finish, or click Count subscriptions.
Expected
Old price is the most common billed amount.
The row shows live subscriptions and how many differ.
Check on the record
A tie goes to the higher amount.
A product with no live subscription keeps its pricebook price.
PL-04
Draft status for each kind of product
EdgeMediumFinance
Test data
Products raised, not raised, with no live subscriptions, and with no pricebook entry.
Steps
Open the price list in Draft.
Expected
Rows show New price, Unchanged, No live subscriptions or No entry.
The tiles add up to the number of rows.
PL-05
Prices increased is refused before the count
NegativeMediumFinance
Test data
A row with no count yet.
Steps
Click Prices increased before the count finishes.
Expected
Refused, with a message to count the live subscriptions first.
Status stays Draft.
PL-06
Prices increased is refused with no pricebook entry
NegativeMediumFinance
Test data
A product with no Standard Price Book entry.
Steps
Click Prices increased.
Expected
Refused, naming the product.
No new price is copied.
PL-07
Prices increased copies and locks the prices
PositiveHighFinance
Test data
PC-A after the count, with 2 products raised.
Steps
Click Prices increased and confirm.
Try to edit a new price on a row.
Expected
Incl and excl GST prices are copied from the pricebook, unchanged products too.
Status is Pricebook Confirmed.
The edit is refused: prices are locked.
Check on the record
The confirmed-on date is set.
No pricebook entry changed: last modified dates are as before.
PL-08
Return to Draft clears the prices
PositiveMediumFinance
Test data
PC-A at Pricebook Confirmed.
Steps
Click Return to Draft and confirm.
Expected
Status is Draft.
New prices and the confirmed-on date are cleared.
PL-09
A row cannot be added after Draft
NegativeLowFinance
Test data
PC-A at Pricebook Confirmed.
Steps
Try to add a product row.
Expected
Refused: products can only be added in Draft.
PL-10
A user with no price change permission cannot act
NegativeHighFinance
Test data
A test user without the Finance or Approver permission set.
Steps
Open the price change as that user.
Try Prices increased, Apply now and Send to BC now.
Expected
Each action is refused or disabled, with the reason shown.
Preview
Shows what will change. Preview must never change a billing record.
PV-01
Preview runs with a progress bar and moves on
PositiveHighFinance
Test data
PC-A at Pricebook Confirmed, 2 products changing.
Steps
Click Run preview.
Watch the progress bar until it finishes.
Expected
Progress shows step 1 of 2 Building lines, then 2 of 2 Counting coverage.
Status moves to Previewed by itself.
The header shows lines, to apply and exceptions.
PV-02
Only products whose price changes get lines
PositiveHighFinance
Test data
PC-A: 2 of 26 products changing.
Steps
Open the Lines tab after the preview.
Compare the line count with live subscriptions on the 2 products.
Expected
One line per live schedule of a changing product.
No line for a product keeping its price.
A check line counts subscriptions on products not changing.
PV-03
Preview changes no billing record
PositiveHighDeveloper
Test data
Snapshot taken before the preview.
Steps
Compare schedules, order lines, orders and Upcoming bills with the snapshot.
Expected
0 differences.
PV-04
Running the preview again adds no duplicates
PositiveHighFinance
Test data
PC-A at Previewed.
Steps
Click Run preview again.
Expected
The line count is the same, with one line per schedule.
Lines are updated, not added.
PV-05
A product that stops changing loses its lines
EdgeMediumFinance
Test data
A preview with 3 products changing; then one is put back and the price change re-confirmed.
Steps
Return to Draft, restore one price, click Prices increased, then run the preview again.
Expected
Lines that are only Already at the new price are gone.
Real exceptions stay as Skipped.
PV-06
Exceptions are skipped with a reason
EdgeHighFinance
Test data
A schedule with no Upcoming bill; an order line with two live schedules.
Steps
Run the preview.
Open Price Change Lines by status.
Expected
Not billing: no Upcoming bill.
Not the latest live schedule on this order line (only the older one).
Each is counted in the preview checks.
PV-07
A base product and its pendant bill on one schedule
EdgeMediumFinance
Test data
An order with a base product plus a $10 add-on and one live schedule.
Steps
Run the preview.
Open the line and read Item Prices.
Expected
One line for the schedule.
New amount = new base price + the add-on's current total.
Item Prices lists both order lines.
PV-08
An off-list amount moves to the new price
EdgeHighFinance
Test data
Live schedules on an older price, with and without an add-on, each with an Upcoming bill.
Steps
Run the preview and open the lines.
Click Apply now and read each schedule.
Expected
Each line is flagged Not at list price and stays To re-price.
After Apply: amount = new price x quantity + the add-on's current total.
PV-13
An off-list schedule with no Upcoming bill
EdgeHighFinance
Test data
A live schedule on an older price, On Hold, with no Upcoming bill.
Steps
Run the preview.
Release the hold and read the next bill.
Expected
The line is Skipped: Not billing.
Agree with Finance what the next bill should be. Today it stays at the old amount.
PV-09
A schedule with a future End Date is listed
EdgeMediumFinance
Known gap. G7: today it is not picked up or listed. Expected to fail until fixed.
Test data
A live schedule with an End Date next month.
Steps
Run the preview and look in the checks.
Expected
It is listed for Finance.
PV-10
A changed go-live date makes the preview out of date
NegativeHighFinance
Test data
PC-A at Previewed.
Steps
Change the go-live date.
Try Apply now.
Expected
A message says prices, products or the go-live date changed.
Apply is refused until the preview runs again.
PV-11
A missing product is counted
NegativeMediumFinance
Test data
An MSD product with live subscriptions, removed from the price change.
Steps
Run the preview.
Expected
Missing products tile shows 1.
Reconcile can't pass until it is fixed.
PV-12
A rerun after a partial Apply leaves Applied lines alone
NegativeHighFinance
Test data
PC-A with some lines Applied and one in Error, so the status stays Previewed.
Steps
Click Run preview again.
Expected
The preview runs.
Applied lines keep their status, amounts and sync state.
The Error line is refreshed, and Apply now can retry it.
PV-14
A price change where nothing changes
EdgeHighFinance
Test data
A price change with all 26 products unchanged.
Steps
Add products, count, click Prices increased, run the preview.
Expected
0 lines, and status moves to Previewed.
Missing products = 0.
Apply
Re-prices Salesforce records in place. It sends nothing to Business Central.
AP-01
Apply is not available before go-live
NegativeHighFinance
Test data
PC-B: Previewed, go-live next week.
Steps
Open the Apply card.
Expected
No line is due; the next due date is shown.
Apply now is disabled.
AP-02
Apply now re-prices one subscription correctly
PositiveHighFinance
Test data
PC-A, go-live today. Pick a weekly, a fortnightly and a monthly subscription.
Steps
Note the old values.
Click Apply now and confirm.
Wait for it to finish.
Expected
Lines are Applied; status moves to Applied.
Records updated tiles count orders, order products and bills.
Check on the record
Schedule: amount = New Amount.
Order line: unit price = pricebook excl GST; line total = incl x quantity; GST = the difference.
Upcoming bill: rate, total, GST and list value are new.
Order: Action Required starts PRICE_CHANGE.
Order totals unchanged.
AP-03
No new schedule or bill, and the billing day holds
PositiveHighDeveloper
Test data
PC-A after Apply.
Steps
Compare with the snapshot.
Expected
No schedule or bill created.
Start date, frequency, billing day and bank details unchanged.
End Date still blank.
AP-04
Only Upcoming bills dated from go-live change
EdgeHighDeveloper
Test data
A schedule with an Upcoming bill dated before go-live; others with Submitted, Invoiced and On Hold bills.
Steps
Run Apply.
Compare the bills with the snapshot.
Expected
An Upcoming bill dated on or after go-live is at the new price.
An Upcoming bill dated earlier stays at the old price.
Submitted, Invoiced and On Hold bills are untouched.
AP-05
Amount changed after the preview goes to Error
NegativeHighDeveloper
Test data
One test schedule: change its amount after the preview.
Steps
Run Apply.
Expected
The line is in Error, with both amounts in the message.
Nothing on that order changed.
Other lines apply.
Status stays Previewed.
AP-06
Pricebook changed after confirmation goes to Error
NegativeHighDeveloper
Test data
One test product: change its pricebook price after the preview, then put it back.
Steps
Run Apply.
Restore the price and click Apply now again.
Expected
Lines of that product go to Error, naming the product and both prices.
The second Apply retries and applies them.
AP-07
A schedule ended after the preview goes to Error
NegativeMediumDeveloper
Test data
One test schedule: set an End Date after the preview.
Steps
Run Apply.
Expected
The line is in Error, with the End Date in the message.
Nothing on that order changed.
AP-08
An order cancelled after the preview is left alone
NegativeHighDeveloper
Known gap. G6: Apply does not check the order status. Expected to fail until fixed.
Test data
One test order: not Activated after the preview, with its schedule End Date still blank.
Steps
Run Apply.
Expected
The line is not applied, and the reason is shown.
Nothing on that order changed.
AP-09
Order line changed after the preview
NegativeMediumDeveloper
Test data
One test order line: quantity changed after the preview.
Steps
Run Apply.
Expected
The line is in Error: the new prices don't add up to the preview's amount.
Nothing on that order changed.
AP-10
Apply works for a user who does not own the order
PositiveMediumFinance
Test data
A Finance test user who can't see the orders.
Steps
Click Apply now as that user.
Expected
All due lines apply.
AP-11
Apply sends nothing to Business Central
PositiveHighDeveloper
Test data
PC-A after Apply, before Send.
Steps
Read the sync messages and the lines.
Expected
No Price Change Sync Message exists.
Lines are Not Sent.
The next hourly feeds may still carry these records; note what they send.
AP-12
GST and rounding are right
EdgeHighFinance
Test data
Price change with excl GST to 4 decimal places; a line with quantity 2.
Steps
Read the order line and bill after Apply.
Expected
Incl = pricebook incl x quantity, to the cent.
GST = incl minus excl, to the cent.
Schedule amount = the sum of the lines.
Send to BC
Sends schedules, order lines and orders through the three price-update feeds.
SB-01
Send to BC now sends three messages per chunk
PositiveHighFinance
Test data
PC-A after Apply, about 100 lines.
Steps
Click Send to BC now and confirm.
Watch the progress.
Expected
3 messages: Billing schedules, Order lines, Orders, in that order.
Each message answers 200 or 201.
Lines are Sent; status moves to Synced.
Check on the record
Feeds Sent on each line = schedule;line;order.
Latest messages link to their integration logs.
SB-02
A larger run splits at 200 lines
EdgeHighDeveloper
Test data
At least 201 applied lines.
Steps
Send, then read the sync messages.
Expected
2 chunks, 6 messages.
No message carries more than 200 lines.
SB-03
Messages hold prices and no personal or health data
PositiveHighDeveloper
Test data
One message per feed from SB-01.
Steps
Open the request in the integration log.
Expected
Schedule: id, order, order number, status, amount.
Order line: unit price, list price, line total, GST, quantity.
Order: totals and Action Required.
No wearer, date of birth, NHI or phone data.
SB-04
A rejected feed marks the line Failed
NegativeHighDeveloper
Test data
A feed that AIS rejects, arranged with the AIS team, or the Apex test.
Steps
Send.
Expected
Lines go to Failed, with the feed and code in the error.
A failed Sync Message is recorded.
Status stays Applied.
SB-05
Retry failed sends only what is missing
PositiveHighFinance
Test data
Lines failed on one feed from SB-04.
Steps
Click Retry failed.
Expected
Only the missing feed is sent.
Lines become Sent once all three are in.
Status moves to Synced.
SB-06
A missing log means not confirmed
NegativeMediumDeveloper
Test data
The Apex test, or a send with no log.
Steps
Read the line and the message.
Expected
The line is Failed: not confirmed as sent.
It is never marked Sent without a 200 or 201.
SB-07
A switched-off feed sends nothing
NegativeMediumDeveloper
Test data
Apex test only. Don't turn the switch off in UAT.
Steps
Run the test.
Expected
Lines are Failed, and the message says the switch is off.
SB-08
Send is refused while another job runs
NegativeMediumFinance
Test data
Apply or Send running.
Steps
Try Send to BC now.
Expected
Disabled, saying a run is in progress.
SB-09
Retry works when many lines fail
EdgeMediumDeveloper
Known gap. G5: today this hits the 10,000 row update limit. Expected to fail until fixed.
Test data
More than 10,000 failed lines (an AIS outage).
Steps
Click Retry failed.
Expected
All failed lines are sent again.
SB-10
Hourly jobs repeating the same values is safe
EdgeMediumBC team
Test data
The hour after SB-01.
Steps
Check what the hourly feeds sent.
Check the same orders in BC test.
Expected
BC holds the same prices.
No duplicate price line or invoice.
SB-11
BC applies the new prices
PositiveHighBC team
Test data
The orders from SB-01.
Steps
Check 5 orders of each frequency in BC test.
Expected
Schedule amount, unit price and line total match Salesforce.
BC reads unit price and line total, not list price.
SB-12
BC accepts a resend of the same message
EdgeHighBC team
Test data
One message resent by the AIS team.
Steps
Check the same orders in BC test.
Expected
No duplicate and no change.
Billing
The real test: bills go out at the new price.
BL-01
The billing run sends the new price
PositiveHighDeveloper
Test data
Applied subscriptions with an Upcoming bill dated today.
Steps
Let the next billing run take them, or run it with an agreed go.
Expected
Bills are Submitted at the new amount.
The billing message carries the new amount.
BL-02
The next bill is created at the new price
PositiveHighDeveloper
Test data
The bills from BL-01.
Steps
Read the next Upcoming bill on each schedule.
Expected
One next bill, at the new price, on the same schedule.
Billing period follows on, with the same billing day.
BL-03
BC invoices match
PositiveHighBC team
Test data
The bills from BL-01.
Steps
Compare the invoices in BC test.
Expected
Invoice amount = bill amount.
No duplicate invoice.
BL-04
Every frequency and billing type
PositiveHighFinance
Test data
Weekly, fortnightly and monthly; in arrears and in advance.
Steps
Run AP-02 and BL-01 for each kind.
Expected
Each has its first bill dated on or after go-live at the new price.
An in-arrears period straddling go-live is billed in full at the new price.
BL-05
Bills dated go-live are at the new price
EdgeHighDeveloper
Known gap. G2: the planned 05:30 Apply runs after both billing runs, and Apply can't start before go-live. Expected to fail until the timing is decided.
Test data
A subscription with a bill dated the go-live day, and the 01:00 and 03:00 billing runs.
Steps
Follow the go-live runbook timing in UAT.
Read the bill after the 03:00 run.
Expected
Apply finished before the billing run.
The bill is at the new price.
BL-06
A new order after the price rise
PositiveMediumFinance
Test data
A new MSD order through the normal channel.
Steps
Create it and read its schedule.
Expected
It bills at the new price.
Finance Q4: website, TIS and quick create pick the price up.
BL-07
An old-price order placed after the preview is caught
EdgeHighFinance
Test data
A new order at the old price, activated after the preview.
Steps
Click Check now.
Click Apply now.
Expected
A late line appears for it.
Apply re-prices it, and Send to BC now sends it.
BL-08
Cancel, swap and holiday still work after Apply
PositiveMediumFinance
Test data
Applied subscriptions.
Steps
Cancel one service, swap one product, add a billing holiday.
Expected
Each works as usual.
One live schedule per subscription.
Reconcile and close
Checks replace the 3-week watch.
RC-01
Checks run after Send
PositiveHighFinance
Test data
PC-A at Synced.
Steps
Open Reconcile and close.
Expected
Products, coverage, applied, sent and nothing at the old price are ticked.
First bills show when they are due.
Close is disabled.
RC-02
Check now finds a schedule left at the old price
NegativeHighDeveloper
Test data
One applied test schedule set back to the old amount.
Steps
Click Check now.
Expected
Left at old price = 1.
Close stays disabled.
RC-03
First bill checks move on per frequency
EdgeHighFinance
Test data
PC-A, after each first-bill date.
Steps
Click Check now on each date, or in a test with dates moved.
Expected
Each frequency goes from due to OK.
A wrong amount shows as at old price.
RC-04
A bill on hold at the old price
EdgeMediumFinance
Test data
An applied subscription with an On Hold bill dated from go-live.
Steps
Click Check now.
Expected
Agree with Finance if this should block Close.
Today it counts as at old price, so Close stays disabled.
RC-05
Close works when every check passes
PositiveHighFinance
Test data
A small price change with all checks ticked.
Steps
Click Close price change.
Expected
Status is Closed.
No further check or late-line sweep runs.
RC-06
Close is refused while a check fails
NegativeHighFinance
Test data
A price change with one failed line.
Steps
Try Close price change.
Expected
Disabled or refused, saying every check must be ticked.
Full volume
Largest runs so far: Apply 1,506 lines, feed send 99. Prod is about 43,000.
VOL-01
Preview every live subscription
EdgeHighFinance
Test data
All 26 products raised in UAT: 22,881 live subscriptions.
Steps
Run the preview and time it.
Expected
One line per live schedule.
No errors. Record the run time.
VOL-02
Apply every line
EdgeHighFinance
Test data
VOL-01 lines.
Steps
Click Apply now and time it.
Stop before 01:00, or roll back.
Expected
All lines applied or explained.
Record the run time; scale it to about 43,000.
No record-lock errors.
VOL-03
Send every line
EdgeHighFinance
Test data
VOL-02 lines, about 345 messages. Agree the count with BC first.
Steps
Click Send to BC now and time it.
Expected
All messages answer 200 or 201.
Status moves to Synced.
Record the run time.
VOL-04
Panels load at full volume
EdgeHighFinance
Test data
VOL-03 data.
Steps
Open the Lines tab; refresh.
Expected
The preview and apply panels load with correct counts, with no limit errors.
VOL-05
Reconcile and close at full volume
EdgeHighFinance
Known gap. G1: the checks read over 50,000 rows when all products change, so they fail with a limit error. Expected to fail until fixed.
Test data
VOL-03 data.
Steps
Open Reconcile and close; click Check now.
Expected
Checks show, and Left at old price = 0.
Close works once all pass.
Roll back
Restore UAT after every run that raised prices.
RB-01
Restore from the snapshot
PositiveHighDeveloper
Test data
Snapshot from setup.
Steps
Restore the pricebook entries.
Update only rows that differ: schedules, order lines, Upcoming bills, orders.
Compare again.
Expected
0 differences, apart from bills already billed.
New Upcoming bills are at the old price.
RB-02
Delete the test price change
PositiveMediumDeveloper
Test data
After RB-01.
Steps
Back up, then delete lines, products and the header, in that order.