Skip to content

Available now

Plan your integration ​

No code yet. Write down what your product says and hears. You use it to set up your apps in the portal, and as your test plan.

1. List your systems ​

One row per system the bus should see, usually one per product. A product with two separable services (an ingest service and a skill executor, say) gets two.

App namesystem_typesystem_ids on the SandboxSigns in with
acme-ncsncsacme-ncs-testClient secret
acme-skillsskill_workeracme-skills-testAWS role
  • App names are lowercase with hyphens.
  • system_type must be one of SOM 1.0's values (see The envelope). If none fits, use custom and set system_name.
  • Keep system_id configurable in your product. Each publisher assigns its own.
  • A system_id belongs to one app on the whole bus, first come, first served. Prefix it with your organisation.
  • Systems that run in AWS can sign with their IAM role instead of a secret, and your own identity provider's clients can sign in too. See Authenticate.

2. Declare what each system produces and consumes ​

This is your integration profile. SOM expects every system to be able to say which families it produces and consumes. The bus enforces the "produces" half: a message type your app isn't granted is refused with producer.message_type_not_allowed.

AppProducesConsumes
acme-ncsstory.context, system.auditskill.warning.raised, telling.*
acme-skillsskill.warning.raisedstory.context

Message types are exact (story.context), a family (telling.*) or everything (*). Ask only for what you send: the refusal is useful evidence that your product doesn't send what it shouldn't.

3. Pick your test stories ​

Build them from synthetic content. The published SOM 1.0 examples are a good start; they're in the SOM repository.

StoryExercisesStart from
Breaking story: seven snapshots, from developing to confirmedSnapshots, sequence, assets, gates, complianceexamples/hurricane-run/
Killed story: active, then KILLEDTerminal states: reviving it must be refusedSnapshot 1 of the hurricane run
Story with a telling: a snapshot, a link commit, then a tellingMessages of several families under one correlation_idexamples/link/, examples/telling/
Media arrivaldelivery.media_available with a reference, never mediaexamples/delivery/
Skill warningcausation_id pointing at the snapshot that triggered itexamples/skill-warning/

Give every run its own story_id and correlation_id: the bus remembers where every story in your workspace stands (its sequence state, not the payload), with no expiry. Prefixing story ids with your app name keeps them apart when several of your apps publish into one workspace.

4. Decide what "done" looks like ​

Copy the readiness checklist into your test plan now and strike out the lines that don't apply to you. Every line left should have a test by the end.

Set it up Available now ​

Once you're in your workspace, the tables from 1 and 2 become your apps: create each app, connect the producers with their system_ids and message types (Credentials), and create a consumer connection for each system that consumes.

Next: Credentials.

SOM is an open standard maintained by the SOM working group. This service is not endorsed by it.