We’ve extended the demand planning data model to include custom attributes for seasonal factors and promotional impact indicators. These fields are properly defined in the system and display correctly in the UI when manually entered.
However, when we import forecast data using the standard Excel template, all custom attribute columns are completely ignored - the data imports successfully but those columns come through as null values. The standard fields (SKU, Location, Period, Quantity) import perfectly.
Our Excel template includes columns: SKU, Location, ForecastPeriod, Quantity, SeasonalFactor, PromoImpact. The last two are our custom attributes. We’ve verified the column headers exactly match the attribute names defined in the system.
SKU | Location | ForecastPeriod | Quantity | SeasonalFactor | PromoImpact
PROD-001 | WH-EAST | 2025-Q2 | 5000 | 1.25 | HIGH
PROD-002 | WH-WEST | 2025-Q2 | 3200 | 0.85 | NONE
Is there specific import mapping configuration required for custom attributes? The documentation only covers standard field mapping, and we can’t find any settings that control custom attribute import behavior.
I’ll provide comprehensive guidance on all three aspects of custom attribute import configuration:
Import Mapping Configuration:
Custom attributes require explicit configuration beyond the standard Excel template. Here’s the complete setup process:
-
Create Custom Import Profile:
Navigate to: System Administration > Data Management > Import Profiles > Create New
- Profile Name: ‘Demand_Forecast_Custom_Attributes’
- Target Module: ‘Demand Planning - Forecasts’
- Import Format: ‘Excel (.xlsx)’
- Template Type: ‘Custom Extended’
-
Define Field Mappings:
In the Field Mapping section:
Standard Fields (auto-mapped):
- Excel Column 'SKU' → System Field 'ProductCode'
- Excel Column 'Location' → System Field 'LocationCode'
- Excel Column 'ForecastPeriod' → System Field 'Period'
- Excel Column 'Quantity' → System Field 'ForecastQuantity'
Custom Fields (manual mapping required):
- Excel Column 'SeasonalFactor' → Custom Attribute 'attr_seasonal_factor'
- Excel Column 'PromoImpact' → Custom Attribute 'attr_promo_impact'
-
Critical Configuration Settings:
For each custom attribute mapping, configure:
- Allow Nulls: Set to ‘true’ if the field is optional
- Default Value: Define fallback (e.g., SeasonalFactor default = 1.0)
- Validation Rule: Enable ‘Strict Type Checking’
- Error Handling: Set to ‘Log and Continue’ not ‘Fail on Error’
Custom Attribute Support Validation:
Verify your custom attributes are properly configured for import:
-
Check Attribute Definition:
System Configuration > Data Model > Demand Planning > Custom Attributes
For SeasonalFactor:
Attribute Name: attr_seasonal_factor
Display Name: Seasonal Factor
Data Type: Decimal(5,2)
Import Enabled: TRUE (critical setting)
API Accessible: TRUE
-
Enumeration Configuration (PromoImpact):
For enum-type attributes:
Attribute Name: attr_promo_impact
Display Name: Promo Impact
Data Type: Enumeration
Enum Values: ['NONE', 'LOW', 'MEDIUM', 'HIGH']
Import Mapping: Value-to-Code (not Display-to-Code)
Case Sensitive: FALSE
Allow Custom Values: FALSE
The ‘Import Mapping’ setting is crucial - it must be set to ‘Value-to-Code’ for direct Excel value matching.
-
Test Import Capability:
Use the Data Model Validator tool:
System Tools > Data Validation > Custom Attribute Import Test
Select Attribute: attr_seasonal_factor
Test Value: 1.25
Result: Should show 'Valid - Import Supported'
Data Model Extension Considerations:
When extending the demand planning data model, ensure proper configuration:
- Attribute Registration:
Custom attributes must be registered with the import framework:
<customAttribute>
<name>attr_seasonal_factor</name>
<module>DemandPlanning</module>
<entity>Forecast</entity>
<importEnabled>true</importEnabled>
<exportEnabled>true</exportEnabled>
</customAttribute>
This configuration is in: System Configuration > Import/Export Framework > Attribute Registry
2. **Excel Template Generation:**
After configuring your custom import profile, generate a new template:
- Import Profiles > Select 'Demand_Forecast_Custom_Attributes' > Actions > Generate Template
- This creates an Excel file with proper column headers and data validation rules
- Use this generated template instead of creating your own
3. **Data Type Formatting:**
The generated template includes pre-configured data validation:
- SeasonalFactor column: Number format, 2 decimal places, range 0.01-10.00
- PromoImpact column: Dropdown list with exact enum values
- This prevents type mismatch issues during import
**Troubleshooting Your Specific Issue:**
For the PromoImpact null value problem:
1. **Verify Enum Configuration:**
Export the enum definition:
```sql
SELECT enum_value, enum_code, display_order
FROM custom_attribute_enums
WHERE attribute_name = 'attr_promo_impact'
Check for hidden characters, trailing spaces, or unexpected case variations.
-
Check Import Log:
After import, review the detailed log:
Data Management > Import History > Select your import > View Details
Look for warnings like:
Row 2: PromoImpact value 'HIGH' not found in enumeration
Row 3: PromoImpact value 'NONE' rejected - invalid format
-
Test Individual Values:
Use the API test console to verify enum values:
POST /api/v1/demandplanning/forecasts
{
"productCode": "TEST-001",
"attr_promo_impact": "HIGH"
}
If this API call fails, the enum value itself is misconfigured.
Complete Implementation Steps:
- Verify custom attributes have ‘Import Enabled’ = TRUE
- Create custom import profile with explicit field mappings
- Generate new Excel template from the custom profile
- Test import with 2-3 sample rows
- Review import log for validation errors
- Adjust enum configurations if needed
- Re-test with full dataset
Best Practices:
- Always use generated templates rather than manually created Excel files
- Set up import validation rules to catch data quality issues before import
- Enable detailed logging during initial testing
- Create separate import profiles for different forecast scenarios (promotional vs. regular)
- Document your custom attribute mappings in the profile description field
The most common cause of custom attributes being ignored is the ‘Import Enabled’ flag not being set on the attribute definition. Verify this first before troubleshooting mapping configurations.
Thanks, but where do we configure custom import profiles? I’ve looked in Demand Planning > Configuration > Import Settings but don’t see an option to define custom attribute mappings. Is this in a different admin area?
Custom attributes require explicit mapping in the import profile configuration. The default Excel import template only handles standard schema fields. You need to create a custom import profile that defines the mapping between your Excel columns and the extended data model attributes.
Go to System Administration > Data Management > Import Profiles. Create a new profile specifically for demand planning forecasts. In the field mapping section, you’ll see the standard fields pre-mapped. Click ‘Add Custom Field Mapping’ and select your custom attributes from the dropdown. Map each to the corresponding Excel column name. Save the profile and then use this profile when importing your Excel file instead of the default template.
One gotcha with custom attribute imports: the data types must match exactly. If SeasonalFactor is defined as Decimal in your data model, the Excel column must be formatted as Number not Text. If PromoImpact is an enumeration type, the Excel values must exactly match the enum values defined in the system (case-sensitive). Mismatched types cause silent failures where the row imports but custom fields stay null.
Check if your enumeration attribute has a default value set in the data model definition. Sometimes enums require explicit null handling in the import profile. Also verify that the enum values don’t have trailing spaces in the system definition - that’s a common source of match failures. You can test by exporting existing records that have PromoImpact set and comparing the exported values character-by-character with your import data.