Build a test org
Build a scratch org with Revenue Cloud and a sample company already set up, then install Continuous Control on top. Use it to demo, evaluate or test without touching a customer org. It takes a few commands and about an hour.
What you get
You get a Developer Edition scratch org that lasts 30 days. Salesforce's public Agentforce Revenue Management Foundations Launchpad builds it.
The org has Revenue Cloud with Billing, Rating and Usage turned on. It comes with QuantumBit, a sample company with products, pricing, tax, billing and rating data. It also has the Revenue Cloud record pages and apps, and a sales rep user. The last script installs Continuous Control and gives you both permission sets.
Check what you need
| You need | Why |
|---|---|
A Dev Hub, set as your default: sf org login web --set-default-dev-hub --alias devhub | Scratch orgs are created from it. A free Developer Edition works. Turn on Enable Dev Hub in Setup > Dev Hub before you log in. It holds 3 scratch orgs at a time. |
Salesforce CLI 2.x (npm install -g @salesforce/cli) and Node.js LTS | The launchpad runs the CLI through CumulusCI. |
| Python 3.12 or 3.13 | CumulusCI needs it. Python 3.14 isn't supported yet. On macOS, run brew install python@3.12. |
| Google Chrome or Chromium | A few Setup pages can only be set up through a browser. |
| git | It fetches the launchpad and the scripts. |
The product's own requirements are on Prerequisites.
1. Get the scripts
Download rlm-scratch-org.zip and unpack it anywhere. It holds three shell scripts, a README and reference notes.
curl -LO https://taggalongtech.github.io/continuous-control/downloads/rlm-scratch-org.zip
unzip rlm-scratch-org.zip && cd rlm-scratch-org/assets
2. Set up your tools
./bootstrap.sh // once per machine, about 3 minutes
The script downloads the launchpad, installs CumulusCI and checks your setup. It ends with RESULT: bootstrap ok. Run it before every new org. It uses the launchpad version these scripts are tested with, because the newest one changes almost daily and can need a Salesforce release that scratch orgs don't have yet.
3. Create the empty org
./create-org.sh qb-test --probe-only // about 5 minutes
If your Dev Hub isn't licensed for a feature, the script drops it and tries again. It lists what it dropped under DROPPED FEATURES, so you know before the long build. It ends with RESULT: probe ok (rlm-base__qb-test).
Every org you build this way gets the CLI alias rlm-base__<alias>.
4. Build the org
./create-org.sh qb-test --flow-only --background // 45 to 75 minutes
tail -n 20 ~/.rlm-scratch-org/logs/qb-test-flow-*.log // watch progress
cat ~/.rlm-scratch-org/logs/qb-test-flow-*.log.exit // prints 0 when the build succeeded
The build runs in the background and keeps your machine awake. Use the second command to watch it. The third prints 0 when the build has succeeded.
If a step fails, fix the cause and run the first command again without --background.
5. Install Continuous Control
./install-cc.sh qb-test // about 5 minutes
The script checks that the Revenue Cloud and Billing objects are there. Then it installs Continuous Control 3.4.1 and gives you the Continuous Control and Continuous Control Admin permission sets. It puts the Continuous Control cards on the record pages, in the right sidebar, and makes those pages the default. Last, it checks the org is ready to quote (next step). It ends with RESULT: continuous control installed (package) on rlm-base__qb-test.
No NetSuite account to connect? Add --simulated. It turns on Simulate NetSuite (wizard step 1), deploys the prebuilt calls (step 6) and gives every account and product a made-up NetSuite id (step 7). The Invoice, Payment, Refund and Credit Memo cards then sync at once, and nothing reaches NetSuite. See Demo without a NetSuite account. On a machine with the Continuous product checkout, the install also builds the QuantumBit demo deals (Kingsbridge Digital and Coralbay Technologies); --no-demo-data skips them.
Prefer the browser? Log in to the scratch org as its admin user and open the install link below. Choose Install for Admins Only. Then assign the two permission sets in Setup, and place the cards as the demo install runbook shows.
To install another version, add --package <package version id> to the script. Version ids are on Versions & compatibility. What the package adds is on Install the Salesforce package.
6. Check the org is ready to quote
./org-ready.sh qb-test
A quote needs refreshed decision tables. Browse Catalogs needs the product search index. The build only starts both, and they finish in the background. If the build stopped early, it never started them.
This script checks both. It refreshes any stale decision table, rebuilds an out-of-date index, and waits until they're done. It ends with RESULT: org ready to quote (rlm-base__qb-test). The install script runs it for you. Run it again before you quote in an org you built earlier. Add --check-only to report without changing anything.
7. Open the org
sf org open -o rlm-base__qb-test
sf org open -o rlm-base__qb-test --path /lightning/n/CC_NetSuite_Connection // the Connection wizard
From here, treat it like any customer org.
- Place the components on the Order, Invoice, Credit Memo, Payment, Product and Contract pages.
- Install the NetSuite components.
- Run the Connection wizard.
The QuantumBit catalog gives you products, price books and a working quote-to-order path, so you can book orders right away.
Delete the org
./create-org.sh qb-test --delete
Fix common problems
| What you see | What to do |
|---|---|
DROPPED FEATURES lists a feature | Expect Chatbot. It needs Einstein features turned on in the Dev Hub, and the build doesn't use it. Any other feature is one your Dev Hub can't grant. The build carries on without it. If a later step needs it, turn that step off with a --flag. |
| "The specified org devhub is not a Dev Hub" | You logged in before turning on Dev Hub. Log in again with sf org login web --set-default-dev-hub --alias devhub. |
| The build stops on a permission set group marked Outdated | Salesforce is still recalculating. Run ./create-org.sh qb-test --flow-only again. |
INVALID_AUTH_HEADER when you run CumulusCI yourself | Use the scripts instead. They set what CumulusCI needs to read your org login. |
| Every quote fails with a 404 from the constraints solver | The org was built with the launchpad's Constraint Builder on. The scripts leave it off, so build a new org without --flag constraints=true. |
| You've hit the scratch org limit | Run sf org list limits -o <devhub>, then delete old orgs with --delete. |
| A quote won't price, or Browse Catalogs finds no products | The decision tables or the search index aren't ready. Run ./org-ready.sh qb-test. |
| The package install fails with missing objects | Billing wasn't turned on during the build. Look for the prepare_billing step in the build log, then run the build again. |
The reference notes in the zip have more problems and fixes.