Skip to main content

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

  1. CMD portal application
  2. Contact Ingest API (SFDC, Maersk.com)
  3. Initial Data Load process (Used for any M&A / Integration Activities)
  4. Bulk Create via BBU

Contact create Lifecycle in CMD Application

  1. 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/FieldSubfieldValidation RuleMandatory
1CustomercodeRegex (^[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
2ContactcodeRegex (^[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
3firstNameRegex (^[a-zA-Z0-9 '-]{1,128}$)N
first name should not be present in case of team contact creation/updation
4lastNameRegex (^[a-zA-Z0-9 '-]{1,128}$)Y
5internationalFirstName[ 1 .. 128 ] charactersN
6internationalLastName[ 1 .. 128 ] charactersN
7primaryEmailId[ 0 .. 300 ] charactersY
Provided Primary Email will be validated using Informatica validation service
8secondaryEmailId[ 0 .. 300 ] charactersN
Provided Secondary Email will be validated using Informatica validation service
9statusCodeEnum: ["A" , "I"]Y
StatusCode passed should always be A during contact creation as inactive contact creation is not supported in CMD
10internationalSalutationCodeRegex (^[^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
11primarySalutationCodeRegex (^[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
12isTeamContactboolean ["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
13jobTitleRegex (^[A-Za-z0-9 ]{0,50}$)N
14departmentRegex (^[A-Za-z0-9 ]{0,128}$)N
15roleEnum: ["CUST_CONT" "ON_BEHALF_OF"]N
16isoLanguageCodePreference^[A-Z]{0,2}$N
For Contacts with FINANCE type, isoLanguageCodePreference becomes mandatory
17communicationNumbersArray - Can contain one or more numbers (max one for a given communication number type)N
communicationNumberTypeEnum: ["MOB" "TEL" "FAX"]Y
isoCountryCoderegex (^[A-Z]{0,2}$)N
internationalDialingCoderegex (^[+]?[0-9]{1,4}$)Y
Provided International DIaling Code should be the one which is valid for the ISO Country Code provided.
extensionNumberregex (^[0-9]{1,5}$)N
Extension Number is only considered in case of TEL numbers
numberRegex(^[0-9]{0,24}$)Y
Number will be validated against the country rules for the ISO Country Code provided above
18contactBrandsArray - Can contain one or more Contact Brands, duplicate entries of brands in the request will be validatedN
brandCodeRegex (^[A-Z]{4}$)Y
Provided Brand Code will be validated against the reference Contact Brands present in CMD
brandNameRegex (^[A-Za-z_ ]{2,20}$)N
Brand Name should be the correct name corresponding to the Brand Code provided
isDeletedFlagboolean ["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
19contactTypesArray - Can contain one or more Contact Types, duplicate entries of types in the request will be validatedN
typeCodeRegex (^[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
typeNameRegex (^[A-Za-z_ ]{2,20}$)N
Type Name should be the correct name corresponding to the Type Code provided
isDeletedFlagboolean ["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
20documentPreferencesArray - Can contain one or more Document Preferences, duplicate entries of document preferences in the request will be validatedN
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
customerCodeRegex (^[A-Z0-9*-]{3,11}$)N
brandCodeRegex (^[A-Z]{4}$)Y
Provided Brand Code will be validated against the reference Contact Document Preference Brands present in CMD
documentType[ 5 .. 25 ] charactersY
Provided Document Type will be validated against the reference Contact Document Types present in CMD
communicationPreferencesArray - Can contain one or more Communication Preferences, duplicate entries of commmunication preferences in the request will be validatedY
communicationPreference > preferenceMediaType[ 3 .. 15 ] charactersY
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 ] charactersN
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 > isDeletedFlagboolean ["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:

  1. EMP - The Contact details will be published to customer EMP topic in JSON format and from where the consumer will pick and consume data.
  2. MQ - The Contact details will be published to Contact Message Queue in XML format and from where the consumer will pick and consume data.
  3. 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.

  1. Search Duplicate service

Same logic as Contact create scenario.

  1. Field level validations

Same logic as Contact create scenario.

  1. Data Enrichment/Standardization process

Same logic as Contact create scenario.

  1. 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.NoContact Data SectionDescription
1Contact Information fieldsAny 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
2Communication FieldsBoth Primary Email id’s can be updatedMOB/TEL/FAX details can be updatedExisting info can also be removed Except Mandatory info
3Contact TypesContact Type can be Updated(Added/Removed)
4Contact M&A RelationshipsContact M&A Relationships can be Updated(Added/Removed)
5Contact StatusContact Can be Inactivated/Reactivated.
6Master Contact flagMaster contact cant be updated
7Contact Role(Cust_Cont/OBO)Contact Role can be updated
8Contact Communication Preferences or Document PreferencesContact Doc Preference can be updatedExisting info can also be removed Except Mandatory info
9Contact Language PreferenceCan be changed.
  1. Relationship Update

User can edit customer data to add/remove/edit the relationships data.

Entity 1Entity 2Relationship Type
CustomerContactCustomer 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

  1. Phone number validation service
  2. Email validation service
Was this page helpful?