Building a Configurable Rules Engine on Salesforce: A Modern Approach to Business Logic

Modern business processes demand flexibility, configurability, and reusability in automating decisions, validations, and actions across domains like entitlement assignment, pricing, fulfillment, and compliance. However, traditional hard-coded logic in Salesforce (Apex triggers, workflows, etc.) is often difficult to maintain and adapt as business requirements evolve.

Key Challenges

  • Lack of Flexibility: Hard-coded rules require code changes for modifications.
  • Redundancy: Similar logic is duplicated across objects and processes.
  • Limited Reusability: Conditions and actions aren’t easily shared or reused.
  • Business User Empowerment: Non-technical users can’t easily manage or update business rules.

Design Approach

To address these challenges, we propose a generic, extensible rules engine built on Salesforce custom objects. This engine enables administrators to define, manage, and execute rules declaratively, supporting a wide range of business scenarios.

Design Principles

  • Configurability: Business logic is defined via metadata, not code.
  • Reusability: Conditions (criteria) and actions are normalized and reusable.
  • Extensibility: The model supports new rule types, criteria, and actions without major redesign.
  • Maintainability: Centralized rule management reduces duplication and errors.

Data Model & Setup

Custom Objects Overview

Rule: Represents a business rule to be evaluated and executed.

  • Rule Name: Unique name of the rule.
  • Record Type: Categorizes rules (e.g., Entitlement, Fulfillment).
  • Status: Draft, Active, Inactive, etc.
  • Priority: Evaluation order.
  • Start/End Date: Optional effective/expiration dates.
  • Description: Rule description.
  • Rule Expression: Logical expression (e.g., 1 AND (2 OR 3)).
  • Where Clause: SOQL-style condition (optional).

Criteria (Condition): Defines an atomic, reusable condition.

  • Criteria Name: Name of the condition.
  • Record Type: Categorizes rules.
  • Description: What this condition checks.
  • Field Name: Field to evaluate (e.g., Asset.Product__r.Category).
  • Operator: =, !=, >, <, IN, CONTAINS, IS NULL, etc.
  • Value: Value to compare against.
  • External Id: Unique identifier (e.g., FieldName+Operator+Value).

Rule Action: Defines what happens when a rule matches.

  • Rule (Lookup): Parent rule.
  • Record Type: Categorizes rules.
  • Action Type: Create Record, Update Field, Assign Entitlement, etc.
  • Action Parameter: Parameter for the action (e.g., Fulfill Date).

Rule Criteria (Junction): Links rules to criteria, supporting complex logic and reusability.

  • Rule (Lookup): The rule this criterion belongs to.
  • Record Type: Categorizes rules.
  • Criteria (Lookup): The reusable condition.
  • Negate Condition: Negate the condition (NOT logic).
  • Criteria Number: For grouping/ordering in expressions.

Entity Relationship Diagram for Rule Engine

Setup & Administration

  • Rule Management: Business users can create, edit, and activate rules via a custom Lightning App.
  • Criteria Library: Centralized management of reusable conditions.
  • Action Catalog: Define and manage available actions (e.g., field updates, record creation).
  • Validation: Ensure rules have at least one active criterion and action before activation.
  • Auditing: Enable field history tracking for change management and compliance.

Applications & Use Cases

This rules engine can be applied across multiple business domains, such as:

  • Entitlement Assignment: Automatically assign entitlements based on asset/product attributes.
  • Pricing Rules: Apply discounts or surcharges based on customer, product, or order criteria.
  • Order Validation: Enforce business policies before processing orders.
  • Fulfillment Routing: Route requests to the correct team or system based on type/status.
  • Compliance Checks: Ensure transactions meet regulatory or internal standards.

Example Flow

  • Trigger: An event occurs (e.g., order created).
  • Rule Evaluation: Active rules for the context are fetched and prioritized.
  • Criteria Check: Each rule’s criteria are evaluated using the defined logic.
  • Action Execution: If criteria are met, the corresponding actions are executed.

Extensibility & Future Enhancements

  • Criteria Grouping: Support for nested/complex logic (e.g., (A AND B) OR (C AND D)).
  • Action Chaining: Execute multiple actions in sequence.
  • Rule Sets: Group rules for batch processing or scenario-based evaluation.
  • Integration: Invoke external services or flows as actions.

Benefits

  • Agility: Rapidly adapt to changing business needs without code changes.
  • Consistency: Centralized logic reduces errors and duplication.
  • Empowerment: Business users can manage rules directly.
  • Scalability: Supports new rule types and actions as requirements grow.

Conclusion

A configurable rules engine on Salesforce empowers organizations to automate complex business logic with minimal technical overhead, ensuring agility, consistency, and maintainability as business needs evolve.

Have you implemented a rules engine in Salesforce or another platform? Share your experiences and thoughts in the comments!

Leave a Reply