Contact Functionality
In CMD context contact is a person with whom Maersk representatives will communicate for any customer orders. In CMD application Contact entity can not exist without associating to at least to one customer. Contact can associate to customer with CUST_CONT or OBO relationships. In CMD application Contact entity can be created, updated, Inactivate, Contact association be moved from one customer to another customer.
Contact can be master contact, team contact, CUST_CONT contact or OBO contact.
Contact onboarding options in CMD Application
- CMD portal application
- Contact Ingest API (SFDC, Maersk.com)
- Initial Data Load process (Used for any M&A / Integration Activities)
- Bulk Create via BBU
Contact create Lifecycle in CMD Application
- Search Duplicate service
Before creating a Contact, the user will be searched to find such similar record exist in the systems or not. If any such similar record found, the system will display to the user to use. If no record found or user want to still create another record he can continue doing it.
Similar contact will be identified as duplicate based on the below contact duplicate match rules.
- Match new contact with email - if the contact email is different then contact is not duplicate. The match should be performed between both primary and/or alternative email (cross validation/check must be performed between primary/alternative). This email check can be either the primary or the alternative email.
The following are exceptions to the above rule. These will be executed along with the above condition.
- If First name + Last name (cross check between names, exact names) same + Mobile number same but email (cross check against primary and alternative email) is different, then show as duplicate.
- If First name + Last name + Telephone number are the same but email (cross check against primary or alternative email) is different, then the contact should not be flagged as duplicate.
- if First name + Last name + Telephone number/Mobile number are the same but no email id present for one contact and other has email id, then mark the contact as duplicate.
2. Field level Validation rules
| S No. | Attribute/Field | Subfield | Validation Rule | Mandatory |
|---|---|---|---|---|
| 1 | Customercode | Regex (^[A-Z0-9*-]{3,11}$) | Y | |
| Provided Customer Code should be valid (present in CMD) | ||||
| Customer should be in an active state, creation/updating of contact under suspended/inactive customer is not allowed in CMD | ||||
| Customers from Russia and Belarus are restricted to create or update and contact information according to Company's policy | ||||
| Customer should not be in workflow | ||||
| 2 | Contactcode | Regex (^[A-Z0-9*-]{3,11}$) | N | |
| Contact Code should not be present during create case, else it will be considered as an update operation | ||||
| Provided Contact Code should be valid (present in CMD) | ||||
| Contacts from Russia and Belarus are restricted to update any contact information according to Company's policy | ||||
| Contact Code passed should be in an active state | ||||
| Contact should not be in workflow | ||||
| Contact Code provided should be linked to the provided Customer Code | ||||
| 3 | firstName | Regex (^[a-zA-Z0-9 '-]{1,128}$) | N | |
| first name should not be present in case of team contact creation/updation | ||||
| 4 | lastName | Regex (^[a-zA-Z0-9 '-]{1,128}$) | Y | |
| 5 | internationalFirstName | [ 1 .. 128 ] characters | N | |
| 6 | internationalLastName | [ 1 .. 128 ] characters | N | |
| 7 | primaryEmailId | [ 0 .. 300 ] characters | Y | |
| Provided Primary Email will be validated using Informatica validation service | ||||
| 8 | secondaryEmailId | [ 0 .. 300 ] characters | N | |
| Provided Secondary Email will be validated using Informatica validation service | ||||
| 9 | statusCode | Enum: ["A" , "I"] | Y | |
| StatusCode passed should always be A during contact creation as inactive contact creation is not supported in CMD | ||||
| 10 | internationalSalutationCode | Regex (^[^0-9]{1,50}$) | N | |
| International Salutation Code should not be present during creation/updation of team contacts | ||||
| Provided International Salutation Code will be validated against reference international salutations present in CMD | ||||
| 11 | primarySalutationCode | Regex (^[a-zA-Z]{1,50}[\.]?$) | N | |
| Primary Salutation Code should not be present during creation/updation of team contacts | ||||
| Provided Primary Salutation Code will be validated against reference international salutations present in CMD | ||||
| 12 | isTeamContact | boolean ["true", "false"] | N | |
| By default isTeamContact field will be set to false unless specified | ||||
| Primary/International Salutation Codes should not be present during creation/updation of team contacts | ||||
| 13 | jobTitle | Regex (^[A-Za-z0-9 ]{0,50}$) | N | |
| 14 | department | Regex (^[A-Za-z0-9 ]{0,128}$) | N | |
| 15 | role | Enum: ["CUST_CONT" "ON_BEHALF_OF"] | N | |
| 16 | isoLanguageCodePreference | ^[A-Z]{0,2}$ | N | |
| For Contacts with FINANCE type, isoLanguageCodePreference becomes mandatory | ||||
| 17 | communicationNumbers | Array - Can contain one or more numbers (max one for a given communication number type) | N | |
| communicationNumberType | Enum: ["MOB" "TEL" "FAX"] | Y | ||
| isoCountryCode | regex (^[A-Z]{0,2}$) | N | ||
| internationalDialingCode | regex (^[+]?[0-9]{1,4}$) | Y | ||
| Provided International DIaling Code should be the one which is valid for the ISO Country Code provided. | ||||
| extensionNumber | regex (^[0-9]{1,5}$) | N | ||
| Extension Number is only considered in case of TEL numbers | ||||
| number | Regex(^[0-9]{0,24}$) | Y | ||
| Number will be validated against the country rules for the ISO Country Code provided above | ||||
| 18 | contactBrands | Array - Can contain one or more Contact Brands, duplicate entries of brands in the request will be validated | N | |
| brandCode | Regex (^[A-Z]{4}$) | Y | ||
| Provided Brand Code will be validated against the reference Contact Brands present in CMD | ||||
| brandName | Regex (^[A-Za-z_ ]{2,20}$) | N | ||
| Brand Name should be the correct name corresponding to the Brand Code provided | ||||
| isDeletedFlag | boolean ["true", "false"] | N | ||
| Delete flag should not be true in case of Contact Creation | ||||
| If not provided it will consider linking of Brand and default value will be set to false | ||||
| 19 | contactTypes | Array - Can contain one or more Contact Types, duplicate entries of types in the request will be validated | N | |
| typeCode | Regex (^[A-Za-z_ ]{2,20}$) | Y | ||
| Provided Type Code will be validated against the reference Contact Types present in CMD | ||||
| For Contacts with FINANCE type, either TEL or MOB communication number is required | ||||
| typeName | Regex (^[A-Za-z_ ]{2,20}$) | N | ||
| Type Name should be the correct name corresponding to the Type Code provided | ||||
| isDeletedFlag | boolean ["true", "false"] | N | ||
| Delete flag should not be true in case of Contact Creation | ||||
| If not provided it will consider linking of Contact Type and default value will be set to false | ||||
| 20 | documentPreferences | Array - Can contain one or more Document Preferences, duplicate entries of document preferences in the request will be validated | N | |
| Addition of Document Preference data only applicable for Contact Update scenario, any request coming for linking for document preference during create case will be ignored | ||||
| customerCode | Regex (^[A-Z0-9*-]{3,11}$) | N | ||
| brandCode | Regex (^[A-Z]{4}$) | Y | ||
| Provided Brand Code will be validated against the reference Contact Document Preference Brands present in CMD | ||||
| documentType | [ 5 .. 25 ] characters | Y | ||
| Provided Document Type will be validated against the reference Contact Document Types present in CMD | ||||
| communicationPreferences | Array - Can contain one or more Communication Preferences, duplicate entries of commmunication preferences in the request will be validated | Y | ||
| communicationPreference > preferenceMediaType | [ 3 .. 15 ] characters | Y | ||
| If provided preferenceMediaType is TEL/MOB/FAX/PRMRY_EMAIL/ALT_EMAIL and any of these core fields are not present for that contact then the document preference linking will be rejected | ||||
| communicationPreference > preferenceValue | [ 0 .. 300 ] characters | N | ||
| If additional emails are provided for preferenceMediaType as OTH_EMAIL, then those emails will be validated with the informatica email validation service | ||||
| Max 3 emails can be provided for preferenceMediaType OTH_EMAIL for one document preference data | ||||
| communicationPreference > isDeletedFlag | boolean ["true", "false"] | N | ||
| If not provided it will consider linking of Communication Preference and default value will be set to false |
3. Data Enrichment/Standardization process
- During Contact create process, below third party services will be used to standardize or enrich the customer data;
- Phone Validation Service - This Service is used to Validate the given Contact phone number (tele and mobile number). The phone number is very important for communication with customer so this data needs to be validated before it gets persisted.
- Email Validation service - This service is used to Validate the given email address. The email number is also very important for communication with customer so this data needs to be validated before it gets persisted.
4. Data persistence in Postgres Database
Once the data is validated and enriched based on above-mentioned rules and tools, the customer details will be persisted in Postgress Database tables mentioned in below confluence link. The below link provides complete details of data model.
CMD Modernization Data Model
5. Approval process use cases
Currently there is no Workflow for contacts but If Customer is being created along with contact and if that customer is identified that it will land into workflow then system will drop the contact and send the customer to workflow.
6. Contact Publish process
Once the Contact is created or updated will be published to downstream systems listed in section () via below 3 options:
- EMP - The Contact details will be published to customer EMP topic in JSON format and from where the consumer will pick and consume data.
- MQ - The Contact details will be published to Contact Message Queue in XML format and from where the consumer will pick and consume data.
- CMD SCV Replica - This is exact mirror of CMD data base from where few applications will consume data.
Contact update Lifecycle in CMD Application
Below are the 5 steps of customer entity update life cycle in CMD application.
- Search Duplicate service
Same logic as Contact create scenario.
- Field level validations
Same logic as Contact create scenario.
- Data Enrichment/Standardization process
Same logic as Contact create scenario.
- Contact Data Changes
User can edit the different Contact fields as per the business need and below are the list of different customer fields.
| S.No | Contact Data Section | Description |
|---|---|---|
| 1 | Contact Information fields | Any Contact info field can be changed like First Name, Last Name, Salutation fields, Job Title/Dept fields….Existing info can also be removed Except Mandatory info |
| 2 | Communication Fields | Both Primary Email id’s can be updatedMOB/TEL/FAX details can be updatedExisting info can also be removed Except Mandatory info |
| 3 | Contact Types | Contact Type can be Updated(Added/Removed) |
| 4 | Contact M&A Relationships | Contact M&A Relationships can be Updated(Added/Removed) |
| 5 | Contact Status | Contact Can be Inactivated/Reactivated. |
| 6 | Master Contact flag | Master contact cant be updated |
| 7 | Contact Role(Cust_Cont/OBO) | Contact Role can be updated |
| 8 | Contact Communication Preferences or Document Preferences | Contact Doc Preference can be updatedExisting info can also be removed Except Mandatory info |
| 9 | Contact Language Preference | Can be changed. |
- Relationship Update
User can edit customer data to add/remove/edit the relationships data.
| Entity 1 | Entity 2 | Relationship Type |
|---|---|---|
| Customer | Contact | Customer Contact Relationship with relationship type as CUST_CONT and ON_BEHALF_OF.User can associate many contacts as CUST_CONT relationship with same customer.User can associate many contacts as ON_BEHALF_OF relationship with same customer. |
Contact search functionality in CMD Application
CMD portal provide feature to search the Customer Contact based on various parameters or filter criteria.
- Customer Contact can be searched with Contact First Name or Last Name or both.
- Customer Contact can be searched with Primary Email id or Secondary Email id or both
- Customer Contact can be searched with Telephone or Mobile Number or both.
- Customer Contact can be searched with Customer Code
- Customer Contact can be searched with Customer Trading Name.
- Customer Contact can be searched with Contact Code
Overall Contact lifecycle in CMD
External Services used
- Phone number validation service
- Email validation service