Customer Look up Logic using enterpriseSettings in EIMP
- Purpose: Customize how customers are identified based on merchant-specific requirements
- Configuration Location: In merchant configuration under
enterpriseSettings - Key Components:
customerSearchCriteriadefines matching rules with precedence - Pattern: Extract data from customer request → Match against enterprise identity data
- Matching Fields: Required fields must match; optional fields enhance matching quality
Overview
This document outlines the algorithm for identifying customers through the enterpriseSettings configuration in the merchant settings. The identification process involves matching customer request data with enterprise identity data using JSONPath expressions.
Key Benefits
- Flexible Matching: Configure different identification strategies based on merchant requirements
- Precedence-Based Fallbacks: Define primary and fallback identification methods
- Granular Control: Mark criteria as required or optional to tune identification precision
- Diverse Data Support: Match against various identifier types (patient IDs, subscriber IDs, etc.)
Sequence Diagram: Component Interaction for Customer Identification
This diagram illustrates the interaction between different components during the customer identification process, showing the exact sequence of API calls and data exchange.
EnterpriseSettings Structure
Configuration Structure and Properties
The enterpriseSettings configuration is structured as an array of criteria sets, each containing rules for identifying customers:
"enterpriseSettings": [
{
"customerSearchCriteria": [
{
"merchantSearchKey": "$.metadata.patientId",
"enterpriseSearchKey": "identifiers.rx_patientId",
"enterpriseValueKey": "patientId",
"merchantMetadataKey": "patientId",
"required": true,
"enterpriseResponseSearchPath":null,
"precedence": 1
},
// Additional criteria
],
"precedence": 1
},
// Additional criteria sets with different precedence
]
Key Configuration Properties
| Property | Description | Example |
|---|---|---|
merchantSearchKey | JSONPath expression to extract values from customer request | $.metadata.patientId |
merchantMetadataKey | key param to extract values from customer request under metadata | patientId |
enterpriseSearchKey | Path to locate data in enterprise identity | identifiers.rx_patientId |
enterpriseValueKey | Property to extract from enterprise identity object | patientId |
required | Whether this criterion must match for identification | true or false |
enterpriseResponseSearchPath | Refer Wallet Upgrade | |
precedence | Order in which criteria are processed (lower values first) | 1, 2, etc. |
precedenceinsidecustomerSearchCriteriais for querying data in CCG DB to have better performanceprecedenceoutsidecustomerSearchCriteriais for querying EIMP
Customer Lookup Process in EIMP
Identification Algorithm
-
Retrieve the merchant's enterpriseSettings
- Locate the merchant configuration using the merchant ID
- Identify the associated merchant group
- Fetch configurations for all merchants in the same merchant group
- Process each merchant's
enterpriseSettingsconfiguration in sequence
-
Process each customerSearchCriteria set by precedence
- Start with the criteria set with the lowest precedence value
-
For each criterion in the set:
- Extract value from customer request using
merchantSearchKey(JSONPath) - Extract value from enterprise identity using
enterpriseSearchKeyandenterpriseValueKey - Check if the values match
- Extract value from customer request using
-
Apply matching rules:
- If a criterion is marked as
required: trueand doesn't match, fail the entire set - Continue to next criterion in the set if the current one matches
- If all required criteria match, the customer is identified
- If a criterion is marked as
-
Handle multiple criteria sets:
- If the current set fails, try the next set based on precedence
- If all sets fail, the customer is not identified
Activity Diagram
Data Extraction and Matching Process
Retrieving MCID from Customer Request via merchantSearchKey
Customer Request Example
{
"firstName": "John",
"lastName": "Doe",
"dateOfBirth": "1980-01-01",
"metadata": {
"patientId": "123456",
"subscriberId": "ABC789",
"dependentCode": "01"
}
}
merchantSearchKeyspecifies a JSONPath expression to locate and retrieve merchant customer identifier from the incoming customer request- The data retrieval workflow:
- Parse the incoming customer request into a structured JSON object
- Apply the JSONPath expression to pinpoint the target value
- Obtain the specified value for subsequent comparison operations
Common JSONPath expression patterns:
-
$.metadata.patientId- Locates and retrieves patientId from the metadata container -
$.dateOfBirth- Accesses the dateOfBirth attribute directly -
$.firstName- Obtains the firstName field valueFor the above request:
$.metadata.patientId→ "123456"$.dateOfBirth→ "1980-01-01"$.firstName→ "John"
Retrieve values from enterprise identity using enterpriseSearchKey and enterpriseValueKey
The process of extracting values from the enterprise identity involves two key configuration properties:
- enterpriseSearchKey: Defines a path to locate the specific object within the enterprise identity data structure
- enterpriseValueKey: Specifies which property within that object should be extracted for comparison
Extraction Process
-
enterpriseSearchKey Navigation:
- The enterpriseSearchKey is a dot-notation path (not a JSONPath expression)
- It navigates through the enterprise identity data structure
- It often points to a specific nested object that contains identity information
-
enterpriseValueKey Retrieval:
- Once the target object is located using enterpriseSearchKey
- The enterpriseValueKey specifies which property within that object to extract
- If enterpriseValueKey is not provided, the entire object at enterpriseSearchKey is used
EIMP Response Structure
Sample Response - EIMP
{
"links": null,
"identifiers": {
"identity_enterpriseId": [
{
"linking_authority": "weak",
"enterpriseID": "5183682010"
}
],
"cdb_id": [],
"finance_faroid": [],
"rx_cagmId": [],
"rx_patientId": [],
"payer_memberId": [
{
"linking_authority": "weak",
"memberId": null,
"policyNumber": null,
"subscriberId": "101417920",
"dependentCode": null,
"familyId": null,
"divisionCode": null,
"sourceCode": "EEMS",
"surrogateId": "2204187144",
"originatingSystemId": null
}
],
"hsid_identifiers": [],
"rally_identifiers": [],
"identity_personid": [],
"source_identifiers": [],
"optumCare_identifiers": [],
"other_ids": [
{
"linking_authority": "weak",
"type": "SubscriberId",
"value": "101417920",
"sourceCode": "EEMS"
},
{
"linking_authority": "weak",
"type": "SocialSecurityNumber",
"value": "702101676",
"sourceCode": "EEMS"
}
]
},
"id": "fa4bccdc-6706-494b-91fc-e589c7d3118b",
"familyName": "Flink",
"givenName": "Kristen",
"middleName": null,
"middleInitial": null,
"nameSuffix": null,
"deceasedDate": null,
"locale": null,
"chosenName": null,
"birthDate": "1972-06-24",
"gender": "F",
"createdAt": "2024-05-17 22:17:30",
"ireScore": null,
"apiIdentifier": "eyJlaWQiOiI1MTgzNjgyMDEwIiwiZmlkcyI6W10sImNyaWRzIjpbXSwiY21wc01ick51bSI6W10sImNtcHNJZHMiOltdLCJncHNJZHMiOltdLCJncHNJbmR2SWRzIjpbXSwiZGVudGFsSWRzIjpbXSwiZGVudGFsSWRzTmV3IjpbXSwiZGVudGFsQ29udHJLZXlzIjpbXSwidWhPbmVTYnNjcklkIjpbXSwiY3JNZW1iZXJTUksiOltdLCJjclNic2NySWQiOltdLCJwaG1kc0lkcyI6W10sInBwbEhsdGhNYnJJZHMiOltdLCJybWhwTWJySWRzIjpbXSwidWhPbmVNYnJJZHMiOltdLCJjc3BNYnJJZHMiOltdLCJjc3BTYnNjcklkIjpbXSwic3JjU3lzSWRzIjpbXSwic2llcnJhTWJySWRzIjpbXSwidmFzTWJySWRzIjpbXSwidmFzU2JzY3JJZCI6W10sInBobWRzU2JzY3JJZHMiOltdLCJjclNic2NySWRHcnAiOltdLCJuaWNlU2JzY3JJZEdycCI6W10sImNlc1Nic2NySWRHcnAiOltdLCJoaHNJZCI6bnVsbH0=",
"contacts": null,
"aliases": []
},
{
"links": null,
"identifiers": {
"identity_enterpriseId": [
{
"linking_authority": "weak",
"enterpriseID": "5181690299"
}
],
"cdb_id": [],
"finance_faroid": [],
"rx_cagmId": [],
"rx_patientId": [],
"payer_memberId": [
{
"linking_authority": "weak",
"memberId": null,
"policyNumber": null,
"subscriberId": "101652135",
"dependentCode": null,
"familyId": null,
"divisionCode": null,
"sourceCode": "EEMS",
"surrogateId": "2200644816",
"originatingSystemId": null
}
],
"hsid_identifiers": [],
"rally_identifiers": [],
"identity_personid": [],
"source_identifiers": [],
"optumCare_identifiers": [],
"other_ids": [
{
"linking_authority": "weak",
"type": "SubscriberId",
"value": "101652135",
"sourceCode": "EEMS"
},
{
"linking_authority": "weak",
"type": "SocialSecurityNumber",
"value": "703038534",
"sourceCode": "EEMS"
}
]
},
"id": "4b0c9c5a-74c5-43cc-8b96-353c95ef947e",
"familyName": "Struye De Swielande",
"givenName": "Shivangi",
"middleName": null,
"middleInitial": null,
"nameSuffix": null,
"deceasedDate": null,
"locale": null,
"chosenName": null,
"birthDate": "1972-06-24",
"gender": "F",
"createdAt": "2024-05-17 21:03:29",
"ireScore": null,
"apiIdentifier": "eyJlaWQiOiI1MTgxNjkwMjk5IiwiZmlkcyI6W10sImNyaWRzIjpbXSwiY21wc01ick51bSI6W10sImNtcHNJZHMiOltdLCJncHNJZHMiOltdLCJncHNJbmR2SWRzIjpbXSwiZGVudGFsSWRzIjpbXSwiZGVudGFsSWRzTmV3IjpbXSwiZGVudGFsQ29udHJLZXlzIjpbXSwidWhPbmVTYnNjcklkIjpbXSwiY3JNZW1iZXJTUksiOltdLCJjclNic2NySWQiOltdLCJwaG1kc0lkcyI6W10sInBwbEhsdGhNYnJJZHMiOltdLCJybWhwTWJySWRzIjpbXSwidWhPbmVNYnJJZHMiOltdLCJjc3BNYnJJZHMiOltdLCJjc3BTYnNjcklkIjpbXSwic3JjU3lzSWRzIjpbXSwic2llcnJhTWJySWRzIjpbXSwidmFzTWJySWRzIjpbXSwidmFzU2JzY3JJZCI6W10sInBobWRzU2JzY3JJZHMiOltdLCJjclNic2NySWRHcnAiOltdLCJuaWNlU2JzY3JJZEdycCI6W10sImNlc1Nic2NySWRHcnAiOltdLCJoaHNJZCI6bnVsbH0=",
"contacts": null,
"aliases": []
},
{
"links": null,
"identifiers": {
"identity_enterpriseId": [
{
"linking_authority": "weak",
"enterpriseID": "5183747532"
}
],
"cdb_id": [],
"finance_faroid": [],
"rx_cagmId": [],
"rx_patientId": [],
"payer_memberId": [
{
"linking_authority": "weak",
"memberId": null,
"policyNumber": null,
"subscriberId": "101410221",
"dependentCode": null,
"familyId": null,
"divisionCode": null,
"sourceCode": "EEMS",
"surrogateId": "2204330161",
"originatingSystemId": null
}
],
"hsid_identifiers": [],
"rally_identifiers": [],
"identity_personid": [],
"source_identifiers": [],
"optumCare_identifiers": [],
"other_ids": [
{
"linking_authority": "weak",
"type": "SocialSecurityNumber",
"value": "702070878",
"sourceCode": "EEMS"
},
{
"linking_authority": "weak",
"type": "SubscriberId",
"value": "101410221",
"sourceCode": "EEMS"
}
]
},
"id": "0c221b42-0bb6-4868-92b6-0fb5a79c4d72",
"familyName": "Peng",
"givenName": "Iqbal",
"middleName": null,
"middleInitial": null,
"nameSuffix": null,
"deceasedDate": null,
"locale": null,
"chosenName": null,
"birthDate": "1972-06-24",
"gender": "F",
"createdAt": "2024-05-17 22:15:03",
"ireScore": null,
"apiIdentifier": "eyJlaWQiOiI1MTgzNzQ3NTMyIiwiZmlkcyI6W10sImNyaWRzIjpbXSwiY21wc01ick51bSI6W10sImNtcHNJZHMiOltdLCJncHNJZHMiOltdLCJncHNJbmR2SWRzIjpbXSwiZGVudGFsSWRzIjpbXSwiZGVudGFsSWRzTmV3IjpbXSwiZGVudGFsQ29udHJLZXlzIjpbXSwidWhPbmVTYnNjcklkIjpbXSwiY3JNZW1iZXJTUksiOltdLCJjclNic2NySWRHcnAiOltdLCJuaWNlU2JzY3JJZEdycCI6W10sImNlc1Nic2NySWRHcnAiOltdLCJoaHNJZCI6bnVsbH0=",
"contacts": null,
"aliases": []
},
{
"links": null,
"identifiers": {
"identity_enterpriseId": [
{
"linking_authority": "weak",
"enterpriseID": "5180921055"
}
],
"cdb_id": [],
"finance_faroid": [],
"rx_cagmId": [],
"rx_patientId": [],
"payer_memberId": [
{
"linking_authority": "weak",
"memberId": null,
"policyNumber": null,
"subscriberId": "101503003",
"dependentCode": null,
"familyId": null,
"divisionCode": null,
"sourceCode": "EEMS",
"surrogateId": "2199489116",
"originatingSystemId": null
}
],
"hsid_identifiers": [],
"rally_identifiers": [],
"identity_personid": [],
"source_identifiers": [],
"optumCare_identifiers": [],
"other_ids": [
{
"linking_authority": "weak",
"type": "SocialSecurityNumber",
"value": "702442005",
"sourceCode": "EEMS"
},
{
"linking_authority": "weak",
"type": "SubscriberId",
"value": "101503003",
"sourceCode": "EEMS"
}
]
},
"id": "8c5cd775-2f1f-401f-b53c-7713fcbd9520",
"familyName": "McBrien",
"givenName": "Simone",
"middleName": null,
"middleInitial": null,
"nameSuffix": null,
"deceasedDate": null,
"locale": null,
"chosenName": null,
"birthDate": "1972-06-24",
"gender": "F",
"createdAt": "2024-05-17 21:44:30",
"ireScore": null,
"apiIdentifier": "eyJlaWQiOiI1MTgwOTIxMDU1IiwiZmlkcyI6W10sImNyaWRzIjpbXSwiY21wc01ick51bSI6W10sImNtcHNJZHMiOltdLCJncHNJZHMiOltdLCJncHNJbmR2SWRzIjpbXSwiZGVudGFsSWRzIjpbXSwiZGVudGFsSWRzTmV3IjpbXSwiZGVudGFsQ29udHJLZXlzIjpbXSwidWhPbmVTYnNjcklkIjpbXSwiY3JNZW1iZXJTUksiOltdLCJjclNic2NySWRHcnAiOltdLCJuaWNlU2JzY3JJZEdycCI6W10sImNlc1Nic2NySWRHcnAiOltdLCJoaHNJZCI6bnVsbH0=",
"contacts": null,
"aliases": []
}
Example Extraction Scenarios
Scenario 1: Simple property extraction
- enterpriseSearchKey: "birthDate"
- enterpriseValueKey: null (not needed for direct properties)
- Result: "1980-01-01"
Scenario 2: Nested object property extraction
- enterpriseSearchKey: "identifiers.rx_patientId"
- enterpriseValueKey: "patientId"
- Result: "123456"
Comparison Logic
Once values are extracted from both the customer request (via merchantSearchKey) and enterprise identity (via enterpriseSearchKey/enterpriseValueKey):
- Both values are normalized for comparison (trimming whitespace, standardizing case if needed)
- Values are compared for equality
- If values match, the criterion is satisfied
- If the criterion is marked required and doesn't match, the entire criteria set fails
Configuration Examples
Single Criterion Configuration
Configuration
{
"customerSearchCriteria": [
{
"value": {
"patientId": "xxxxxx"
},
"merchantSearchKey": "$.metadata.patientId",
"enterpriseSearchKey": "identifiers.rx_patientId",
"enterpriseValueKey": "patientId",
"merchantMetadataKey": "patientId",
"enterpriseResponseSearchPath": null,
"precedence": 1,
"required": true
}
],
"precedence": 1
}
Logic interpretation:
- Extract the patient ID from the request using
$.metadata.patientId - Look in the enterprise identity under
identifiers.rx_patientIdobject - Extract the value of the
patientIdfield from that object - Compare the two values
- Since this criterion is marked as
required: true, the identification fails if they don't match
Multiple Criteria Configuration
Configuration
{
"customerSearchCriteria": [
{
"merchantSearchKey": "$.metadata.groupNumber",
"enterpriseSearchKey": "identifiers.payer_memberId",
"enterpriseValueKey": "policyNumber",
"required": true,
"precedence": 1
},
{
"merchantSearchKey": "$.dateOfBirth",
"enterpriseSearchKey": "birthDate",
"required": true,
"precedence": 2
}
// ...other criteria
]
}
Logic interpretation:
- All criteria within this set must match (all are required)
- Process in order of precedence (lowest number first)
- The customer is identified only if ALL required criteria match
Enterprise Settings Combinations and Request Payloads
Simple Direct Property Matching
Configuration:
{
"merchantSearchKey": "$.dateOfBirth",
"enterpriseSearchKey": "birthDate",
"enterpriseValueKey": null,
"enterpriseResponseSearchPath": null,
"required": true
}
Use Case: Matching simple properties at the root level of objects (DOB, names, etc.)
Behavior: Direct value equality comparison
Example: Match DOB "1980-01-01" from request with "1980-01-01" from enterprise identity
EIMP Generated Request Payload
{
"key": "birthDate",
"value": "1980-01-01"
}
Nested Property Matching
Configuration:
{
"merchantSearchKey": "$.metadata.patientId",
"enterpriseSearchKey": "identifiers.rx_patientId",
"enterpriseValueKey": "patientId",
"enterpriseResponseSearchPath": null,
"required": true
}
Use Case: Matching values that are nested within objects
Behavior: Navigates to nested objects before comparison
Example: Extract "123456" from request metadata and match with pharmacy patient ID in enterprise identity
EIMP Generated Request Payload
{
"key": "identifiers.rx_patientId",
"value": {
"patientId": "123456"
}
}
Typed Identifier Matching with Context
Configuration:
{
"value": {
"type": "HealthInsuranceExchangeId",
"sourceCode": "CSP_Facets"
},
"merchantSearchKey": "$.metadata.healthInsuranceExchangeId",
"enterpriseSearchKey": "identifiers.other_ids",
"enterpriseValueKey": "value",
"enterpriseResponseSearchPath": null,
"required": true
}
Use Case: Matching identifiers that require type and source context
Behavior: Places extracted value into a predefined structure with type and source information
Example: Searching for health exchange ID in a collection of typed identifiers
EIMP Generated Request Payload
{
"key": "identifiers.other_ids",
"value": {
"type": "HealthInsuranceExchangeId",
"value": "0005886061",
"sourceCode": "CSP_Facets"
}
}
Multiple Criteria Sets with Fallback Mechanism
Configuration Example
"enterpriseSettings": [
{
"customerSearchCriteria": [
{
"value": {
"sourceCode": "CSP_Facets"
},
"merchantSearchKey": "$.metadata.dependentCode",
"enterpriseSearchKey": "identifiers.payer_memberId",
"enterpriseValueKey": "dependentCode",
"merchantMetadataKey": "dependentCode",
"enterpriseResponseSearchPath": null,
"precedence": 1,
"required": true
},
{
"value": {
"sourceCode": "EEMS"
},
"merchantSearchKey": "$.metadata.subscriberId",
"enterpriseSearchKey": "identifiers.payer_memberId",
"enterpriseValueKey": "subscriberId",
"merchantMetadataKey": "subscriberId",
"enterpriseResponseSearchPath": null,
"precedence": 2,
"required": true
},
{
"value": null,
"merchantSearchKey": "$.dateOfBirth",
"enterpriseSearchKey": "birthDate",
"enterpriseValueKey": null,
"merchantMetadataKey": null,
"enterpriseResponseSearchPath": null,
"precedence": 0,
"required": false
}
],
"precedence": 1 // Primary criteria set (tried first)
},
{
"customerSearchCriteria": [
{
"value": {
"type": "HealthInsuranceExchangeId",
"sourceCode": "CSP_Facets"
},
"merchantSearchKey": "$.metadata.healthInsuranceExchangeId",
"enterpriseSearchKey": "identifiers.other_ids",
"enterpriseValueKey": "value",
"merchantMetadataKey": "healthInsuranceExchangeId",
"enterpriseResponseSearchPath": null,
"precedence": 1,
"required": true
},
{
"value": {
"zipPostalCode": "xxxx"
},
"merchantSearchKey": "$.zip5",
"enterpriseSearchKey": "contacts.postalAddresses",
"enterpriseValueKey": "zipPostalCode",
"merchantMetadataKey": null,
"enterpriseResponseSearchPath": null,
"precedence": 2,
"required": true
}
],
"precedence": 2 // Fallback criteria set (tried if primary fails)
}
]
The enterprise settings configuration allows for multiple criteria sets with fallback logic. If the primary criteria set fails to identify a customer, the system automatically tries the next set based on precedence.
Fallback Logic Flow:
- System first tries to identify the customer using the primary criteria set (precedence: 1)
- All required criteria in this set must match for successful identification
- Optional criteria enhance matching confidence but are not mandatory
- If identification fails with the primary set, system moves to the fallback set (precedence: 2)
- Process continues until a match is found or all criteria sets are exhausted
- When all sets are exhausted without a match, system creates a local wallet
Customer Request Example
{
"firstName": "Kristen",
"lastName": "Flink",
"dateOfBirth": "1972-06-24",
"zip5": "12345",
"metadata": {
"subscriberId": "101417920",
"dependentCode": "01",
"healthInsuranceExchangeId": "0005886061"
}
}
Primary Criteria Set Processing
-
System extracts values from the customer request using each criterion's
merchantSearchKey:$.metadata.dependentCode→ "01"$.metadata.subscriberId→ "101417920"$.dateOfBirth→ "1972-06-24"
-
System generates EIMP request payloads for each criterion:
[
{
"key": "identifiers.payer_memberId",
"value": {
"dependentCode": "01",
"sourceCode": "CSP_Facets"
}
},
{
"key": "identifiers.payer_memberId",
"value": {
"subscriberId": "101417920",
"sourceCode": "EEMS"
}
},
{
"key": "birthDate",
"value": "1972-06-24"
}
]
- EIMP searches for matching records using these criteria
- If all required criteria match a record, customer is successfully identified
- If any required criterion fails to match, the entire criteria set fails
Fallback Criteria Set Processing (if primary set fails)
If the primary criteria set fails, the system tries the fallback set:
-
Extract values for the fallback criteria:
$.metadata.healthInsuranceExchangeId→ "0005886061"$.zip5→ "12345"
-
Generate EIMP request payloads for the fallback criteria:
[
{
"key": "identifiers.other_ids",
"value": {
"type": "HealthInsuranceExchangeId",
"value": "0005886061",
"sourceCode": "CSP_Facets"
}
},
{
"key": "contacts.postalAddresses",
"value": {
"zipPostalCode": "12345"
}
}
]
- EIMP searches for matching records using these fallback criteria
- Customer is identified if all required criteria in this set match
Key Points:
- Each criteria set functions as an independent identification strategy
- Sets are tried in order of precedence (lowest number first)
- Within a set, all required criteria must match for successful identification
- If a set fails, the system automatically tries the next set
- Optional criteria (
required: false) provide additional matching confidence but aren't mandatory - All requests within a set are sent to EIMP in a single batch
Required and Optional Mixed Fields
Configuration:
{
"customerSearchCriteria": [
{
"merchantSearchKey": "$.metadata.patientId",
"enterpriseSearchKey": "identifiers.rx_patientId",
"enterpriseValueKey": "patientId",
"required": true,
"precedence": 1
},
{
"merchantSearchKey": "$.dateOfBirth",
"enterpriseSearchKey": "birthDate",
"required": false,
"precedence": 2
},
{
"merchantSearchKey": "$.lastName",
"enterpriseSearchKey": "familyName",
"required": false,
"precedence": 3
}
]
}
Behavior:
- The patientId is mandatory in customer request
- DOB and lastName are optional but provide stronger identity assurance if they match
EIMP Generated Request Payloads
[
{
"key": "identifiers.rx_patientId",
"value": {
"patientId": "123456"
}
},
{
"key": "birthDate",
"value": "1980-01-01"
},
{
"key": "familyName",
"value": "Doe"
}
]
Composite Match Identification
When a subscriber needs to be identified using multiple fields that must be matched together:
Configuration:
{
"customerSearchCriteria": [
{
"value": {
"sourceCode": "EEMS",
"subscriberId":"***"
},
"merchantSearchKey": "$.metadata.subscriberId",
"enterpriseSearchKey": "identifiers.payer_memberId",
"enterpriseValueKey": "subscriberId",
"required": true,
"precedence": 1
}
],
"precedence": 1
}
EIMP Generated Request Payloads
[
{
"key": "identifiers.payer_memberId",
"value": {
"subscriberId": "XYZ12345",
"sourceCode": "EEMS"
}
}
]
Processing Logic:
- All requests are sent to the identity service in a single batch
- The system validates that matching records satisfy all the required criteria
- Only records that match all required criteria will be returned as positive identifications
Fallback Mechanisms
If a merchant has multiple customerSearchCriteria sets, they are tried in order of their precedence value:
- Try the first criteria set (precedence: 1)
- If identification fails, try the next set (precedence: 2)
- Continue until a match is found or all sets are exhausted
- when all search criteria sets are exhaused, system will fall back to local wallet creation