Sales and service on Salesforce

Customer complaint resolution on Salesforce

Takes a customer complaint from the first contact to a resolution the customer has been told about, with the order lines and prices checked in place.

SCREENSDATA HANDLERSSALESFORCE · READ IN PLACES01 Raise complaintS02 Complaint queueS03 InvestigationS04 ResolutionS05 Customer updateS06 Complaint boarddh_customer_masterCustomer masterAccountdh_sales_order_lineSales order lineOrder · OrderItemdh_price_conditionPrice conditionPricebookEntry · Product2dh_return_orderReturn orderReturnOrder · ReturnOrderLineItemWRITE BACK TO SALESFORCESales order line → PATCH sobjects/OrderReturn order → PATCH sobjects/ReturnOrderrows stay in Salesforce · access rules applied at read time · each write acknowledged and logged
The screens of the app, the data handler behind each, and the Salesforce object it reads in place. Writes below the line go through released interfaces with an acknowledgement.
4
objects read in place from Salesforce
catalogue
6
screens on those rows
catalogue
5 days
to production-grade
estimate
2
objects written back
catalogue
0
rows copied to build it
product
What the app reads

The Salesforce objects behind each handler

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.

ObjectRead fromFields the app usesFreshness
Customer masterAccountAccount.Id / AccountNumber (id) · Account.Name (name) · Account.BillingCountry (country) · Account.OwnerId (territory) (sales org)live through the API
Sales order lineOrder · OrderItemOrder.OrderNumber (number) · OrderItem.Id (line) · Order.AccountId (customer) · OrderItem.Product2Id (material)live through the API
Price conditionPricebookEntry · Product2Product2.ProductCode (material) · Pricebook2.Name (customer) · PricebookEntry.UnitPrice (amount) · CurrencyIsoCode (unit)live through the API
Return orderReturnOrder · ReturnOrderLineItemReturnOrder.ReturnOrderNumber (number) · ReturnOrder.AccountId (customer) · ReturnOrderLineItem.ProductId (material) · ReturnOrderLineItem.QuantityReturned (qty)live through the API
The trigger

The start criterion in Salesforce's own fields

In plain words: A complaint is submitted on S01 by the customer, or logged by customer service from a call or from the service case in the CRM.

This app starts from a screen, so the first read happens when the instance opens; the criteria on the arrows use the fields above.

Start

A complaint is submitted on S01 by the customer, or logged by customer service from a call or from the service case in the CRM. The instance then reads its rows from Salesforce through the handlers above.

What the app writes back

Through released interfaces

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.

ObjectWhat changesInterface
Sales order linecredit memo request or replacement order line created as a sales document with the complaint number as referencePATCH sobjects/Order
Return orderreturn order created for pickup of the goods in disputePATCH sobjects/ReturnOrder
Acknowledged and logged

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.

Access and prerequisites

What is in place before the first build

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.

  • A connected app and integration user with API access and object permissions for the objects the app uses
  • Change Data Capture enabled on the objects that should refresh within seconds
  • Field-level security reviewed for the fields the app writes
  • Sharing model agreed with the sales operations owner
Register the handlers4 objects from the catalog; each shows its rows at once.
Nearby

This app on other systems, and other apps on Salesforce

Customer complaint resolution on

Other apps on Salesforce

Terms on this page

Credit memo requestA sales document that asks finance to credit the customer; it becomes a credit note once released.
Return orderThe sales document that authorises goods to come back and tells the warehouse to expect them.
Read in placeThe rows stay in Salesforce; the handler sends the filter and the columns and Salesforce returns the matching rows.
Questions

Does this app copy data out of Salesforce?

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.

What does Salesforce need to allow?

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.

Can I run it on another system as well?

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.

See this app on your data

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.