Data package
Updated
A data package is seed JSON the model ships: dictionaries, documents, and link tables. It is not a Meta* row. Live sync and apply-file skip the files (they have no kind envelope). Export-all does not rewrite them.
Note
The format is exactly what Data transfer writes and reads (
POST /api/data-transfer/export|import). A new set is a new file plus anindex.jsonrow. No C# change.
Files live in {Model}/DataPackages/: index.json plus the package JSON. Pack ids are {Model}/{id}. when is once (tenant setup “Load dictionaries”), country plus an ISO2, or manual (a separate button). Demo packs are manual.
From a script, GetService<IDataPackageService>(). The script does not read the disk. ApplyAsync goes through data transfer with mode=insert: a re-run never overwrites a row the tenant already edited. RecreateAsync wipes the pack's tables, rewinds their number sequences to StartValue, then applies — a live tenant with references will lose integrity or refuse the wipe.
A job may apply a pack. There is no platform hook after model install.
Changing a package bumps modelVersion in the same change.