Unify and manage your data

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.

This capability is available for validation functions created with APIs. You can use the optional parameter applyOn in the API to determine the level at which the validation is applied:
  • 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.

Example:
"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.

During create actions:
  • If applyOn is equal to CW the validation is applied to all crosswalks of the selected sourceTypes.

  • If applyOn is equal to Both 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.

Sample error:
[
    {
        "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
    }
]
Sample warning:
[
  {
    "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": ""
    }
  }
]