Minimum Version Required: 22.01
Pre-Conditions
User must have the ObjectiveEdit permission to use this routine
The import file should contain data related to objectives and optionally related objectives components
If importing product information, the products must already exist in the system
If importing brand information, the brands must already exist in the system
If importing location information, the locations must already exist in the system
Steps
The Objectives EDBL routine allows you to import and update objective records along with their related components. This routine can handle a multi-tiered objective structure that includes:
Main objective information
Objective products
Objective brands
Objective locations
Objective schedules
The routine supports adding new records, updating existing records, or both based on the selected Import Action. It uses translation fields (e.g., ObjectiveID_Translation) to match with existing records in the system.
In DSDLink environments, the routine offers additional capabilities:
Automatically maps distributor numbers to internal DSDLink IDs
Maps supplier product numbers to internal product IDs
Links objectives to customer records based on distributor customer IDs
Records integration errors for troubleshooting in the ZZ_RASIntegratiECP-ECP-onerrors table
When importing objective schedules with products, you can specify products in multiple ways:
Using the Products field (comma-separated list of product IDs)
Using the SupplierProductNum field (comma-separated list of supplier product numbers)
Using the OSKU field (for specific integrations)
Fields And Definitions
Main Objective Fields:
ObjectiveID - Internal identifier for the objective (integer)
ObjectiveID_Translation - External identifier for matching objectives (text)
Objective - Name or description of the objective, defaults to "Default" if not provided
AfterDeadLineTaskStatus - Status to set tasks to after deadline passes
NewTaskStatus - Status to set new tasks to
SupplierObjectiveNum - Supplier's identifier for the objective
SupplierSurveyID - Survey identifier, will default to SupplierObjectiveNum if not provided
CopyAnswersToDetails - Controls if answers should be copied to details, defaults to 1 (true)
Objective Products Fields:
ProductID - Internal product identifier
ProductID_Translation - External product identifier for matching
Objective Brands Fields:
BrandID - Internal brand identifier
BrandID_Translation - External brand identifier for matching
Objective Locations Fields:
LocationID - Internal location identifier
LocationID_Translation - External location identifier for matching
Objective Schedule Fields:
ObjectiveScheduleID - Internal schedule identifier
ObjectiveScheduleID_Translation - External schedule identifier for matching
StartDate - Schedule start date
EndDate - Schedule end date
Frequency - Frequency of the schedule
DaysToDeadline - Days allowed before deadline
IndVolume - Individual volume
DraftPackage - Package type (1=Draft Only, 2=Draft and Package, 3=Package Only)
HasDisplays - Whether displays are required (Yes/No)
Products - Comma-separated list of product IDs
Quantity - Quantity for products
SupplierProductNum - Comma-separated list of supplier product numbers
DSDLink Integration Fields:
DistributorCustomerID - Customer ID in the distributor's system
DistributorNum - Distributor identifier
SuppliersForeignKey - External key from supplier system
OSKU - Product identifier for specific integrations
DSDLinkID - Internal DSDLink identifier
SupplierFamilyID - Supplier family identifier
Best Practices
Always provide at least one unique identifier (ObjectiveID_Translation or ObjectiveID) to properly match records
When importing schedule products, provide either Products (internal IDs) or SupplierProductNum (external product numbers)
If importing DSDLink data, ensure DistributorNum is provided for proper mapping
For DraftPackage field, use either numeric values (1, 2, 3) or their text equivalents ("Draft Only", "Draft and Package", "Package Only")
When using Update Only action, ensure the records you're trying to update already exist
For better performance, only include the fields you need to update
Check for any RASIntegration errors after import (a link will be provided in the warnings if errors occurred)
If importing a large dataset, consider breaking it into smaller batches