sap commerce cloud
Multi-Site Order Code Generation in SAP Commerce (US vs IN Real Example)
In real-world SAP Commerce Cloud projects, businesses often run multiple websites (multi-site setup) and require different order number formats per region. For example, US orders may start with “U” while India orders start with “I”. In this article, we’ll implement a practical solution for multi-site order code generation.
May 1, 2026•2 min read
1. Business Requirement
Let’s take a real example:
WebsiteRequirementsamsung.com/en-usOrder code → 14 digits, prefix Usamsung.com/en-inOrder code → 16 digits, prefix IExample Output:
U00000000000123
I00000000000045672. Why Default Configuration is Not Enough
SAP Commerce provides basic configuration like:
keygen.order.code.digits=8
keygen.order.code.type=numericBut limitations:
- No site-specific logic
- No dynamic prefix support
- Same format across all websites
👉 So we need customization
3. Solution Overview (4-Step Approach)
We’ll implement this using:
- Multiple key generators
- Spring configuration
- Custom Java class
- Site-based logic
4. Step 1: Define Properties in local.properties
Add separate configurations:
# US
keygen.us.order.code.name=us_order_code
keygen.us.order.code.start=U0000000000000
keygen.us.order.code.type=alphanumeric
keygen.us.order.code.digits=14
# IN
keygen.in.order.code.name=in_order_code
keygen.in.order.code.start=I000000000000000
keygen.in.order.code.type=alphanumeric
keygen.in.order.code.digits=16👉 These properties define:
- Separate number series
- Different formats per country
5. Step 2: Configure Beans in core-spring.xml
Create multiple key generators:
<bean id="usOrderCodeGenerator" class="de.hybris.platform.servicelayer.keygenerator.impl.PersistentKeyGenerator">
<property name="key" value="${keygen.us.order.code.name}"/>
<property name="digits" value="${keygen.us.order.code.digits}"/>
<property name="start" value="${keygen.us.order.code.start}"/>
<property name="type" value="${keygen.us.order.code.type}"/>
</bean>
<bean id="inOrderCodeGenerator" class="de.hybris.platform.servicelayer.keygenerator.impl.PersistentKeyGenerator">
<property name="key" value="${keygen.in.order.code.name}"/>
<property name="digits" value="${keygen.in.order.code.digits}"/>
<property name="start" value="${keygen.in.order.code.start}"/>
<property name="type" value="${keygen.in.order.code.type}"/>
</bean>6. Step 3: Create Custom Generator Class
Create a class:
public class B2BOrderCodeGenerator extends PersistentKeyGenerator {
private PersistentKeyGenerator usOrderCodeGenerator;
private PersistentKeyGenerator inOrderCodeGenerator;
@Override
public String generate() {
// logic will go here
return super.generate();
}
// getters & setters
}7. Step 4: Add Site-Based Logic
Override generate():
@Override
public String generate() {
String currentSite = getCurrentSite(); // pseudo logic
if ("US".equalsIgnoreCase(currentSite)) {
return usOrderCodeGenerator.generate().toString();
} else if ("IN".equalsIgnoreCase(currentSite)) {
return inOrderCodeGenerator.generate().toString();
}
return super.generate();
}👉 You can fetch site using:
BaseSiteServicegetCurrentBaseSite()
8. Wire Custom Generator in Spring
<bean id="b2bOrderCodeGenerator" class="com.custom.B2BOrderCodeGenerator">
<property name="usOrderCodeGenerator" ref="usOrderCodeGenerator"/>
<property name="inOrderCodeGenerator" ref="inOrderCodeGenerator"/>
</bean>Then replace default generator with this bean.
9. Final Output
SiteOrder Code ExampleUSU00000000000123INI000000000000456710. Common Pitfalls
❌ Using same key for both generators
→ Leads to duplicate or mixed sequences
❌ Not configuring separate number series
→ Logic won’t work
❌ Forgetting Spring wiring
→ Default generator will still be used
11. Best Practices
- Always create separate key names per site
- Keep logic simple and maintainable
- Use configuration + code combination
- Test in multi-site environment
Conclusion
Multi-site order code generation is a common real-world requirement in SAP Commerce Cloud. By combining:
- Configuration properties
- Spring beans
- Custom logic
You can build scalable and flexible solutions tailored to business needs.
What’s Next?
👉 Next: PersistentKeyGenerator in SAP Commerce (Complete Deep Dive for Developers)