Industry
Use Case
Favorite Feature
A vendor sells a business intelligence suite made of five applications: Data Prep, Dashboards, Reports, Forecasting and Data Catalog. Over the years each one had grown its own licensing: separate keys, separate renewal dates, separate activation steps.
Customers who bought the whole suite ended up with five contracts that renewed in five different months. Onboarding a new customer meant generating five keys and sending five emails. A customer who wanted to add Forecasting halfway through the year got a pro-rata calculation done by hand, and a sixth renewal date.
The vendor wanted to sell the suite, or a smaller pack, as one item with one renewal date. Each application should still check only its own part.
Each customer company is a licensee. All applications belong to one product, with one module per application:
Product: Insight Suite
├── Module "Data Prep" – Subscription (yearly template)
├── Module "Dashboards" – Subscription (yearly template)
├── Module "Reports" – Subscription (yearly template)
├── Module "Forecasting" – Subscription (yearly template)
├── Module "Data Catalog" – Subscription (yearly template)
└── Module "Add-ons" – Multi-Feature
└── FEATURE templates: SSO-CONNECTOR, WHITE-LABEL, PRIORITY-SUPPORT
Bundles:
Full suite all five yearly licenses
Analytics pack Dashboards + Reports + Forecasting
Each application is a Subscription module, so each one can be valid or not on its own. Optional extras across the suite are Multi-Feature licenses.
The suite and the packs are bundles. A bundle groups license templates from one product and has its own price. When a customer obtains a bundle, NetLicensing creates all its licenses in one go, so their yearly periods start together and end on the same day. For a direct sale, the vendor’s back end calls:
curl -u apiKey:SERVER_API_KEY -H "Accept: application/json" \
-d "licenseeNumber=CUST-HARBOUR-LOGISTICS" \
https://go.netlicensing.io/core/v2/rest/bundle/B-FULL-SUITE/obtain
The response returns one license per included template. Customers who buy online get the same result through the NetLicensing Shop, from a shop token that names the bundle (bundleNumber).
All five applications validate the same licensee, and each one reads its own module from the result:
curl -u apiKey:YOUR_API_KEY -H "Accept: application/json" -X POST \
https://go.netlicensing.io/core/v2/rest/licensee/CUST-HARBOUR-LOGISTICS/validate
Forecasting looks for “Forecasting” and valid=true, and Reports looks for “Reports”. The suite’s shared launcher shows all applications and greys out the ones that aren’t licensed. A customer who has the Analytics pack and later adds Data Prep simply gets one more license. The launcher shows the new tile at the next validation.
A component added mid-year shouldn’t create a new renewal date. For those cases the vendor’s sales team creates the extra license in the Management Console and sets its timeVolume so it ends on the suite’s renewal date, and invoices the remainder through its own billing. From the next renewal, it’s part of the bundle.
Selling several products as a suite? Read about bundles or contact us.

Compliance & Licence Audit: Automated Overuse Detection and Audit-Ready Reporting
How an enterprise software vendor can prevent overuse instead of finding it in audits, using Node-Locked and Floating limits, warning levels and signed validation responses.

Offline & Air-Gapped Deployment: Secure Licensing for Disconnected Environments
How a vendor of software for secure facilities can license fully disconnected installations, with signed offline validation files for single machines and the NetLicensing Agent for isolated networks.