# CPQ Application Level Control with Properties

- Updated on Mar 23, 2026
- Published on Aug 21, 2024
- 7 minute(s) read
- TL
- CS
- MS

The following properties can be specified to configure and control the behavior of any Mobileforce CPQ application.

**Mobileforce Admin Only**:

The following properties can only be specified by Mobileforce Administrator. Since they can have a significant impact on the behavior of the CPQ application, caution is urged, when using these properties

### Code snippet

```none
cpq-admin-approver-emails : this property allows you to specify a list of emails that can always approve quotes.
Here's how you use it:

<prop key="cpq-admin-approver-emails">a@b.com, c@d.edu</prop>
```

### Date related CPQ properties

The following properties are useful for controlling the date related components of CPQ such as the display format of dates and times in CPQ

```none
<prop key="cpq-date-displayformat">dd-mm-yyyy</prop>
<prop key="cpq-datetime-displayformat">dd-mm-yyyy H:i:s</prop>
```

### Currency and Locale related CPQ properties

Mobileforce uses 3-letter currency codes based on [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) which is itself based on the 2-letter country codes, as defined in [ISO 3166](https://www.iso.org/iso-3166-country-codes.html).

The entire list of currency codes supported by Mobileforce is found as a full list of [Alpha-3 codes here](https://www.iso.org/obp/ui/#search/code/).

Mobileforce also uses Locale based on [ISO 639](https://www.loc.gov/standards/iso639-2/php/code_list.php) and specified as a concatenation of a three character language code with a two character country code (separated by the underscore _ character).

Here's how one specifies currency and locale:

```none
    <prop key="currency">USD</prop>
    <prop key="locale">chr_US</prop>
```

## Send Quote Directly to a Customer (using Mobileforce email)

When using Mobileforce CPQ Quoting workflow to directly send the quote via Mobileforce email from the quoting workflow directly to the prospect, please modify the Quote UI Layout to include another **tab**. Mobileforce supports two distinct mechanisms to send email.

### Sending email that can only be opened by the recipient (and no one else)

The formsection below in the Quote UI Layout uses a special property **quote_link_with_code**.

**Caution**:

Please note that the aclvisible tag needs to be set to an appropriate role: specifically the role of users who have access to the quote.

### Sending email that can be opened by anyone including the recipient

The formsection below in the Quote UI Layout uses a special property **quote_link_with_nocode**.

### Quote UI Layout Tab "Send Quote"

The following Quote UI Layout Tab (snippet) when embedded in the Quote UI Layout provides an example of how to implement a "send quote" action (with the **quote_link_with_nocode**):

```none
    <formsection label="Send Quote" name="email_tab" aclvisible="!ec-Customer">
      <row>
        <col label="Email From">
          <input type="text" name="email_from" reportable="1" value="=user_email"/>
        </col>
      </row>
      <row>
        <col label="Email To">
          <input type="text" name="email_to" reportable="1" required="1" help="Please make sure to select a valid contact in the \"Customer\" tab." value="=IF(email_to, email_to, contact_email)"/>
        </col>
      </row>
      <row>
        <col label="Email Subject">
          <input type="text" name="email_subject" reportable="1" value="Quote Proposal for [contact_name]"/>
        </col>
      </row>
      <row>
        <col label="Email Body">
          <input type="textbox" name="email_body" reportable="1" value="Hi [contact_first_name] [contact_last_name],\n\nThank you for the opportunity to discuss your requirements. \n\nPer your request, I have prepared the quote to meet your needs.\n\nTo view the quote, please click the link below:\n\n[quote_link_with_nocode|Go To Quote]\n\nRegards,\n[user_name]\n[user_phone]\n[company_name]" rows="25"/>
        </col>
      </row>
      <row>
        <col label=" ">
          <input type="buttonlink" label="Send Quote" reportable="1" clickaction="send_invite_email"/>
        </col>
      </row>
    </formsection>
```

Here, the send_invite_email action is implemented as follows:

```none
 <action id="send_invite_email" name="Send Quote To Customer" url="<URLPATH>/email_customer.php?field_from=prepared_email&amp;field_to=contact_email&amp;field_subject=email_subject&amp;field_body=email_body&amp;authType=datatable&amp;no-oauth=1&amp;override_path=Home%3Bportal-Quotes" hidden="1"/>
```

**Mobileforce Admin Only**:

The following snippet is from the ADL section of the Mobileforce specification. That is why it can only be specified by Mobileforce Administrator.

```none
      <screen acl="" browserurl="" endtoken="" iconlandscape="https://apps.mobileforcesoftware.com/adlimg/fa-money-check-alt-solid-blue.png" iconportrait="https://apps.mobileforcesoftware.com/adlimg/fa-money-check-alt-solid-blue.png" name="Quotes" starttoken="" striplinks="0" type="datatable" url="<adapterURL>/formconfig_datatable/schema.php#form">
        <data>
          <prop key="hidden">1</prop>
          <prop key="screenid">portal-Quotes</prop>
          <prop key="navscreen-headerbar-enable">0</prop>
          <prop key="navscreen-toolbar-enable">0</prop>
          <prop key="native-headerbar-enable">0</prop>
          <prop key="subheaderbar-enable">0</prop>
          <prop key="ShowAllField">0</prop>
          <prop key="table-actions">create,list,read,update</prop>
          <prop key="param-prefix">formconfig-</prop>
          <prop key="formconfig-quote">Quote Template</prop>
          <prop key="search-filter-enable">1</prop>
        </data>
      </screen>
```

## Notify the Seller when the Buyer (customer) has completed the e-signature.

Often, once the seller has sent the link to the quote to the buyer by mobileforce email, the seller often wants to be notified as soon as the buyer has completed their portion of the e-signature. This can be done in two ways.

### Manual notification to the Seller by the Buyer clicking on a new button/tab

In this method, the buyer sees another tab as a part of the quote, which is titled "customer share quote". This tab can be configured in the quote UI layout as follows:

```none
<formsection label="Customer Share Quote" name="cust_email_tab" aclvisible="ec-Customer" hidden="1">
      <row>
        <col label="Email From">
          <input type="text" name="cust_email_from" reportable="1" value="=contact_email" readonly="1"/>
        </col>
      </row>
      <row>
        <col label="Email To">
          <input type="text" name="cust_email_to" reportable="1" required="1" value="=pb_user_email" readonly="1"/>
        </col>
      </row>
      <row>
        <col label="Email Subject">
          <input type="text" name="cust_email_subject" reportable="1" value="Buyer has signed the Quote [quote_number]" readonly="1"/>
        </col>
      </row>
      <row>
        <col label="Email Body">
          <input type="textbox" name="cust_email_body" reportable="1" value="Hi [pb_user_name],\n\nThe buyer (customer) has signed the quote.\n\nYou can view the signed quote by clicking the link below:\n\n[quote_link_with_nocode|Go To Quote]\n\nRegards,\n[pb_user_name]" rows="25"/>
        </col>
      </row>
      <row>
        <col label=" ">
          <input type="buttonlink" label="Send" reportable="1" name="send_proposal_button" clickaction="receive_customer_notification"/>
        </col>
      </row>
    </formsection>
```

The above formsection (tab) creates a button "Send" which initiates another email send: this time, to the seller, indicating that the buyer has signed the quote. Only when the buyer (customer) manually clicks on this button, will the send email to seller action be initiated.

### Automatic notification to the Seller by the Buyer completing the e-signature

If automatic notification to the seller (when the buyer completes the e-signature) is desired, this can be achieved by the following formsection in the quote UI Layout:

```none
<action id="receive_customer_notification" name="Receive Customer Notification" url="https://apps.mobileforcesoftware.com/stage/customers/servicevelocity/servicevelocity/email_customer.php?field_from=cust_email_from&amp;field_to=cust_email_to&amp;field_subject=cust_email_subject&amp;field_body=cust_email_body&amp;authType=datatable&amp;no-oauth=1&amp;override_path=Home%3Bcpq-Quote-VK"/>
```

In addition, a new formsection needs to be created which includes a clickaction: **clickaction=receive_customer_notification**.

When Send Quote is configured, the mentioned prop keys are to be specified in ADL.

### CRM Users (Eg: HubSpot)

Update the following property keys:

```none
<prop key="auth-datatable-service-email">abc@ymail.com</prop>
<prop key="auth-allow-service-login">1</prop>
<prop key="oauth-service-override-mobile-hubspot-">10553723259</prop>
<prop key="auth-easyclm-role">Customer</prop>
```

**auth-datatable-service-email**

Set to the email of the user/contacts who has EC-Mobileforce access.

**auth-allow-service-login**

Enable service login (set to 1).

**oauth-service-override-mobile-hubspot**

Map this to the corresponding User System ID of the email provided above.

### Non-CRM Users

Update the following property keys:

```none
<prop key="auth-allow-service-login">1</prop>
<prop key="auth-easyclm-role">Customer</prop>
```

**auth-allow-service-login**
Enable service login (set to 1).

**auth-easyclm-role**
Set the default role for any user who logs into the system.
