---
schema_version: "1"
id: 182dfc936968d4e446e3d67763a27ae914aa4e1190d6ca439e8a32084805c9e7
title: Create and Update Custom Quotes for Work Order Estimation
collection: admin
version: current
locale: en-us
portal_url: https://docs.salesforce.com/admin/current/en-us/xcloud/264-0-0/aslm_woe_implement_your_own_quoting_api_parent.md
canonical_url: https://help.salesforce.com/s/articleView?id=xcloud.aslm_woe_implement_your_own_quoting_api_parent.htm&release=264.0.0&type=5
source_site: help.salesforce.com
content_type: documentation
content_hash: 95c7be955596eee5513c8f9bd7d84e28ca3276738699540c1e95eeb19785ec96
description: Create or update quotes by using preferred customizations, implementing your own quoting API. Launch the flow from any of the available records, such as accounts, assets, quote, order, and worktypegroup.
products:
  - Industry Solutions
  - Cross Cloud
release: "264"
---
# Create and Update Custom Quotes for Work Order Estimation

Create or update quotes by using preferred customizations, implementing your own quoting API. Launch the flow from any of the available records, such as accounts, assets, quote, order, and worktypegroup.

### Required Editions

<table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small edition"><colgroup><col></colgroup><tbody><tr class=""><td class="slds-cell-wrap" style="vertical-align:top;">Available in: Lightning Experience</td></tr><tr class=""><td class="slds-cell-wrap" style="vertical-align:top;">Available in: Automotive Cloud, Communications Cloud, Consumer Goods, Energy and Utilities Cloud, Manufacturing Cloud, Service Cloud, and Media Cloud. <a href="https://help.salesforce.com/s/articleView?id=xcloud.aslm_editions.htm&amp;release=264.0.0&amp;type=5" title="Review the supported products and editions for Asset Service Lifecycle Management features.">View edition availability</a>.</td></tr></tbody></table>

<table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small permission">
        <colgroup>
          <col style="width:50%">
          <col style="width:50%">
        </colgroup>
        <thead class="slds-text-title_caps ">
          <tr class="">
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d4017e67">REQUIRED USER PERMISSIONS</th>
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d4017e70">&nbsp;</th>
          </tr>
        </thead>
        <tbody>
          <tr class="">
            <td data-label="REQUIRED USER PERMISSIONS" class="slds-cell-wrap" style="vertical-align:top;" headers="d4017e67 ">To create and update custom quote:</td>

            <td data-label="" class="slds-cell-wrap" style="vertical-align:top;" headers="d4017e70 ">
              <p>Omnistudio Admin</p>
              <p>AND</p>
              <p>Salesforce Pricing Admin</p>
              <p>AND</p>
              <p>Salesforce Pricing Manager</p>
              <p>AND</p>
              <p style="margin-bottom:0;">Salesforce Pricing Design Time User</p>
            </td>

          </tr>
        </tbody>
      </table>

Before you begin, create a page for the Work Estimation in the account console.

1. From the App Launcher, select the page that you created for Work Estimation.
2. It populates the enterQuoteDetails page, enter the quote name, price book, and address here.
    
    Lightning Message Service (LMS) triggers the quotedata event and the event is consumed by the Custom Navigation for Work Estimation Lightning web component. Here’s an example of the generated data
    
    `{             "name": "quotedata",             "coRelationId": "eventCoRelationId",             "detail": {             "Status": "Draft",             "Name": "quoteNameInput",             "Id": "quoteIdToUpdate",             "AssetId": "assetId",             "WorkTypeGroupId": "workTypeGroupId",             "ShippingCity": "City",             "QuoteAccountId": "Id",             "ShippingState": "State",             "Pricebook2Id": "selectedPriceBookId",             "ShippingStreet": "Street",             "ShippingCountry": "Country",             "ShippingPostalCode": "PostalCode",             "RelatedWorkId": "workOrderId"             }             }`
3. Click **Next**.
    
    The Orchestrate Lightning Message Service Events Lightning web component manages a navigation event. ‌Here’s an example of the data generated during the event.
    
    ```
    {
                "name": "navigation",
                "coRelationId": "eventCoRelationId",
                "detail": {
                "action": "Next",
                "stepName": "stepName",
                "quoteInput": {
                "Status": "Draft",
                "Name": "quoteNameInput",
                "Id": "quoteIdToUpdate",
                "AssetId": "assetId",
                "WorkTypeGroupId": "workTypeGroupId",
                "ShippingCity": "City",
                "QuoteAccountId": "Id",
                "ShippingState": "State",
                "Pricebook2Id": "selectedPriceBookId",
                "ShippingStreet": "Street",
                "ShippingCountry": "Country",
                "ShippingPostalCode": "PostalCode",
                "RelatedWorkId": "workOrderId"
                },
                "quoteIdInput": "quoteId"
                }
                }
    ```
    
    The Orchestrate Lightning Message Service Events Lightning web component evaluates if the quoteInput field contains an ID. A quote creation triggers 'createquote' event, and a quote modification and a quote modification triggers the 'updatequote' event.
    
    `{               "name": "updatequote" / "createquote",               "coRelationId": "eventCoRelationId",               "detail": {               "Status": "Draft",               "Name": "quoteNameInput",               "Id": "quoteIdToUpdate",               "AssetId": "assetId",               "WorkTypeGroupId": "workTypeGroupId",               "ShippingCity": "City",               "QuoteAccountId": "Id",               "ShippingState": "State",               "Pricebook2Id": "selectedPriceBookId",               "ShippingStreet": "Street",               "ShippingCountry": "Country",               "ShippingPostalCode": "PostalCode",               "RelatedWorkId": "workOrderId"               }               }`
4. To use a custom event, open the disable create quote listener field and disable the update Quote Listener from the Work Estimation CUD Operations Handler Lightning web component, and set their value to 'True'.
    
    The default value for these fields is False. For the createquote event, disable the Create Quote Listener field. For the updatequote event, disable the Update Quote Listener field.
5. Enter the customized data and Lightning web components, and proceed with the events which are mentioned earlier.
6. Create a quotecreate event.
    
    A customized quote is created. Here’s an example of an event.
    
    `{           name: "quotecreated",           coRelationId: "eventCoRelationId",           detail: "quoteId"           }`