revenue-lifecycle-management

Use this skill when implementing or troubleshooting Salesforce Revenue Lifecycle Management (RLM) — the native Revenue Cloud product covering order-to-cash lifecycle, Dynamic Revenue Orchestrator (DRO) fulfillment plan design, asset amendments, billing schedule creation via Connect API, and invoice management. Triggers on: Dynamic Revenue Orchestrator, RLM order decomposition, DRO fulfillment swimlanes, native Revenue Cloud billing schedule, asset lifecycle management Salesforce. NOT for CPQ quoting or pricing rules (use cpq-* skills), not for the legacy Salesforce Billing managed package with blng__* objects (different product entirely), not for standard Order objects without Revenue Cloud features.

Best use case

revenue-lifecycle-management is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Use this skill when implementing or troubleshooting Salesforce Revenue Lifecycle Management (RLM) — the native Revenue Cloud product covering order-to-cash lifecycle, Dynamic Revenue Orchestrator (DRO) fulfillment plan design, asset amendments, billing schedule creation via Connect API, and invoice management. Triggers on: Dynamic Revenue Orchestrator, RLM order decomposition, DRO fulfillment swimlanes, native Revenue Cloud billing schedule, asset lifecycle management Salesforce. NOT for CPQ quoting or pricing rules (use cpq-* skills), not for the legacy Salesforce Billing managed package with blng__* objects (different product entirely), not for standard Order objects without Revenue Cloud features.

Teams using revenue-lifecycle-management should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/revenue-lifecycle-management/SKILL.md --create-dirs "https://raw.githubusercontent.com/PranavNagrecha/AwesomeSalesforceSkills/main/skills/integration/revenue-lifecycle-management/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/revenue-lifecycle-management/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How revenue-lifecycle-management Compares

Feature / Agentrevenue-lifecycle-managementStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Use this skill when implementing or troubleshooting Salesforce Revenue Lifecycle Management (RLM) — the native Revenue Cloud product covering order-to-cash lifecycle, Dynamic Revenue Orchestrator (DRO) fulfillment plan design, asset amendments, billing schedule creation via Connect API, and invoice management. Triggers on: Dynamic Revenue Orchestrator, RLM order decomposition, DRO fulfillment swimlanes, native Revenue Cloud billing schedule, asset lifecycle management Salesforce. NOT for CPQ quoting or pricing rules (use cpq-* skills), not for the legacy Salesforce Billing managed package with blng__* objects (different product entirely), not for standard Order objects without Revenue Cloud features.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# Revenue Lifecycle Management

This skill activates when a practitioner needs to implement the native Salesforce Revenue Lifecycle Management (RLM) product — the Revenue Cloud order-to-cash engine distinct from the CPQ managed package. It covers Dynamic Revenue Orchestrator (DRO) for order decomposition, asset amendments, billing schedule creation, and invoice management. It does NOT cover CPQ quoting, pricing rules, or the legacy blng__* Salesforce Billing managed package objects.

---

## Before Starting

Gather this context before working on anything in this domain:

- Revenue Lifecycle Management (RLM) is a native Revenue Cloud product, completely distinct from CPQ + Salesforce Billing (managed package). RLM uses standard Salesforce objects (Order, OrderItem, BillingSchedule, Invoice). CPQ uses custom managed objects (blng__*, SBQQ__*). These are different products with different object models.
- Billing schedules in RLM are created via Connect API POST after order activation — they do NOT auto-update when an asset amendment order is activated. Each amendment produces a net-new BillingSchedule record requiring manual reconciliation.
- Dynamic Revenue Orchestrator (DRO) decomposes a commercial order into technical fulfillment orders routed across swimlanes (billing, provisioning, shipping) using auto-tasks, callouts, manual tasks, milestones, and pauses.

---

## Core Concepts

### Revenue Lifecycle Management vs. CPQ + Salesforce Billing

| Dimension | RLM (Native Revenue Cloud) | CPQ + Salesforce Billing |
|---|---|---|
| Object model | Standard API objects (Order, BillingSchedule, Invoice) | Managed package objects (SBQQ__*, blng__*) |
| Quoting | Product Catalog + Pricing engine | CPQ Quote, Quote Line, Price Rules |
| Fulfillment | Dynamic Revenue Orchestrator | Salesforce Billing DRE (different engine) |
| Billing schedules | Created via Connect API POST | blng__BillingSchedule__c, auto-created |
| Amendments | Asset Lifecycle Management | SBQQ__Amendment pattern |

These are not interchangeable. Code, SOQL, flows, and automation built for one product does NOT work for the other.

### Dynamic Revenue Orchestrator (DRO)

DRO is the fulfillment engine in RLM. When a commercial order is activated, DRO creates a **fulfillment plan** that decomposes the order into technical fulfillment orders. Each fulfillment order is routed across configurable **swimlanes** (e.g., billing, provisioning, shipping).

Swimlane steps can include:

| Step type | Role |
|---|---|
| Auto-tasks | Automated Apex or integration callouts. |
| Manual tasks | Human review steps. |
| Callouts | External system notifications. |
| Milestones | Synchronization points across swimlanes. |
| Pauses | Wait states pending external completion signals. |

DRO enables parallel processing of fulfillment activities that can proceed independently while maintaining synchronization at milestones.

### Billing Schedule Creation

Unlike legacy Salesforce Billing, RLM does NOT automatically create billing schedules on order activation. After an order is activated, billing schedules must be explicitly created via a **Connect API POST** call. The request specifies the OrderItem, start date, billing period, and amount.

Critically: when an asset amendment order is activated, it does NOT auto-update existing BillingSchedule records. Instead, a net-new BillingSchedule record is created for the amended asset. Reconciling billing schedules across the full asset lifecycle requires explicit aggregation logic.

### Asset Lifecycle Management

Assets in RLM represent contracted products post-order. The asset lifecycle follows: Order Activated → Asset Created → Asset Amendment → Renewal. Each asset amendment generates a new Order and new fulfillment plan through DRO.

### Invoice Management

Invoices in RLM are standard Invoice objects (not blng__Invoice__c). Invoice generation is triggered from BillingSchedule milestones. Invoice posting creates FinanceTransaction records (read-only accounting journal entries). Payments are tracked via the Payment standard object.

---

## Common Patterns

### Pattern 1: Configure a DRO Fulfillment Plan with Parallel Swimlanes

**When to use:** A commercial order requires parallel execution of billing setup, provisioning, and shipping steps.

**How it works:**

1. In Revenue Cloud Setup > Dynamic Revenue Orchestrator, create a Fulfillment Plan.
2. Add Swimlanes: "Billing", "Provisioning", "Shipping".
3. Within each swimlane, define steps:
   - Billing: Auto-task (Create Billing Schedule via Connect API), then Milestone "Ready to Invoice"
   - Provisioning: Callout to provisioning system, Manual Task (provisioning confirmation), Milestone "Provisioned"
   - Shipping: Auto-task (generate shipping label), Callout to fulfillment partner
4. Define cross-swimlane synchronization: shipping starts after "Provisioned" milestone.
5. Assign the Fulfillment Plan to the product catalog entries that trigger this plan.

**Why not use a single sequential flow:** Parallel swimlanes cut fulfillment cycle time significantly when billing, provisioning, and shipping can proceed concurrently.

### Pattern 2: Create a Billing Schedule via Connect API

**When to use:** An order has been activated and requires billing schedule creation.

**How it works:**

```python
# POST to Connect API BillingSchedule resource
import requests

headers = {
    "Authorization": f"Bearer {access_token}",
    "Content-Type": "application/json"
}

payload = {
    "orderItemId": "801...",  # OrderItem ID
    "billingStartDate": "2026-05-01",
    "billingFrequency": "Monthly",
    "numberOfBillingPeriods": 12,
    "amount": 1200.00
}

resp = requests.post(
    f"{instance_url}/services/data/v63.0/commerce/billing/schedules",
    headers=headers,
    json=payload
)
billing_schedule = resp.json()
```

**Why not use standard Salesforce Billing objects:** RLM uses standard API objects, not blng__* managed-package objects. blng__BillingSchedule__c is for the legacy Salesforce Billing product — using it in an RLM org will not link to native Revenue Cloud billing flows.

---

## Decision Guidance

| Situation | Recommended Approach | Reason |
|---|---|---|
| CPQ quoting, pricing rules, discount schedules | Use cpq-* skills | Completely separate product, different objects |
| Order decomposition into fulfillment steps | Dynamic Revenue Orchestrator (DRO) | Native RLM fulfillment engine |
| Create billing schedule after order activation | Connect API POST | RLM does not auto-create billing schedules |
| Asset amendment billing reconciliation | Aggregate BillingSchedule records by Asset | Amendment creates new BillingSchedule, not update |
| Invoice generation | Configure BillingSchedule milestone triggers | Invoice generation flows from BillingSchedule milestones |
| Legacy Salesforce Billing (blng__*) | Use billing-schedule-setup skill | Separate product, separate workflow |

---

## Recommended Workflow

1. Confirm the org is enabled for Revenue Cloud (RLM) — check Setup > Revenue Cloud — and distinguish from CPQ/Salesforce Billing.
2. Design the product catalog (Product Catalog and Pricing in Revenue Cloud Setup) before configuring DRO.
3. Create DRO Fulfillment Plan: define swimlanes and steps (auto-tasks, callouts, manual tasks, milestones, pauses).
4. Assign the Fulfillment Plan to relevant product catalog entries.
5. After order activation, create billing schedules via Connect API POST for each OrderItem that requires billing.
6. For asset amendments: activate the amendment order, then create net-new BillingSchedule records for amended assets via Connect API. Do not expect auto-update of existing schedules.
7. Configure Invoice generation from BillingSchedule milestone triggers.
8. Monitor DRO fulfillment plan execution via the Revenue Cloud Fulfillment Dashboard.

---

## Review Checklist

- [ ] Org confirmed as Revenue Cloud (RLM), not CPQ + Salesforce Billing
- [ ] DRO Fulfillment Plan defined with appropriate swimlanes and step types
- [ ] Billing schedules created via Connect API POST after order activation
- [ ] Amendment workflow documented: amendment creates new BillingSchedule, not update
- [ ] FinanceTransaction records (read-only) reviewed for accounting journal validation
- [ ] No blng__* or SBQQ__* objects used in RLM code or flows
- [ ] Invoice generation configured from BillingSchedule milestones

---

## Salesforce-Specific Gotchas

1. **RLM and CPQ + Salesforce Billing Are Completely Different Products** — The most damaging LLM error is conflating these two product lines. blng__BillingSchedule__c is not the same as the standard BillingSchedule object. Code, flows, and SOQL from one product does not work in the other. Always confirm which product is in use before writing any code.

2. **Billing Schedules Are Not Auto-Created on Order Activation** — Unlike legacy Salesforce Billing, RLM does not automatically create BillingSchedule records when an order activates. This is an explicit Connect API call that must be coded or configured. Missing this step leaves orders with no billing schedule.

3. **Amendment Orders Create New BillingSchedule Records** — Activating an asset amendment order does NOT update the existing BillingSchedule — it creates a net-new one. Billing reconciliation across amendments requires aggregating all BillingSchedule records for a given asset.

4. **FinanceTransaction Is Read-Only** — FinanceTransaction records are system-generated accounting journal entries created when an Invoice is posted or a Payment is received. They cannot be created, updated, or deleted via API. Attempting to DML FinanceTransaction records causes errors.

5. **DRO Swimlane Step Errors Do Not Auto-Retry** — If a DRO auto-task or callout step fails (e.g., an Apex auto-task throws an exception), the DRO plan stalls at that step. There is no automatic retry. Operators must review the DRO dashboard, resolve the root cause, and manually resume the fulfillment plan.

---

## Output Artifacts

| Artifact | Description |
|---|---|
| DRO Fulfillment Plan design | Swimlane configuration with step types and milestone synchronization |
| Billing schedule creation script | Connect API POST implementation for post-activation billing setup |
| Amendment billing reconciliation query | SOQL/query pattern to aggregate BillingSchedule records across asset lifecycle |
| RLM vs. CPQ disambiguation guide | Checklist to confirm which product is in use before beginning implementation |

---

## Related Skills

- revenue-cloud-data-model — for native Revenue Cloud object relationships (BillingSchedule, Invoice, FinanceTransaction)
- revenue-cloud-architecture — for order-to-cash architecture design across Revenue Cloud domains
- billing-schedule-setup — for legacy Salesforce Billing managed package (blng__*) billing schedules

Related Skills

session-management-and-timeout

8
from PranavNagrecha/AwesomeSalesforceSkills

Use this skill when configuring session timeout values, concurrent session limits, session IP locking, or logout behavior in Salesforce. Covers org-wide session settings, profile-level overrides, Connected App session policies, and Metadata API SecuritySettings deployment. NOT for OAuth token refresh flows, login IP ranges, or MFA/identity-provider configuration.

oauth-token-management

8
from PranavNagrecha/AwesomeSalesforceSkills

Use when work depends on how Salesforce OAuth access and refresh tokens are issued, refreshed, rotated, revoked, or introspected for a Connected App or API client—including unexpected logouts, invalid_grant after refresh, or designing token incident response. NOT for choosing which OAuth grant or Connected App flow to implement (use integration/oauth-flows-and-connected-apps), Named Credential packaging (use integration/named-credentials-setup), or broad Connected App IP and PKCE policy hardening without a token-lifecycle angle (use security/connected-app-security-policies).

certificate-and-key-management

8
from PranavNagrecha/AwesomeSalesforceSkills

Use this skill when creating, uploading, or rotating certificates in Salesforce, configuring mutual TLS (mTLS) client authentication, managing the Java KeyStore for CA-signed certificates, diagnosing certificate expiry in JWT OAuth flows, or understanding which certificate types Salesforce supports and how to migrate them between orgs. NOT for Named Credential configuration (use named-credentials-setup skill), NOT for Shield Platform Encryption key management. Trigger keywords: Certificate and Key Management, self-signed certificate, CA-signed certificate, mutual TLS, mTLS, keystore, JKS, PKCS12, certificate rotation, certificate expiry, JWT certificate.

flexcard-state-management

8
from PranavNagrecha/AwesomeSalesforceSkills

Use when designing FlexCard actions, conditional visibility, and state that must survive navigation, refresh, or parent/child card transitions. Triggers: 'flexcard state', 'flexcard conditional visibility', 'flexcard actions', 'flexcard refresh', 'child flexcard state'. NOT for raw LWC state or for OmniScript step state.

lwc-state-management

8
from PranavNagrecha/AwesomeSalesforceSkills

Share state across LWCs using pub/sub, Lightning Message Service, @wire, and reactive stores. NOT for in-component reactivity.

lwc-focus-management

8
from PranavNagrecha/AwesomeSalesforceSkills

Use when building LWCs that need to manage focus explicitly — modal dialogs, wizard flows, dynamic inserts, list updates, error summaries, and focus after async work. Covers focus restoration, focus traps, programmatic focus across shadow DOM, and patterns for announcing changes to assistive tech. Does NOT cover general LWC a11y audit (see lwc-accessibility).

lifecycle-hooks

8
from PranavNagrecha/AwesomeSalesforceSkills

Use when building or reviewing Lightning Web Components — specifically lifecycle management, wire service, memory leak prevention, navigation, and Lightning Locker Service constraints. Triggers: 'LWC', 'connectedCallback', 'renderedCallback', 'memory leak', 'NavigationMixin', 'wire'. NOT for Aura components.

loyalty-management-setup

8
from PranavNagrecha/AwesomeSalesforceSkills

Use this skill when setting up or extending Salesforce Loyalty Management — including program and currency creation, tier group design, qualifying vs. non-qualifying point currency separation, DPE batch job activation, partner loyalty configuration, and member portal setup on Experience Cloud. Triggers on: Loyalty Management setup, loyalty tier setup Salesforce, qualifying points vs redemption points, DPE batch job for loyalty, partner loyalty program Salesforce, loyalty member portal. NOT for Marketing Cloud engagement program design (separate product), not for B2B loyalty via Sales Cloud (standard opportunity, not loyalty program), not for general Experience Cloud site setup (use experience-cloud-setup skill).

scratch-org-management

8
from PranavNagrecha/AwesomeSalesforceSkills

Use this skill when designing, configuring, or troubleshooting scratch orgs: definition file structure, edition selection, allocation limits, Org Shape, CI automation via ScratchOrgInfo, and lifecycle management from the Dev Hub. NOT for SFDX CLI basics (use sf-cli-and-sfdx-essentials), sandbox management, or production org administration.

release-management

8
from PranavNagrecha/AwesomeSalesforceSkills

Use when planning, coordinating, or governing Salesforce releases: version numbering, rollback strategy, release notes, go/no-go criteria, release calendar, and sandbox preview alignment. NOT for deployment mechanics (use devops/post-deployment-validation or devops/change-set-deployment).

pipeline-secrets-management

8
from PranavNagrecha/AwesomeSalesforceSkills

Store and inject Salesforce auth URLs, JWT keys, and API credentials into CI without leaking them. NOT for runtime secrets in Apex.

isv-license-management-and-trialforce

8
from PranavNagrecha/AwesomeSalesforceSkills

Use when an ISV partner is wiring license enforcement, trial provisioning, or feature-flag distribution into a managed package — covers License Management App (LMA) install and registration, Lead/License object lifecycle, Trialforce Management Org (TMO) and Trialforce Source Org (TSO) split, Trialforce templates, SignupRequest API, AppExchange Checkout integration, and Feature Parameters (LmoToSubscriber / SubscriberToLmo) as the cross-org configuration channel. Triggers: 'register package with LMA', 'set up Trialforce', 'add feature parameter to managed package', 'license expired in subscriber org', 'AppExchange Checkout licensing'. NOT for general managed-package version creation, ancestor pinning, or PostInstall handler design (use managed-package-development); NOT for second-generation packaging mechanics (use second-generation-managed-packages); NOT for non-ISV experience-cloud login licensing (use experience-cloud-licensing-model).