🧩 System Process Diagrams
AI generated
The legend table, the two top-of-page system flowcharts, and every per-use-case sequence diagram on this page were generated by an AI assistant from the existing algebraic notation and from the original PNG system diagrams. Cross-check against code before relying on any specific arrow. Items annotated (inferred) still need human confirmation.
This page defines the unified notation and structure for all process diagrams across ADB services. Each diagram uses a compact algebraic format to describe inter-service interactions, event propagation, and data persistence. Below each algebraic sequence we render the same flow as a Mermaid sequence diagram.
📘 Legend
Notation grammar
| Symbol | Meaning |
|---|---|
| A0, B0, G0, .. | Services |
| A1, B1, G1 | Databases owned by those services |
| A2, B2, E2, … | SQS queues triggered by service actions |
| E | Event Bus (AWS EventBridge) — routes events between producers and consumers |
| S3 | AWS S3 — external file storage layer |
| < … > | Scoped sequence — actions executed within the context of the preceding service |
| , | Sequential flow |
| [ … , … ] | Parallel flows executed concurrently |
| *B1 | Projection refresh / second read of B1 (inferred — confirm with engineer) |
Service / database / queue map
Recovered from the original system diagrams. Use this when reading an algebraic sequence below.
| Code | Service | DB (X.1) | Queues (X.2.*) |
|---|---|---|---|
| A | adb-contracts | Contracts DB | contracts-contract-modified (A.2.0), contracts-accounting-event-modified (A.2.1), contracts-dunning-notice-sent (A.2.2), contracts-part-modified (A.2.3), contracts-person-modified (A.2.4), contracts-auxiliary-account-balance-updated (A.2.5), contracts-file-metadata-modified (A.2.6), contracts-index-created (A.2.7) |
| B | adb-accounting | Accounting DB | accounting-accounting-event-modified (B.2.0), accounting-accounting-entry-modified (B.2.1), accounting-contract-modified (B.2.2), accounting-organization-modified (B.2.3), accounting-payment-modified (B.2.4), accounting-person-modified (B.2.5), accounting-direct-debits-status-processed (B.2.6) |
| C | adb-parts | Parts DB | parts-* family |
| D | adb-persons | Persons DB | persons-* family |
| E | adb-views | Views DB | views-ticket (E.2.0), views-ticket-event (E.2.1), views-part (E.2.2), views-contract (E.2.3), views-accounting-event (E.2.4), views-file-metadata (E.2.5), views-charge-budget (E.2.6), views-market-performance (E.2.7) |
| F | adb-tickets | Tickets DB | tickets-* family |
| G | adb-files | Files DB | files-* family |
| H | adb-aggregates | Aggregates DB | aggregates-* family |
| I | adb-utilities | Utilities DB | utilities-* family (I2) |
Note: bare E (no digit) is the Event Bus, distinct from
E0/E1/E2which belong to adb-views.
🗺️ System Diagram (All Components)
Producers around adb-contracts and adb-accounting
flowchart LR
A0[adb-contracts]
A1[(Contracts DB)]
B0[adb-accounting]
B1[(Accounting DB)]
C0[adb-parts]
C1[(Parts DB)]
D0[adb-persons]
D1[(Persons DB)]
A0 <--> A1
B0 <--> B1
C0 <--> C1
D0 <--> D1
subgraph A2 [contracts queues — A.2.x]
A20[contracts-contract-modified]
A21[contracts-accounting-event-modified]
A22[contracts-dunning-notice-sent]
A23[contracts-part-modified]
A24[contracts-person-modified]
A25[contracts-auxiliary-account-balance-updated]
A26[contracts-file-metadata-modified]
A27[contracts-index-created]
end
subgraph B2 [accounting queues — B.2.x]
B20[accounting-accounting-event-modified]
B21[accounting-accounting-entry-modified]
B22[accounting-contract-modified]
B23[accounting-organization-modified]
B24[accounting-payment-modified]
B25[accounting-person-modified]
B26[accounting-direct-debits-status-processed]
end
A0 --> A20
A0 --> A21
A0 --> A22
A0 --> A23
A0 --> A24
A0 --> A25
A0 --> A26
A0 --> A27
B0 --> B20
B0 --> B21
B0 --> B22
B0 --> B23
B0 --> B24
B0 --> B25
B0 --> B26
Read side and supporting services
flowchart LR
F0[adb-tickets]
F1[(Tickets DB)]
G0[adb-files]
G1[(Files DB)]
E0[adb-views]
E1[(Views DB)]
H0[adb-aggregates]
H1[(Aggregates DB)]
I0[adb-utilities]
I1[(Utilities DB)]
F0 <--> F1
G0 <--> G1
E0 <--> E1
H0 <--> H1
I0 <--> I1
subgraph E2 [views queues consumed by adb-views — E.2.x]
E20[views-ticket]
E21[views-ticket-event]
E22[views-part]
E23[views-contract]
E24[views-accounting-event]
E25[views-file-metadata]
E26[views-charge-budget]
E27[views-market-performance]
end
E20 --> E0
E21 --> E0
E22 --> E0
E23 --> E0
E24 --> E0
E25 --> E0
E26 --> E0
E27 --> E0
📎 Producer/consumer links above are scoped to what the original PNGs depicted explicitly. Cross-service consumers (e.g. accounting reading contracts queues) are detailed in the per-use-case sequence diagrams below.
⚙️ Process Diagrams
ADB-Contracts
I can create a Rental Delegate Contract
Description: Creates a rental delegate contract
Sequence: A0 <D0, C0, A1, E2>, E, E0 <A0, E1>
sequenceDiagram
participant A0 as adb-contracts
participant D0 as adb-persons
participant C0 as adb-parts
participant A1 as Contracts DB
participant Qe as views queue (E2)
participant Bus as Event Bus
participant E0 as adb-views
participant E1 as Views DB
activate A0
A0->>D0: lookup person
A0->>C0: lookup part
A0->>A1: write rental delegate contract
A0->>Qe: emit views event
deactivate A0
Qe->>Bus: publish
Bus->>E0: deliver
activate E0
E0->>A0: read contract
E0->>E1: write projection
deactivate E0
I can create a Rental Contract
Description: Creates a rental contract
Sequence: A0 <[ C0, A1, D0, C0 ], I0 <I1>, A1, [E2, B2]>, E, [E0 <A0, E1>, B0 <[A0, B1], [A0, B1, *B1]> ]
sequenceDiagram
participant A0 as adb-contracts
participant C0 as adb-parts
participant A1 as Contracts DB
participant D0 as adb-persons
participant I0 as adb-utilities
participant I1 as Utilities DB
participant Qe as views queue (E2)
participant Qb as accounting queue (B2)
participant Bus as Event Bus
participant E0 as adb-views
participant E1 as Views DB
participant B0 as adb-accounting
participant B1 as Accounting DB
participant B1r as Accounting DB (refresh)
activate A0
par
A0->>C0: lookup part
and
A0->>A1: stage contract
and
A0->>D0: lookup person
and
A0->>C0: lookup part (cross-ref)
end
A0->>I0: validate / index
activate I0
I0->>I1: read/write
deactivate I0
A0->>A1: persist rental contract
par
A0->>Qe: emit views event
and
A0->>Qb: emit accounting event
end
deactivate A0
Qe->>Bus: publish
Qb->>Bus: publish
par
Bus->>E0: deliver
activate E0
E0->>A0: read contract
E0->>E1: write projection
deactivate E0
and
Bus->>B0: deliver
activate B0
par
B0->>A0: read contract
B0->>B1: read accounts
and
B0->>A0: read contract
B0->>B1: read accounts
B0->>B1r: refresh projection
end
deactivate B0
end
Note over B1r: *B1 — projection refresh of B1 (inferred)
I can sign a Rental Contract
Description: Moves RC to SIGNED state, and notifies relevant services.
Sequence: A0 <I0, I0 <I1>, A1, [A2, E2, B2]>, E, [A0 <A1>, E0 <A0, E1>, B0 <[A0, B1], [A0, B1, *B1]> ]
sequenceDiagram
participant A0 as adb-contracts
participant I0 as adb-utilities
participant I1 as Utilities DB
participant A1 as Contracts DB
participant Qa as contracts queue (A2)
participant Qe as views queue (E2)
participant Qb as accounting queue (B2)
participant Bus as Event Bus
participant E0 as adb-views
participant E1 as Views DB
participant B0 as adb-accounting
participant B1 as Accounting DB
participant B1r as Accounting DB (refresh)
activate A0
A0->>I0: lookup signing data
A0->>I0: open scoped session
activate I0
I0->>I1: read/write
deactivate I0
A0->>A1: persist signature
par
A0->>Qa: emit contracts event
and
A0->>Qe: emit views event
and
A0->>Qb: emit accounting event
end
deactivate A0
Qa->>Bus: publish
Qe->>Bus: publish
Qb->>Bus: publish
par
Bus->>A0: deliver
activate A0
A0->>A1: read contract
deactivate A0
and
Bus->>E0: deliver
activate E0
E0->>A0: read contract
E0->>E1: write projection
deactivate E0
and
Bus->>B0: deliver
activate B0
par
B0->>A0: read contract
B0->>B1: read accounts
and
B0->>A0: read contract
B0->>B1: read accounts
B0->>B1r: refresh projection
end
deactivate B0
end
Note over B1r: *B1 — projection refresh of B1 (inferred)
I can sign a Rental Delegate Contract
Description: Moves RDC to SIGNED state, and notifies relevant services.
Sequence: A0 <A1, E2>, E, E0 <A0, E1>
sequenceDiagram
participant A0 as adb-contracts
participant A1 as Contracts DB
participant Qe as views queue (E2)
participant Bus as Event Bus
participant E0 as adb-views
participant E1 as Views DB
activate A0
A0->>A1: persist signature
A0->>Qe: emit views event
deactivate A0
Qe->>Bus: publish
Bus->>E0: deliver
activate E0
E0->>A0: read RDC
E0->>E1: write projection
deactivate E0
I can notice a Rental Contract
Description: Moves RC to NOTICED state, and notifies relevant tenants.
Sequence: A0 <D0, G0, G1, S3, A1, [A2, E2, B2]>, E, [A0 <A1>, E0 <A0, E1>, B0 <[A0, B1], [A0, B1, *B1]> ]
sequenceDiagram
participant A0 as adb-contracts
participant D0 as adb-persons
participant G0 as adb-files
participant G1 as Files DB
participant S3 as AWS S3
participant A1 as Contracts DB
participant Qa as contracts queue (A2)
participant Qe as views queue (E2)
participant Qb as accounting queue (B2)
participant Bus as Event Bus
participant E0 as adb-views
participant E1 as Views DB
participant B0 as adb-accounting
participant B1 as Accounting DB
participant B1r as Accounting DB (refresh)
activate A0
A0->>D0: lookup tenants
A0->>G0: store notice document
activate G0
G0->>G1: write metadata
G0->>S3: write blob
deactivate G0
A0->>A1: mark contract NOTICED
par
A0->>Qa: emit contracts event
and
A0->>Qe: emit views event
and
A0->>Qb: emit accounting event
end
deactivate A0
Qa->>Bus: publish
Qe->>Bus: publish
Qb->>Bus: publish
par
Bus->>A0: deliver
activate A0
A0->>A1: read contract
deactivate A0
and
Bus->>E0: deliver
activate E0
E0->>A0: read contract
E0->>E1: write projection
deactivate E0
and
Bus->>B0: deliver
activate B0
par
B0->>A0: read contract
B0->>B1: read accounts
and
B0->>A0: read contract
B0->>B1: read accounts
B0->>B1r: refresh projection
end
deactivate B0
end
Note over B1r: *B1 — projection refresh of B1 (inferred)
I can process a call for rent
Description: Handles rent generation, accounting event creation, and tenant file publication.
Sequence: A0 <A1, B0, A1, A2>, E, B0 <B1, B2>, E, [ A0 <A1, G0 <G1, S3>> , B0 <B1> ]
sequenceDiagram
participant A0 as adb-contracts
participant A1 as Contracts DB
participant B0 as adb-accounting
participant Qa as contracts queue (A2)
participant Bus as Event Bus
participant B1 as Accounting DB
participant Qb as accounting queue (B2)
participant G0 as adb-files
participant G1 as Files DB
participant S3 as AWS S3
activate A0
A0->>A1: read rental contracts
A0->>B0: create accounting events
A0->>A1: write call-for-rent
A0->>Qa: emit contracts event
deactivate A0
Qa->>Bus: publish
Bus->>B0: deliver
activate B0
B0->>B1: write entries
B0->>Qb: emit accounting event
deactivate B0
Qb->>Bus: publish
par
Bus->>A0: deliver
activate A0
A0->>A1: read contract
A0->>G0: store tenant file
activate G0
G0->>G1: write metadata
G0->>S3: write blob
deactivate G0
deactivate A0
and
Bus->>B0: deliver
activate B0
B0->>B1: refresh balance
deactivate B0
end
I can create a Guarantee Contract
Description: Creates a guarantee contract when a guarantor is added to a rental contract.
Sequence: A0 <D0, A1>
sequenceDiagram
participant A0 as adb-contracts
participant D0 as adb-persons
participant A1 as Contracts DB
activate A0
A0->>D0: lookup guarantor
A0->>A1: write guarantee contract
deactivate A0
I can index Rent Amounts
Description: Updates rent amounts in rental contracts based on new indexes.
Sequence: I0 <I1, I2>, E, A0 <I0, G0, A1>
sequenceDiagram
participant I0 as adb-utilities
participant I1 as Utilities DB
participant Qi as utilities queue (I2)
participant Bus as Event Bus
participant A0 as adb-contracts
participant G0 as adb-files
participant A1 as Contracts DB
activate I0
I0->>I1: write index
I0->>Qi: emit utilities event
deactivate I0
Qi->>Bus: publish
Bus->>A0: deliver
activate A0
A0->>I0: read index
A0->>G0: produce indexation document
A0->>A1: update rent amounts
deactivate A0
I can create a SEPA Mandate Contract
Description: Creates a SEPA mandate contract for direct debit payments.
Sequence: A0 <[D0, I0 <I1>], A1>
sequenceDiagram
participant A0 as adb-contracts
participant D0 as adb-persons
participant I0 as adb-utilities
participant I1 as Utilities DB
participant A1 as Contracts DB
activate A0
par
A0->>D0: lookup person
and
A0->>I0: validate IBAN
activate I0
I0->>I1: read/write
deactivate I0
end
A0->>A1: write SEPA mandate
deactivate A0
I can fetch a GLI contract candidates
Description: Fetches rental contracts eligible for GLI insurance.
Sequence: A0 <C0>
sequenceDiagram
participant A0 as adb-contracts
participant C0 as adb-parts
activate A0
A0->>C0: list eligible parts
deactivate A0
I can create a Direct Debit
Description: Creates a direct debit entry for rent payment.
Sequence: A0 <I0 <I1>, A1, B2>, E, B0 <I0, A0, B1>
sequenceDiagram
participant A0 as adb-contracts
participant I0 as adb-utilities
participant I1 as Utilities DB
participant A1 as Contracts DB
participant Qb as accounting queue (B2)
participant Bus as Event Bus
participant B0 as adb-accounting
participant B1 as Accounting DB
activate A0
A0->>I0: read mandate
activate I0
I0->>I1: read
deactivate I0
A0->>A1: write direct-debit entry
A0->>Qb: emit accounting event
deactivate A0
Qb->>Bus: publish
Bus->>B0: deliver
activate B0
B0->>I0: validate
B0->>A0: read contract
B0->>B1: write payment
deactivate B0
I can send a Dunning Notice
Description: Sends a dunning notice to tenants with overdue payments.
Sequence: A0 <A1, A2> E, A0 <A1, G0 <G1, S3>>
sequenceDiagram
participant A0 as adb-contracts
participant A1 as Contracts DB
participant Qa as contracts queue (A2)
participant Bus as Event Bus
participant G0 as adb-files
participant G1 as Files DB
participant S3 as AWS S3
activate A0
A0->>A1: persist dunning notice
A0->>Qa: emit contracts-dunning-notice-sent
deactivate A0
Qa->>Bus: publish
Bus->>A0: deliver
activate A0
A0->>A1: read notice
A0->>G0: render notice document
activate G0
G0->>G1: write metadata
G0->>S3: write blob
deactivate G0
deactivate A0
I can update Dunning Notice Balance
Description: Updates the balance on dunning notices when payments are made.
Sequence: B2, E, A0 <A1>
sequenceDiagram
participant Qb as accounting queue (B2)
participant Bus as Event Bus
participant A0 as adb-contracts
participant A1 as Contracts DB
Qb->>Bus: publish
Bus->>A0: deliver
activate A0
A0->>A1: update notice balance
deactivate A0
ADB-Persons
I can update a Person
Description: Updates an existing person record.
Sequence: D0 <D1, A2>, E, A0 <A1>
sequenceDiagram
participant D0 as adb-persons
participant D1 as Persons DB
participant Qa as contracts queue (A2)
participant Bus as Event Bus
participant A0 as adb-contracts
participant A1 as Contracts DB
activate D0
D0->>D1: write person
D0->>Qa: emit contracts-person-modified
deactivate D0
Qa->>Bus: publish
Bus->>A0: deliver
activate A0
A0->>A1: refresh affected contracts
deactivate A0
I can create a Supplier
Description: Creates a new supplier record in the system.
Sequence: D0 <D1, B2>, E, B0 <I0 <I1>, B1>
sequenceDiagram
participant D0 as adb-persons
participant D1 as Persons DB
participant Qb as accounting queue (B2)
participant Bus as Event Bus
participant B0 as adb-accounting
participant I0 as adb-utilities
participant I1 as Utilities DB
participant B1 as Accounting DB
activate D0
D0->>D1: write supplier
D0->>Qb: emit accounting-person-modified
deactivate D0
Qb->>Bus: publish
Bus->>B0: deliver
activate B0
B0->>I0: lookup data
activate I0
I0->>I1: read
deactivate I0
B0->>B1: write supplier account
deactivate B0
I can create an Organization
Description: Creates a new organization record in the system.
Sequence: D0 <D1, B2>, E, B0 <B1>
sequenceDiagram
participant D0 as adb-persons
participant D1 as Persons DB
participant Qb as accounting queue (B2)
participant Bus as Event Bus
participant B0 as adb-accounting
participant B1 as Accounting DB
activate D0
D0->>D1: write organization
D0->>Qb: emit accounting-organization-modified
deactivate D0
Qb->>Bus: publish
Bus->>B0: deliver
activate B0
B0->>B1: write organization account
deactivate B0
I can upload a Tenant's File
Description: Uploads and links a tenant's file to their record.
Sequence: D0 <G0 <G1, S3>>
sequenceDiagram
participant D0 as adb-persons
participant G0 as adb-files
participant G1 as Files DB
participant S3 as AWS S3
activate D0
D0->>G0: store tenant file
activate G0
G0->>G1: write metadata
G0->>S3: write blob
deactivate G0
deactivate D0
ADB-Parts
I can create a Part
Description: Creates a new part record in the system.
Sequence: C0 <C1, E2>, E, E0 <E1>
sequenceDiagram
participant C0 as adb-parts
participant C1 as Parts DB
participant Qe as views queue (E2)
participant Bus as Event Bus
participant E0 as adb-views
participant E1 as Views DB
activate C0
C0->>C1: write part
C0->>Qe: emit views-part
deactivate C0
Qe->>Bus: publish
Bus->>E0: deliver
activate E0
E0->>E1: write projection
deactivate E0
I can update a Part
Description: Updates an existing part record.
Sequence: C0 <C1, [A2, E2]>, E, [A0 <A1>, E0 <E1>]
sequenceDiagram
participant C0 as adb-parts
participant C1 as Parts DB
participant Qa as contracts queue (A2)
participant Qe as views queue (E2)
participant Bus as Event Bus
participant A0 as adb-contracts
participant A1 as Contracts DB
participant E0 as adb-views
participant E1 as Views DB
activate C0
C0->>C1: write part update
par
C0->>Qa: emit contracts-part-modified
and
C0->>Qe: emit views-part
end
deactivate C0
Qa->>Bus: publish
Qe->>Bus: publish
par
Bus->>A0: deliver
activate A0
A0->>A1: refresh affected contracts
deactivate A0
and
Bus->>E0: deliver
activate E0
E0->>E1: refresh projection
deactivate E0
end
I can create a Part with owner
Description: Creates a new part record linked to an owner and owner contract.
Sequence: C0 <C1, A0 <A1, E2>, E2>, E, [A0 <A1>, E0 <E1>]
sequenceDiagram
participant C0 as adb-parts
participant C1 as Parts DB
participant A0 as adb-contracts
participant A1 as Contracts DB
participant Qe as views queue (E2)
participant Bus as Event Bus
participant E0 as adb-views
participant E1 as Views DB
activate C0
C0->>C1: write part
C0->>A0: create owner contract
activate A0
A0->>A1: write owner contract
A0->>Qe: emit views event
deactivate A0
C0->>Qe: emit views-part
deactivate C0
Qe->>Bus: publish
par
Bus->>A0: deliver
activate A0
A0->>A1: refresh contract
deactivate A0
and
Bus->>E0: deliver
activate E0
E0->>E1: write projection
deactivate E0
end
I can sell a Part
Description: Sells a part, updating its status and notifying relevant services.
Sequence: C0 <A0 <A1, E2>, C1, E2>, E, [A0 <A1>, E0 <E1>]
sequenceDiagram
participant C0 as adb-parts
participant A0 as adb-contracts
participant A1 as Contracts DB
participant Qe as views queue (E2)
participant C1 as Parts DB
participant Bus as Event Bus
participant E0 as adb-views
participant E1 as Views DB
activate C0
C0->>A0: end owner contract
activate A0
A0->>A1: close contract
A0->>Qe: emit views event
deactivate A0
C0->>C1: mark part sold
C0->>Qe: emit views-part
deactivate C0
Qe->>Bus: publish
par
Bus->>A0: deliver
activate A0
A0->>A1: refresh contract
deactivate A0
and
Bus->>E0: deliver
activate E0
E0->>E1: refresh projection
deactivate E0
end
I can assign a Trustee Person
Description: Assigns a trustee person to manage a part.
Sequence: C0 <D0, C1, [A2, E2]>, E, [A0 <A1>, E0 <E1>]
sequenceDiagram
participant C0 as adb-parts
participant D0 as adb-persons
participant C1 as Parts DB
participant Qa as contracts queue (A2)
participant Qe as views queue (E2)
participant Bus as Event Bus
participant A0 as adb-contracts
participant A1 as Contracts DB
participant E0 as adb-views
participant E1 as Views DB
activate C0
C0->>D0: lookup trustee
C0->>C1: assign trustee
par
C0->>Qa: emit contracts-part-modified
and
C0->>Qe: emit views-part
end
deactivate C0
Qa->>Bus: publish
Qe->>Bus: publish
par
Bus->>A0: deliver
activate A0
A0->>A1: refresh contracts
deactivate A0
and
Bus->>E0: deliver
activate E0
E0->>E1: refresh projection
deactivate E0
end
I can patch an Acquisition Date
Description: Patches the acquisition date of a part.
Sequence: C0 <A0 <A1>, A0>
sequenceDiagram
participant C0 as adb-parts
participant A0 as adb-contracts
participant A1 as Contracts DB
activate C0
C0->>A0: update acquisition contract
activate A0
A0->>A1: write acquisition date
deactivate A0
C0->>A0: notify contracts
deactivate C0
I can create a Charge
Description: Creates a new charge associated with a part.
Sequence: C0 <C1, E2>, E, E0 <E1>
sequenceDiagram
participant C0 as adb-parts
participant C1 as Parts DB
participant Qe as views queue (E2)
participant Bus as Event Bus
participant E0 as adb-views
participant E1 as Views DB
activate C0
C0->>C1: write charge
C0->>Qe: emit views-charge-budget
deactivate C0
Qe->>Bus: publish
Bus->>E0: deliver
activate E0
E0->>E1: write projection
deactivate E0
ADB-Tickets
I can create a Ticket
Description: Creates a new ticket record in the system.
Sequence: F0 <C0, A0, D0, I0 <I1>, F1, E2>, E, E0 <E1>
sequenceDiagram
participant F0 as adb-tickets
participant C0 as adb-parts
participant A0 as adb-contracts
participant D0 as adb-persons
participant I0 as adb-utilities
participant I1 as Utilities DB
participant F1 as Tickets DB
participant Qe as views queue (E2)
participant Bus as Event Bus
participant E0 as adb-views
participant E1 as Views DB
activate F0
F0->>C0: lookup part
F0->>A0: lookup contract
F0->>D0: lookup person
F0->>I0: lookup data
activate I0
I0->>I1: read
deactivate I0
F0->>F1: write ticket
F0->>Qe: emit views-ticket
deactivate F0
Qe->>Bus: publish
Bus->>E0: deliver
activate E0
E0->>E1: write projection
deactivate E0
I can update a Ticket
Description: Updates an existing ticket record.
Sequence: F0 <C0, A0, D0, I0 <I1>, F1, E2>, E, E0 <E1>
sequenceDiagram
participant F0 as adb-tickets
participant C0 as adb-parts
participant A0 as adb-contracts
participant D0 as adb-persons
participant I0 as adb-utilities
participant I1 as Utilities DB
participant F1 as Tickets DB
participant Qe as views queue (E2)
participant Bus as Event Bus
participant E0 as adb-views
participant E1 as Views DB
activate F0
F0->>C0: lookup part
F0->>A0: lookup contract
F0->>D0: lookup person
F0->>I0: lookup data
activate I0
I0->>I1: read
deactivate I0
F0->>F1: update ticket
F0->>Qe: emit views-ticket
deactivate F0
Qe->>Bus: publish
Bus->>E0: deliver
activate E0
E0->>E1: refresh projection
deactivate E0
ADB-Files
I can create a File (with fileMetadata)
Description: Creates a new file record with associated metadata.
Sequence: G0 <G1, S3>
sequenceDiagram
participant G0 as adb-files
participant G1 as Files DB
participant S3 as AWS S3
activate G0
G0->>G1: write metadata
G0->>S3: write blob
deactivate G0
I can find a File for a Ticket
Description: Fetches files associated with a specific ticket.
Sequence: G0 <F0, G1, S3>
sequenceDiagram
participant G0 as adb-files
participant F0 as adb-tickets
participant G1 as Files DB
participant S3 as AWS S3
activate G0
G0->>F0: lookup ticket
G0->>G1: read metadata
G0->>S3: read blob
deactivate G0
I can patch diagnostics data for a part (stores like a filemetadata)
Description: Updates diagnostic data for a part, storing it as file metadata.
Sequence: G0 <G1, [A2, E2]>, E, [A0 <G0, A1>, E0 <E1>]
sequenceDiagram
participant G0 as adb-files
participant G1 as Files DB
participant Qa as contracts queue (A2)
participant Qe as views queue (E2)
participant Bus as Event Bus
participant A0 as adb-contracts
participant A1 as Contracts DB
participant E0 as adb-views
participant E1 as Views DB
activate G0
G0->>G1: write diagnostics metadata
par
G0->>Qa: emit contracts-file-metadata-modified
and
G0->>Qe: emit views-file-metadata
end
deactivate G0
Qa->>Bus: publish
Qe->>Bus: publish
par
Bus->>A0: deliver
activate A0
A0->>G0: read metadata
A0->>A1: refresh contract
deactivate A0
and
Bus->>E0: deliver
activate E0
E0->>E1: refresh projection
deactivate E0
end
ADB-Accounting
I can create a Manual Payment
Description: Creates a manual payment entry in the accounting system.
Sequence: B0 <B1, B2>, E, B0 <B1>
sequenceDiagram
participant B0 as adb-accounting
participant B1 as Accounting DB
participant Qb as accounting queue (B2)
participant Bus as Event Bus
activate B0
B0->>B1: write payment
B0->>Qb: emit accounting-payment-modified
deactivate B0
Qb->>Bus: publish
Bus->>B0: deliver
activate B0
B0->>B1: update balance
deactivate B0
I can create a Direct Debit Payment
Description: Creates a direct debit payment entry in the accounting system.
Sequence: B2, E, B0 <I0, A0, B1, B2>, E, B0 <B1>
sequenceDiagram
participant Qb as accounting queue (B2)
participant Bus as Event Bus
participant B0 as adb-accounting
participant I0 as adb-utilities
participant A0 as adb-contracts
participant B1 as Accounting DB
Qb->>Bus: publish (direct-debits-status-processed)
Bus->>B0: deliver
activate B0
B0->>I0: lookup data
B0->>A0: read contract
B0->>B1: write payment
B0->>Qb: emit accounting-payment-modified
deactivate B0
Qb->>Bus: publish
Bus->>B0: deliver
activate B0
B0->>B1: update balance
deactivate B0
I can create a Manual Invoice
Description: Creates a manual invoice in the accounting system.
Sequence: B0 <[A0, D0, C0], B1>
sequenceDiagram
participant B0 as adb-accounting
participant A0 as adb-contracts
participant D0 as adb-persons
participant C0 as adb-parts
participant B1 as Accounting DB
activate B0
par
B0->>A0: lookup contract
and
B0->>D0: lookup person
and
B0->>C0: lookup part
end
B0->>B1: write invoice
deactivate B0
I can create a GLI Payback Invoice
Description: Creates a GLI payback invoice in the accounting system.
Sequence: B2, E, B0 <I0, [A0, A0], [A0, D0, C0], B1>
sequenceDiagram
participant Qb as accounting queue (B2)
participant Bus as Event Bus
participant B0 as adb-accounting
participant I0 as adb-utilities
participant A0 as adb-contracts
participant D0 as adb-persons
participant C0 as adb-parts
participant B1 as Accounting DB
Qb->>Bus: publish
Bus->>B0: deliver
activate B0
B0->>I0: lookup GLI data
par
B0->>A0: lookup contract A
and
B0->>A0: lookup contract B
end
par
B0->>A0: lookup contract
and
B0->>D0: lookup person
and
B0->>C0: lookup part
end
B0->>B1: write GLI payback invoice
deactivate B0
I can create a GLI Invoice
Description: Creates a GLI invoice in the accounting system.
Sequence: B2, E, B0 <I0, A0, [A0, D0, C0], B1>
sequenceDiagram
participant Qb as accounting queue (B2)
participant Bus as Event Bus
participant B0 as adb-accounting
participant I0 as adb-utilities
participant A0 as adb-contracts
participant D0 as adb-persons
participant C0 as adb-parts
participant B1 as Accounting DB
Qb->>Bus: publish
Bus->>B0: deliver
activate B0
B0->>I0: lookup GLI data
B0->>A0: lookup contract
par
B0->>A0: lookup contract
and
B0->>D0: lookup person
and
B0->>C0: lookup part
end
B0->>B1: write GLI invoice
deactivate B0
I can process an Accounting Event
Description: Processes an accounting event, generating necessary entries and updating balances.
Sequence: B0 <B1, A0, C0, A0, B1, B1, [A2, B2, E2]>, E, [A0 <A1>, E0 <E1>, B0 <[A0, B1], [A0, B1, *B1]> ]
sequenceDiagram
participant B0 as adb-accounting
participant B1 as Accounting DB
participant A0 as adb-contracts
participant C0 as adb-parts
participant Qa as contracts queue (A2)
participant Qb as accounting queue (B2)
participant Qe as views queue (E2)
participant Bus as Event Bus
participant A1 as Contracts DB
participant E0 as adb-views
participant E1 as Views DB
participant B1r as Accounting DB (refresh)
activate B0
B0->>B1: read accounting event
B0->>A0: lookup contract
B0->>C0: lookup part
B0->>A0: lookup contract (cross-ref)
B0->>B1: write entries
B0->>B1: update balance
par
B0->>Qa: emit contracts-accounting-event-modified
and
B0->>Qb: emit accounting-accounting-event-modified
and
B0->>Qe: emit views-accounting-event
end
deactivate B0
Qa->>Bus: publish
Qb->>Bus: publish
Qe->>Bus: publish
par
Bus->>A0: deliver
activate A0
A0->>A1: refresh contract
deactivate A0
and
Bus->>E0: deliver
activate E0
E0->>E1: refresh projection
deactivate E0
and
Bus->>B0: deliver
activate B0
par
B0->>A0: lookup contract
B0->>B1: read accounts
and
B0->>A0: lookup contract
B0->>B1: read accounts
B0->>B1r: refresh projection
end
deactivate B0
end
Note over B1r: *B1 — projection refresh of B1 (inferred)
I can update an Accounting Balance
Description: Updates the balance of an account based on recent accounting entries.
Sequence: B2, E, B0 <B1>
sequenceDiagram
participant Qb as accounting queue (B2)
participant Bus as Event Bus
participant B0 as adb-accounting
participant B1 as Accounting DB
Qb->>Bus: publish (accounting-entry-modified)
Bus->>B0: deliver
activate B0
B0->>B1: update balance
deactivate B0
I can create Post-Settlement Events
Description: Creates post-settlement events to transfer funds to different accounts after paying payments
Sequence: B2, E, B0 <B1, A0, C0, A0, B1, B1, [B2, E2]>, E, [B0 <B1>, E0 <E1>]
sequenceDiagram
participant Qb as accounting queue (B2)
participant Bus as Event Bus
participant B0 as adb-accounting
participant B1 as Accounting DB
participant A0 as adb-contracts
participant C0 as adb-parts
participant Qe as views queue (E2)
participant E0 as adb-views
participant E1 as Views DB
Qb->>Bus: publish (direct-debits-status-processed)
Bus->>B0: deliver
activate B0
B0->>B1: read settlement
B0->>A0: lookup contract
B0->>C0: lookup part
B0->>A0: lookup contract
B0->>B1: write transfer entries
B0->>B1: update balances
par
B0->>Qb: emit accounting event
and
B0->>Qe: emit views event
end
deactivate B0
Qb->>Bus: publish
Qe->>Bus: publish
par
Bus->>B0: deliver
activate B0
B0->>B1: read balance
deactivate B0
and
Bus->>E0: deliver
activate E0
E0->>E1: refresh projection
deactivate E0
end
I can create an Auxiliary Account
Description: Creates an auxiliary ledger account for detailed tracking.
Sequence: B2, E, B0 <B1>
sequenceDiagram
participant Qb as accounting queue (B2)
participant Bus as Event Bus
participant B0 as adb-accounting
participant B1 as Accounting DB
Qb->>Bus: publish (organization-modified)
Bus->>B0: deliver
activate B0
B0->>B1: write auxiliary account
deactivate B0