Camel Topology¶
The cm-* Camel microservices are the middleware between storefronts, OMS, warehouses, and retailer EDI. This page shows how they wire together.
Layer Convention¶
Every service name ends in one of three suffixes:
| Suffix | Layer | Role |
|---|---|---|
*-exp |
Experience | External-facing REST APIs |
*-prc |
Processing | Async business logic, ASB consumers |
*-sys |
System | Proxy/adapter to an external system (Cirro, NAV, Arena, etc.) |
A typical flow: external caller hits *-exp → work gets queued to *-prc → *-prc calls one or more *-sys services → *-sys talks to the external system.
Topology¶
The retiring cm-fulfill-exp is shown in red — new endpoints should land on cm-int-service-exp or cm-ext-service-exp.
Rendered from
camel-topology.excalidraw. To regenerate after edits, runmake topology-svg(spins up the local Kroki + excalidraw containers viadocker-compose.yml).
Experience Layer¶
cm-ext-service-exp¶
External-facing REST (OMS, partners). Forwards fulfillment requests onto cm-fulfill-prc via ASB.
cm-int-service-exp¶
Internal REST for other PopSockets services. Delegates to cm-int-service-sys. New internal endpoints land here.
cm-fulfill-exp¶
Legacy fulfillment REST. Retiring — use cm-int-service-exp or cm-ext-service-exp for new work.
Processing Layer¶
cm-edi-prc¶
EDI 850/940/856/945 processing. Polls SPS/PS SFTP, splits documents, dispatches 940s to Cirro (see the EDI pipeline for the full flow), publishes shipped-b2b events when B2B orders ship.
cm-order-prc¶
Orchestrates order lifecycle, routes fulfillment, publishes shipped events. Calls 6 of the 9 *-sys services — everything except cm-product-sys, cm-printprod-sys, and cm-sfcc-sys.
cm-fulfill-prc¶
Handles fulfillment-request-* queues from OMS (AES-encrypted payloads), decrypts, forwards to Cirro. Walkthrough: Order Export example.
cm-batching-prc¶
Consumes batching-update-topic and fans out to PrintStation (via cm-printprod-sys), OMS, and cm-order-prc.
cm-product-prc¶
Polls Arena for item/ECO events via @Scheduled, fans out to OMS/batching/Jackyun. Exposes POST /jackyun/resync for manual SKU resync.
cm-int-service-prc¶
Likely ADX log ingestion — confidence is low. Verify before touching.
System Layer¶
cm-int-service-sys¶
Owns PostgreSQL edi_docs + fulfillment_tracking tables; also makes NAV SOAP calls for packaging instructions. No separate NAV service for this.
cm-cirro-sys¶
Bearer-token proxy to Cirro. Does not modify payloads.
cm-osor-sys¶
Proxy to OMS (popsockets-sandbox-2.diffagency.com). Handles order sync and Gladly endpoints.
cm-nav-sys¶
NAV order release worker. Consumes nav-order-release. Note: NAV SOAP packing-instructions calls live in cm-int-service-sys, not here.
cm-snowflake-sys¶
Writes order data to Snowflake DEV.CIRRO.*.
cm-printprod-sys¶
Consumes batching-update-printstation, forwards to PrintStation.
cm-product-sys¶
Arena PLM API proxy. Shares session tokens across pods via Hazelcast.
cm-jackyun-sys¶
Jackyun integration. Handles both order publishing (ASB-driven) and SKU/BOM upserts (HTTP from cm-product-prc).
cm-sfcc-sys¶
Salesforce Commerce Cloud integration. Rarely used — check before assuming it's active.
Infrastructure (not shown on map)¶
cm-spring-cloud-config-server¶
Provides config (PostgreSQL properties + Azure KeyVault secrets) to every cm-* service at startup. Omitted from the topology map to reduce noise.
cm-file-transfer¶
General SFTP utility. Proof-of-concept status, minimal active use.
Gotchas¶
cm-cirro-sysdoes not transform payloads. It's a thin proxy. Business logic happens incm-order-prc,cm-fulfill-prc, orcm-edi-prcbefore the call.- NAV lives in two places. Order release goes through
cm-nav-sys. Packaging instruction SOAP calls go throughcm-int-service-sys. Don't assume all NAV traffic is in one place. cm-jackyun-syshas two entry points. Orders flow in via thejackyun-orders-topicASB topic fromcm-order-prc. SKU/BOM upserts come in via HTTP fromcm-product-prc.cm-fulfill-expis retiring. If you're adding a new fulfillment endpoint, put it oncm-int-service-exporcm-ext-service-expinstead.- Three services have low confidence data.
cm-int-service-prc,cm-sfcc-sys, andcm-file-transferare rarely touched — verify assumptions against the code before relying on anything this page says about them.