Apply data validation functions at crosswalk level
Learn about the ability to apply data validation functions at the crosswalk level.
Reltio supports the ability to apply Data Validation Functions (DVFs) at the crosswalk level. This enhancement provides more granular control by enabling validation rules to target specific source systems rather than applying universally to Operational Values (OV). This is particularly useful if you need to monitor data quality on a per-source basis.
-
OV - This is the default value of the parameter and it determines that the validation functions are applied on operation values only.
-
CW - This determines that the validation functions are applied on individual source records at the crosswalk level.
-
Both - This determines that the DVF validates both the OV and the selected crosswalks.
If the applyOn parameter's value is CW
or Both
you need to specify the sources from which you want to validate crosswalks. To do so you need to add the parameter sourceTypes to the body of the API call. This parameter's format needs to be a list of sources separated by commas.
"sourceTypes": "DnB, Twitter, Reltio"
For more information, see topic Define Data Validation Functions.
Sample DVF payload
Below is a sample DVF payload that uses validation at the crosswalk level.
{
"name": "FirstNameCheck",
"label": "FirstNameCheck",
"description": "Please provide alphabet values for this field",
"expression": "not regexp(attributes.FirstName.value, '^[[\\p{IsAlphabetic}]+ ]+$')",
"action": "Error",
"validationEvent": "Create",
"applyOn": "CW",
"sourceTypes": "DnB, Twitter",
"message": "Should have only alphabets",
"status": "ACTIVE",
"attribute": "configuration/entityTypes/Individual/attributes/FirstName"
}
LifeCycle Actions (LCA) validation behavior
How you configure the applyOn
parameter affects how validation functions behave during lifecycle actions.
-
If
applyOn
is equal toCW
the validation is applied to all crosswalks of the selectedsourceTypes
. -
If
applyOn
is equal toBoth
the validation is applied to the OV value and the selected crosswalks. -
If you don't specify
applyOn
the validation is applied to the OV value only as default.
During update actions, validation applies only to crosswalks that have been updated. Reltio uses timestamp comparisons between the object and the crosswalk-level metadata to detect changes.
The ReValidataDataTask ignores if the crosswalks were recently updated; It applies the validation function to all specified crosswalks from the listed sources.
Configuring analytics attributes
To support DVFs for crosswalks, you need to configure the analyticsAttributes
to add the intended sources, in your L3 configuration.
This configuration ensures that any validation errors are captured with detailed context, facilitating easier debugging and data quality improvements.
For more information, see topic Configuring Analytical Attributes to Hold Validation Warnings.
Error reporting
When you set the applyOn
parameter to CW
or Both
you need to use the sourceTypes
parameter and specify the sources for the crosswalks. If sourceTypes
is missing or empty an error will be displayed.
The same way, if you set applyOn
parameter to OV
and also use the sourceTypes
parameter to specify any source an error will be displayed.
Error messages include both the source and the crosswalk ID and are aggregated per crosswalk.
[
{
"errors": {
"severity": "error",
"errorCode": "PROFILE_FAILED_AGAINST_DVF_RULES",
"errorMessage": "The profile has failed against one or more DVF Functions.",
"errorDetailMessage": "The profile has failed with 1 DVF error(s) and 1 DVF warning(s). Please review the below validation errors and correct the data accordingly.",
"innerErrorData": [
{
"severity": "ERROR",
"functionName": "HCP.LastName.01",
"validationMessage": "LastName should not contain test.CrossWalks: [TWITTER@thirupathi1,ovValue]",
"details": "HCP.LastName.01"
},
{
"severity": "WARNING",
"functionName": "HCP.FirstName.01",
"validationMessage": "FirstName can have only alpha numeric.CrossWalks: [DNB@665656,TWITTER@thirupathi1,ovValue]",
"details": "HCP.FirstName.01"
}
]
},
"successful": false
}
]
[
{
"successful": true,
"environment": "https://tst-01.reltio.com/reltio",
"tenant": "thirupathi",
"object": {
"uri": "entities/0GWIAL1",
"type": "configuration/entityTypes/Individual",
"createdBy": "thirupathi.reddy@reltio.com",
"createdTime": 1745230309368,
"updatedBy": "thirupathi.reddy@reltio.com",
"updatedTime": 1745235169341,
"attributes": {
"FirstName": [
{
"type": "configuration/entityTypes/Individual/attributes/FirstName",
"ov": true,
"value": "Vish #u",
"uri": "entities/0GWIAL1/attributes/FirstName/21vtR6zP"
},
{
"type": "configuration/entityTypes/Individual/attributes/FirstName",
"ov": true,
"value": "Vishuwak #$",
"uri": "entities/0GWIAL1/attributes/FirstName/40"
}
],
"MiddleName": [
{
"type": "configuration/entityTypes/Individual/attributes/MiddleName",
"ov": true,
"value": "M",
"uri": "entities/0GWIAL1/attributes/MiddleName/21vtPbDj"
},
{
"type": "configuration/entityTypes/Individual/attributes/MiddleName",
"ov": true,
"value": "Maram",
"uri": "entities/0GWIAL1/attributes/MiddleName/45"
}
],
"LastName": [
{
"type": "configuration/entityTypes/Individual/attributes/LastName",
"ov": true,
"value": "Rd #",
"uri": "entities/0GWIAL1/attributes/LastName/21vtPWxT"
},
{
"type": "configuration/entityTypes/Individual/attributes/LastName",
"ov": true,
"value": "Reddy #",
"uri": "entities/0GWIAL1/attributes/LastName/41"
}
],
"Gender": [
{
"type": "configuration/entityTypes/Individual/attributes/Gender",
"ov": true,
"value": "M",
"uri": "entities/0GWIAL1/attributes/Gender/19"
}
],
"Identifiers": [
{
"label": "NPI 456",
"value": {
"Type": [
{
"type": "configuration/entityTypes/Individual/attributes/Identifiers/attributes/Type",
"ov": true,
"value": "NPI",
"uri": "entities/0GWIAL1/attributes/Identifiers/21/Type/22"
}
],
"ID": [
{
"type": "configuration/entityTypes/Individual/attributes/Identifiers/attributes/ID",
"ov": true,
"value": "456",
"uri": "entities/0GWIAL1/attributes/Identifiers/21/ID/23"
}
]
},
"ov": true,
"uri": "entities/0GWIAL1/attributes/Identifiers/21"
},
{
"label": "NPI 123454",
"value": {
"Type": [
{
"type": "configuration/entityTypes/Individual/attributes/Identifiers/attributes/Type",
"ov": true,
"value": "NPI",
"uri": "entities/0GWIAL1/attributes/Identifiers/21vtPfTz/Type/21vtPjkF"
}
],
"ID": [
{
"type": "configuration/entityTypes/Individual/attributes/Identifiers/attributes/ID",
"ov": true,
"value": "123454",
"uri": "entities/0GWIAL1/attributes/Identifiers/21vtPfTz/ID/21vtPo0V"
}
]
},
"ov": true,
"uri": "entities/0GWIAL1/attributes/Identifiers/21vtPfTz"
}
]
},
"isFavorite": false,
"crosswalks": [
{
"uri": "entities/0GWIAL1/crosswalks/21voyCjv",
"type": "configuration/sources/DNB",
"value": "456",
"reltioLoadDate": "2025-04-21T10:11:49.368Z",
"createDate": "2025-04-21T10:11:49.368Z",
"updateDate": "2025-04-21T10:11:49.368Z",
"attributes": [
"entities/0GWIAL1/attributes/Identifiers/21/Type/22",
"entities/0GWIAL1/attributes/MiddleName/45",
"entities/0GWIAL1/attributes/Identifiers/21/ID/23",
"entities/0GWIAL1/attributes/Gender/19",
"entities/0GWIAL1/attributes/FirstName/40",
"entities/0GWIAL1/attributes/LastName/41",
"entities/0GWIAL1/attributes/Identifiers/21"
],
"singleAttributeUpdateDates": {}
},
{
"uri": "entities/0GWIAL1/crosswalks/21vqAWCt",
"type": "configuration/sources/TWITTER",
"value": "123454",
"reltioLoadDate": "2025-04-21T10:15:21.715Z",
"createDate": "2025-04-21T10:13:33.287Z",
"updateDate": "2025-04-21T10:15:21.715Z",
"attributes": [
"entities/0GWIAL1/attributes/LastName/21vtPWxT",
"entities/0GWIAL1/attributes/Identifiers/21vtPfTz/Type/21vtPjkF",
"entities/0GWIAL1/attributes/Identifiers/21vtPfTz/ID/21vtPo0V",
"entities/0GWIAL1/attributes/MiddleName/21vtPbDj",
"entities/0GWIAL1/attributes/FirstName/21vtR6zP",
"entities/0GWIAL1/attributes/Gender/19",
"entities/0GWIAL1/attributes/Identifiers/21vtPfTz"
],
"singleAttributeUpdateDates": {}
}
],
"analyticsAttributes": {
"AttributeValidations": [
{
"value": {
"FunctionURI": [
{
"value": "8a97cde8-0f41-484c-b5fc-74cc546416f5"
}
],
"FunctionName": [
{
"value": "Individual.FirstName.02"
}
],
"Expression": [
{
"value": "not regexp(attributes.FirstName.value, '^[a-zA-Z0-9]+$')"
}
],
"Attribute": [
{
"value": "configuration/entityTypes/Individual/attributes/FirstName"
}
],
"Action": [
{
"value": "WARNING"
}
],
"ValidationEvent": [
{
"value": "ALL"
}
],
"Sources": [
{
"value": {
"CrosswalkName": [
{
"value": "DNB"
}
],
"CrosswalkValue": [
{
"value": "456"
}
]
}
},
{
"value": {
"CrosswalkName": [
{
"value": "TWITTER"
}
],
"CrosswalkValue": [
{
"value": "123454"
}
]
}
},
{
"value": {
"CrosswalkName": [
{
"value": "OperationalValue"
}
],
"CrosswalkValue": [
{
"value": "-"
}
]
}
}
],
"Message": [
{
"value": "FirstName can have only alpha numeric."
}
]
}
}
]
},
"label": "",
"secondaryLabel": ""
}
}
]