Mirror of Oracle documentation
Converted for search and offline reading. Authoritative source: Oracle. Diagrams and some complex tables are simplified — check the PDF when in doubt.
6
Data Validation Framework
The foundation file interfaces (such as product and organization hierarchies) have a set of validations and error checking jobs that execute with them to ensure the data is accurate, complete, and follows all basic requirements for RAP application usage. Review the contents of this chapter to understand what validations exist and how to reconfigure them per your implementation needs.
Architecture Overview
The validation framework consists of POM batch jobs that execute the validations, and database tables that control the types of validation rules and what happens when the rule is triggered. Some validation rules may cause the POM job to fail, which means the data has a critical issue that needs to be corrected before the batch process can continue. Other rules will simply write warnings to the database but allow the batch to proceed. In both cases, there are tables that can be queried to check the validation results and determine what actions need to be taken.
The table below summarizes the POM jobs that execute the validations:
Table 6-1 Data Validation POM Jobs
| Job Name | Summary |
|---|---|
| DIM_ORG_VALIDATOR_JOB | Executes validations on the Organization Hierarchy data |
| DIM_PROD_VALIDATOR_JOB | Executes validations on the Product Hierarchy and Product dimension data |
| DIM_CALENDAR_VALIDATOR_JOB | Executes validations on the Calendar Hierarchy staging data |
| DIM_CALENDAR_LOAD_VALIDATOR_JO B | Executes validations on the Calendar Period data after the load has been run |
| DIM_EXCH_RATE_VALIDATOR_JOB | Executes validations on the Exchange Rate staging data |
| DIM_PROD_ATTR_VALIDATOR_JOB | Executes validations on the Product Attribute staging data |
| FACT_POSFACT_VALIDATOR_JOB | Executes validations on the positional fact staging data (inventory, POs, and so on). Refer to the POS DATA set of validation rules, such as POSINVATA_R1later in thissection, for details on what this job is looking for. |
The jobs are included both in the nightly batch process flow and in separate ad hoc processes that can be executed as part of your historical data loads.
The configuration tables for the validation rules are called C_DIM_RULE_LIST and C_FACT_RULE_LIST . You can access these tables from the Control & Tactical Center’s Manage System Configurations screen. The tables allows you to edit the following fields:
- Set the error message resulting from a validation rule (
ERROR_DESC)
Operations Guide G56397-04 Copyright© 2026, Oracle and/or its affiliates.
Table 6-2 (Cont.) Validation Rule Details
| Rule ID | Explanation | Resolution |
|---|---|---|
| CAL_R3 | TheSTART_DTparameter set onC_ODI_PARAM_VWis not less than orequal to your frst calendar period start date. This may result in missing calendar data. | Update theSTART_DTparameter fromthe Control Center to be earlier than your fscal calendar start date. Detailed explanation of the start and end dates is provided in Chapter 2 of the_RAP_ Implementation Guide. |
| CAL_R4 | Your calendar fle does not contain at least 2 years prior to the current system date. Many applications on the platform require at least 2 years before and after the current calendar year (5 years total). | Load a new calendar fle having at least 2 years of fscal periods prior to the current year. |
| CUSTHIER_R1 | Too many custom hierarchies have been specifed as base intersections using the BASE_INTERSECTION_FLG. | Check thatW_RTL_CUSTOM_HIER_TYPE_D.BASE_INTERSECTION_FLGis set toYfor at most 2rows, and set all other rows to N. |
| CUSTHIER_R2 | Custom hierarchy type and level defnitions do not have the same HIER_NAME values. | Compare the values ofHIER_NAMEbetween W_RTL_CUSTOM_HIER_TYPE_Dand W_RTL_CUSTOM_HIER_LEVEL_Dandensure they contain the exact same values across both tables. |
| CUSTHIER_R3 | Custom hierarchy is missing a top level defnition. | Ensure that every hierarchy defned inW_RTL_CUSTOM_HIER_LEVEL_Dhasexactly 1 entry for HIER_LEVEL_ID=1. |
| CUSTHIER_R4 | Custom hierarchy has too few levels defned. | Check inW_RTL_CUSTOM_HIER_LEVEL_Dthat for every value of HIER_NAMEthereis >=2 rows of data. Add additional levels as needed. |
| CUSTHIER_R5 | Custom hierarchy levels do not have a proper sequence of level IDs starting from 1 and increasing from there. | Check inW_RTL_CUSTOM_HIER_LEVEL_Dthat for every value of HIER_NAME, theMAX(HIER_LEVEL_ID)is equal toCOUNT(HIER_LEVEL_ID).For example, iflevel IDs range from 1 to 5, then the maximum value is 5 and the row count should also be 5. |
| CUSTHIER_R6 | Custom hierarchy levels are missing a column mapping. | Check inW_RTL_CUSTOM_HIER_LEVEL_Dthat ID_SRCandDESC_SRCcolumns arenon-null on all rows. |
| CUSTHIER_R7 | Custom hierarchy levels contain an invalid column mapping. | For each level mapping defned inW_RTL_CUSTOM_HIER_LEVEL_D, ensurethe column names used are valid columns in the W_RTL_CUSTOM_HIER_Dtable. |
| CUSTHIER_R8 | Custom hierarchy data contains null values in a column that should be a part of the hierarchy structure. | Check that for every column mapped inW_RTL_CUSTOM_HIER_LEVEL_D, thenamed column in W_RTL_CUSTOM_HIER_Dhas non-nulldata for all rows of the associated HIER_NAME. |
Operations Guide G56397-04 Copyright© 2026, Oracle and/or its affiliates.
Table 6-2 (Cont.) Validation Rule Details
| Rule ID | Explanation | Resolution |
|---|---|---|
| PROD_STG_R1 | Null descriptions were detected for attributes having a non-null ID column for one of the following: BRAND_DESC,SUPPLIER_DESC | Populate valid descriptions for all rows in the product data where BRAND_NAMEor SUPPLIER_NUMare populated, andthen reload the fle. |
| PROD_R1 | Many-to-many relationships exist in your product hierarchy, which is not allowed. This is generally due to the same child ID appearing below multiple parent IDs. | Review all hierarchy levels for instances of the same ID appearing under multiple parents (such as a department belonging to two different divisions or groups) and modify the data to remove the multi-parent issues. |
| PROD_R2 | The same product hierarchy node has multiple descriptions on different rows of the input fle. | Modify your product hierarchy fle such that any given hierarchy ID has the same description on all rows. |
| PROD_R3 | A node of the product hierarchy has no children under it. This could be due to a reclass that didn’t delete the old nodes, or when a new node is added but no items were created yet. Initially, it is set as a Failure ( F) rule,but you may change it to a warning ( W) inC_DIM_RULE_LISTif you areokay with the data in its current format. | If possible, remove all cases of nodes having no children (for example, if all items are reclassed out of a subclass, delete the old subclass). Some AI Foundation functionality may fail if you attempt to run it on empty nodes; for example, if a user attempts to run CDT on an empty subclass, it cannot complete the run because there will be no data found. MFCS may allow hierarchies to exist without items, but it can lead to user confusion in AIF, so it’s best to clean up this data regularly. |
| PROD_R4 | Your product hierarchy levels use alphanumeric characters for the level IDs. This is not allowed if you are implementing Retail Insights; all levels must be numbers. | If you are implementing RI, you must alter your hierarchy to only use numbers for every level above item. Other characters are not allowed. |
| PROD_R5 | You are attempting to delete an item while also sending data for that item in other fles on the same batch run. You cannot delete an item if it is still actively sending data on other input interfaces. | Re-send the deleted item fle, removing any items that are still active or posting new data to RI. If the item should be deleted, then re-send the other fles having that item’s data to remove the item from all other fles. |
Operations Guide G56397-04 Copyright© 2026, Oracle and/or its affiliates.
Table 6-2 (Cont.) Validation Rule Details
| Rule ID | Explanation | Resolution |
|---|---|---|
| PROD_R6 | This is an informational message and not a hard failure. Null values are being checked for product attribute columns that are critical to the operation of multiple RAP applications. The warning message columns map to the item level (ATTR11), tran level (ATTR12), diff aggregate (ATTR16), and item/parent/ grandparent (ATTR13,14,15) felds in the PRODUCT.csvfle. (which loadsinto the W_PRODUCT_ATTR_DSstagingtable) | Null values in theATTR11andATTR12counts means that the ITEM_LEVELandTRAN_LEVELinput felds are notpopulated, and these must be populated for 100% of items at all levels. ATTR13/14/15represent the itemhierarchy of multi-level items and some null values are normal. The only check to perform is whether 100% of rows have nulls; if there are, then no parent/ child relationship was set up for any items. ATTR16matches with theDIFF_AGGREGATEinput feld (orDIFFcolumns in MFCS) and it must have non- null values for all fashion items (for example, the color IDs for SKUs within a style). MFCS allows you to confgure fashion items to not have a diff aggregate, but it is invalid for RAP applications that require diff aggregates to function. |
| PROD_R7 | Invalid hierarchy relationships exist for two or more SKUs having the same item-parents or grandparents but different hierarchy levels. This will break downstream integrations with AIF and Planning. | Correct the hierarchy levels so that all SKUs having the same item-parents also have the same subclass and above hierarchy levels. The BAD_PRODUCT_DStable shows multiple messages for this validation depending on where the issue is, such as PRODUCT L3 ANDITEMPARENT L2 SUBCLASS MISMATCHfor item level 2 and 3 items not having the same subclasses. |
| PROD_R8 | You have more than 1 top level (company) ID, which is not allowed. | Correct theTOP_PRODCAT_IDto containonly one value on all rows. |
| PROD_R9 | Your input fle contains a different top level (company) ID than what is already in the database. | Correct theTOP_PRODCAT_IDto matchthe company ID already in the system, or erase the data in the system to perform a clean load of new hierarchy data. |
| PROD_R10 | Your input fle contains a different top level (company) domain member ID (on W_DOMAIN_MEMBER_DS_TL)than what is already in the database. | Correct theTOP_PRODCAT_IDto matchthe company ID already in the system, or erase the data in the system to perform a clean load of new hierarchy data. |
| PROD_R11 | You have more than 1 top level (company) description, which is not allowed. | Correct theTOP_PRODCAT_DESCtocontain only one value on all rows. |
| PROD_R12 | You have duplicate item IDs when ignoring the case, such as XYZandxyz, which is not allowed on theplatform. Item IDs are not case- sensitive. | Delete duplicate items such that you only have a single ID across all lowercase/uppercase variations. |
Operations Guide G56397-04 Copyright© 2026, Oracle and/or its affiliates.
Table 6-2 (Cont.) Validation Rule Details
| Rule ID | Explanation | Resolution |
|---|---|---|
| PROD_R13 | You have a one-to-many relationship between the display IDs for a hierarchy level and their unique (UID) identifers, such as LVL4_PRODCAT_UIDandLVL4_PRODCAT_ID. | For a given value in the unique (UID) columns, you must have one and only one value in the associated display ID column. Correct either the UID or ID columns to ensure they align. |
| PROD_R14 | Invalid hierarchy relationships exist for two or more items having the same item-parents or grandparents but different subclass levels between your incoming product data and the existing data already in W_PRODUCT_Dand W_PRODUCT_ATTR_D. TheBAD_PRODUCT_DStable showsmultiple records for this validation depending on the items involved, using the error message: EXISTINGPRODUCT AND ITEMGRANDPARENT/ITEMPARENT/CHILD SUBCLASSMISMATCH. | Correct the hierarchy levels for the incoming items so that all items having the same item-parents also have the same subclass and above hierarchy levels. This rule is for comparing incoming item data and items already in the database from prior loads; you must ensure consistent parents and hierarchy levels across all of them. There is also a supplemental view W_PRODUCT_ATTR_D_Vyou may query tocheck the item and hierarchy relationships for the mismatching items. |
| PROD_R15 | You have an invalid change to item parent/grandparent relationships when comparing incoming data to existing dimensions, specifc to level 3 items. | For all level 3 items (between both W_PRODUCT_DTS and existing dimension W_PRODUCT_ATTR_D), they must be updated to have the same parent and grandparent relationships such that no multi-parent relationship is created by this load. View RI_PARENT_GRANDPARENT_MISMATCH _D_V provides the list of issues. |
| PROD_R16 | You have an invalid change to item parent relationships when comparing incoming data to existing dimensions, specifc to level 2 items. | For all level 2 items (between both W_PRODUCT_DTS and existing dimension W_PRODUCT_ATTR_D), they must be updated to have the same parent and grandparent relationships such that no multi-parent relationship is created by this load. View RI_PARENT_GRANDPARENT_MISMATCH _D_V provides the list of issues. |
| ORG_STG_R1 | Null descriptions were detected for attributes having a non-null ID column, for one of the following: CHANNEL_NAME,PLANNING_CHANNEL_NAME,STORE_FORMAT_DESC | Populate valid values for all descriptions where CHANNEL_ID,PLANNING_CHANNEL_IDorSTORE_FORMAT_IDhas a non-null value,and then reload the fle. |
| ORG_R1 | Many-to-many relationships exist in your organization hierarchy, which is not allowed. This is generally due to the same child ID appearing below multiple parent IDs. | Review all hierarchy levels for instances of the same ID appearing under multiple parents (such as a district belonging to two different regions or areas) and modify the data to remove the multi-parent issues. |
Operations Guide G56397-04 Copyright© 2026, Oracle and/or its affiliates.
Table 6-2 (Cont.) Validation Rule Details
| Rule ID | Explanation | Resolution |
|---|---|---|
| ORG_R2 | The same organization hierarchy node has multiple descriptions on different rows of the input fle. | Modify your organization hierarchy fle such that any given hierarchy ID has the same description on all rows. |
| ORG_R3 | A node of the organization hierarchy has no children under it. This could be due to a reclass that didn’t delete the old nodes, or when a new node is added but no stores were created yet. | If possible, remove all cases of nodes having no children (for example, if all stores are reclassed out of a district, delete the old district). Some AI Foundation functionality will fail if you attempt to run it on empty nodes. |
| ORG_R4 | Your organization hierarchy levels use alphanumeric characters for the level IDs. This is not allowed if you are implementing Retail Insights; all levels must be numbers. | If you are implementing RI, you must alter your hierarchy to only use numbers for every level of the organization hierarchy. Other characters are not allowed. |
| ORG_R5 | Your location type code ( ORG_TYPE_CODE) contains invalidvalues. | Only specifc codesS,W, orEare allowedin the ORG_TYPE_CODEfeld, so you mustcorrect any other values and reload the fle. |
| ORG_R6 | You have more than 1 top level (company) ID, which is not allowed. | Correct theORG_TOP_NUMto contain onlyone value on all rows of your input fle and reload it. |
| ORG_R7 | Your input fle contains a different top level (company) ID than what is already in the database, which is not allowed. | Correct theORG_TOP_NUMto match thecompany ID already in the database ( W_INT_ORG_DHtable) or erase the datain the system to perform a clean load of new hierarchy data, if you do not want to keep your existing dataset. |
| ORG_R8 | Your input fle contains a different top level (company) domain member ID or description (on W_DOMAIN_MEMBER_DS_TL) than whatis already in the database. | Correct theORG_TOP_NUMandORG_TOP_DESCto match the companydata already in the database ( W_DOMAIN_MEMBER_LKP_TLtable) orerase the data in the system to perform a clean load of new hierarchy data, if you do not want to keep your existing dataset. |
| ORG_R9 | You have more than 1 top level (company) description, which is not allowed. | Correct theORG_TOP_DESCto containonly one value on all rows of your input fle and reload it. |
| ORG_R10 | You are attempting to load a location in W_INT_ORG_DSwhich is already inthe data warehouse and fagged inactive or deleted. | You may not reload or reuse location IDs that are already in the data warehouse and have been deleted or inactivated. Delete the location from your input data that is specifed in BAD_ORG_INT_ORG_DS. If you believethis validation is incorrect you may raise an SR for assistance. |
Operations Guide G56397-04 Copyright© 2026, Oracle and/or its affiliates.
Table 6-2 (Cont.) Validation Rule Details
| Rule ID | Explanation | Resolution |
|---|---|---|
| ORG_R11 | You are attempting to load a location in W_INT_ORG_DHSwhich is alreadyin the data warehouse and fagged inactive or deleted. | You may not reload or reuse location IDs that are already in the data warehouse and have been deleted or inactivated. Delete the location from your input data that is specifed in BAD_ORG_INT_ORG_DHS. If you believethis validation is incorrect you may raise an SR for assistance. |
| ORG_R12 | You are attempting to runW_INT_ORG_DH_JOBbut the stagingtable W_INT_ORG_DHSis empty. Thelocation hierarchy is a full snapshot dimension load and must always have data. | Populate the location hierarchy data into W_INT_ORG_DHStable and then re-run the validation job. |
| EXCH_RATE_R1 | Exchange rate dates are overlapping for the same conversion, which will result in multiple rates active for the same date and currency. | Modify the start/end dates for the exchange rate records to ensure there are no overlapping dates. Only one rate may be effective per day/currency combination. |
| EXCH_RATE_R2 | Exchange rate dates have gaps which will result in no rate being active for one or more dates. | Modify the start/end dates for the exchange rate records to ensure they have no gaps between one end date and the next start date, for any given currency rate. |
| EXCH_RATE_R3 | You have provided currency conversion in one direction (for example, USD > CAD) but you did not provide it in the alternate direction (CAD > USD). | The system requires that you provide currency rates going in both directions for each currency code pair, to ensure we are always able to convert into and out of any supported currency. |
| ATTR_R1 | There is mismatched data between the ATTR.csvandPROD_ATTR.csvfles | TheATTR.csvfle must have a headerrecord for all attribute groups and values found in PROD_ATTR.csv. Correctthe ATTR.csvfle to match exactly withPROD_ATTR.csvor delete themismatched rows from PROD_ATTR.csv. |
| ATTR_R2 | PROD_ATTR.csvcolumnATTR_GRP_TYPEcontains an invalidtype code. | The only valid codes forATTR_GRP_TYPEare ( ITEMDIFF,ITEMUDA,ITEMLIST,COLOR, andPRODUCT_ATTRIBUTES).Correct the PROD_ATTR.csvfle andreload the data. |
| ATTR_R3 | ATTR.csvcolumnATTR_TYPE_CODEcontains an invalid type code. | The only valid codes forATTR_TYPE_CODEare (FF,LV,DT,SIZE,FABRIC,SCENT,FLAVOR,STYLE,COLOR,and DIFF). Correct theATTR.csvfle andreload the data. |
Operations Guide G56397-04 Copyright© 2026, Oracle and/or its affiliates.
Table 6-2 (Cont.) Validation Rule Details
| Rule ID | Explanation | Resolution |
|---|---|---|
| ATTR_R4 | ATTR.csvcolumnsATTR_GROUP_IDorATTR_VALUE_IDcontain invalidcharacters. | Attribute group and value IDs are used as a hierarchy in Planning apps and are restricted from having any spaces, colons, or quotation marks as part of the IDs. Correct the ATTR.csvandPROD_ATTR.csvfles and reload thedata. |
| POSINVDATA_R 1 | Dates other than the current business date were found on W_RTL_INV_IT_LC_DY_FS. TheDAY_DTis being compared to “selectMCAL_NUMfromW_RTL_CURR_MCAL_Gwhere MCAL_TYPE = 'DT'”. | Daily positional fact data must only contain a DAY_DTvalue matching thecurrent business date; correct the data and reload. This can be a sign that an incorrect fle was used in the batch or the dates are out of sync. |
| POSINVUDATA_ R2 | Dates other than the current business date were found on W_RTL_INVU_IT_LC_DY_FS. TheDAY_DTis being compared to “selectMCAL_NUMfromW_RTL_CURR_MCAL_Gwhere MCAL_TYPE = 'DT'”. | Daily positional fact data must only contain a DAY_DTvalue matching thecurrent business date; correct the data and reload. This can be a sign that an incorrect fle was used in the batch or the dates are out of sync. |
| POSPRICEDATA _R3 | Dates other than the current business date were found on W_RTL_PRICE_IT_LC_DY_FS. TheDAY_DTis being compared to “selectMCAL_NUMfromW_RTL_CURR_MCAL_Gwhere MCAL_TYPE = 'DT'”. | Daily positional fact data must only contain a DAY_DTvalue matching thecurrent business date; correct the data and reload. This can be a sign that an incorrect fle was used in the batch or the dates are out of sync. |
| POSNCOSTDATA _R4 | Dates other than the current business date were found on W_RTL_NCOST_IT_LC_DY_FS. TheDAY_DTis being compared to “selectMCAL_NUMfromW_RTL_CURR_MCAL_Gwhere MCAL_TYPE = 'DT'”. | Daily positional fact data must only contain a DAY_DTvalue matching thecurrent business date; correct the data and reload. This can be a sign that an incorrect fle was used in the batch or the dates are out of sync. |
| POSBCOSTDATA _R5 | Dates other than the current business date were found on W_RTL_BCOST_IT_LC_DY_FS. TheDAY_DTis being compared to “selectMCAL_NUMfromW_RTL_CURR_MCAL_Gwhere MCAL_TYPE = 'DT'”. | Daily positional fact data must only contain a DAY_DTvalue matching thecurrent business date; correct the data and reload. This can be a sign that an incorrect fle was used in the batch or the dates are out of sync. |
| POSPOONORDD ATA_R6 | Dates other than the current business date were found on W_RTL_PO_ONORD_IT_LC_DY_FS. TheDAY_DTis being compared to “selectMCAL_NUMfromW_RTL_CURR_MCAL_Gwhere MCAL_TYPE = 'DT'”. | Daily positional fact data must only contain a DAY_DTvalue matching thecurrent business date; correct the data and reload. This can be a sign that an incorrect fle was used in the batch or the dates are out of sync. |
| POSPOONALCD ATA_R7 | Dates other than the current business date were found on W_RTL_PO_ONALC_IT_LC_DY_FS. TheDAY_DTis being compared to “selectMCAL_NUMfromW_RTL_CURR_MCAL_Gwhere MCAL_TYPE = 'DT'”. | Daily positional fact data must only contain a DAY_DTvalue matching thecurrent business date; correct the data and reload. This can be a sign that an incorrect fle was used in the batch or the dates are out of sync. |
Operations Guide G56397-04 Copyright© 2026, Oracle and/or its affiliates.
Table 6-2 (Cont.) Validation Rule Details
| Rule ID | Explanation | Resolution |
|---|---|---|
| POSCOMPPRICE DATA_R8 | Dates other than the current business date were found on W_RTL_COMP_PRICE_IT_LC_DY_FS. | Daily positional fact data must only contain a DAY_DTvalue matching thecurrent business date, correct the data |
TheDAY_DTis being compared to“select MCAL_NUMfromW_RTL_CURR_MCAL_Gwhere | and reload. This can be a sign that an incorrect fle was used in the batch or the dates are out of sync. | |
MCAL_TYPE = 'DT'”. |
In all cases where you need to correct your file and reload it, you are expected to push only the corrected files into the system using the data reprocessing ad hoc programs in the POM AIF DATA schedule. Refer to the AI Foundation Data Standalone Processes chapter for details on these programs:
1. REPROCESS_ZIP_FILE_PROCESS_ADHOC to upload your corrected file(s)
2. CSV_REPROCESS_ADHOC or DAT_REPROCESS_ADHOC to import the corrected files and transform the data from staging to target tables (only running the required programs, not the entire ad hoc process)
Operations Guide G56397-04 Copyright© 2026, Oracle and/or its affiliates.
In this guide
- Guide: AI Foundation Operations Guide
- Previous: 5 AI Foundation Data Standalone Process Flows
- Next: 7 Support Utilities
Related chapters
- 2 AI Foundation Data Standalone Processes — AI Foundation Operations Guide · shares
CSV_REPROCESS_ADHOC,C_ODI_PARAM_VW,DAT_REPROCESS_ADHOC,DIM_PROD_VALIDATOR_JOB - 2 Setup and Configuration — Retail Insights Cloud Service Implementation Guide · shares
C_ODI_PARAM_VW,START_DT,W_PRODUCT_ATTR_D - 5 AI Foundation Data Standalone Process Flows — AI Foundation Operations Guide · shares
DAT_REPROCESS_ADHOC,W_DOMAIN_MEMBER_DS_TL,W_DOMAIN_MEMBER_LKP_TL,W_INT_ORG_DHS - 2 Implementation Overview — AI Foundation Implementation Guide · shares
W_DOMAIN_MEMBER_LKP_TL,W_INT_ORG_DH,W_PRODUCT_ATTR_D,W_PRODUCT_D - 18 Attribute Processing — AI Foundation Implementation Guide · shares
W_DOMAIN_MEMBER_LKP_TL,W_PRODUCT_ATTR_D,W_PRODUCT_D - 10 Size Profiles — AI Foundation Implementation Guide · shares
W_DOMAIN_MEMBER_LKP_TL,W_INT_ORG_DHS,W_INT_ORG_DS,W_PRODUCT_ATTR_DS