Back to Blog
Published:
Last Updated:
Fresh Content
Legal AI in the ERPChapter 25

Where do contract renewal dates live in Business Central?

9 min read
1,888 words
high priority
Ali Ahmed

Ali Ahmed

AI Solutions Engineer, Cognilium AI

TL;DR

Real fields exist: Cancellation Possible Until, Term Until, Subsequent Term. The clauses that fill them sit in a document nothing reads. Blank means terminable.

On the subscription contract line, in five named fields — and Business Central models notice periods properly, which surprises most people. What it cannot do is fill them in, because the notice period is a clause in a document the ERP has never read.

Which fields actually hold a renewal date?

Five, and they do different jobs. Microsoft's definitions, quoted:

FieldWhat Microsoft says it does
Subscription Line End Date"specify a date on which you stop billing a subscription line"
Cancellation Possible Until"specifies when a contract line can be cancelled in due time"
Term Until"specifies the minimum time until which a contract line is, or should be, charged, even if it's terminated"
Subsequent Term"specifies the duration of the automatic extension after the initial term"
Initial Term / Notice PeriodSet the first commitment window and the warning it requires

The distinction between the middle two is the one that costs money. Cancellation Possible Until is your deadline to act. Term Until is what you still owe if you act. They are not the same date and confusing them is how a company gives notice on time and still pays for a full period.

The end date is deliberately independent: "The end date doesn't depend on the dates in the Cancellation Possible Until and Term Until fields."

And Subsequent Term does double duty — it is both the length of the automatic extension and, in Microsoft's words, what "determines the rhythm of updating the Cancellation Possible Until and Term Until dates."

How is the notice deadline actually calculated?

Microsoft publishes a worked example, and it is worth reading closely. For a contract line billing from the first of January that renews annually with a three-month notice period:

"Term Until is 12.31.YYYY. The contract line should be charged for the whole year even if it's terminated in due time." "Cancellation possible until is 09.30.YYYY. The contract line can be terminated in due time up to this date. If the cancellation is received later, the contract line is billed for another year."

That last sentence is the entire cost of a missed renewal, in Microsoft's own words. Miss the September date and you own the following year. The system will not warn you it happened, because nothing went wrong — the extension is the documented behaviour.

The two dates stay in step with each other: "If either the Cancellation Possible Until or Term Until dates change, the other field is recalculated. The cancellation period is always used for this calculation."

What happens if the fields are left blank?

The contract becomes something nobody agreed to. Microsoft is direct:

"If validity and notice periods aren't set, the contract lines are valid indefinitely or can be terminated at any time."

Read that as a risk in both directions. A blank notice period on a vendor contract tells your system you may walk away whenever you like — which is not what the master services agreement says, and you will discover the difference when you try. A blank one on a customer contract quietly removes a commitment you negotiated.

Blank is not neutral. It is a wrong answer that looks like an empty field — and on the record an empty field looks identical whether the agreement truly has no notice period or nobody ever opened it.

One related trap: you cannot fix a wrongly billed line by backdating it. Microsoft: "you can't just terminate it retroactively… you must first issue a credit memo… The credit memo resets the Next Billing Date, and you can terminate the contract line."

What keeps these dates current?

A scheduled job, and it is not on by default.

"Use the Update Subscription Line Dates action on the customer or vendor subscription contract to update the notice dates. The action should always run in the job queue."

Microsoft names the automated route as well: "You can add the update of the end dates to the job queue by using Update Serv. Comm. Term. Dates (Codeunit 8058) to run automatically. Typically, businesses run the codeunit once a day and outside business hours."

So the renewal calendar depends on a job queue entry somebody has to set up. If it is not scheduled, the dates are stale rather than absent — which is worse, because a stale date still looks like an answer. It is the same dependency that makes an unattended job queue a silent control.

So where does the data actually come from?

A clause in the agreement, typed in by a person who read it once.

Every one of those date fields is a fact about a document: the initial term, the renewal length, the notice period. Business Central models them well and sources them not at all. The chain is:

  1. Somebody reads the MSA and finds the termination clause.
  2. Somebody translates "ninety days prior to the end of the then-current term" into Notice Period and Subsequent Term.
  3. Somebody types it onto the contract line.
  4. Nothing ever checks step three against step one again.

The same chain runs for every document type in the portfolio — and an MSA, a SOW and an MOU each behave differently.

And nothing re-checks after an amendment. A renegotiated notice period arrives as a signed amendment in an inbox; the contract line keeps the number typed in two years ago.

This is document intelligence, and it is the same capability as invoice extraction pointed at a different document. Microsoft already lists contracts as a supported type for agent attachments — and caps PDFs at ten pages, which is why an agreement needs its own extraction path rather than the built-in one.

The shape that works is a sidecar app — one that runs in your own Azure tenancy, reads the agreement where it already lives, extracts the termination clause, and writes the notice period onto the contract line for a person to confirm. The document does not move and the ERP stays the system of record. That is the whole architecture: Dynamics manages the renewal, and something beside it works out what the renewal actually says.

About Cognilium Cognilium builds AI optimization apps for Microsoft Dynamics 365 — companion apps that optimize the pricing, inventory, warehouse and planning decisions your ERP manages but can't optimize. Dynamics is your system of record. Cognilium is your system of intelligence. https://cognilium.ai · https://www.linkedin.com/company/37180269/

Legal AI Ops. We transform legal workflows with agentic AI, copilots, agentic workflows and decision intelligence — built into core workflows rather than beside them, to raise productivity and cut operational overhead. Contract Review Copilot is the contract-review app in that family. It ships as Paralegent AI, in production today. How we build Legal AI Ops — custom AI capabilities on top of legal work, against your playbook and your Dynamics 365.

Pull your five largest vendor agreements and check whether the notice period on the contract line matches the termination clause in the document. Bring the mismatches to a 15-minute call.

Sources

Sources and fact-check
#§ClaimTierPrimary sourceVerdict
11The five field definitions, each quotedT1 — verbatim ×4, field names copied character-exactservice-commitment-cancellation, fetched 2026-09-10PASS
21"The end date doesn't depend on the dates in the Cancellation Possible Until and Term Until fields"T1 — verbatimSame pagePASS
31Subsequent Term "determines the rhythm of updating" the other twoT1 — verbatimSame pagePASS
41Confusing the two dates costs moneyT2 — ours, read off claims 1 and 2PASS
52The worked example: Term Until, Cancellation possible until, and "billed for another year"T1 — verbatim ×3Same page, Termination dates and deadlinesPASS — load-bearing; the cost of a missed renewal in Microsoft's words
62The two dates recalculate each otherT1 — verbatimSame pagePASS
73"If validity and notice periods aren't set, the contract lines are valid indefinitely or can be terminated at any time"T1 — verbatimSame page, openingPASS
83Blank is a wrong answer, not a neutral oneT2 — ours, an interpretation of claim 7, labelledPASS
93No validation distinguishes a genuine absence from an unread agreementT2 — ours, reasoned from the field model rather than from an absence searchPASS — not written as "Microsoft documents no validation"
103Retroactive termination needs a credit memo firstT1 — verbatimSame page, NotePASS
114"The action should always run in the job queue"; Update Serv. Comm. Term. Dates (Codeunit 8058); once a day, outside business hoursT1 — verbatim ×3, codeunit name and number exactSame pagePASS
125Contracts are a supported attachment type and PDFs are cappedT1 — verbatim, second Microsoft pageai-development-toolkit-attachments, fetched 2026-09-10PASS
135The four-step chain and the amendment gapT2 — ours, a description of practice, stated as oursPASS
145The sidecar architecture — Azure tenancy, document stays put, person confirmsT2 — ours, capability language, no delivered-client claim and no metricPASS

Tier summary: 10 × T1 (all verbatim), 4 × T2 — 0 × T4.

All three sources fetched on 2026-09-10 before the claims were written. The renewal-mechanics page carries ms.date 2025-07-11 with a January 2026 update — the oldest source in this cluster, noted here rather than hidden, and its field names were checked against the vendor-contracts page fetched the same day.

Claim 9 is deliberately not an absence claim. We do not write "Microsoft documents no validation." We say a blank field and a genuine absence are indistinguishable to anyone reading the record, which follows from the field model itself.

No figures of ours. The dates in §2 are Microsoft's own worked example, quoted with their formatting. No digits appear in either lifted block — the codeunit number and the example dates stay in the body.

Product claims. §5 describes the architecture we build in capability language — "the shape that works is a sidecar app" — with no customer, no count, no measured result, and no claim that it runs in anyone's business. Paralegent AI is named only in the standing footer.

Share this article

Ali Ahmed

Ali Ahmed

AI Solutions Engineer, Cognilium AI

Ali Ahmed is an AI Solutions Engineer at Cognilium AI.

Applied AI AgentsAgentic SystemsRetrieval-Augmented Generation (RAG)LLM Product Engineering
Next in this series
How do you manage MSAs, SOWs and MOUs in Business Central?
Chapter 26 · 9 min
In short

Key takeaways

  • Business Central models notice periods properly — Cancellation Possible Until, Term Until, Subsequent Term, Initial Term and the line end date each do a different job.
  • Cancellation Possible Until is your deadline; Term Until is what you still owe. They are different dates and confusing them costs money.
  • Miss the cancellation date and Microsoft's documented behaviour is that the line bills for another term. Nothing has gone wrong, so nothing warns you.
  • Blank fields mean valid indefinitely or terminable at any time — a wrong answer wearing the costume of an empty field.
  • Every one of these fields is a fact about a document the ERP has never read, which is the actual problem to solve.
What goes wrong

Common mistakes to avoid

  • Treating a blank notice period as "no notice period". It usually means nobody opened the agreement.
  • Reading Term Until as the deadline. The deadline is Cancellation Possible Until, and it is earlier.
  • Leaving the date-update job unscheduled. Stale renewal dates are more dangerous than missing ones.
  • Re-keying dates after an amendment and not re-checking the rest. Amendments change more than one clause.
  • Backdating an end date to undo a billing error. The documented route is a credit memo first.

Frequently Asked Questions

Find answers to common questions about the topics covered in this article.

Still have questions?

Get in touch with our team for personalized assistance.

Contact Us

Still have a question this did not answer?

The person who wrote this article answers these. Describe your setup and what you are stuck on — you will get a straight answer, including where we think the approach is wrong.