Skip to main content

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 entitiesFrom parties and addresses to sales orders, ledgers, shipping containers and healthcare patients
541 value listsEach value with its own label and a description of what it means
55 domainsCatalogued with their capabilities, from finance and procurement to healthcare and energy
Reference data249 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.