feat: Implement initial setup for Financial Crime domain

- Added Makefile for orchestrating domain instantiation and management.
- Created deploy README for guiding the setup process of the Financial Crime domain.
- Introduced domain configuration file for mapping metadata to the deployment template.
- Implemented pre-commit hook for validating metadata before commits.
- Developed instantiation script to manage the lifecycle of the Financial Crime domain.
- Added Salesforce CRM source with associated metadata and transformation files.
- Added SAP Fraud Management source with associated metadata and transformation files.
- Added Temenos Payment source with associated metadata and transformation files.
- Removed obsolete payment event and parties transformation files.
This commit is contained in:
2026-06-14 16:46:06 +12:00
parent f4c46700c5
commit 0aeb893c0f
25 changed files with 612 additions and 85 deletions
@@ -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
```