Two ways in: a customer on sifi.app, or a specialist in the Internal Hub. Both pass the same Gate 2 checks, go through the Hub review unless they are approved automatically, and end with a company in Core Banking and an authorised person who can log in.
On the web the customer does everything, Nafath included, before submitting. In manual intake the specialist submits, and the authorised person only does Nafath and the terms after Core Banking invites them. Gate 2, the Hub review and the company creation in between are the same.
Boxes are steps, diamonds are decisions. Colours say who acts.
Facts from the code trace, with the default settings.
AUTO_ONBOARD_ENABLED is on; it is off by default, so everything goes to the Hub review.flowchart TD
subgraph WEB["Web journey · customer on sifi.app"]
W1["1 · Work email + OTP login"]
W2["2 · Company details: CR, legal name, IBAN optional"]
W3["3 · Point of contact + team members"]
W4["4 · Review and 3 consents"]
W5["5 · Gate 1: Wathq company register, is the contact a manager?"]
W6{"Is the contact<br/>the signatory?"}
W7["Signatory gets an invitation email<br/>and repeats steps 4 to 5"]
W8["6 · Account setup: email + SMS codes, Nafath, password"]
W9["7 · Submitted"]
W1 --> W2 --> W3 --> W4 --> W5 --> W6
W6 -- yes --> W8
W6 -- no, invite --> W7 --> W8
W8 --> W9
end
subgraph MAN["Manual intake · specialist in the Internal Hub"]
M1["1 · Opens a request, picks Business or Government"]
M2["2 · Company, contact, team, authorised person, documents"]
M3["3 · Submit: application created, nobody invited yet"]
M1 --> M2 --> M3
end
G2["Gate 2 · risk score, sanctions Focal + SAMA, PEP"]
W9 --> G2
M3 --> G2
D1{"All checks pass and<br/>auto-onboard is on?"}
G2 --> D1
subgraph HUB["Internal Hub review"]
H1["Queue: reviewer starts the review"]
H2{"Route"}
H3["Fraud team / Compliance / CEO<br/>when the review flags are on"]
H4{"Approve?"}
H5["Rejected"]
H6["Approver clicks Onboard Company"]
H1 --> H2
H2 -- normal --> H4
H2 -- fraud or high risk --> H3 --> H4
H4 -- no --> H5
H4 -- yes --> H6
end
D1 -- no --> H1
CB["Core Banking creates the company"]
D1 -- yes --> CB
H6 --> CB
END1["Web: authorised person already set up,<br/>logs in to the portal and app"]
INV["Manual: Core Banking emails the invitation<br/>to the authorised person"]
AP["Authorised person: ID + email code, SMS code,<br/>Nafath, terms, password"]
END2["Logs in to the portal and the mobile app"]
REC["Every 15 min Onboarding-MS checks who accepted"]
CB -- web journey --> END1
CB -- manual intake --> INV --> AP --> END2
END2 -.-> REC
classDef web fill:#e8efec,stroke:#2f473f,color:#253932
classDef man fill:#fff4e0,stroke:#b26b00,color:#4f3300
classDef gate fill:#252e2a,stroke:#252e2a,color:#f6f6ee
classDef hub fill:#ffffff,stroke:#7fb3a2,color:#253932
classDef cb fill:#e9fbe5,stroke:#158900,color:#0d4d00
classDef bad fill:#fdebe8,stroke:#b3261e,color:#b3261e
class W1,W2,W3,W4,W5,W6,W7,W8,W9 web
class M1,M2,M3 man
class G2,D1 gate
class H1,H2,H3,H4,H6 hub
class H5 bad
class CB,END1,INV,AP,END2 cb
class REC hub