Routes every quote whose discount passes the band to the sales manager and then pricing, and returns the approved status and discount to the quote.
Objects are read in place through the REST and Bulk APIs, and changes arrive through Change Data Capture events, so a screen shows a record seconds after a seller edits it. The rows stay in Salesforce.
| Object | Read from | Fields the app uses | Freshness |
|---|---|---|---|
| Quotation | Quote · QuoteLineItem (or SBQQ__Quote__c with CPQ) | Quote.TotalPrice (value) · QuoteLineItem.Discount (discount) · Quote.QuoteNumber (number) · Quote.AccountId (customer) | live through the API |
| Customer master | Account | Account.Id / AccountNumber (id) · Account.Name (name) · Account.BillingCountry (country) · Account.OwnerId (territory) (sales org) | live through the API |
| Price condition | PricebookEntry · Product2 | Product2.ProductCode (material) · Pricebook2.Name (customer) · PricebookEntry.UnitPrice (amount) · CurrencyIsoCode (unit) | live through the API |
| Sales order line | Order · OrderItem | Order.OrderNumber (number) · OrderItem.Id (line) · Order.AccountId (customer) · OrderItem.Product2Id (material) | live through the API |
In plain words: A quote saved with a line discount above 15 percent, or a quote value above 250,000.
The criterion runs in Salesforce through the data handler, so only the matching rows return. The editor shows the rows it selects, and their count, as it is written.
# start criterion in Salesforce fields QuoteLineItem.Discount > 15 or Quote.TotalPrice > 250000 # the same criterion in canonical fields {quote.discount} > 15 or {quote.value} > 250000
Writes go through the REST API (update and composite calls) under the integration user's profile and sharing rules. Each call returns the record ID or an error message, and the app records both beside the decision.
| Object | What changes | Interface |
|---|---|---|
| Quotation | approval status, approved discount per line and approver note written to the quote; a returned quote goes back to draft with the note | PATCH sobjects/Quote (Status, approval fields) |
Each write stores the identifier Salesforce returns beside the decision, the person and the time, so the log answers who changed what, and the reconciliation shows it arrived.
Profiles, roles and sharing rules are mapped to Lima access policies once. A seller who sees their own opportunities in Salesforce sees the same rows in the app.
The screens read through handlers that leave the rows in Salesforce. History the app needs at scale is landed in the lake by the Backbone, which is the exception by design.
The prerequisites above: an integration identity with read rights on the objects listed and write rights on the interfaces named, connectivity, and the scopes agreed with the process owner.
Yes. The screens, criteria and roles stay; the handlers are re-bound to the other system's objects, and the app's other system pages show them.
Bring the process and the systems it touches. In the first session we register the data handlers, draw the levels or the lanes and run the first screen on your live rows.