Demo or Disaster? How to build better Business Central demos?
Building Business Central demo data with Microsoft's Contoso Coffee framework and an open source Demo Data Generator that creates AL modules from existing data. Evidence for the module codeunit pattern, what the generator automates (about 80 percent) and what stays manual.
- Introduction and webinar logistics
- Session overview and agenda
- The pain - challenges with demo data preparation
- Demo environment fragmentation and implementation data connection
- Historical context - limitations of rapid start configuration packages
- Microsoft's Contoso Coffee demo data framework evolution
- Contoso Coffee framework architecture and design pattern
- Kontoso Framework Limitations and the Demo Data Generator Tool
- Demo Data Generator configuration and code generation
- The 20% manual work after generation
- Developer and consultant collaboration workflow with AI prompts
- Managing manual edits, regeneration and configuration package import
- Key takeaways and open source strategy
- Q&A, AI role in demo data, and closing remarks
Overview
The webinar covers why demo data preparation is slow and tedious, and why Rapid Start configuration packages fall short: limited validation, a static approach, poor version control, and breakage on schema changes. It then walks through Microsoft’s Contoso Coffee framework, which began with a manufacturing module in 2022 wave 1 and grew in 2024 wave 2 to foundation, finance, CRM, bank, purchasing and sales modules.
The speaker then presents an open source Demo Data Generator that runs inside Business Central. It reads existing data and generates AL modules that follow the Contoso pattern. The session shows the generation, the AI prompts for readable code, preservation of manual edits on regeneration, and import of configuration packages. It also lists the roughly 20 percent of work that stays manual.
Key points
- Contoso Coffee modules are built around a module codeunit that implements the controls demo data module interface. Its four entry points create setup, master, transactional and historical data.
- Helper codeunits handle safe insertion (existence check, override, validation, modification). Data codeunits hold literal values and label constants for primary keys. An enum extension registers each module.
- Rapid Start configuration packages are limited by weak validation, a static approach, poor version control and breakage on schema changes.
- The Demo Data Generator creates module, helper and data codeunits and enum extensions from existing data. It removes about 80 percent of the boilerplate effort.
- Manual work remains for dynamic fields, transactional data (which needs domain knowledge), data cleanup and checking cross-entity references.
- Transactional data comes out as placeholder codeunits with to-do comments plus JSON exports of historical records. These can be used with AI prompts to recreate posted documents.
- Regeneration preserves manual edits and shows modified versus unchanged segment counts. Single segments can be reverted, and force regeneration overwrites all manual edits.
Features
| Feature | Status | At |
|---|---|---|
| Contoso Coffee demo data framework | status not stated, demoed | 10:25 |
| Demo data module codeunit pattern | status not stated, demoed | 11:39 |
| Helper codeunit pattern for safe data insertion | status not stated, demoed | 12:13 |
| Data codeunit pattern with literal values | status not stated | 12:23 |
| Enum extension for module registration | status not stated | 12:37 |
| Contoso Coffee manufacturing module | status not stated | 10:44 |
| Contoso Coffee 2024 wave 2 expansion | status not stated | 10:56 |
| Rapid start configuration packages | status not stated | 9:15 |
| Demo Data Generator Tool | status not stated, demoed | 17:05 |
| AI prompts for code readability | status not stated, demoed | 31:48 |
| Transactional data placeholder generation | status not stated, demoed | 32:28 |
| Manual edit preservation across regeneration | status not stated, demoed | 34:53 |
| Configuration package import | status not stated, demoed | 38:35 |
AL objects mentioned
As heard in the captions. A name that matches one object page by exact type and name links to it; the others stay as named.
- interface “controls demo data module” at 13:20
- codeunit “Contoso bank helper code unit” at 14:12
- codeunit “Contoso Bank Helper” at 14:12
- table 270 “Bank Account” at 13:52
- table “Bank Account Posting Groups” at 15:09
- table “Table 270” at 22:17
- codeunit “helper code unit” at 26:52
- table “bank card posting groups” at 26:42
- table “bank export input setup” at 26:06
- table “GL entries” at 32:28
- other “demo data generator” at 41:13
Not found in BC28-30: interface “controls demo data module”, codeunit “Contoso bank helper code unit”, codeunit “Contoso Bank Helper”, table “Bank Account Posting Groups”, table “Table 270”, codeunit “helper code unit”, table “bank card posting groups”, table “bank export input setup”, table “GL entries”.
Quotes
- 5:58 “I am probably not the only one who has more spent more than a day or even more preparing demo data for presentations”
- 6:14 “good demo data or good demo preparation takes a lot of time not because it’s very complex work but because it’s tedious mechanical”
- 7:00 “Production data and demos, real customer names, real amounts in a screen share on a projector. We’ve seen it”
- 10:25 “in 2022 they started building something better. Uh back then Microsoft shipped something quietly as part of wave 1 and 2022 a new tool”
- 11:51 “at the center is a module code unit it implements a standard interface that”
Disclaimers in the video
- 11:09 other: 2025 wave 1 continued the trend
- 17:05 other: The demo data generator is an open source tool
- 41:46 other: I don’t know of anything any fancy new uh news that Microsoft is planning for the Contoso coffee framework
- 42:25 other: in the German uh demo data sets, there are some some things that are not really up to best practice
Presenters (as heard): Simon Fischer, Simon, Natalie Kavak, Fencer.
