
Implementation of specific Subscription Processes
This chapter presents examples of the implementation of end-to-end business transactions. These can be used as a starting point for an analogous mapping on the customer side.
Purchase License with annual Maintenance
When you think of Microsoft software licenses, the business with purchase licenses and maintenance fees based on them - in Microsoft terminology: perpetual license and enhancement plan - is a dying one, as all areas have switched to SaaS subscription models. But there are still many existing purchase licenses, and there are other licensors who still rely on the purchase license plus maintenance system.
This can be easily mapped in bill-to. In this chapter, we present a default implementation procedure.
Setup of Subscriptions
Subscriptions are to be set up for a purchase license and percentage-based Maintenance. The purchase license is charged once, the maintenance annually, whereby it should be charged for the first year to the day from the date of purchase of the license.
A subscription with a multi-year renewable or unlimited term is required first.
![]() |
|---|
| Ill. Subscription Periodic data |
The example above shows a subscription with a three-year term and a one-year Billing Frequency Code Filter that begins on January 1, 2023.
A purchase license is added to this subscription. If maintenance is linked to the purchase license as a parts list, this maintenance is loaded directly into the subscription and linked to the purchase license as a Base Amount.
![]() |
|---|
| Ill. Subscription Lines |
Purchase of Purchase License and Maintenance
The purchase license and Maintenance are to be acquired from 15 August 2023. For this purpose, both services are purchased from a CSP provider and linked to the subscription lines. The purchase order lines look like this, for example:
| Purchase Lines | |
|---|---|
![]() |
![]() |
When this Purchase is posted, the Lines of the Subscriptions associated with the Purchase are updated accordingly:
![]() |
|---|
| Ill. Subscription Lines |
Direct Unit Costs from Purchase are assigned to the purchase license:
![]() |
|---|
| Ill. Purchase License Purchase |
Direct Unit Costs from Purchase are also allocated to Maintenance:
![]() |
|---|
| Ill. Maintenance Purchase |
Create Sales Invoices from Subscriptions
The Preview for the first Sales Invoices from the Subscriptions shows the purchase license and the daily Maintenance for the first billing period:
![]() |
|---|
| Ill. Billing period |
When the Invoice is created and posted from the Subscriptions, the corresponding revenues are also assigned to both the Purchase License and the Maintenance:
![]() |
|---|
| Ill. Allocation sale purchase licence |
![]() |
|---|
| Ill. Allocation sale maintanance |
At the same time, the billing period has jumped one interval forward, in this case One Year. The next Billing will therefore be for 2024:
![]() |
|---|
| Ill. This billing period |
The invoice forecast for One Year now looks as follows:
![]() |
|---|
| Ill. invoice forecast |
For the second billing period, the purchase license is not listed again as it is only charged once. Maintenance, on the other hand, is now billed for the entire next One Year.
Reference of a Maintenance Invoice Line to several Subscription Lines
A maintenance line can initially only refer to one subscription line. This is also correct, as each individual Maintenance can be associated with a different Maintenance percentage or a different index price plan.
Nevertheless, it is possible to bill Maintenance for multiple subscription lines in a single invoice line. This is implemented by creating a bundle across several maintenance lines. This means that all maintenance lines can be billed independently of each other according to their various default settings, and the depth of information can be regulated by controlling the display of the bundle line.
These maintenance bundles are normal bundles that are no different from any other. This can look as follows:
![]() |
|---|
| Ill. Maintanacebundles Examples |
This example shows that all purchase licenses were recorded first. Then a bundle item. In turn, all maintenance whose Base Amount references the respective purchase license item is assigned to this bundle item, i.e. Maintenance of purchase licenses refers to the purchase item "Microsoft Dynamics 365 Business Central Perpetual" in the Base Amount, Maintenance of Table Objects refers to the purchase item "Table Object" in the Base Amount, and so on.
However, all Maintenance is billed via just one Line, namely the bundle item line. Which information is displayed can be set via a combination of the "Maintenance Information Scope" and "Maintenance Description" fields on the line card of the individual maintenance lines. The "Maintenance Information Scope" field has four options:
-
\<empty>
-
Complete information
-
Reference item quantity
-
None Details
These lead to the display forms described below (whereby we assume in the Current example that the "Maintenance Description" field is set to the empty value; other settings in the "Maintenance Description" field lead to the known other display forms of the maintenance description, which differ only minimally from each other).
![]() |
|---|
| Ill. Maintanance Bundle Empty Full Information |
Settings Reference item quantity results in the following display:
![]() |
|---|
| Ill. Maintanance Bundle Reference article quantity |
This form of presentation may be particularly interesting if you do not want to specify individual prices for Maintenance, but do want to specify the Quantity of the purchase licenses acquired.
Settings None details leads to the following display form:
![]() |
|---|
| Ill. Maintanace Bundle No Detail |
If you now also set the value of the Information Scope field on the maintenance lines to "Hidden price component", the maintenance lines are no longer displayed at all and only the maintenance bundle line is displayed:
![]() |
|---|
| Ill. Maintanace Bundle Hidden Price components |
The appearance of the invoice document can therefore be greatly influenced in a variety of ways through simple parameterization.
It also becomes clear that some settings should be the same for all maintenance lines of the bundle in order to ensure a uniform appearance. In order to avoid having to parameterize all maintenance lines individually on their respective line card, a function has been added that enables the overarching manipulation of all lines associated with a bundle from the bundle line. This function is called Configure Bundle:
![]() |
|---|
| Ill. Action Bundle Configuration |
The Configure Bundle function calls up a dialog that allows the user to set various settings on all the Line. belonging to the bundle at the same time:
![]() |
|---|
| Ill. Page Bundle Configuration |
Using this dialog, it is also possible, among other things, to automatically pull maintenance that is already individually assigned to their respective purchase licenses under a maintenance bundle at a later date. Let's assume the following arrangement of purchase license and maintenance lines in a subscription:
![]() |
|---|
| Ill. Action Bundle Configuration Subscription Lines |
A bundle line is now inserted:
![]() |
|---|
| Ill. Action Bundle Configuration Subscription Lines |
The Configure bundle function is now called up on the bundle line and the Maintenance function is transferred from there:
![]() |
|---|
| Ill. Action Maintanance Transfer |
As a result, all maintenance lines are automatically pulled under the bundle and billed via the bundle line in future:
![]() |
|---|
| Ill. Action Bundle Configuration Subscription Lines |
Periodically limited Subscriptions such as Winter services
Subscriptions are normally designed so that the billing periods follow on seamlessly from one another. This means that a Billing Frequency Code Filter defines the interval between the first and last billing day - e.g. March 1 to March 31 - and the next billing period follows on seamlessly - in this example, it starts on April 1.
However, there are business transactions where there is a standstill period between the billing periods, i.e. where the billing periods do not immediately follow each other. One example of this is winter services. These usually run from November 1 to March 31, but the subsequent billing period does not begin on April 1, but on November 1 of the following year. There is therefore a standstill period between the end of the current billing period and the start of the next one.
This can be mapped very easily in bill-to.
Setup of the Billing Frequency Code Filter
To map business transactions such as winter services, all you need to do is create a Billing Frequency Code Filter that includes a downtime. Here is an example:
![]() |
|---|
| Ill. Billing period Winter service |
The date formula in the Frequency Calculation field is set to a period of five months with 5M-1T (for example, November 1 to March 31).
In addition, the date formula in the Idle Time Calculation field is set to 7M in the same format. This means that once the current billing period has expired, the next period does not simply start on the next day, but the period defined via the Idle Time Calculation is skipped; in this example, seven Months are skipped and the next billing period does not start on April 1, but only on November 1.
In addition, the status that the subscription should have after the standstill can be set via the Status after Idle Time field. It is not necessary to set a specific status, as the status of the subscription is set to Active after the last Billing, but the next billing of the subscription will only take place after the End of Last Billing Period and the Start of Last New Subscriptions anyway. But perhaps the service should not be continued automatically after the end of the standstill, but only after dialog with the customer.
Setup of Subscription
Only the Billing Frequency Code Filter for the periodically limited subscription, such as the winter service, needs to be stored in the subscription:
![]() |
|---|
| Ill. Subscription Card Tab General |
In addition, it may be advisable - but not necessary - to assign the subscription to a corresponding Subscription Type Group:
![]() |
|---|
| Ill. Subscription Card Tab General Subscription Type Group |
This makes it easy to keep track of how many and which Subscriptions belong to the Winter Service category:
![]() |
|---|
| Ill. Subscription Type Group List |
The drill-down functionality of the No. of Subscriptions field can then be used to branch directly to all winter service subscriptions.
Standard-Consumption
In order to efficiently bill service hours from a third-party system, various settings must be made in bill-to. In this example, we want to bill monthly with a monthly term, which should be automatically renewed. Furthermore, the billing interval should continue to be set even if no service hours were incurred in a given month. The service hours should be imported via Excel using an alias code. The imported times are given in minutes and must be billed in hours. The retail price and description differ depending on the imported line and are provided during import.
| Table | Setup |
|---|---|
| Billing interval | Monthly |
| Subscription term | Monthly |
| Subscription item | Standard consumption with the settings Individual component description activated and Component price determination by Manual price / Import. |
| Subscription design | Hide if no Rg. quantity is activated |
| Subscription setup | Treat zero invoices as Set to next billing period |
| Units | Minute with unit type Minute |
| Units | Hour with unit type Hour |
| Price list | Line with the sales price |
| Excel field mapping | An Excel field mapping with the import target Subscription. Book. Sheet |
| Excel field mapping line | The fields Entry date, Import unit code, Quantity, Subscription alias code, Retail price (VAT) and Description are required. |
| Subscription | Billing interval, subscription term and automatic renewal are set. |
| Subscription line | The item is added, and the primary key from the import file is linked to the subscription line using the Create alias function. |
![]() |
|---|
| Personal Support www.ckl-software.de/ |


























