The CEDM library
CEDM is a canonical, implementation-neutral description of business entities, relationships, lifecycles, invariants, workflows and semantics, in machine-readable YAML. It is designed to map to relational schemas, OpenAPI, application code, workflow engines and UI metadata, without making any one of them the canonical model.
What is in it
| 351 entities | From parties and addresses to sales orders, ledgers, shipping containers and healthcare patients |
| 541 value lists | Each value with its own label and a description of what it means |
| 55 domains | Catalogued with their capabilities, from finance and procurement to healthcare and energy |
| Reference data | 249 countries, 1,158 states and provinces, 859 cities, 178 currencies, 184 languages, from ISO 3166, 4217 and 639 and GeoNames |
Importing
A model imports entities by name. An imported entity also brings what it cannot exist without:
its required references, followed until nothing is missing. So a model that imports SalesOrder
gets Customer too, because an order cannot exist without one.
imports:
- module: common
- entity: SalesOrder
An entity declared in the model under the same name as an imported one refines it.
The common foundation and the applications
Every application imports one common foundation: parties, people, organisations, legal entities, business units, addresses, contact points, locations, countries, states, cities, currencies, exchange rates, units of measure, calendars, tasks and attachments.
On top of it, the repository assembles 47 industry applications, one per covered domain, in
applications/*.cedm.yaml. Each one generates as it is and is a starting point for your own.
The Industries page lists them.
Held to its own rules
The library is checked by twelve gates (bun run spec:check): help on every entity, attribute
and relationship; a meaning for every value; valid lifecycles; a dictionary mapping for every
construct; and every library entity reachable from at least one application.