Use validation rules to check if the data is in line with the defined standards.
To validate data, you can use several validation types. This topic explains how to set up the Custom validation type.
Use a custom validation to validate a field value using a custom validation class.
Before you can set up a custom validation rule, ensure that the custom validation class is developed.
For each validation rule, you can set up:
  • A validation message that is shown if the validation rule is not met.
  • Conditions to define the data to which the rule applies.


Data quality administrator Data quality administrator The data quality administrator (DQSDataQualityAdministrator) can set up and maintain: Data quality policies Data quality studio parameters Data quality studio general setup Developer Developer Start Start Need new custom  validation class? Need new custom  validation class? Inform a developer  on the validation class  to be developed Inform a developer  on the validation class  to be developed Develop custom validation class Develop custom validation class You can use a custom validation rule to validate a field value using a custom validation class.To set up a custom validation rule, first develop the custom validation class to be applied.The custom validation class must extend the DQSCustomValidationBase base class.When you extend the DQSCustomValidationBase base class:Enter a unique and recognizable description() for the class. The description is shown in the lookup of the Class name field of a custom validation rule.Use these methods to indicate to which data the custom class is applicable:getTablesList(): You can define the tables to which the custom class applies. As a result, you can select the custom class for a custom validation rule with one of the applicable tables defined.getExtendedDataTypesList(): You can assign extended data types to which the custom class applies, for example, 'ExternalItemId'. As a result, you can select the custom class for a custom validation rule with a field defined that uses the same extended data type.getBaseTypesList(): You can define base data types to which the custom class applies, for example, String or Date. As a result, you can select the custom class for a custom validation rule with a field defined with the same data type.Use the validateRecord() method to define the x++ code that runs the validation. This code must return one of these values:True: The value in the validation rule field is valid.False: The value in the validation rule field is invalid.The base structure of an extended DQSCustomValidationBase class is: Inform the data quality  administrator that the  validation class is available Inform the data quality  administrator that the  validation class is available Set up validation rule of type Custom Set up validation rule of type Custom Use validation rules to check if the data is in line with the defined standards. To validate data, you can use several validation types. This topic explains how to set up a validation rule of type Custom. Use a custom validation rule to validate a field value using a custom validation class. Before you can set up a custom validation rule, ensure that the custom validation class is developed. You can add validation rules in these ways: Manually. Select the fields to be validated from a page. Procedure 1. Click Data quality management. 2. On the Data quality policies tab, in the list, click the link of the desired data quality policy. Note: If you want to edit another data quality policy version than the currently shown version, first select the desired version. To do so, on the Action Pane, on the Version tab, click Versions. On the dialog, select the desired version and click OK. 3. Sub-task: Manually create validation rule. 4. On the Validation rules tab, click Add. 5. Define the table of the field which value must be validated. In the Table field, enter or select a value. Note: If you want to validate field values in inherited tables, define the child table instead of the base table. For example, instead of DirPartyTable, use DirOrganization or DirPerson. 6. In the Field field, enter or select a value. 7. Sub-task: Create validation rules by selecting fields. 8. On the Validation rules tab, click Select fields. 9. Open the page from which you want to select fields. 10. On the Field picker dialog, click Select fields. 11. Click the '+' button for each field that you want to select. 12. On the Field picker dialog, click Done. 13. On the Field picker dialog, click Submit to save the selected fields to the validation rule. 14. In the Record type field, select an option. 15. In the Validation type field, select 'Custom'. 16. In the Event field, select an option. 17. Define what is done if the validation rule is not met: Warning: A warning message is shown. The record or the field value is saved. Error: An error message is shown. The record or the field value is not saved. In the Outcome field, select an option. Note: For each validation rule, you can define a message to be shown. If you do not define a validation rule message, a default message is shown. 18. Sub-task: Set the validation rule properties. 19. Define the custom validation class to be applied for the validation rule. On the Properties tab, in the Class name field, enter or select a value. Note: You can only select classes that extend the DQSCustomValidationBase base class. 20. Close the page. Notes Several validation rule tutorial classes are provided with the Data quality studio. These tutorial classes serve as an example of custom classes for a custom validation rule and are not supported. You can customize the tutorial class as desired. If you want to do so, you are advised to create a copy of the tutorial class, and make the changes in the copy. Tutorial class Description DQTCustomValidation_GS1checksum This tutorial class checks if the length of an entered bar code is according to the GS1 bar code standards. To do this, the check digit is considered. An entered bar code is valid if it matches one of the GS1 bar code standards, as defined in the tutorial class. Note: The length of an entered bar code is checked against several GS1 bar code standard lengths, as defined in the tutorial class. If desired, you can customize the class, for example, to remove standard lengths you do not use. DQTCustomValidation_OrderAccountChange For sales orders and purchase orders, you can change the customer account, vendor  account, or invoice account. However, if already journals are posted for an order, it is often not desired to have an account changed. For the: SalesTable, you can set up a custom validation rule to validate the customer account or invoice account. PurchTable, you can set up a custom validation rule to validate the vendor account or invoice account. On entering or changing the applicable account number on the applicable order, this tutorial class checks: Does a posted confirmation journal, packing slip journal, or invoice journal exist for the order? If so, does the account number, as entered or changed for the order, match the account number on the posted journal? If the entered account number does not match the account number on the posted journal, an error or warning message is shown. Show message when  validation rule is not met? Show message when  validation rule is not met? Set up validation rule message Set up validation rule message You can define a message that is shown if the validation rule is not met.If no validation rule message is defined, the default message is shown if the validation is not met.In case of a data pattern validation, the applicable data pattern can also have a message defined. In this case, the message priority is:If a validation rule message is defined, this message is shown.If no validation rule message is defined, the data pattern message is shown.If no data pattern message is defined, the default message is shown.You can also enter a description of the validation rule.You can translate both the validation message and the validation rule description. Procedure 1. Click Data quality management. 2. On the Data quality policies tab, in the list, click the link of the desired data quality policy. 3. Click Edit. Note: If you want to edit another data quality policy version than the currently shown version, first select the desired version. To do so, on the Action Pane, on the Version tab, click Versions. On the dialog, select the desired version and click OK. 4. On the Validation rules tab, in the list, find and select the desired validation rule. 5. Click the Messages tab. 6. In the Validation message field, type a value. 7. In the Rule description field, type a value. 8. Sub-task: Translate validation message and description. 9. Click Translations. 10. Click Add to open the drop dialog. 11. In the list, find and select the desired language. 12. Click OK. 13. In the Rule description field, type the translation of the validation rule description. 14. In the Message field, type the translation of the validation message. Note: In the validation message translation, you can use these tags: Field name: When the validation message is shown, the [Field name] tag is replaced with the name of the validated field. Field value: When the validation message is shown, the [Field value] tag is replaced with the value that is entered in the validated field. To add a tag to the validation message translation, click Message tags, and click the desired tag. 15. Close the page. 16. Close the page. Does the validation rule  apply to specific data? Does the validation rule  apply to specific data? Set up validation rule conditions

Set up validation rule conditions

For each validation rule, you can set up conditions. The validation rule is only applied if the conditions are met.

To define a validation rule condition, you use a query. The validation rule is applied only to the records that are found by the query.
You can use these types of queries:
  • Inquiry: Use the standard D365 F&SCM Inquiry (SysQueryForm) page to define the records to which the validation rule applies. The inquiry only queries the table as defined for the validation rule.
  • Dynamic query: Use a dynamic query to define the records to which the validation rule applies. Before you can set up a condition with a dynamic query, set up the dynamic query to be applied. You can use a dynamic query, for example, to query other tables than the validation rule table, to define table relations, and to have only one record returned.

End End Yes No Yes No Yes No

Activities

Name Responsible Description

Develop custom validation class

Developer

You can use a custom validation rule to validate a field value using a custom validation class.
To set up a custom validation rule, first develop the custom validation class to be applied.
The custom validation class must extend the DQSCustomValidationBase base class.
When you extend the DQSCustomValidationBase base class:
  • Enter a unique and recognizable description() for the class. The description is shown in the lookup of the Class name field of a custom validation rule.
  • Use these methods to indicate to which data the custom class is applicable:
    • getTablesList(): You can define the tables to which the custom class applies. As a result, you can select the custom class for a custom validation rule with one of the applicable tables defined.
    • getExtendedDataTypesList(): You can assign extended data types to which the custom class applies, for example, 'ExternalItemId'. As a result, you can select the custom class for a custom validation rule with a field defined that uses the same extended data type.
    • getBaseTypesList(): You can define base data types to which the custom class applies, for example, String or Date. As a result, you can select the custom class for a custom validation rule with a field defined with the same data type.
  • Use the validateRecord() method to define the x++ code that runs the validation. This code must return one of these values:
    • True: The value in the validation rule field is valid.
    • False: The value in the validation rule field is invalid.
The base structure of an extended DQSCustomValidationBase class is:

Set up validation rule of type Custom

Data quality administrator

Use validation rules to check if the data is in line with the defined standards.
To validate data, you can use several validation types. This topic explains how to set up a validation rule of type Custom.

Use a custom validation rule to validate a field value using a custom validation class.
Before you can set up a custom validation rule, ensure that the custom validation class is developed.

You can add validation rules in these ways:

  • Manually.
  • Select the fields to be validated from a page.

Set up validation rule message

Data quality administrator

You can define a message that is shown if the validation rule is not met.
If no validation rule message is defined, the default message is shown if the validation is not met.
In case of a data pattern validation, the applicable data pattern can also have a message defined. In this case, the message priority is:
  1. If a validation rule message is defined, this message is shown.
  2. If no validation rule message is defined, the data pattern message is shown.
  3. If no data pattern message is defined, the default message is shown.
You can also enter a description of the validation rule.
You can translate both the validation message and the validation rule description.

Set up validation rule conditions

Data quality administrator

For each validation rule, you can set up conditions. The validation rule is only applied if the conditions are met.

To define a validation rule condition, you use a query. The validation rule is applied only to the records that are found by the query.
You can use these types of queries:
  • Inquiry: Use the standard D365 F&SCM Inquiry (SysQueryForm) page to define the records to which the validation rule applies. The inquiry only queries the table as defined for the validation rule.
  • Dynamic query: Use a dynamic query to define the records to which the validation rule applies. Before you can set up a condition with a dynamic query, set up the dynamic query to be applied. You can use a dynamic query, for example, to query other tables than the validation rule table, to define table relations, and to have only one record returned.

Provide feedback