Initial commit: Financial Crime domain exemplar

This commit is contained in:
2026-06-01 21:18:19 +12:00
commit 2fc4dacd59
70 changed files with 5776 additions and 0 deletions
@@ -0,0 +1,34 @@
# Salesforce CRM
Salesforce CRM is the customer relationship source for onboarding, profile maintenance, and communication preferences. It contributes party identity, customer profile, and contact data used by KYC and due diligence workflows.
## Metadata
```yaml
id: salesforce-crm
owner: crm.platform@bank.com
steward: data.governance@bank.com
change_model: real-time-cdc
change_events:
- Customer Created
- Customer Updated
- Contact Address Updated
- Customer Preference Updated
update_frequency: real-time
data_quality_tier: 1
status: Production
version: "1.0.0"
```
## [Financial Crime](../../domain.md) Feeds
Canonical Entity | Transform File | Attributes Contributed | Change Model
--- | --- | --- | ---
[Party](../../entities/party.md#party) | [table_account](transforms/table_account.md) | Party Identifier, Party Status | real-time-cdc
[Person](../../entities/person.md#person) | [table_contact](transforms/table_contact.md) | Given Name, Family Name, Date of Birth, PEP Status | real-time-cdc
[Company](../../entities/company.md#company) | [table_account](transforms/table_account.md) | Legal Name, Registration Identifier | real-time-cdc
[Customer](../../entities/customer.md#customer) | [table_account](transforms/table_account.md) | Customer Number, Onboarding Date, Segment | real-time-cdc
[Contact Address](../../entities/contact_address.md#contact-address) | [table_contact_point](transforms/table_contact_point.md) | Address Purpose, Verification Status, Effective Dates | real-time-cdc
[Customer Preferences](../../entities/customer-preferences.md#customer-preferences) | [table_preference](transforms/table_preference.md) | Preferred Contact Channel, Marketing Consent | event-driven
@@ -0,0 +1,30 @@
# [Salesforce CRM](../source.md)
## Account
Pos | Column Name | Data Type | Max Len | Precision | Scale | Nulls | Comment | Destination
--- | --- | --- | --- | --- | --- | --- | --- | ---
1 | ExternalPartyId | Text | 40 | | | no | Account-scoped party identifier | Party.Party Identifier
2 | RecordStatus | Text | 20 | | | yes | Account lifecycle status from CRM | [Map Party Status](#map-party-status)
3 | LegalEntityName | Text | 200 | | | yes | Registered legal entity name | Company.Legal Name
4 | CompanyRegistrationNumber | Text | 80 | | | yes | Jurisdictional registration number | Company.Registration Identifier
5 | CustomerNumber | Text | 100 | | | yes | CRM customer reference | Customer.Customer Number
6 | OnboardingCompletedDate | Date | | | | yes | Date onboarding completed | Customer.Onboarding Date
7 | CustomerSegmentCode | Text | 30 | | | yes | Commercial segment classification code | Customer.Segment
### Map Party Status
Translates CRM lifecycle status values into canonical party status.
```yaml
type: conditional
target: Party · Party Status
source:
field: Account.RecordStatus
cases:
Active: "RecordStatus == 'Active'"
Inactive: "RecordStatus == 'Inactive'"
Suspended: "RecordStatus == 'Suspended'"
Closed: "RecordStatus == 'Closed'"
fallback: Inactive
```
@@ -0,0 +1,26 @@
# [Salesforce CRM](../source.md)
## Contact
Pos | Column Name | Data Type | Max Len | Precision | Scale | Nulls | Comment | Destination
--- | --- | --- | --- | --- | --- | --- | --- | ---
1 | FirstName | Text | 120 | | | yes | Contact given name | Person.Given Name
2 | LastName | Text | 120 | | | yes | Contact family name | Person.Family Name
3 | Birthdate | Date | | | | yes | Contact date of birth | Person.Date of Birth
4 | CompliancePepFlag | Text | 1 | | | yes | PEP indicator from compliance screening | [Derive PEP Status](#derive-pep-status)
### Derive PEP Status
Derives politically exposed person status from CRM compliance flag.
```yaml
type: conditional
target: Person · PEP Status
source:
field: Contact.CompliancePepFlag
cases:
Confirmed: "CompliancePepFlag == 'Y'"
Not PEP: "CompliancePepFlag == 'N'"
Unknown: "CompliancePepFlag == null"
fallback: Unknown
```
@@ -0,0 +1,41 @@
# [Salesforce CRM](../source.md)
## ContactPoint
Pos | Column Name | Data Type | Max Len | Precision | Scale | Nulls | Comment | Destination
--- | --- | --- | --- | --- | --- | --- | --- | ---
1 | PurposeCode | Text | 40 | | | yes | Purpose classification for contact point | Contact Address.Address Purpose
2 | VerificationResult | Text | 20 | | | yes | Verification workflow result | [Map Verification Status](#map-verification-status)
3 | ValidFromDate | Date | | | | yes | Effective-from date | [Derive Effective Dates](#derive-effective-dates)
4 | ValidToDate | Date | | | | yes | Effective-to date | [Derive Effective Dates](#derive-effective-dates)
### Map Verification Status
Maps verification outcome from CRM verification workflow.
```yaml
type: conditional
target: Contact Address · Verification Status
source:
field: ContactPoint.VerificationResult
cases:
Verified: "VerificationResult == 'PASS'"
Pending: "VerificationResult == 'PENDING'"
Failed: "VerificationResult == 'FAIL'"
fallback: Pending
```
### Derive Effective Dates
Builds effective date range token from valid-from and valid-to values.
```yaml
type: derived
target: Contact Address · Effective Dates
expression: "coalesce(Valid From, '') + '|' + coalesce(Valid To, '')"
inputs:
Valid From:
field: ContactPoint.ValidFromDate
Valid To:
field: ContactPoint.ValidToDate
```
@@ -0,0 +1,24 @@
# [Salesforce CRM](../source.md)
## Preference
Pos | Column Name | Data Type | Max Len | Precision | Scale | Nulls | Comment | Destination
--- | --- | --- | --- | --- | --- | --- | --- | ---
1 | PreferredChannelCode | Text | 30 | | | yes | Preferred communication channel code | Customer Preferences.Preferred Contact Channel
2 | MarketingOptInFlag | Text | 1 | | | yes | Opt-in indicator for marketing messages | [Map Marketing Consent](#map-marketing-consent)
### Map Marketing Consent
Maps marketing consent flag into canonical consent status.
```yaml
type: conditional
target: Customer Preferences · Marketing Consent
source:
field: Preference.MarketingOptInFlag
cases:
Consented: "MarketingOptInFlag == 'Y'"
Declined: "MarketingOptInFlag == 'N'"
Unknown: "MarketingOptInFlag == null"
fallback: Unknown
```