Life ConnectLife Connect
Wiki index
Architecture
Services
Concepts
Runbooks
Infra
Swagger Docs
GitHub
Wiki index
Architecture
Services
Concepts
Runbooks
Infra
Swagger Docs
GitHub
  • Archive
  • Data Dictionary
  • Functional Epics

    • DICTIONARY OF ATTRIBUTES
    • Search Condos
    • Display

      • DisplayAll

        • Display all - Contracts
        • Display all - invoices
        • Display all - parts
        • Display all - Persons Relationships
        • Display all - Persons
        • Display tickets
      • DisplayContract

        • Display bank account Contract
        • Display Condo Member Contract
        • Display contact contract
        • Display Employee Contract
        • Display Generic Contract
        • Display Insurance Contract
        • Display Legal Represent Contract
        • Display Oral Contract
        • Display Owner Contract
        • Display Condo Regulation Contract
        • Display rental Contract
        • Display Supplier Contract
        • Display Trustee Contract
      • DisplayDelegate

        • Display Delegate
      • DisplayHistory

        • Display history
      • DisplayPerson

        • Display Company Person
        • Display Condo Person
        • Display Division Person
        • Display Group Person
        • Display Indivision Person
        • Display Natural Person
        • Display Union Person
        • Display Unknown Person
      • DisplayPersonsContracts

        • Display all Interventions
      • DisplayProperty

        • Display part
        • Display part
      • UiPerson

        • Display "mini" Persons
    • Process

      • Create

        • Create property & condo
      • Delete

        • Delete objects according to state machine
      • RC Renewal

        • RC RESIDENTIAL - automatic renewal
      • Review

        • rent amount review - RC residential - creation
        • rent amount review - RC residential - take-over
      • Sell

        • Sell a unit
    • Reporting

      • GRR

        • GLOBAL RENT REPORT
    • Search

      • Search
    • StateMachine

      • CreatingContract

        • State machine - creating a rental contract
        • State machine - creating a rental delegate contract
        • State machine - Referencing a abstract part contract
        • State machine - Referencing a bank contract
        • State machine - Referencing a condo regulation contract
        • State machine - Referencing a contact contract
        • State machine - Referencing an employee contract
        • State machine - Referencing a generic contract
        • State machine - Referencing a legal represent contract
        • State machine - Referencing a owner contract
        • State machine - Referencing a rental contract
        • State machine - Referencing a supplier contract
        • State machine - Referencing a trustee contract
      • CreatingIntervention

        • State machine - creating a ticket
        • State machine - Referencing a message
      • CreatingInvoice

        • State machine - creating a incoming (supplier) invoice
      • CreatingPayments

        • State machine - creating an incoming payment
      • EncodingPart

        • CreatingPart

          • State machine - Referencing part relationships
          • State machine - Referencing a part
      • EncodingPerson

        • CreatingAddresses

          • State machine - Creating email address
          • State machine - Creating phone address
          • State machine - Creating postal address
          • State machine - Creating web address
        • CreatingPerson

          • State machine - Referencing a company person
          • State machine - Referencing a condo person
          • State machine - Referencing a division person
          • State machine - Referencing an group person
          • State machine - Referencing an indivision person
          • State machine - Referencing a natural person
          • State machine - Referencing a union person
        • CreatingShareHolders

          • State machine - valuing a shareholder
      • Scanning

        • State machine scanning - analyze a document
        • State machine scanning - matching a document
        • State machine scanning - encoding a document : related information
    • Utility

      • Allocation keys
      • Company settings
      • Document data & file
      • Revision Index
    • Validations

      • Shareholders validation
  • Implicit

    • Callback

      • Logging In
  • ProductBoard

    • Rental Process

      • Rental delegate process
    • Ticketing

      • Create a ticket - link a ticket in Outlook add-in - add a call - display a ticket
      • Display Person Info in Outlook add-in
  • Technical Epics

    • Indexation Feature Documentation
    • Rent Amount Management Feature Documentation
    • I have an API
    • I can store the balance of an account
    • I Have Person Notifications
    • 🧩 System Process Diagrams
    • The Team has a DEV environment
    • The Team is organized
    • Accounting

      • Re-generation of Invoices
      • I can call the rent for my Rental Contract
      • Payment Creation Strategy Feature Documentation
      • I Can Revese

        • Payment Reversal
      • I Have Invoices

        • I have direction on invoice's item level
      • I Have Subsidies

        • I Can Receive Family Allowance Payments - Technical Documentation
        • Subsidies + Direct Debit Documentation
    • Communication Module

      • Communication module
    • Contracts

      • I can have contract guarantors
      • API Models
      • I Have Call For Rent Process

        • Call For Rent (CFR) Process Documentation
      • Occupancy Compensation

        • **OCCUPANCY COMPENSATION Documentation**
      • State Machine

        • I can have the Rental Contract state machine
    • Database

      • Database Indexes
    • E2e Testing

      • I can create an E2E dataset
    • Env Setup

      • Adapt env to stateless UI build
      • Blockhound
      • Table of Environments and Their Specifications
      • Environment How-To
      • Java Flight Recorder Management Documentation
      • Local Environment Setup
      • Kubernetes Logs Retrieval Documentation
      • Monitoring
      • I can create a new organisation
      • Production Environment Configuration
      • Remote Environment Setup
      • Set up of separate DB for env
      • Terraform Aws S3 Buckets
      • adb-ui Service Version Update
    • Files

      • I can have tags for files
    • Globals

      • boundaries
      • boundaries
      • boundaries
      • boundaries
    • Messaging

      • MongoDB Trigger Model Documentation
    • Open Api

      • Swagger Documentation Guide
      • Swagger
    • Parts

      • I Have A Forecast And Actuals Module
      • I can have part equipments
    • Process

      • Pre-Meeting Questionnaire
      • I Can Release My Feature
    • Security

      • I can create and provision an organisation
      • a user is granted access to the application
    • Stress Test

      • Introduction
      • Reports

        • Introduction
        • Introduction
        • Introduction
        • Introduction
        • Introduction
        • Table of contents
    • Tickets

      • Ticket Details Functionality
    • Troubleshooting

      • Prometheus Memory Issue Handling
Last updated 2026-06-02

🧩 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

SymbolMeaning
A0, B0, G0, ..Services
A1, B1, G1Databases owned by those services
A2, B2, E2, …SQS queues triggered by service actions
EEvent Bus (AWS EventBridge) — routes events between producers and consumers
S3AWS S3 — external file storage layer
< … >Scoped sequence — actions executed within the context of the preceding service
,Sequential flow
[ … , … ]Parallel flows executed concurrently
*B1Projection 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.

CodeServiceDB (X.1)Queues (X.2.*)
Aadb-contractsContracts DBcontracts-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)
Badb-accountingAccounting DBaccounting-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)
Cadb-partsParts DBparts-* family
Dadb-personsPersons DBpersons-* family
Eadb-viewsViews DBviews-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)
Fadb-ticketsTickets DBtickets-* family
Gadb-filesFiles DBfiles-* family
Hadb-aggregatesAggregates DBaggregates-* family
Iadb-utilitiesUtilities DButilities-* family (I2)

Note: bare E (no digit) is the Event Bus, distinct from E0/E1/E2 which 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

Edit this page
Last Updated:
Contributors: Yevhenii Khudolii
Prev
I Have Person Notifications
Next
The Team has a DEV environment