SAP Commerce Promotion Engine Nedir? Architecture, Rule Engine, Coupon ve Customization

Temmuz 3, 2026 Reopiya 7 dk okuma Sap Commerce Cloud Mimari & Teknik

SAP Commerce Cloud’un en güçlü modüllerinden biri olan SAP Commerce Promotion Engine, e-ticaret sitelerinde kampanyaların dinamik, yönetilebilir ve performanslı şekilde uygulanmasını sağlayan kural tabanlı (Rule-Based) bir kampanya motorudur.

Eski Hybris sürümlerindeki klasik Promotions Extension’dan farklı olarak Promotion Engine, Drools Rule Engine üzerine inşa edilmiştir ve kampanyaların kod yazılmadan Business kullanıcıları tarafından Backoffice üzerinden yönetilmesine olanak tanır.

Kurumsal e-ticaret projelerinde yüzlerce hatta binlerce kampanya aynı anda aktif olabilir. Örneğin;

  • Sepette %20 indirim
  • 3 Al 2 Öde
  • Aynı kategoriden ikinci ürüne %50
  • VIP müşterilere özel kampanyalar
  • Kupon kampanyaları
  • Marka bazlı indirimler
  • Kargo promosyonları

gibi birçok senaryo Promotion Engine tarafından yönetilir.

Bu makalede yalnızca Promotion oluşturmayı değil, Promotion Engine’in arkasındaki mimariyi, çalışma mantığını ve gerçek proje deneyimlerini inceleyeceğiz.


Promotion Engine Neden Geliştirildi?

Eski Promotion mekanizması birçok projede yeterli olsa da büyük ölçekli sistemlerde bazı problemler ortaya çıkıyordu.

Eski PromotionsPromotion Engine
Kod bağımlılığı yüksektirRule tabanlıdır
Esnek değildirBusiness kullanıcıları yönetebilir
Zor bakım yapılırBackoffice üzerinden yönetilir
Performans sınırlıdırDrools optimizasyonları kullanılır
Version desteği zayıftırRule versioning bulunur

SAP bu nedenle tamamen Rule Engine tabanlı yeni Promotion Engine mimarisini geliştirmiştir.


Promotion Engine Architecture

Promotion Engine aslında tek başına çalışan bir servis değildir.

Aşağıdaki bileşenlerle birlikte çalışır.

Customer

|

Cart

|

Calculation Service

|

Promotion Engine

|

Rule Engine (Drools)

|

PromotionResult

|

Order Recalculation

|

Final Cart

Bu mimaride Promotion Engine yalnızca indirim hesaplamaz.

Aynı zamanda;

  • Rule Evaluation
  • Discount Calculation
  • Consumed Entry hesaplama
  • Coupon kontrolü
  • Promotion Result oluşturma

işlemlerini de gerçekleştirir.


Promotion Engine Request Flow

Gerçek bir sepet hesaplaması şu şekilde ilerler.

Customer adds product



Cart created



CalculationService



PromotionService



Rule Engine



Promotion Evaluation



Discount Actions



PromotionResult



Order Recalculation



Final Price

Burada en kritik nokta Promotion Engine’in Calculation Service ile entegre çalışmasıdır.

Promotion hesaplandıktan sonra sipariş tekrar hesaplanır.

Bu nedenle büyük kampanyalarda performans oldukça önemlidir.


Promotion Rule Yapısı

Bir Promotion temel olarak iki parçadan oluşur.

Condition

Kampanyanın hangi durumda çalışacağını belirler.

Örneğin

Cart Total > 1000 TL

veya

Customer == VIP

veya

Category == Electronics

Action

Condition sağlandığında yapılacak işlemdir.

Örneğin;

10% Discount

veya

Free Gift

veya

150 TL Discount

Basit bir örnek;

IF

Cart Total > 1000

THEN

150 TL Discount

Business kullanıcıları aslında Backoffice üzerinde bunu sürükle bırak yöntemiyle oluştururlar.


Promotion Groups

Kurumsal projelerde en önemli kavramlardan biri Promotion Group’tur.

Örneğin;

Default Promotions

VIP Promotions

Flash Sale

Black Friday

Summer Campaign

Her Rule aynı grupta olmak zorunda değildir.

Bunun avantajı;

  • daha hızlı evaluation
  • daha kısa publish süresi
  • daha kolay yönetim

sağlamasıdır.

Binlerce Rule’un tek Promotion Group altında olması ciddi performans problemleri oluşturabilir.


Drools Altyapısı

Promotion Engine’in arkasında çalışan teknoloji Drools Rule Engine‘dir.

Backoffice’de oluşturulan Rule’lar doğrudan çalıştırılmaz.

Önce Drools formatına çevrilir.

Rule



Rule Compiler



Drools DRL



KIE Module



Rule Evaluation

Bu nedenle publish işlemi aslında Rule Compilation işlemidir.


RAO (Rule Action Object)

Promotion Engine Java Model’leri doğrudan kullanmaz.

Bunun yerine RAO isimli objeler oluşturur.

Örneğin;

CartRAO

OrderEntryRAO

CustomerRAO

ProductRAO

CategoryRAO

Bu yaklaşımın avantajı Rule Engine’in Commerce katmanından bağımsız çalışabilmesidir.


PromotionResult

Promotion çalıştıktan sonra ortaya PromotionResult çıkar.

PromotionResult

|

|-- Discount Values

|-- Consumed Entries

|-- Promotion

|-- Actions

PromotionResult siparişe uygulanacak tüm indirimleri içerir.


Coupon Yapısı

Promotion ile Coupon aynı şey değildir.

Promotion otomatik çalışabilir.

Coupon ise kullanıcı tarafından girilir.

Promotion



Automatic

Coupon



Manual Trigger

SAP Commerce aşağıdaki coupon tiplerini destekler.

  • Single Code
  • Multi Code
  • Customer Coupon
  • Campaign Coupon

Örneğin;

WELCOME100

yalnızca yeni üyeler tarafından kullanılabilir.


Promotion Customization

Kurumsal projelerde standart Promotion’lar çoğu zaman yeterli olmaz.

Örneğin;

  • SuperPlus puanı
  • Banka kampanyaları
  • Sadakat sistemi
  • ERP verisi
  • CRM segmentleri

gibi özel senaryolar geliştirilir.

Yeni bir Condition yazmak oldukça yaygındır.

public class CustomerSegmentConditionTranslator
extends AbstractRuleConditionTranslator {

@Override
public RuleIrCondition translate(
RuleCompilerContext context,
RuleConditionData condition,
RuleConditionDefinitionData definition) {

// custom translation

}

}

Bu sınıf Rule Builder’daki Condition’ı Drools Rule’una çevirir.


Custom RAO

Örneğin müşterinin Loyalty Tier bilgisi Rule Engine’de kullanılacaksa;

public class LoyaltyRAO {

private String tier;

private Integer points;

}

ardından RAO Provider yazılır.

public class LoyaltyRAOProvider
implements RAOProvider {

}

Bu sayede Rule Builder artık Loyalty Tier bilgisine erişebilir.


Promotion Debugging

En sık karşılaşılan problemlerden biri;

Promotion neden çalışmıyor?

İlk kontrol edilmesi gerekenler;

  • Rule Publish edildi mi?
  • Promotion Group doğru mu?
  • Coupon aktif mi?
  • Rule Version güncel mi?
  • PromotionResult oluşuyor mu?

Debug sırasında en çok incelenen yapı PromotionResult’tur.

PromotionResult



Consumed Entries



Discount Values



Actions

PromotionResult boş ise Rule çalışmamıştır.


Performans

Gerçek projelerde performans en kritik konulardan biridir.

Örneğin;

3000 Promotion

100 Coupon

500 Category

bulunan bir projede her sepet için bütün Rule’ların çalıştırılması ciddi CPU tüketir.

En iyi uygulamalar şunlardır:

  • Promotion Group kullanın.
  • Büyük kampanyaları bölün.
  • Gereksiz Condition eklemeyin.
  • Category filtrelerini sade tutun.
  • Publish işlemlerini mesai dışında yapın.
  • Custom RAO sayısını minimumda tutun.
  • Rule’ları düzenli temizleyin.

Gerçek Proje Senaryosu

Bir elektronik mağazasında aşağıdaki kampanyalar uygulanıyor olsun:

  • 5000 TL üzeri alışverişe %10 indirim
  • Laptop alan müşteriye çanta hediye
  • Premium üyeye ek %5 indirim
  • Kredi kartına özel 12 taksit kampanyası
  • WELCOME100 kuponu ile 100 TL indirim

Bu senaryoda Promotion Engine tüm kuralları değerlendirir, uygun olanları uygular ve her bir indirimi PromotionResult içerisinde saklar. Eğer kampanyalar birbiriyle çakışıyorsa öncelik (priority), exclusivity ve stackability ayarlarına göre hangi kuralların uygulanacağı belirlenir. Doğru tasarlanmamış bir kampanya mimarisi, beklenmeyen indirimlere veya aynı siparişe birden fazla avantajın yanlış şekilde uygulanmasına neden olabilir.


Best Practices

Kurumsal projelerde Promotion Engine kullanımında aşağıdaki yaklaşımlar uzun vadede önemli avantajlar sağlar:

  • Promotion Group yapısını iş birimlerine veya kampanya türlerine göre ayırın.
  • Rule isimlendirmelerinde standart bir format belirleyin.
  • Her kampanya için yeni bir Rule yazmak yerine yeniden kullanılabilir şablonlar oluşturun.
  • Condition ifadelerini mümkün olduğunca basit tutun.
  • Custom RAO nesnelerini yalnızca gerçekten ihtiyaç duyulduğunda geliştirin.
  • Rule publish işlemlerini planlı bakım pencerelerinde gerçekleştirin.
  • Backoffice üzerinde gereksiz yetkileri sınırlandırın.
  • Kampanyalar için test senaryolarını otomatikleştirin.
  • Production ortamında Drools log seviyelerini dikkatli yönetin.
  • Eski ve kullanılmayan kampanyaları düzenli olarak arşivleyin.

Sonuç

SAP Commerce Promotion Engine, yalnızca indirim hesaplayan bir modül değildir; kurumsal e-ticaret projelerinde kampanya yönetiminin merkezinde yer alan, Drools tabanlı kural motoru, Rule Engine altyapısı, RAO modeli, PromotionResult mekanizması ve Backoffice yönetimi ile ölçeklenebilir bir mimari sunar.

Başarılı bir Promotion Engine tasarımı; performansı artırır, kampanya yönetimini kolaylaştırır ve pazarlama ekiplerinin geliştirici desteğine ihtiyaç duymadan yeni kampanyalar oluşturabilmesini sağlar. Ancak bunun için doğru Promotion Group stratejisi, sade kural tasarımı, iyi planlanmış yayın (publish) süreçleri ve gerektiğinde kontrollü özelleştirmeler kritik öneme sahiptir.

SAP Commerce Promotion Engine Nedir? Architecture, Rule Engine, Coupon ve Customization Rehberi Promotion Engine’i yalnızca bir kampanya modülü olarak değil, e-ticaret platformunun stratejik karar mekanizmalarından biri olarak tasarlayın. İlk günden itibaren doğru Rule mimarisi, iyi planlanmış Promotion Group yapısı ve kontrollü özelleştirmeler ile ilerlemek; gelecekte karşılaşılabilecek performans ve bakım problemlerinin büyük bölümünü daha ortaya çıkmadan önleyecektir.