Start a conversation

Specification Generation Fails Due to Missing Solution Association on Product Configuration

Symptom

When attempting to generate specifications for a service using the API:

csedm.API_1.generateSpecifications(new List<String>{'<SERVICE_ID>'}, new List<String>(), false);

The operation fails with the error:

Cannot get Order Enrichments without specified commercial configuration GUIDs

No specifications are generated, and the order cannot proceed.

Cause

The cssdm__solution_association__c field on the Product Configuration record is blank or null. This field is required by the Order Enrichment and specification generation process to:

  1. Link the Product Configuration to its parent Solution
  2. Retrieve the correct Order Enrichment configuration
  3. Map commercial configurations to their GUIDs for specification generation

When this field is missing, the system cannot identify which Order Enrichments apply to the configuration, causing the specification generation to fail.

This typically occurs when:
- Product Configurations are created via custom code that skips the solution association
- Data migration processes do not populate the field
- Manual data manipulation clears the field inadvertently

Resolution

Step 1: Identify the Affected Product Configuration

From the error message or API call, note the Service ID (Product Configuration ID).

Example: a3aQw000003f92e

Step 2: Verify the Missing Solution Association

Run the following SOQL query to check the solution association field:

SELECT Id, Name, cssdm__solution_association__c,
       cscfga__Product_Basket__c,
       cscfga__Product_Basket__r.cssmgnt__Solution__c
FROM cscfga__Product_Configuration__c
WHERE Id = '<SERVICE_ID>'

If cssdm__solution_association__c is null, this confirms the issue.

Step 3: Determine the Correct Solution Association

The solution association should match the Solution ID from the basket:

SELECT Id, Name, cssmgnt__Solution__c, cssmgnt__Solution__r.Name
FROM cscfga__Product_Basket__c
WHERE Id = '<BASKET_ID>'

Note the cssmgnt__Solution__c value - this is what should be populated in the Product Configuration's cssdm__solution_association__c field.

Step 4: Update the Solution Association Field

Update the Product Configuration with the correct solution association:

UPDATE cscfga__Product_Configuration__c
SET cssdm__solution_association__c = '<SOLUTION_ID>'
WHERE Id = '<SERVICE_ID>'

Alternatively, update via Anonymous Apex:

cscfga__Product_Configuration__c pc = [
    SELECT Id, cssdm__solution_association__c, 
           cscfga__Product_Basket__r.cssmgnt__Solution__c
    FROM cscfga__Product_Configuration__c
    WHERE Id = '<SERVICE_ID>'
    LIMIT 1
];

pc.cssdm__solution_association__c = pc.cscfga__Product_Basket__r.cssmgnt__Solution__c;
update pc;

Step 5: Retry Specification Generation

Execute the API call again:

csedm.API_1.generateSpecifications(
    new List<String>{'<SERVICE_ID>'}, 
    new List<String>(), 
    false
);

Verify specifications are generated successfully.

Step 6: Verify Order Enrichment Configuration

If specifications still fail to generate after populating the solution association, verify the Order Enrichment configuration:

SELECT Id, Name, csedm__Commercial_Product__r.Name,
       csedm__Specification_Template__r.Name
FROM csedm__Order_Enrichment__c
WHERE csedm__Commercial_Product__c IN (
    SELECT cscfga__Product_Definition__c
    FROM cscfga__Product_Configuration__c
    WHERE Id = '<SERVICE_ID>'
)

Ensure Order Enrichment records exist for the Product Definition and have valid Specification Templates assigned.

Additional Notes

  • Bulk Updates: If multiple Product Configurations are affected, use a bulk update query:
    sql UPDATE cscfga__Product_Configuration__c SET cssdm__solution_association__c = cscfga__Product_Basket__r.cssmgnt__Solution__c WHERE cssdm__solution_association__c = null AND cscfga__Product_Basket__r.cssmgnt__Solution__c != null

  • Custom Code Review: If your org uses custom code to create Product Configurations, ensure it populates the cssdm__solution_association__c field:
    apex pc.cssdm__solution_association__c = basket.cssmgnt__Solution__c;

  • Data Validation: Consider adding a validation rule to prevent Product Configurations from being created without a solution association if your business process requires it.

  • Related Fields: The solution association field is separate from cscfga__Parent_Configuration__c. Both may be required depending on your configuration hierarchy.

Choose files or drag and drop files
Was this article helpful?
Yes
No
  1. Priyanka Bhotika

  2. Posted

Comments