From 4cf522ddab7202502190befa567a42dded23b62d Mon Sep 17 00:00:00 2001 From: Denis Arh Date: Thu, 24 Oct 2019 10:48:58 +0200 Subject: [PATCH] Add service-cloud configs Change file naming for CRM configs so it can go side-to-side with service-cloud. --- ...namespace.yaml => 1000_namespace_crm.yaml} | 0 .../src/1000_namespace_service_cloud.yaml | 3 + ...100_modules.yaml => 1100_modules_crm.yaml} | 0 .../src/1100_modules_service_cloud.yaml | 2113 +++++++++++++++++ ...{1200_charts.yaml => 1200_charts_crm.yaml} | 0 .../src/1200_charts_service_cloud.yaml | 361 +++ ...300_scripts.yaml => 1300_scripts_crm.yaml} | 0 .../src/1300_scripts_service_cloud.yaml | 983 ++++++++ .../{1400_pages.yaml => 1400_pages_crm.yaml} | 0 .../compose/src/1400_pages_service_cloud.yaml | 1310 ++++++++++ ...ngs.yaml => 1500_record_settings_crm.yaml} | 0 .../1500_record_settings_service_cloud.yaml | 18 + provision/compose/static.go | 2 +- provision/update.sh | 18 +- 14 files changed, 4805 insertions(+), 3 deletions(-) rename provision/compose/src/{1000_namespace.yaml => 1000_namespace_crm.yaml} (100%) create mode 100644 provision/compose/src/1000_namespace_service_cloud.yaml rename provision/compose/src/{1100_modules.yaml => 1100_modules_crm.yaml} (100%) create mode 100644 provision/compose/src/1100_modules_service_cloud.yaml rename provision/compose/src/{1200_charts.yaml => 1200_charts_crm.yaml} (100%) create mode 100644 provision/compose/src/1200_charts_service_cloud.yaml rename provision/compose/src/{1300_scripts.yaml => 1300_scripts_crm.yaml} (100%) create mode 100644 provision/compose/src/1300_scripts_service_cloud.yaml rename provision/compose/src/{1400_pages.yaml => 1400_pages_crm.yaml} (100%) create mode 100644 provision/compose/src/1400_pages_service_cloud.yaml rename provision/compose/src/{1500_record_settings.yaml => 1500_record_settings_crm.yaml} (100%) create mode 100644 provision/compose/src/1500_record_settings_service_cloud.yaml diff --git a/provision/compose/src/1000_namespace.yaml b/provision/compose/src/1000_namespace_crm.yaml similarity index 100% rename from provision/compose/src/1000_namespace.yaml rename to provision/compose/src/1000_namespace_crm.yaml diff --git a/provision/compose/src/1000_namespace_service_cloud.yaml b/provision/compose/src/1000_namespace_service_cloud.yaml new file mode 100644 index 000000000..7a50b766c --- /dev/null +++ b/provision/compose/src/1000_namespace_service_cloud.yaml @@ -0,0 +1,3 @@ +namespaces: + service-cloud: + name: Service Cloud diff --git a/provision/compose/src/1100_modules.yaml b/provision/compose/src/1100_modules_crm.yaml similarity index 100% rename from provision/compose/src/1100_modules.yaml rename to provision/compose/src/1100_modules_crm.yaml diff --git a/provision/compose/src/1100_modules_service_cloud.yaml b/provision/compose/src/1100_modules_service_cloud.yaml new file mode 100644 index 000000000..28d84698a --- /dev/null +++ b/provision/compose/src/1100_modules_service_cloud.yaml @@ -0,0 +1,2113 @@ +namespace: service-cloud +modules: + Account: + name: Account + fields: + AccountName: + label: Account Name + kind: String + required: true + OwnerId: + label: Account Owner + kind: User + options: + presetWithAuthenticated: false + selectType: default + AccountSource: + label: Account Source + kind: Select + options: + options: + - Customer Referral + - Direct + - Employee Referral + - Event + - Existing Customer + - Inbound Call + - Outbound List + - Partner Referral + - Seminar + - Social Media + - Webinar + - Website (Organic) + - Website (PPC) + - Word of Mouth + - Other + selectType: default + AnnualRevenue: + label: Annual Revenue + kind: Number + options: + format: 0 + precision: 0 + BillingStreet: + label: Billing Street + kind: String + BillingCity: + label: Billing City + kind: String + BillingState: + label: Billing State + kind: String + BillingPostalCode: + label: Billing Postal Code + kind: String + BillingCountry: + label: Billing Country + kind: Select + options: + options: + - Afghanistan + - Åland Islands + - Albania + - Algeria + - American Samoa + - Andorra + - Angola + - Anguilla + - Antarctica + - Antigua And Barbuda + - Argentina + - Armenia + - Aruba + - Australia + - Austria + - Azerbaijan + - Bahamas + - Bahrain + - Bangladesh + - Barbados + - Belarus + - Belgium + - Belize + - Benin + - Bermuda + - Bhutan + - Bolivia + - Bosnia And Herzegovina + - Botswana + - Bouvet Island + - Brazil + - British Indian Ocean Territory + - Brunei Darussalam + - Bulgaria + - Burkina Faso + - Burundi + - Cambodia + - Cameroon + - Canada + - Cape Verde + - Cayman Islands + - Central African Republic + - Chad + - Chile + - China + - Christmas Island + - Cocos (Keeling) Islands + - Colombia + - Comoros + - Congo + - Congo; The Democratic Republic Of The + - Cook Islands + - Costa Rica + - Cote D'ivoire + - Croatia + - Cuba + - Cyprus + - Czechia + - Denmark + - Djibouti + - Dominica + - Dominican Republic + - Ecuador + - Egypt + - El Salvador + - Equatorial Guinea + - Eritrea + - Estonia + - Ethiopia + - Falkland Islands (Malvinas) + - Faroe Islands + - Fiji + - Finland + - France + - French Guiana + - French Polynesia + - French Southern Territories + - Gabon + - Gambia + - Georgia + - Germany + - Ghana + - Gibraltar + - Greece + - Greenland + - Grenada + - Guadeloupe + - Guam + - Guatemala + - Guernsey + - Guinea + - Guinea-bissau + - Guyana + - Haiti + - Heard Island And Mcdonald Islands + - Holy See (Vatican City State) + - Honduras + - Hong Kong + - Hungary + - Iceland + - India + - Indonesia + - Iran; Islamic Republic Of + - Iraq + - Ireland + - Isle Of Man + - Israel + - Italy + - Jamaica + - Japan + - Jersey + - Jordan + - Kazakhstan + - Kenya + - Kiribati + - Korea; Democratic People's Republic Of + - Korea; Republic Of + - Kuwait + - Kyrgyzstan + - Lao People's Democratic Republic + - Latvia + - Lebanon + - Lesotho + - Liberia + - Libyan Arab Jamahiriya + - Liechtenstein + - Lithuania + - Luxembourg + - Macao + - Macedonia; The Former Yugoslav Republic Of + - Madagascar + - Malawi + - Malaysia + - Maldives + - Mali + - Malta + - Marshall Islands + - Martinique + - Mauritania + - Mauritius + - Mayotte + - Mexico + - Micronesia; Federated States Of + - Moldova; Republic Of + - Monaco + - Mongolia + - Montenegro + - Montserrat + - Morocco + - Mozambique + - Myanmar + - Namibia + - Nauru + - Nepal + - Netherlands + - Netherlands Antilles + - New Caledonia + - New Zealand + - Nicaragua + - Niger + - Nigeria + - Niue + - Norfolk Island + - Northern Mariana Islands + - Norway + - Oman + - Pakistan + - Palau + - Palestinian Territory; Occupied + - Panama + - Papua New Guinea + - Paraguay + - Peru + - Philippines + - Pitcairn + - Poland + - Portugal + - Puerto Rico + - Qatar + - Reunion + - Romania + - Russian Federation + - Rwanda + - Saint Helena + - Saint Kitts And Nevis + - Saint Lucia + - Saint Pierre And Miquelon + - Saint Vincent And The Grenadines + - Samoa + - San Marino + - Sao Tome And Principe + - Saudi Arabia + - Senegal + - Serbia + - Seychelles + - Sierra Leone + - Singapore + - Slovakia + - Slovenia + - Solomon Islands + - Somalia + - South Africa + - South Georgia And The South Sandwich Islands + - Spain + - Sri Lanka + - Sudan + - Suriname + - Svalbard And Jan Mayen + - Swaziland + - Sweden + - Switzerland + - Syrian Arab Republic + - Taiwan; Province Of China + - Tajikistan + - Tanzania; United Republic Of + - Thailand + - Timor-leste + - Togo + - Tokelau + - Tonga + - Trinidad And Tobago + - Tunisia + - Turkey + - Turkmenistan + - Turks And Caicos Islands + - Tuvalu + - Uganda + - Ukraine + - United Arab Emirates + - United Kingdom + - United States + - United States Minor Outlying Islands + - Uruguay + - Uzbekistan + - Vanuatu + - Venezuela + - Viet Nam + - Virgin Islands; British + - Virgin Islands; U.S. + - Wallis And Futuna + - Western Sahara + - Yemen + - Zambia + - Zimbabwe + selectType: default + Description: + label: Description + kind: String + options: + multiLine: true + useRichTextEditor: true + NumberOfEmployees: + label: Employees + kind: Number + options: + format: 0 + precision: 0 + Fax: + label: Fax + kind: String + Industry: + label: Industry + kind: Select + options: + options: + - "" + - Agriculture + - Apparel + - Banking + - Biotechnology + - Chemicals + - Communications + - Construction + - Consulting + - Education + - Electronics + - Energy + - Engineering + - Entertainment + - Environmental + - Finance + - Food & Beverage + - Government + - Healthcare + - Hospitality + - Insurance + - Machinery + - Manufacturing + - Media + - Not For Profit + - Other + - Recreation + - Retail + - Shipping + - Technology + - Telecommunications + - Transportation + - Utilities + selectType: default + LastViewedDate: + label: Last Viewed Date + kind: DateTime + Ownership: + label: Ownership + kind: Select + options: + options: + - Public + - Private + selectType: default + ParentId: + label: Parent Account + kind: Record + options: + labelField: AccountName + module: Account + queryFields: + - AccountName + selectType: default + Phone: + label: Phone + kind: String + Rating: + label: Rating + kind: Select + options: + options: + - ☆☆☆☆☆ + - ★☆☆☆☆ + - ★★☆☆☆ + - ★★★☆☆ + - ★★★★☆ + - ★★★★★ + selectType: default + Sic: + label: SIC Code + kind: String + SicDesc: + label: SIC Description + kind: String + ShippingStreet: + label: Shipping Street + kind: String + ShippingCity: + label: Shipping City + kind: String + ShippingState: + label: Shipping State + kind: String + ShippingPostalCode: + label: Shipping Postal Code + kind: String + ShippingCountry: + label: Shipping Country + kind: Select + options: + options: + - Afghanistan + - Åland Islands + - Albania + - Algeria + - American Samoa + - Andorra + - Angola + - Anguilla + - Antarctica + - Antigua And Barbuda + - Argentina + - Armenia + - Aruba + - Australia + - Austria + - Azerbaijan + - Bahamas + - Bahrain + - Bangladesh + - Barbados + - Belarus + - Belgium + - Belize + - Benin + - Bermuda + - Bhutan + - Bolivia + - Bosnia And Herzegovina + - Botswana + - Bouvet Island + - Brazil + - British Indian Ocean Territory + - Brunei Darussalam + - Bulgaria + - Burkina Faso + - Burundi + - Cambodia + - Cameroon + - Canada + - Cape Verde + - Cayman Islands + - Central African Republic + - Chad + - Chile + - China + - Christmas Island + - Cocos (Keeling) Islands + - Colombia + - Comoros + - Congo + - Congo; The Democratic Republic Of The + - Cook Islands + - Costa Rica + - Cote D'ivoire + - Croatia + - Cuba + - Cyprus + - Czechia + - Denmark + - Djibouti + - Dominica + - Dominican Republic + - Ecuador + - Egypt + - El Salvador + - Equatorial Guinea + - Eritrea + - Estonia + - Ethiopia + - Falkland Islands (Malvinas) + - Faroe Islands + - Fiji + - Finland + - France + - French Guiana + - French Polynesia + - French Southern Territories + - Gabon + - Gambia + - Georgia + - Germany + - Ghana + - Gibraltar + - Greece + - Greenland + - Grenada + - Guadeloupe + - Guam + - Guatemala + - Guernsey + - Guinea + - Guinea-bissau + - Guyana + - Haiti + - Heard Island And Mcdonald Islands + - Holy See (Vatican City State) + - Honduras + - Hong Kong + - Hungary + - Iceland + - India + - Indonesia + - Iran; Islamic Republic Of + - Iraq + - Ireland + - Isle Of Man + - Israel + - Italy + - Jamaica + - Japan + - Jersey + - Jordan + - Kazakhstan + - Kenya + - Kiribati + - Korea; Democratic People's Republic Of + - Korea; Republic Of + - Kuwait + - Kyrgyzstan + - Lao People's Democratic Republic + - Latvia + - Lebanon + - Lesotho + - Liberia + - Libyan Arab Jamahiriya + - Liechtenstein + - Lithuania + - Luxembourg + - Macao + - Macedonia; The Former Yugoslav Republic Of + - Madagascar + - Malawi + - Malaysia + - Maldives + - Mali + - Malta + - Marshall Islands + - Martinique + - Mauritania + - Mauritius + - Mayotte + - Mexico + - Micronesia; Federated States Of + - Moldova; Republic Of + - Monaco + - Mongolia + - Montenegro + - Montserrat + - Morocco + - Mozambique + - Myanmar + - Namibia + - Nauru + - Nepal + - Netherlands + - Netherlands Antilles + - New Caledonia + - New Zealand + - Nicaragua + - Niger + - Nigeria + - Niue + - Norfolk Island + - Northern Mariana Islands + - Norway + - Oman + - Pakistan + - Palau + - Palestinian Territory; Occupied + - Panama + - Papua New Guinea + - Paraguay + - Peru + - Philippines + - Pitcairn + - Poland + - Portugal + - Puerto Rico + - Qatar + - Reunion + - Romania + - Russian Federation + - Rwanda + - Saint Helena + - Saint Kitts And Nevis + - Saint Lucia + - Saint Pierre And Miquelon + - Saint Vincent And The Grenadines + - Samoa + - San Marino + - Sao Tome And Principe + - Saudi Arabia + - Senegal + - Serbia + - Seychelles + - Sierra Leone + - Singapore + - Slovakia + - Slovenia + - Solomon Islands + - Somalia + - South Africa + - South Georgia And The South Sandwich Islands + - Spain + - Sri Lanka + - Sudan + - Suriname + - Svalbard And Jan Mayen + - Swaziland + - Sweden + - Switzerland + - Syrian Arab Republic + - Taiwan; Province Of China + - Tajikistan + - Tanzania; United Republic Of + - Thailand + - Timor-leste + - Togo + - Tokelau + - Tonga + - Trinidad And Tobago + - Tunisia + - Turkey + - Turkmenistan + - Turks And Caicos Islands + - Tuvalu + - Uganda + - Ukraine + - United Arab Emirates + - United Kingdom + - United States + - United States Minor Outlying Islands + - Uruguay + - Uzbekistan + - Vanuatu + - Venezuela + - Viet Nam + - Virgin Islands; British + - Virgin Islands; U.S. + - Wallis And Futuna + - Western Sahara + - Yemen + - Zambia + - Zimbabwe + selectType: default + Type: + label: Type + kind: Select + options: + options: + - Channel Partner / Reseller + - Customer - Channel + - Customer - Direct + - Installation Partner + - Pending + - Prospect + - Technology Partner + - Other + selectType: default + Website: + label: Website + kind: String + Twitter: + label: Twitter + kind: String + LinkedIn: + label: LinkedIn + kind: String + Facebook: + label: Facebook + kind: String + TotalTime: + label: Total time of all cases + kind: Number + options: + format: 0 + precision: 2 + suffix: ' hour(s)' + TotalCost: + label: Total cost of all cases + kind: Number + options: + format: 0 + precision: 2 + prefix: $ + AccountSelect: + label: Accounts + kind: Select + options: + selectType: default + Attachement: + name: Attachement + fields: + File: + label: File + kind: File + options: + allowDocuments: false + allowImages: false + mode: list + CaseId: + label: Case + kind: Record + options: + labelField: Number + module: Case + queryFields: + - ContactName + - Number + selectType: default + Name: + label: Name + kind: String + Case: + name: Case + fields: + Status: + label: Status + kind: Select + options: + options: + - New + - Open + - Closed + - Removed + selectType: default + ContactName: + label: Name + kind: String + private: true + ContactTitle: + label: Title + kind: String + private: true + ContactEmail: + label: Email + kind: Email + private: true + AccountId: + label: Account + kind: Record + options: + labelField: AccountName + module: Account + queryFields: + - AccountName + selectType: default + ContactId: + label: Contact + kind: Record + options: + labelField: RecordLabel + module: Contact + queryFields: + - RecordLabel + selectType: default + Subject: + label: Subject + kind: String + Escalated: + label: Escalated + kind: Bool + options: + falseLabel: "No" + trueLabel: "Yes" + Category: + label: Category + kind: Select + options: + options: + - Question + - Problem + - Other + selectType: default + ParentCase: + label: ParentCase + kind: Record + options: + labelField: Number + module: Case + queryFields: + - Number + selectType: default + CaseOwner: + label: Case Owner + kind: User + options: + presetWithAuthenticated: false + selectType: multiple + multi: true + CloseDate: + label: Close Date + kind: DateTime + options: + onlyDate: true + Priority: + label: Priority + kind: Select + options: + options: + - Very low + - Low + - Medium + - High + - Very high + selectType: default + Description: + label: Description + kind: String + options: + multiLine: true + ContactPhone: + label: Phone + kind: String + private: true + Solution: + label: Solution + kind: Record + options: + labelField: Title + module: KnowledgeBase + queryFields: + - Title + selectType: default + Number: + label: Case Number + kind: String + ProductId: + label: Product + kind: Record + options: + labelField: Name + module: Product + queryFields: + - ProductCode + - Name + selectType: default + TotalTime: + label: Total Time Spend on Ticket + kind: Number + options: + format: 0 + precision: 2 + suffix: ' hour(s)' + TotalCost: + label: Total Cost + kind: Number + options: + format: 0 + precision: 2 + prefix: $ + MailingList: + label: Mailing List + kind: Record + options: + labelField: RecordLabel + module: Contact + queryFields: + - RecordLabel + selectType: default + multi: true + PreviousStatus: + label: PreviousStatus + kind: String + Contact: + name: Contact + fields: + AccountId: + label: Account Name + kind: Record + options: + labelField: AccountName + module: Account + queryFields: + - AccountName + selectType: default + AssistantName: + label: Assistant + kind: String + AssistantPhone: + label: Asst. Phone + kind: String + Birthdate: + label: Birthdate + kind: DateTime + private: true + MasterRecordId: + label: Contact + kind: Record + options: + labelField: MasterRecordId + module: Contact + queryFields: + - RecordLabel + selectType: default + OwnerId: + label: Contact Owner + kind: User + options: + presetWithAuthenticated: false + selectType: default + IsDeleted: + label: Deleted + kind: Bool + options: + falseLabel: "No" + trueLabel: "Yes" + Department: + label: Department + kind: String + Description: + label: Description + kind: String + options: + multiLine: true + useRichTextEditor: true + DoNotCall: + label: Do Not Call + kind: Bool + options: + falseLabel: "False" + trueLabel: Do Not Call + Email: + label: Email + kind: Email + private: true + HasOptedOutOfEmail: + label: Email Opt Out + kind: Bool + options: + falseLabel: "No" + trueLabel: "Yes" + Fax: + label: Fax + kind: String + private: true + HasOptedOutOfFax: + label: Fax Opt Out + kind: Bool + options: + falseLabel: "No" + trueLabel: "Yes" + HomePhone: + label: Home Phone + kind: String + private: true + LastViewedDate: + label: Last Viewed Date + kind: DateTime + LeadSource: + label: Lead Source + kind: Select + options: + options: + - Customer Referral + - Direct + - Employee Referral + - Event + - Existing Customer + - Inbound Call + - Outbound List + - Partner Referral + - Seminar + - Social Media + - Webinar + - Website (Organic) + - Website (PPC) + - Word of Mouth + - Other + selectType: default + MailingStreet: + label: Mailing Street + kind: String + private: true + MailingCity: + label: Mailing City + kind: String + private: true + MailingState: + label: Mailing State + kind: String + private: true + MailingPostalCode: + label: Mailing Postal Code + kind: String + private: true + MailingCountry: + label: Mailing Country + kind: Select + options: + options: + - Afghanistan + - Åland Islands + - Albania + - Algeria + - American Samoa + - Andorra + - Angola + - Anguilla + - Antarctica + - Antigua And Barbuda + - Argentina + - Armenia + - Aruba + - Australia + - Austria + - Azerbaijan + - Bahamas + - Bahrain + - Bangladesh + - Barbados + - Belarus + - Belgium + - Belize + - Benin + - Bermuda + - Bhutan + - Bolivia + - Bosnia And Herzegovina + - Botswana + - Bouvet Island + - Brazil + - British Indian Ocean Territory + - Brunei Darussalam + - Bulgaria + - Burkina Faso + - Burundi + - Cambodia + - Cameroon + - Canada + - Cape Verde + - Cayman Islands + - Central African Republic + - Chad + - Chile + - China + - Christmas Island + - Cocos (Keeling) Islands + - Colombia + - Comoros + - Congo + - Congo; The Democratic Republic Of The + - Cook Islands + - Costa Rica + - Cote D'ivoire + - Croatia + - Cuba + - Cyprus + - Czechia + - Denmark + - Djibouti + - Dominica + - Dominican Republic + - Ecuador + - Egypt + - El Salvador + - Equatorial Guinea + - Eritrea + - Estonia + - Ethiopia + - Falkland Islands (Malvinas) + - Faroe Islands + - Fiji + - Finland + - France + - French Guiana + - French Polynesia + - French Southern Territories + - Gabon + - Gambia + - Georgia + - Germany + - Ghana + - Gibraltar + - Greece + - Greenland + - Grenada + - Guadeloupe + - Guam + - Guatemala + - Guernsey + - Guinea + - Guinea-bissau + - Guyana + - Haiti + - Heard Island And Mcdonald Islands + - Holy See (Vatican City State) + - Honduras + - Hong Kong + - Hungary + - Iceland + - India + - Indonesia + - Iran; Islamic Republic Of + - Iraq + - Ireland + - Isle Of Man + - Israel + - Italy + - Jamaica + - Japan + - Jersey + - Jordan + - Kazakhstan + - Kenya + - Kiribati + - Korea; Democratic People's Republic Of + - Korea; Republic Of + - Kuwait + - Kyrgyzstan + - Lao People's Democratic Republic + - Latvia + - Lebanon + - Lesotho + - Liberia + - Libyan Arab Jamahiriya + - Liechtenstein + - Lithuania + - Luxembourg + - Macao + - Macedonia; The Former Yugoslav Republic Of + - Madagascar + - Malawi + - Malaysia + - Maldives + - Mali + - Malta + - Marshall Islands + - Martinique + - Mauritania + - Mauritius + - Mayotte + - Mexico + - Micronesia; Federated States Of + - Moldova; Republic Of + - Monaco + - Mongolia + - Montenegro + - Montserrat + - Morocco + - Mozambique + - Myanmar + - Namibia + - Nauru + - Nepal + - Netherlands + - Netherlands Antilles + - New Caledonia + - New Zealand + - Nicaragua + - Niger + - Nigeria + - Niue + - Norfolk Island + - Northern Mariana Islands + - Norway + - Oman + - Pakistan + - Palau + - Palestinian Territory; Occupied + - Panama + - Papua New Guinea + - Paraguay + - Peru + - Philippines + - Pitcairn + - Poland + - Portugal + - Puerto Rico + - Qatar + - Reunion + - Romania + - Russian Federation + - Rwanda + - Saint Helena + - Saint Kitts And Nevis + - Saint Lucia + - Saint Pierre And Miquelon + - Saint Vincent And The Grenadines + - Samoa + - San Marino + - Sao Tome And Principe + - Saudi Arabia + - Senegal + - Serbia + - Seychelles + - Sierra Leone + - Singapore + - Slovakia + - Slovenia + - Solomon Islands + - Somalia + - South Africa + - South Georgia And The South Sandwich Islands + - Spain + - Sri Lanka + - Sudan + - Suriname + - Svalbard And Jan Mayen + - Swaziland + - Sweden + - Switzerland + - Syrian Arab Republic + - Taiwan; Province Of China + - Tajikistan + - Tanzania; United Republic Of + - Thailand + - Timor-leste + - Togo + - Tokelau + - Tonga + - Trinidad And Tobago + - Tunisia + - Turkey + - Turkmenistan + - Turks And Caicos Islands + - Tuvalu + - Uganda + - Ukraine + - United Arab Emirates + - United Kingdom + - United States + - United States Minor Outlying Islands + - Uruguay + - Uzbekistan + - Vanuatu + - Venezuela + - Viet Nam + - Virgin Islands; British + - Virgin Islands; U.S. + - Wallis And Futuna + - Western Sahara + - Yemen + - Zambia + - Zimbabwe + selectType: default + private: true + MobilePhone: + label: Mobile + kind: String + private: true + Salutation: + label: Salutation + kind: String + private: true + FirstName: + label: First Name + kind: String + private: true + LastName: + label: Last Name + kind: String + private: true + OtherStreet: + label: Other Street + kind: String + private: true + OtherCity: + label: Other City + kind: String + private: true + OtherState: + label: Other State + kind: String + private: true + OtherPostalCode: + label: Other Postal Code + kind: String + private: true + OtherCountry: + label: Other Country + kind: Select + options: + options: + - Afghanistan + - Åland Islands + - Albania + - Algeria + - American Samoa + - Andorra + - Angola + - Anguilla + - Antarctica + - Antigua And Barbuda + - Argentina + - Armenia + - Aruba + - Australia + - Austria + - Azerbaijan + - Bahamas + - Bahrain + - Bangladesh + - Barbados + - Belarus + - Belgium + - Belize + - Benin + - Bermuda + - Bhutan + - Bolivia + - Bosnia And Herzegovina + - Botswana + - Bouvet Island + - Brazil + - British Indian Ocean Territory + - Brunei Darussalam + - Bulgaria + - Burkina Faso + - Burundi + - Cambodia + - Cameroon + - Canada + - Cape Verde + - Cayman Islands + - Central African Republic + - Chad + - Chile + - China + - Christmas Island + - Cocos (Keeling) Islands + - Colombia + - Comoros + - Congo + - Congo; The Democratic Republic Of The + - Cook Islands + - Costa Rica + - Cote D'ivoire + - Croatia + - Cuba + - Cyprus + - Czechia + - Denmark + - Djibouti + - Dominica + - Dominican Republic + - Ecuador + - Egypt + - El Salvador + - Equatorial Guinea + - Eritrea + - Estonia + - Ethiopia + - Falkland Islands (Malvinas) + - Faroe Islands + - Fiji + - Finland + - France + - French Guiana + - French Polynesia + - French Southern Territories + - Gabon + - Gambia + - Georgia + - Germany + - Ghana + - Gibraltar + - Greece + - Greenland + - Grenada + - Guadeloupe + - Guam + - Guatemala + - Guernsey + - Guinea + - Guinea-bissau + - Guyana + - Haiti + - Heard Island And Mcdonald Islands + - Holy See (Vatican City State) + - Honduras + - Hong Kong + - Hungary + - Iceland + - India + - Indonesia + - Iran; Islamic Republic Of + - Iraq + - Ireland + - Isle Of Man + - Israel + - Italy + - Jamaica + - Japan + - Jersey + - Jordan + - Kazakhstan + - Kenya + - Kiribati + - Korea; Democratic People's Republic Of + - Korea; Republic Of + - Kuwait + - Kyrgyzstan + - Lao People's Democratic Republic + - Latvia + - Lebanon + - Lesotho + - Liberia + - Libyan Arab Jamahiriya + - Liechtenstein + - Lithuania + - Luxembourg + - Macao + - Macedonia; The Former Yugoslav Republic Of + - Madagascar + - Malawi + - Malaysia + - Maldives + - Mali + - Malta + - Marshall Islands + - Martinique + - Mauritania + - Mauritius + - Mayotte + - Mexico + - Micronesia; Federated States Of + - Moldova; Republic Of + - Monaco + - Mongolia + - Montenegro + - Montserrat + - Morocco + - Mozambique + - Myanmar + - Namibia + - Nauru + - Nepal + - Netherlands + - Netherlands Antilles + - New Caledonia + - New Zealand + - Nicaragua + - Niger + - Nigeria + - Niue + - Norfolk Island + - Northern Mariana Islands + - Norway + - Oman + - Pakistan + - Palau + - Palestinian Territory; Occupied + - Panama + - Papua New Guinea + - Paraguay + - Peru + - Philippines + - Pitcairn + - Poland + - Portugal + - Puerto Rico + - Qatar + - Reunion + - Romania + - Russian Federation + - Rwanda + - Saint Helena + - Saint Kitts And Nevis + - Saint Lucia + - Saint Pierre And Miquelon + - Saint Vincent And The Grenadines + - Samoa + - San Marino + - Sao Tome And Principe + - Saudi Arabia + - Senegal + - Serbia + - Seychelles + - Sierra Leone + - Singapore + - Slovakia + - Slovenia + - Solomon Islands + - Somalia + - South Africa + - South Georgia And The South Sandwich Islands + - Spain + - Sri Lanka + - Sudan + - Suriname + - Svalbard And Jan Mayen + - Swaziland + - Sweden + - Switzerland + - Syrian Arab Republic + - Taiwan; Province Of China + - Tajikistan + - Tanzania; United Republic Of + - Thailand + - Timor-leste + - Togo + - Tokelau + - Tonga + - Trinidad And Tobago + - Tunisia + - Turkey + - Turkmenistan + - Turks And Caicos Islands + - Tuvalu + - Uganda + - Ukraine + - United Arab Emirates + - United Kingdom + - United States + - United States Minor Outlying Islands + - Uruguay + - Uzbekistan + - Vanuatu + - Venezuela + - Viet Nam + - Virgin Islands; British + - Virgin Islands; U.S. + - Wallis And Futuna + - Western Sahara + - Yemen + - Zambia + - Zimbabwe + selectType: default + private: true + OtherPhone: + label: Other Phone + kind: String + private: true + Phone: + label: Phone + kind: String + private: true + PhotoUrl: + label: Photo URL + kind: Url + private: true + ReportsToId: + label: Reports To + kind: Record + options: + labelField: MasterRecordId + module: Contact + queryFields: + - RecordLabel + selectType: default + Title: + label: Title + kind: String + private: true + Twitter: + label: Twitter + kind: Url + private: true + Facebook: + label: Facebook + kind: Url + private: true + LinkedIn: + label: LinkedIn + kind: Url + private: true + IsPrimary: + label: Primary contact for account + kind: Bool + options: + falseLabel: "No" + trueLabel: "Yes" + RecordLabel: + label: Record Label + kind: String + private: true + Department: + name: Department + meta: '{}' + fields: + Name: + label: Name + kind: String + Employees: + label: Employees + kind: User + options: + presetWithAuthenticated: false + selectType: default + multi: true + HourCost: + label: Cost per hour + kind: Number + options: + format: 0 + precision: "2" + prefix: $ + TotalTime: + label: Total time of all cases + kind: Number + options: + format: 0 + precision: 2 + suffix: ' hour(s)' + TotalCost: + label: Total cost of all cases + kind: Number + options: + format: 0 + precision: 2 + prefix: $ + DepartmentSelect: + label: Departments + kind: Select + options: + selectType: default + EmailMessage: + name: EmailMessage + meta: '{}' + fields: + HtmlBody: + label: Body + kind: String + options: + multiLine: true + useRichTextEditor: true + MessageDate: + label: Message Sent Date + kind: String + ContactId: + label: Contact + kind: Record + options: + labelField: RecordLabel + module: Contact + queryFields: + - RecordLabel + selectType: default + Status: + label: Status + kind: Select + options: + options: + - Draft + - Sent + selectType: default + ToAddress: + label: To Address + kind: Email + Subject: + label: Subject + kind: String + EmailTemplateId: + label: Email Template + kind: Record + options: + labelField: Name + module: EmailTemplate + queryFields: + - Name + selectType: default + CaseId: + label: Case + kind: Record + options: + labelField: Number + module: Case + queryFields: + - Number + selectType: default + EmailTemplate: + name: EmailTemplate + meta: '{}' + fields: + Name: + label: Email Template Name + kind: String + Subject: + label: Subject + kind: String + Body: + label: Body + kind: String + options: + multiLine: true + useRichTextEditor: true + Description: + label: Description + kind: String + options: + multiLine: true + Entitlement: + name: Entitlement + fields: + AccountId: + label: Account Name + kind: Record + options: + labelField: AccountName + module: Account + queryFields: + - AccountName + selectType: default + ProductId: + label: Product + kind: Record + options: + labelField: Name + module: Product + queryFields: + - Name + selectType: default + Name: + label: Entitlement Name + kind: String + StartDate: + label: Start Date + kind: DateTime + EndDate: + label: End Date + kind: DateTime + Status: + label: Status + kind: Select + options: + options: + - Active + - Expired + - Inactive + selectType: default + Type: + label: Type + kind: Select + options: + options: + - Web Support + - Phone Support + - Email Support + - Dedicated Support + selectType: multiple + multi: true + Term: + label: Term + kind: Number + options: + format: 0 + precision: 0 + TermType: + label: Term Type + kind: Select + options: + options: + - Day(s) + - Month(s) + - Year(s) + selectType: default + EntitlementTemplate: + name: EntitlementTemplate + fields: + Name: + label: Entitlement Name + kind: String + Term: + label: Term + kind: Number + options: + format: 0 + precision: 0 + TermType: + label: Term type + kind: Select + options: + options: + - Day(s) + - Month(s) + - Year(s) + selectType: default + Type: + label: Type + kind: Select + options: + options: + - Email Support + - Messaging Support + - Phone Support + - Web Support + selectType: multiple + multi: true + KnowledgeBase: + name: KnowledgeBase + fields: + Number: + label: KB Number + kind: Number + options: + format: "00000000" + precision: 0 + prefix: KB# + Title: + label: Title + kind: String + Content: + label: Content + kind: String + options: + multiLine: true + useRichTextEditor: true + IsPublished: + label: Public + kind: Bool + options: + falseLabel: "No" + trueLabel: "Yes" + IsReviewed: + label: Reviewed + kind: Bool + options: + falseLabel: "No" + trueLabel: "Yes" + Status: + label: Status + kind: Select + options: + options: + - New + - Pending review + - Accepted + - Obsolete + - Duplicate + selectType: default + File: + label: File + kind: File + options: + allowDocuments: false + allowImages: false + mode: list + Type: + label: Type + kind: Select + options: + options: + - FAQ + - Solution + - Tutorial + - General + selectType: multiple + multi: true + Category: + label: Category + kind: Select + options: + options: + - Product + - Service + - People Operations + - Engineering + - Marketing + - Sales + - Finance + - Legal + selectType: multiple + multi: true + ProductId: + label: Product + kind: Record + options: + labelField: Name + module: Product + queryFields: + - ProductCode + - Name + selectType: default + Product: + name: Product + fields: + IsActive: + label: Active + kind: Bool + options: + falseLabel: "No" + trueLabel: "Yes" + ProductCode: + label: Product Code + kind: String + Description: + label: Product Description + kind: String + options: + multiLine: true + useRichTextEditor: true + Family: + label: Product Family + kind: Select + options: + options: + - Equipment + - Consumables + - Accessories + - Subscription + - Service + selectType: default + Name: + label: Product Name + kind: String + Photo: + label: Photo + kind: File + options: + allowDocuments: false + allowImages: false + mode: single + Manual: + label: Manual + kind: File + options: + allowDocuments: false + allowImages: false + mode: list + EntitlementTemplateId: + label: Entitlement Template + kind: Record + options: + labelField: Name + module: EntitlementTemplate + queryFields: + - Name + selectType: default + TotalTime: + label: Total time of all cases + kind: Number + options: + format: 0 + precision: 2 + suffix: ' hour(s)' + TotalCost: + label: Total cost of all cases + kind: Number + options: + format: 0 + precision: 2 + prefix: $ + ProductSelect: + label: Products + kind: Select + options: + selectType: default + Settings: + name: Settings + meta: '{}' + fields: + KBNextNumber: + label: Next number for a KB item + kind: Number + options: + format: "00000000" + precision: 0 + prefix: KB# + DefaultCostPerHour: + label: Default cost per hour + kind: Number + options: + format: 0 + precision: 2 + prefix: $ + DefaultDepartment: + label: Default department for new ticket + kind: Record + options: + labelField: Name + module: Department + queryFields: + - Name + selectType: default + DefaultTimeUpdate: + label: Default time for a case update + kind: Number + options: + format: 0 + precision: 2 + suffix: ' hour(s)' + DefaultSupportChannel: + label: Default support channel id + kind: String + DefaultCaseRecordLink: + label: Default case link + kind: String + DefaultCaseEmailTemplate: + label: Default case email template + kind: Record + options: + labelField: Name + module: EmailTemplate + queryFields: + - Name + selectType: default + Update: + name: Update + fields: + CaseId: + label: Case + kind: Record + options: + labelField: Number + module: Case + queryFields: + - ContactName + - Number + selectType: default + Type: + label: Type + kind: Select + options: + options: + - Incoming email + - Outgoing email + - Call + - Status change + - Other + selectType: default + Subject: + label: Subject + kind: String + Content: + label: Content + kind: String + options: + multiLine: true + useRichTextEditor: true + From: + label: From + kind: String + To: + label: To + kind: String + AccountId: + label: Account + kind: Record + options: + labelField: AccountName + module: Account + queryFields: + - AccountName + selectType: default + SendToMailingList: + label: Send to Case Mailing List after saving + kind: Bool + options: + falseLabel: "No" + trueLabel: "Yes" + SaveInKB: + label: Store as entry in Knowledge Base + kind: Bool + options: + falseLabel: "No" + trueLabel: "Yes" + TimeSpend: + label: Time spend + kind: Number + options: + format: 0 + precision: 2 + suffix: ' hour(s)' + Cost: + label: Cost + kind: Number + options: + format: 0 + precision: 2 + prefix: $ + Department: + label: Department + kind: Record + options: + labelField: Name + module: Department + queryFields: + - Name + selectType: default + NotificationCaseCreator: + label: Notification sent to Case Creator + kind: Bool + options: + falseLabel: "No" + trueLabel: "Yes" + NotificationCaseOwner: + label: Notification sent to Case Owner + kind: Bool + options: + falseLabel: "No" + trueLabel: "Yes" + NotificationCaseMailingList: + label: Notification sent to Case Mailing List + kind: Bool + options: + falseLabel: "No" + trueLabel: "Yes" + ContactId: + label: Contact + kind: Record + options: + labelField: RecordLabel + module: Contact + queryFields: + - RecordLabel + selectType: default \ No newline at end of file diff --git a/provision/compose/src/1200_charts.yaml b/provision/compose/src/1200_charts_crm.yaml similarity index 100% rename from provision/compose/src/1200_charts.yaml rename to provision/compose/src/1200_charts_crm.yaml diff --git a/provision/compose/src/1200_charts_service_cloud.yaml b/provision/compose/src/1200_charts_service_cloud.yaml new file mode 100644 index 000000000..07b30a269 --- /dev/null +++ b/provision/compose/src/1200_charts_service_cloud.yaml @@ -0,0 +1,361 @@ +namespace: service-cloud +charts: + ActiveEntitlements: + name: Number of active entitlements + config: + reports: + - dimensions: + - conditions: {} + field: Status + modifier: (no grouping / buckets) + filter: "" + metrics: + - backgroundColor: '#11ff57' + field: count + fixTooltips: true + type: pie + module: Entitlement + AverageTimeSpentPerCase: + name: Average time spent per case + config: + reports: + - dimensions: + - conditions: {} + field: created_at + modifier: MONTH + filter: "" + metrics: + - aggregate: AVG + backgroundColor: '#ff9937' + beginAtZero: true + field: TotalTime + fixTooltips: false + label: Average case time (in hours) + type: bar + module: Case + CaseUpdatesPerType: + name: Case updates per type + config: + reports: + - dimensions: + - conditions: {} + field: Type + modifier: (no grouping / buckets) + filter: "" + metrics: + - backgroundColor: '#b51392' + field: count + fixTooltips: true + relativeValue: true + type: doughnut + module: Update + CasesByCategory: + name: Cases by category + config: + reports: + - dimensions: + - conditions: {} + field: Category + modifier: (no grouping / buckets) + skipMissing: true + filter: "" + metrics: + - backgroundColor: '#ff0074' + field: count + fixTooltips: true + label: Category + relativePrecision: "2" + relativeValue: true + type: doughnut + module: Case + CasesByPriority: + name: Cases by priority + config: + reports: + - dimensions: + - conditions: {} + field: Priority + modifier: (no grouping / buckets) + filter: "" + metrics: + - backgroundColor: '#f50d23' + field: count + fixTooltips: true + label: Priority + relativeValue: true + type: doughnut + module: Case + CasesByStatus: + name: Cases by status + config: + reports: + - dimensions: + - conditions: {} + field: Status + modifier: (no grouping / buckets) + filter: "" + metrics: + - backgroundColor: '#13b1dc' + field: count + fixTooltips: true + label: Cases by status + relativeValue: true + type: doughnut + module: Case + ClosedCasesPerMonth: + name: Closed cases per month + config: + reports: + - dimensions: + - conditions: {} + field: CloseDate + modifier: MONTH + skipMissing: true + filter: "" + metrics: + - backgroundColor: '#4ec811' + beginAtZero: true + field: count + fill: true + fixTooltips: false + label: Closed cases + type: line + module: Case + CostPerCategory: + name: Total costs per category + config: + reports: + - dimensions: + - conditions: {} + field: Category + modifier: (no grouping / buckets) + skipMissing: false + filter: "" + metrics: + - aggregate: SUM + axisType: null + backgroundColor: '#ffac45' + field: TotalCost + fixTooltips: true + label: Cost per category (in $) + relativeValue: false + type: bar + module: Case + CostPerProductFamily: + name: Total costs per product family + config: + reports: + - dimensions: + - conditions: {} + field: Family + modifier: (no grouping / buckets) + filter: "" + metrics: + - aggregate: SUM + axisType: null + backgroundColor: '#03ad3b' + beginAtZero: true + field: TotalCost + fixTooltips: true + label: Total (in $) + relativeValue: false + type: bar + module: Product + CostsPerAccount: + name: Total costs per account + config: + reports: + - dimensions: + - conditions: {} + field: AccountSelect + modifier: (no grouping / buckets) + filter: "" + metrics: + - aggregate: SUM + backgroundColor: '#6dc6fb' + field: TotalCost + fixTooltips: true + label: Total cost ($) + type: bar + module: Account + KnowledgeBaseArticlesPerType: + name: Knowledge Base articles per type + config: + reports: + - dimensions: + - conditions: {} + field: Category + modifier: (no grouping / buckets) + filter: "" + metrics: + - backgroundColor: '#ffc623' + field: count + fixTooltips: true + label: Knowledge Base articles per type + relativeValue: false + type: pie + module: KnowledgeBase + KnowledgeBaseItemsCreatedPerDay: + name: Knowledge Base items created per day + config: + reports: + - dimensions: + - conditions: {} + field: created_at + modifier: DATE + filter: "" + metrics: + - backgroundColor: '#ffc623' + beginAtZero: true + field: count + fill: false + label: Total (per day) + type: line + module: KnowledgeBase + NewCasesByMonth: + name: New cases per month + config: + reports: + - dimensions: + - autoSkip: true + conditions: {} + field: created_at + modifier: MONTH + skipMissing: true + filter: "" + metrics: + - backgroundColor: '#3baef0' + beginAtZero: true + field: count + fill: true + fixTooltips: false + label: New cases + type: line + module: Case + TimePerAccount: + name: Total time spent per account + config: + reports: + - dimensions: + - conditions: {} + field: AccountSelect + modifier: (no grouping / buckets) + filter: "" + metrics: + - aggregate: SUM + backgroundColor: '#41aeee' + field: TotalTime + fixTooltips: true + label: Hours + type: pie + module: Account + TimeSpentPerProductFamily: + name: Total time Spent per product family + config: + reports: + - dimensions: + - conditions: {} + field: Family + modifier: (no grouping / buckets) + filter: "" + metrics: + - aggregate: SUM + axisType: null + backgroundColor: '#03ad3b' + beginAtZero: true + field: TotalTime + fixTooltips: true + label: Time spent (in hours) + relativeValue: false + type: pie + module: Product + TotalCostPerDepartment: + name: Total costs per department + config: + reports: + - dimensions: + - conditions: {} + field: DepartmentSelect + modifier: (no grouping / buckets) + skipMissing: true + filter: "" + metrics: + - aggregate: SUM + backgroundColor: '#bf94ff' + beginAtZero: true + field: TotalCost + fixTooltips: true + label: Total (in $) + type: bar + module: Department + TotalCostPerMonth: + name: Total costs per month + config: + reports: + - dimensions: + - conditions: {} + field: created_at + modifier: MONTH + filter: "" + metrics: + - aggregate: SUM + backgroundColor: '#189d00' + beginAtZero: true + field: Cost + label: Total cost per month (in $) + type: bar + module: Update + TotalTimeSpentPerCategory: + name: Total time spent per category + config: + reports: + - dimensions: + - conditions: {} + field: Category + modifier: (no grouping / buckets) + skipMissing: true + filter: "" + metrics: + - aggregate: SUM + backgroundColor: '#ffac45' + field: TotalTime + fixTooltips: true + label: Total time spent per category (in hours) + type: pie + module: Case + TotalTimeSpentPerDepartment: + name: Total time spent per department + config: + reports: + - dimensions: + - conditions: {} + field: DepartmentSelect + modifier: (no grouping / buckets) + skipMissing: true + filter: "" + metrics: + - aggregate: SUM + backgroundColor: '#bf94ff' + field: TotalTime + fixTooltips: true + label: Total + type: pie + module: Department + TotalTimeSpentPerMonth: + name: Total time spent per month + config: + reports: + - dimensions: + - conditions: {} + field: created_at + modifier: MONTH + filter: "" + metrics: + - aggregate: SUM + backgroundColor: '#0d83e4' + beginAtZero: true + field: TimeSpend + fixTooltips: false + label: Total time spent (in hours) + type: bar + module: Update \ No newline at end of file diff --git a/provision/compose/src/1300_scripts.yaml b/provision/compose/src/1300_scripts_crm.yaml similarity index 100% rename from provision/compose/src/1300_scripts.yaml rename to provision/compose/src/1300_scripts_crm.yaml diff --git a/provision/compose/src/1300_scripts_service_cloud.yaml b/provision/compose/src/1300_scripts_service_cloud.yaml new file mode 100644 index 000000000..b21b788f1 --- /dev/null +++ b/provision/compose/src/1300_scripts_service_cloud.yaml @@ -0,0 +1,983 @@ +namespace: service-cloud +scripts: + AccountSetValues: + source: |- + $record.values.AccountSelect = $record.values.AccountName + async: false + runInUA: false + critical: true + enabled: true + timeout: 0 + triggers: + - event: beforeCreate + module: Account + resource: compose:record + - event: beforeUpdate + module: Account + resource: compose:record + CaseAddUpdate: + source: |- + const { toJSON, ...values } = $record.values + $record = new Record($record.module, { ...$record, values }) + + //Get the default settings + return Compose.findLastRecord('Settings').then(settings => { + + let department = settings.values.DefaultDepartment + let timeSpend = settings.values.DefaultTimeUpdate + let defaultCostPerHour = settings.values.DefaultCostPerHour + let updateCost = 0 + if (timeSpend) { + updateCost = parseFloat(defaultCostPerHour) * parseFloat(timeSpend) + } + + // Create the related update + return Compose.makeRecord({ + 'CaseId': $record.recordID, + 'AccountId': $record.values.AccountId, + 'ContactId': $record.values.ContactId, + 'Department': settings.values.DefaultDepartment, + 'Cost': updateCost, + 'TimeSpend': timeSpend + }, 'Update') + + .then(myUpdate => { + + return Compose.saveRecord(myUpdate) + + }).then(mySavedUpdate => { + + ComposeUI.gotoRecordEditor(mySavedUpdate) + + }).catch(err => { + // solve the problem + console.error(err) + }) + + }).catch(err => { + // solve the problem + console.error(err) + }) + async: false + runInUA: true + critical: true + enabled: true + timeout: 0 + triggers: + - event: manual + module: Case + resource: compose:record + CaseInsertCaseNumber: + source: |- + let d = new Date() + let y = d.getFullYear() + let m = d.getMonth() + 1 + if (m < 10) { + m = '0' + m + } + let day = d.getDate() + if (day < 10) { + day = '0' + day + } + let h = d.getHours() + if (h < 10) { + h = '0' + h + } + let min = d.getMinutes() + if (min < 10) { + min = '0' + min + } + let sec = d.getSeconds() + if (sec < 10) { + sec = '0' + sec + } + let mil = d.getMilliseconds() + if (mil < 10) { + mil = '00' + mil + } else if (mil < 100) { + mil = '0' + mil + } + + let caseNumber = 'Ticket#' + y + m + day + h + min + sec + mil + + $record.values.Number = caseNumber + $record.values.Status = 'New' + $record.values.PreviousStatus = 'New' + async: false + runInUA: false + critical: true + enabled: true + timeout: 0 + triggers: + - event: beforeCreate + module: Case + resource: compose:record + - enabled: false + event: beforeUpdate + module: Case + resource: compose:record + CaseSendEmail: + source: |- + const { toJSON, ...values } = $record.values + $record = new Record($record.module, { ...$record, values }) + + function procTemplate(tpl, pairs = {}) { + return tpl.replace(/{{\s*(.+?)\s*}}/g, (match) => { + // remove {{, }} and extra spaces + const token = match.substr(2, match.length - 4).trim().split('.', 2) + + // return the placeholder if we do not find the value + const miss = '{{' + token.join('.') + '}}' + + if (token.length === 1) { + // handle simpe key-value pairs + return pairs[token] || miss + } else { + // handle complex key-key-value (ie: modulename: recordvalues) + const [key, field] = token + return pairs[key] && pairs[key][field] ? pairs[key][field] : miss + } + }) + } + + // Get the default template from the settings. + return Compose.findLastRecord('Settings').then(settings => { + let templateId = settings.values.DefaultCaseEmailTemplate + + if (templateId) { + + // Get the template + Compose.findRecordByID(templateId, 'EmailTemplate').then(templateRecord => { + + let subject = templateRecord.values.Subject + let body = templateRecord.values.Body + + subject = procTemplate(subject, { "Case": $record.values }) + body = procTemplate(body, { "Case": $record.values }) + + // Find the contact (there will always be a contact) + Compose.findRecordByID($record.values.ContactId, 'Contact').then(contactRecord => { + + subject = procTemplate(subject, { "Contact": contactRecord.values }) + body = procTemplate(body, { "Contact": contactRecord.values }) + return + + }).then(() => { + + // Create the email + return Compose.makeRecord({ + 'HtmlBody': body, + 'Subject': subject, + 'Status': 'Draft', + 'EmailTemplateId': templateId, + 'CaseId': $record.recordID, + 'ContactId': $record.values.ContactId + }, 'EmailMessage') + .then(myEmailMessage => { + + return Compose.saveRecord(myEmailMessage) + + }).then(mySavedEmailMessage => { + + // Redirect to the email record + ComposeUI.gotoRecordEditor(mySavedEmailMessage) + + }).catch(err => { + // solve the problem + console.error(err) + }) + + }).catch(err => { + // solve the problem + console.error(err) + }) + }).catch(err => { + // solve the problem + console.error(err) + }) + } + }).catch(err => { + // solve the problem + console.error(err) + }) + async: false + runInUA: true + critical: true + enabled: true + timeout: 0 + triggers: + - event: manual + module: Case + resource: compose:record + CaseStatusChange: + source: |- + // Get the current status of the case + let currentStatus = $record.values.Status + let previousStatus = $record.values.PreviousStatus + + // Check if there is no status. If so, the case is new and set it as new. + if (!currentStatus) { + currentStatus = 'New' + } + if (!previousStatus) { + previousStatus = 'None' + } + + // Check if we need to insert a status change update + if (currentStatus != previousStatus) { + + // Insert the status update + // First, get the default settings + return Compose.findLastRecord('Settings').then(settings => { + + let defaultTimeSpend = settings.values.DefaultTimeUpdate + let defaultCost = settings.values.DefaultCostPerHour + let defaultDepartment = settings.values.DefaultDepartment + + // Get the record from the department + return Compose.findRecordByID(defaultDepartment, 'Department').then(departmentRecord => { + + // Get the cost associated to the department + if (departmentRecord.values.HourCost) { + defaultCost = departmentRecord.values.HourCost + } + return departmentRecord + + }).then(departmentRecord => { + + // calculat the total cost + let totalCost = parseFloat(defaultCost) * parseFloat(defaultTimeSpend) + + // Make the update record + return Compose.makeRecord({ + 'CaseId': $record.recordID, + 'Type': 'Status change', + 'Subject': 'Status changed from ' + previousStatus + ' to ' + currentStatus, + 'AccountId': $record.values.AccountId, + 'From': 'Automatic message', + 'Department': defaultDepartment, + 'TimeSpend': defaultTimeSpend, + 'Cost': totalCost + }, 'Update') + + .then(myUpdate => { + + return Compose.saveRecord(myUpdate) + + }).catch(err => { + // solve the problem + console.error(err) + }) + + }).then(departmentRecord => { + + // Calculate and store the total price of the ticket + let totalCost = $record.values.TotalCost + if (!totalCost || totalCost === '' || isNaN(totalCost)) { + totalCost = 0 + } + + let totalTime = $record.values.TotalTime + if (!totalTime || totalTime === '' || isNaN(totalTime)) { + totalTime = 0 + } + + // Update the total time and cost in the ticket + $record.values.TotalCost = parseFloat(totalCost) + (parseFloat(defaultCost) * parseFloat(defaultTimeSpend)) + $record.values.TotalTime = parseFloat(totalTime) + parseFloat(defaultTimeSpend) + + // Store the new state in the previous state field + $record.values.PreviousStatus = currentStatus + + return + + }).catch(err => { + // solve the problem + console.error(err) + }) + + }).catch(err => { + // solve the problem + console.error(err) + }) + + } + async: false + runInUA: false + critical: true + enabled: true + timeout: 0 + triggers: + - event: beforeUpdate + module: Case + resource: compose:record + ContactSetRecordLabel: + source: |- + // Set the record label string + let recordLabel = '' + + // Get the first name + let firstName = $record.values.FirstName + if (!firstName) { + firstName = '' + } + + // Get the last name + let lastName = $record.values.LastName + if (!lastName) { + lastName = '' + } + + // Create the full name + let fullName = '' + if ((firstName !== '') && (lastName === '')) { + recordLabel = firstName + } + + if ((firstName === '') && (lastName !== '')) { + recordLabel = lastName + } + + if ((firstName !== '') && (lastName !== '')) { + recordLabel = firstName + ' ' + lastName + } + + // Get the company name from the account + // Check if there is a related account, to map the fields of the account + let accountId = $record.values.AccountId + if (accountId) { + return Compose.findRecordByID(accountId, 'Account').then(accountRecord => { + + // Add to the record label + recordLabel = recordLabel + ' (' + accountRecord.values.AccountName + ')' + $record.values.RecordLabel = recordLabel + + }).catch(err => { + // solve the problem + $record.values.RecordLabel = recordLabel + + console.error(err) + }) + + } + async: false + runInUA: false + critical: true + enabled: true + timeout: 0 + triggers: + - event: beforeCreate + module: Contact + resource: compose:record + - event: beforeUpdate + module: Contact + resource: compose:record + DepartmentSetValues: + source: |- + $record.values.DepartmentSelect = $record.values.Name + async: false + runInUA: false + critical: true + enabled: true + timeout: 0 + triggers: + - event: beforeCreate + module: Department + resource: compose:record + - event: beforeUpdate + module: Department + resource: compose:record + EmailSend: + source: |- + const { toJSON, ...values } = $record.values + $record = new Record($record.module, { ...$record, values }) + + Compose.findRecordByID($record.values.ContactId, 'Contact').then(contactRecord => { + + return Compose.sendMail(contactRecord.values.Email, $record.values.Subject, { html: $record.values.HtmlBody }).then(() => { + + ComposeUI.success(`The email "${$record.values.Subject}" has been sent to "${contactRecord.values.RecordLabel}: ${contactRecord.values.Email}".`) + + $record.values.Status = "Sent" + $record.values.ToAddress = contactRecord.values.Email + + var m = new Date() + var dateString = m.getUTCFullYear() + "/" + (m.getUTCMonth() + 1) + "/" + m.getUTCDate() + " " + m.getUTCHours() + ":" + m.getUTCMinutes() + ":" + m.getUTCSeconds() + $record.values.MessageDate = dateString + Compose.saveRecord($record).then(mySavedRecord => { + ComposeUI.gotoRecordViewer(mySavedRecord) + return + }).then(mySavedRecord => { + + // Add the email as an update + if ($record.values.CaseId) { + + + // First, get the default settings + return Compose.findLastRecord('Settings').then(settings => { + + let defaultTimeSpend = settings.values.DefaultTimeUpdate + let defaultCost = settings.values.DefaultCostPerHour + let defaultDepartment = settings.values.DefaultDepartment + + // Get the record from the department + return Compose.findRecordByID(defaultDepartment, 'Department').then(departmentRecord => { + + // Get the cost associated to the department + if (departmentRecord.values.HourCost) { + defaultCost = departmentRecord.values.HourCost + } + return departmentRecord + + }).then(departmentRecord => { + + // calculat the total cost + let totalCost = parseFloat(defaultCost) * parseFloat(defaultTimeSpend) + + // Make the update record + return Compose.makeRecord({ + 'CaseId': $record.values.CaseId, + 'Type': 'Outgoing email', + 'Subject': 'Email: ' + $record.values.Subject, + 'ContactId': $record.values.ContactId, + 'From': 'Service Cloud', + 'To': contactRecord.values.Email, + 'Content': $record.values.HtmlBody, + 'Department': defaultDepartment, + 'TimeSpend': defaultTimeSpend, + 'Cost': totalCost + }, 'Update') + + .then(myUpdate => { + + return Compose.saveRecord(myUpdate) + + }).catch(err => { + // solve the problem + console.error(err) + }) + }).catch(err => { + // solve the problem + console.error(err) + }) + + }).catch(err => { + // solve the problem + console.error(err) + }) + } + }).catch(err => { + // solve the problem + console.error(err) + }) + + }).catch(err => { + // solve the problem + console.error(err) + }) + }).catch(err => { + // solve the problem + console.error(err) + }) + async: false + runInUA: true + critical: true + enabled: true + timeout: 0 + triggers: + - event: manual + module: EmailMessage + resource: compose:record + EmailTemplateLoad: + source: |- + const { toJSON, ...values } = $record.values + $record = new Record($record.module, { ...$record, values }) + + function procTemplate(tpl, pairs = {}) { + return tpl.replace(/{{\s*(.+?)\s*}}/g, (match) => { + // remove {{, }} and extra spaces + const token = match.substr(2,match.length-4).trim().split('.', 2) + + // return the placeholder if we do not find the value + const miss = '{{' + token.join('.') + '}}' + + if (token.length === 1) { + // handle simpe key-value pairs + return pairs[token] || miss + } else { + // handle complex key-key-value (ie: modulename: recordvalues) + const [key, field] = token + return pairs[key] && pairs[key][field] ? pairs[key][field] : miss + } + }) + } + + if (!$record.recordID) { + ComposeUI.success(`Please save the record before loading the template`) + return + } + + // Check if there is a template + let templateId = $record.values.EmailTemplateId + + if (templateId) { + + // Get the template + Compose.findRecordByID(templateId, 'EmailTemplate').then(templateRecord => { + + let subject = templateRecord.values.Subject + let body = templateRecord.values.Body + + // Find the contact (there will always be a contact) + Compose.findRecordByID($record.values.ContactId, 'Contact').then(contactRecord => { + + subject = procTemplate(subject, {"Contact": contactRecord.values}) + body = procTemplate(body, {"Contact": contactRecord.values}) + return + + }).then(() => { + // Get all the possible placeholders for the case, if there is a case selected + if ($record.values.CaseId) { + return Compose.findRecordByID($record.values.CaseId, 'Case').then(caseRecord => { + + subject = procTemplate(subject, {"Case": caseRecord.values}) + body = procTemplate(body, {"Case": caseRecord.values}) + + }).catch(err => { + // solve the problem + console.error(err) + }) + } + + }).then(() => { + + $record.values.Subject = subject + $record.values.HtmlBody = body + + //Save the record + return Compose.saveRecord($record) + .then(mySavedRecord => { + + ComposeUI.success(`The template has been loaded in to the email.`) + ComposeUI.gotoRecordEditor(mySavedRecord) + + }).catch(err => { + // solve the problem + ComposeUI.warning(`The template could not be loaded.`) + console.error(err) + }) + + }).catch(err => { + // solve the problem + console.error(err) + }) + + }).catch(err => { + // solve the problem + console.error(err) + }) + + } + async: false + runInUA: true + critical: true + enabled: true + timeout: 0 + triggers: + - event: manual + module: EmailMessage + resource: compose:record + KnowledgeBaseInsertKBNumber: + source: |- + //Get the default settings + return Compose.findLastRecord('Settings').then(settings => { + + // Map the case number + let KBNextNumber = settings.values.KBNextNumber + if (typeof KBNextNumber == "undefined" || KBNextNumber === '' || isNaN(KBNextNumber)) { + KBNextNumber = 0 + } + console.log(KBNextNumber) + $record.values.Number = KBNextNumber + let KBNextNumberUpdated = parseInt(KBNextNumber,10) + 1 + + // Update the config + settings.values.KBNextNumber = KBNextNumberUpdated + return Compose.saveRecord(settings).then(mySavedSettings => { + + console.log('Record saved, new ID', mySavedSettings.recordID) + + }).catch(err => { + // solve the problem + console.error(err) + }) + }).catch(err => { + // solve the problem + console.error(err) + }) + async: false + runInUA: false + critical: true + enabled: true + timeout: 0 + triggers: + - enabled: false + event: beforeUpdate + module: KnowledgeBase + resource: compose:record + - event: beforeCreate + module: KnowledgeBase + resource: compose:record + UpdateSendNotificationsAndCalculateTimeAndCost: + source: |- + // Check if the type is NOT an incoming email. If it's not, handle it as an internal update and send notifications + if ($record.values.Type !== 'Incoming email') { + + //Get the cost related to the department that updated the case + return Compose.findRecordByID($record.values.Department, 'Department').then(departmentRecord => { + let hourCost = 0 + if (departmentRecord.values.HourCost) { + hourCost = parseFloat(departmentRecord.values.HourCost) + } + return hourCost + }).catch(err => { + // solve the problem + let hourCost = 0 + return hourCost + }) + + .then((hourCost) => { + // Calculate the cost of the update + let updateTime = $record.values.TimeSpend + let UpdateCost = 0 + if (updateTime) { + UpdateCost = parseFloat(hourCost) * parseFloat(updateTime) + } + + // Add the cost to the update + $record.values.Cost = UpdateCost + + // Set the notifications values to "1" (sent) + if ($record.values.SendToMailingList) { + $record.values.NotificationCaseMailingList = 1 + } + $record.values.NotificationCaseCreator = 1 + + // Find the related case + Compose.findRecordByID($record.values.CaseId, 'Case').then(caseRecord => { + + // Create the update text to send out via email. + // Only when the Update record has a subject or type. + if (($record.values.Subject) || ($record.values.Type)) { + let html = 'Hi,' + html += '
' + html += '
' + html += 'The following case has been updated:' + html += '
' + html += '' + html += '
' + html += 'Update:' + html += '
' + html += '' + html += '
' + html += 'Kind regards,' + html += '
' + html += '
' + html += 'Service Cloud' + html += '
' + html += '
' + html += '--' + html += '
' + html += 'Ticket Summary:' + html += '
' + html += caseRecord.values.Description + + return Compose.findLastRecord('Settings').then(settings => { + let defaultChannel = settings.values.DefaultSupportChannel + let defaultCaseRecordLink = settings.values.DefaultCaseRecordLink + + // Get default settings to find if there is a channel to inform + if (defaultChannel && defaultCaseRecordLink) { + return Messaging.sendMessage('Automatic update. "' + caseRecord.values.Number + '" has been updated: ' + $record.values.Subject + ' (type: ' + $record.values.Type + '). Direct link: ' + defaultCaseRecordLink + $record.recordID, defaultChannel) + } + }).then(() => { + // Get the contact of the case record to infor via email + if (caseRecord.values.ContactId) { + Compose.findRecordByID(caseRecord.values.ContactId, 'Contact').then(contactRecord => { + + // Check if the contact has an email address + if (contactRecord.values.Email) { + + // Send the update text + return Compose.sendMail(contactRecord.values.Email, '[' + caseRecord.values.Number + '] Update: ' + caseRecord.values.Subject, { html: html }) + } + }).catch(err => { + // solve the problem + console.error(err) + }) + } + + }).catch(err => { + // solve the problem + console.error(err) + }) + } + }).catch(err => { + // solve the problem + console.error(err) + }) + }).catch(err => { + // solve the problem + console.error(err) + }) + } + async: false + runInUA: false + critical: true + enabled: true + timeout: 0 + triggers: + - event: beforeUpdate + module: Update + resource: compose:record + UpdateSetCaseTimeAndCost: + source: |- + // Find the related case + Compose.findRecordByID($record.values.CaseId, 'Case').then(caseRecord => { + + // Find all updates in the case + return Compose.findRecords(`CaseId = ${$record.values.CaseId}`, 'Update') + .then(({ set, filter }) => { + + // Start the time and cost with the values of the current update, because the update + // is not saved until after the complete script has run + let caseTime = 0 + let caseCost = 0 + + // Loop through the updates of the case, to sum the totals + set.forEach(r => { + + // Get the time + let caseUpdateTime = r.values.TimeSpend + if (typeof caseUpdateTime == "undefined" || caseUpdateTime === '' || isNaN(caseUpdateTime)) { + caseUpdateTime = 0 + } + caseTime = parseFloat(caseTime) + parseFloat(caseUpdateTime) + + // Get the cost + let caseUpdateCost = r.values.Cost + if (typeof caseUpdateCost == "undefined" || caseUpdateCost === '' || isNaN(caseUpdateCost)) { + caseUpdateCost = 0 + } + caseCost = parseFloat(caseCost) + parseFloat(caseUpdateCost) + }) + + // Set the values in the case + caseRecord.values.TotalTime = caseTime + caseRecord.values.TotalCost = caseCost + + // Save the case + return Compose.saveRecord(caseRecord).then(mySavedCase => { + console.log('Record saved, ID', mySavedCase.recordID) + }).then(mySavedCase => { + + // After saving the case, update the total for the account + // Find the related case + if (caseRecord.values.AccountId) { + Compose.findRecordByID(caseRecord.values.AccountId, 'Account').then(accountRecord => { + + // Find all updates in the case + return Compose.findRecords(`AccountId = ${accountRecord.recordID}`, 'Case') + .then(({ set, filter }) => { + + // Start the time and cost with the values of the current update, because the update + // is not saved until after the complete script has run + caseTime = 0 + caseCost = 0 + + // Loop through the updates of the case, to sum the totals + set.forEach(r => { + + // Get the time + let caseUpdateTime = r.values.TotalTime + if (typeof caseUpdateTime == "undefined" || caseUpdateTime === '' || isNaN(caseUpdateTime)) { + caseUpdateTime = 0 + } + caseTime = parseFloat(caseTime) + parseFloat(caseUpdateTime) + + // Get the cost + let caseUpdateCost = r.values.TotalCost + if (typeof caseUpdateCost == "undefined" || caseUpdateCost === '' || isNaN(caseUpdateCost)) { + caseUpdateCost = 0 + } + caseCost = parseFloat(caseCost) + parseFloat(caseUpdateCost) + }) + + // Set the values in the case + accountRecord.values.TotalTime = caseTime + accountRecord.values.TotalCost = caseCost + + // Save the case + return Compose.saveRecord(accountRecord).then(mySavedAccount => { + console.log('Record saved, ID', mySavedAccount.recordID) + }).catch(err => { + // solve the problem + console.error(err) + }) + + }).catch(err => { + // solve the problem + console.error(err) + }) + }).catch(err => { + // solve the problem + console.error(err) + }) + } + + // Add the totals for the related product + }).then(mySavedCase => { + + // After saving the case, update the total for the account + // Find the related case + if (caseRecord.values.ProductId) { + Compose.findRecordByID(caseRecord.values.ProductId, 'Product').then(productRecord => { + + // Find all updates in the case + return Compose.findRecords(`ProductId = ${productRecord.recordID}`, 'Case') + .then(({ set, filter }) => { + + // Start the time and cost with the values of the current update, because the update + // is not saved until after the complete script has run + caseTime = 0 + caseCost = 0 + + // Loop through the updates of the case, to sum the totals + set.forEach(r => { + + // Get the time + let caseUpdateTime = r.values.TotalTime + if (typeof caseUpdateTime == "undefined" || caseUpdateTime === '' || isNaN(caseUpdateTime)) { + caseUpdateTime = 0 + } + caseTime = parseFloat(caseTime) + parseFloat(caseUpdateTime) + + // Get the cost + let caseUpdateCost = r.values.TotalCost + if (typeof caseUpdateCost == "undefined" || caseUpdateCost === '' || isNaN(caseUpdateCost)) { + caseUpdateCost = 0 + } + caseCost = parseFloat(caseCost) + parseFloat(caseUpdateCost) + }) + + // Set the values in the case + productRecord.values.TotalTime = caseTime + productRecord.values.TotalCost = caseCost + + // Save the case + return Compose.saveRecord(productRecord).then(mySavedProduct => { + console.log('Record saved, ID', mySavedProduct.recordID) + }).catch(err => { + // solve the problem + console.error(err) + }) + + }).catch(err => { + // solve the problem + console.error(err) + }) + }).catch(err => { + // solve the problem + console.error(err) + }) + } + + // Add the totals for the department + }).then(mySavedCase => { + + // If there is an department, update the total for that department + if ($record.values.Department) { + Compose.findRecordByID($record.values.Department, 'Department').then(departmentRecord => { + + // Find all updates of the department (to run through them and update the totals) + return Compose.findRecords(`Department = ${$record.values.Department}`, 'Update') + .then(({ set, filter }) => { + + let departmentTime = 0 + let departmentCost = 0 + + // Loop through the updates of the department, to sum the totals + set.forEach(r => { + + // Get the time + let departmentUpdateTime = r.values.TimeSpend + if (typeof departmentUpdateTime == "undefined" || departmentUpdateTime === '' || isNaN(departmentUpdateTime)) { + departmentUpdateTime = 0 + } + departmentTime = parseFloat(departmentTime) + parseFloat(departmentUpdateTime) + + // Get the cost + let departmentUpdateCost = r.values.Cost + if (typeof departmentUpdateCost == "undefined" || departmentUpdateCost === '' || isNaN(departmentUpdateCost)) { + departmentUpdateCost = 0 + } + departmentCost = parseFloat(departmentCost) + parseFloat(departmentUpdateCost) + }) + + // Set the values in the department + departmentRecord.values.TotalTime = departmentTime + departmentRecord.values.TotalCost = departmentCost + + // Save the department + return Compose.saveRecord(departmentRecord).then(mySavedDepartment => { + console.log('Record saved, ID', mySavedDepartment.recordID) + }).catch(err => { + // solve the problem + console.error(err) + }) + + }).catch(err => { + // solve the problem + console.error(err) + }) + }).catch(err => { + // solve the problem + console.error(err) + }) + } + + }).catch(err => { + // solve the problem + console.error(err) + }) + + }).catch(err => { + // solve the problem + console.error(err) + }) + }).catch(err => { + // solve the problem + console.error(err) + }) + async: false + runInUA: false + critical: true + enabled: true + timeout: 0 + triggers: + - event: afterCreate + module: Update + resource: compose:record + - event: afterUpdate + module: Update + resource: compose:record \ No newline at end of file diff --git a/provision/compose/src/1400_pages.yaml b/provision/compose/src/1400_pages_crm.yaml similarity index 100% rename from provision/compose/src/1400_pages.yaml rename to provision/compose/src/1400_pages_crm.yaml diff --git a/provision/compose/src/1400_pages_service_cloud.yaml b/provision/compose/src/1400_pages_service_cloud.yaml new file mode 100644 index 000000000..88627aa61 --- /dev/null +++ b/provision/compose/src/1400_pages_service_cloud.yaml @@ -0,0 +1,1310 @@ +namespace: service-cloud +pages: + Home: + title: Home + blocks: + - title: My Cases + options: + fields: + - name: Number + - name: Subject + - name: Status + - name: Priority + module: Case + page: RecordPageForModuleCase + perPage: 20 + prefilter: CaseOwner = ${userID} + presort: createdAt DESC + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: RecordList + xywh: [0, 0, 6, 16] + - title: New cases per month + options: + chart: NewCasesByMonth + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: Chart + xywh: [6, 0, 3, 6] + - title: Cases by priority + options: + chart: CasesByPriority + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: Chart + xywh: [6, 6, 3, 5] + - title: Cases by category + options: + chart: CasesByCategory + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: Chart + xywh: [6, 11, 3, 5] + - title: Closed cases per month + options: + chart: ClosedCasesPerMonth + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: Chart + xywh: [9, 0, 3, 6] + - title: Cases by status + options: + chart: CasesByStatus + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: Chart + xywh: [9, 6, 3, 5] + - title: Total cost per case category (in $) + options: + chart: CostPerCategory + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: Chart + xywh: [9, 11, 3, 5] + visible: true + Cases: + title: Cases + blocks: + - title: All cases + options: + allowExport: true + fields: + - name: Number + - name: Subject + - name: ProductId + - name: Category + - name: Status + - name: Priority + - name: CaseOwner + - name: createdAt + module: Case + page: RecordPageForModuleCase + perPage: 20 + presort: createdAt DESC + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: RecordList + xywh: [0, 0, 9, 16] + - title: Cases by priority + options: + chart: CasesByPriority + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: Chart + xywh: [9, 0, 3, 8] + - title: Cases by category + options: + chart: CasesByCategory + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: Chart + xywh: [9, 8, 3, 8] + pages: + RecordPageForModuleCase: + module: Case + title: Record page for module "Case" + blocks: + - title: Case Description + options: + fields: + - name: Number + - name: Status + - name: Category + - name: Description + - name: Priority + - name: ProductId + - name: Solution + - name: CloseDate + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: Record + xywh: [0, 0, 3, 11] + - title: Case Details + options: + fields: + - name: CaseOwner + - name: Escalated + - name: AccountId + - name: ContactId + - name: MailingList + - name: TotalTime + - name: TotalCost + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: Record + xywh: [9, 0, 3, 11] + - title: Case Subject + options: + fields: + - name: Subject + style: + variants: {bodyBg: white, border: success, headerBg: white, headerText: success} + kind: Record + xywh: [3, 0, 6, 3] + - title: Updates + options: + fields: + - name: Type + - name: Subject + - name: Content + - name: From + - name: createdAt + hideAddButton: true + module: Update + page: RecordPageForModuleUpdate + perPage: 20 + prefilter: CaseId = ${recordID} + presort: createdAt DESC + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: RecordList + xywh: [3, 5, 6, 13] + - title: Related Attachments + options: + fields: + - name: File + module: Attachement + page: RecordPageForModuleAttachement + perPage: 20 + prefilter: CaseId = ${recordID} + presort: "" + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: RecordList + xywh: [0, 11, 3, 7] + - title: Search the Knowledge Base + options: + fields: + - name: Number + - name: Title + hideAddButton: true + module: KnowledgeBase + page: RecordPageForModuleKnowledgeBase + perPage: 20 + prefilter: "" + presort: Number ASC + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: RecordList + xywh: [9, 11, 3, 7] + - options: + buttons: + - label: Add Update to this Case + script: CaseAddUpdate + variant: primary + - label: Send Email to Case Contact + script: CaseSendEmail + variant: primary + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: Automation + xywh: [3, 3, 6, 2] + pages: + RecordPageForModuleAttachement: + module: Attachement + title: Record page for module "Attachement" + blocks: + - title: Attachment Details + options: + fields: + - name: Name + - name: CaseId + - name: File + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: Record + xywh: [0, 0, 5, 18] + visible: false + RecordPageForModuleUpdate: + module: Update + title: Record page for module "Update" + blocks: + - title: Content + options: + fields: + - name: CaseId + - name: Subject + - name: Content + - name: Type + - name: From + - name: To + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: Record + xywh: [0, 0, 8, 18] + - title: Notifications + options: + fields: + - name: ContactId + - name: NotificationCaseCreator + - name: NotificationCaseOwner + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: Record + xywh: [8, 0, 4, 7] + - title: Other Information + options: + fields: + - name: AccountId + - name: Department + - name: TimeSpend + - name: Cost + - name: createdAt + - name: createdBy + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: Record + xywh: [8, 7, 4, 11] + visible: false + visible: false + AllMyCases: + title: All my cases + blocks: + - title: All my cases + options: + allowExport: true + fields: + - name: Number + - name: Subject + - name: Status + - name: Priority + - name: CaseOwner + - name: createdAt + module: Case + page: RecordPageForModuleCase + perPage: 20 + prefilter: ${userID} = CaseOwner + presort: createdAt DESC + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: RecordList + xywh: [0, 0, 12, 16] + visible: true + MyNewCases: + title: My new cases + blocks: + - title: My new cases + options: + allowExport: true + fields: + - name: Number + - name: Subject + - name: Status + - name: Priority + - name: CaseOwner + - name: createdAt + module: Case + page: RecordPageForModuleCase + perPage: 20 + prefilter: ${userID} = CaseOwner AND Status = 'New' + presort: createdAt DESC + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: RecordList + xywh: [0, 0, 12, 16] + visible: true + visible: true + Accounts: + title: Accounts + blocks: + - title: Accounts + options: + allowExport: true + fields: + - name: AccountName + - name: BillingCountry + - name: OwnerId + - name: Rating + module: Account + page: RecordPageForModuleAccount + perPage: 20 + presort: AccountName ASC + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: RecordList + xywh: [0, 0, 9, 16] + - title: Total time spent on cases per account (in hours) + options: + chart: TimePerAccount + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: Chart + xywh: [9, 0, 3, 8] + - title: Total costs of cases per account (in $) + options: + chart: CostsPerAccount + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: Chart + xywh: [9, 8, 3, 8] + pages: + RecordPageForModuleAccount: + module: Account + title: Record page for module "Account" + blocks: + - title: Account Detail + options: + fields: + - name: AccountName + - name: Type + - name: Industry + - name: NumberOfEmployees + - name: AnnualRevenue + - name: Twitter + - name: LinkedIn + - name: Facebook + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: Record + xywh: [0, 0, 3, 12] + - title: Account Address + options: + fields: + - name: BillingStreet + - name: BillingCity + - name: BillingState + - name: BillingPostalCode + - name: BillingCountry + - name: Phone + - name: Website + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: Record + xywh: [3, 0, 3, 12] + - title: Other Information + options: + fields: + - name: TotalTime + - name: TotalCost + - name: Rating + - name: ParentId + - name: AccountSource + - name: OwnerId + - name: Description + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: Record + xywh: [6, 0, 3, 12] + - title: Twitter Feed + options: + fields: [] + profileSourceField: Twitter + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: SocialFeed + xywh: [9, 0, 3, 30] + - title: Cases + options: + allowExport: true + fields: + - name: Number + - name: Subject + - name: Category + - name: Priority + - name: Status + - name: TotalTime + - name: TotalCost + - name: createdAt + module: Case + page: RecordPageForModuleCase + perPage: 20 + prefilter: ${recordID} = AccountId + presort: createdAt DESC + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: RecordList + xywh: [0, 12, 9, 9] + - title: Contacts + options: + allowExport: true + fields: + - name: RecordLabel + module: Contact + page: RecordPageForModuleContact + perPage: 20 + prefilter: ${recordID} = AccountId + presort: RecordLabel ASC + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: RecordList + xywh: [6, 21, 3, 9] + - title: Entitlements + options: + allowExport: true + fields: + - name: ProductId + - name: Name + - name: StartDate + - name: EndDate + - name: Status + - name: Type + module: Entitlement + page: RecordPageForModuleEntitlement + perPage: 20 + prefilter: AccountId = ${recordID} + presort: EndDate ASC + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: RecordList + xywh: [0, 21, 6, 9] + visible: false + Contacts: + title: Contacts + blocks: + - title: Contacts + options: + allowExport: true + fields: + - name: FirstName + - name: LastName + - name: Email + - name: Phone + - name: AccountId + - name: OwnerId + - name: createdAt + module: Contact + page: RecordPageForModuleContact + perPage: 20 + prefilter: "" + presort: RecordLabel ASC + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: RecordList + xywh: [0, 0, 12, 16] + pages: + RecordPageForModuleContact: + module: Contact + title: Record page for module "Contact" + blocks: + - title: Personal Data + options: + fields: + - name: FirstName + - name: LastName + - name: Title + - name: Phone + - name: Email + - name: Twitter + - name: Facebook + - name: LinkedIn + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: Record + xywh: [0, 0, 3, 11] + - title: Contact Address + options: + fields: + - name: AccountId + - name: IsPrimary + - name: MailingStreet + - name: MailingCity + - name: MailingState + - name: MailingPostalCode + - name: MailingCountry + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: Record + xywh: [3, 0, 3, 11] + - title: Other Information + options: + fields: + - name: OwnerId + - name: DoNotCall + - name: HasOptedOutOfEmail + - name: Description + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: Record + xywh: [6, 0, 3, 11] + - title: Contact Twitter Feed + options: + fields: [] + profileSourceField: Twitter + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: SocialFeed + xywh: [9, 0, 3, 30] + - title: Cases related to this Contact + options: + allowExport: true + fields: + - name: Number + - name: Status + - name: Priority + - name: Subject + - name: TotalTime + - name: TotalCost + - name: createdAt + module: Case + page: RecordPageForModuleCase + perPage: 20 + prefilter: ContactId = ${recordID} + presort: createdAt DESC + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: RecordList + xywh: [0, 11, 9, 9] + - title: Emails + options: + allowExport: true + fields: + - name: ToAddress + - name: Subject + - name: HtmlBody + - name: EmailTemplateId + - name: Status + - name: MessageDate + - name: createdAt + module: EmailMessage + page: RecordPageForModuleEmailMessage + perPage: 20 + prefilter: ContactId = ${recordID} + presort: createdAt DESC + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: RecordList + xywh: [0, 20, 9, 9] + pages: + RecordPageForModuleEmailMessage: + module: EmailMessage + title: Record page for module "Email Message" + blocks: + - title: Message + options: + fields: + - name: Subject + - name: HtmlBody + style: + variants: {bodyBg: white, border: primary, headerBg: white, + headerText: primary} + kind: Record + xywh: [0, 0, 6, 16] + - title: To + options: + fields: + - name: ContactId + - name: CaseId + style: + variants: {bodyBg: white, border: primary, headerBg: white, + headerText: primary} + kind: Record + xywh: [6, 0, 3, 8] + - title: Template + options: + fields: + - name: EmailTemplateId + style: + variants: {bodyBg: white, border: primary, headerBg: white, + headerText: primary} + kind: Record + xywh: [6, 8, 3, 8] + - title: Status + options: + fields: + - name: Status + - name: MessageDate + - name: createdBy + - name: createdAt + style: + variants: {bodyBg: white, border: primary, headerBg: white, + headerText: primary} + kind: Record + xywh: [9, 0, 3, 8] + - title: Actions + options: + buttons: + - label: Load selected tempate in to email message + script: EmailTemplateLoad + variant: primary + - label: Send email to the contact + script: EmailSend + variant: success + style: + variants: {bodyBg: white, border: primary, headerBg: white, + headerText: primary} + kind: Automation + xywh: [9, 8, 3, 8] + visible: false + visible: false + visible: true + Entitlements: + title: Entitlements + blocks: + - title: Entitlements + options: + allowExport: true + fields: + - name: AccountId + - name: ProductId + - name: Name + - name: Type + - name: StartDate + - name: EndDate + - name: Status + module: Entitlement + page: RecordPageForModuleEntitlement + perPage: 20 + presort: EndDate DESC + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: RecordList + xywh: [0, 0, 12, 16] + pages: + RecordPageForModuleEntitlement: + module: Entitlement + title: Record page for module "Entitlement" + blocks: + - title: Product Entitlement + options: + fields: + - name: AccountId + - name: ProductId + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: Record + xywh: [0, 0, 4, 15] + - title: Entitlement Status + options: + fields: + - name: Status + - name: StartDate + - name: EndDate + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: Record + xywh: [8, 0, 4, 15] + - title: Entitlement Data + options: + fields: + - name: Name + - name: Type + - name: Term + - name: TermType + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: Record + xywh: [4, 0, 4, 15] + visible: false + visible: true + visible: true + Products: + title: Products + blocks: + - title: Products + options: + allowExport: true + fields: + - name: ProductCode + - name: Name + - name: Family + - name: Photo + - name: IsActive + - name: EntitlementTemplateId + module: Product + page: RecordPageForModuleProduct + perPage: 20 + presort: ProductCode ASC + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: RecordList + xywh: [0, 0, 9, 16] + - title: Time spent per product family (in hours) + options: + chart: TimeSpentPerProductFamily + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: Chart + xywh: [9, 0, 3, 8] + - title: Cost per product family (in $) + options: + chart: CostPerProductFamily + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: Chart + xywh: [9, 8, 3, 8] + pages: + RecordPageForModuleProduct: + module: Product + title: Record page for module "Product" + blocks: + - title: Product Description + options: + fields: + - name: ProductCode + - name: Name + - name: Family + - name: EntitlementTemplateId + - name: Description + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: Record + xywh: [0, 0, 3, 10] + - title: Other Information + options: + fields: + - name: IsActive + - name: createdAt + - name: createdBy + - name: updatedAt + - name: updatedBy + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: Record + xywh: [9, 0, 3, 10] + - title: Entitlements for this product + options: + allowExport: true + fields: + - name: AccountId + - name: ProductId + - name: Name + - name: Type + - name: StartDate + - name: EndDate + - name: Status + module: Entitlement + page: RecordPageForModuleEntitlement + perPage: 20 + prefilter: ProductId = ${recordID} + presort: EndDate ASC + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: RecordList + xywh: [0, 10, 12, 8] + - title: Cases related to this product + options: + fields: + - name: Number + - name: Subject + - name: Status + - name: Priority + module: Case + page: RecordPageForModuleCase + perPage: 20 + prefilter: ProductId = ${recordID} + presort: createdAt DESC + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: RecordList + xywh: [0, 18, 6, 7] + - title: Knowledge Base items related to this product + options: + fields: + - name: Number + - name: Title + - name: IsPublished + module: KnowledgeBase + page: RecordPageForModuleKnowledgeBase + perPage: 20 + prefilter: ProductId = ${recordID} + presort: Title ASC + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: RecordList + xywh: [6, 18, 6, 7] + - title: Files + options: + fields: + - name: Photo + - name: Manual + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: Record + xywh: [6, 0, 3, 10] + - title: Cases totals + options: + fields: + - name: TotalTime + - name: TotalCost + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: Record + xywh: [3, 0, 3, 10] + visible: false + EntitlementTemplates: + title: Entitlement Templates + blocks: + - title: Entitlement Templates + options: + fields: + - name: Name + - name: Type + - name: Term + - name: TermType + module: EntitlementTemplate + page: RecordPageForModuleEntitlementTemplate + perPage: 20 + presort: Name ASC + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: RecordList + xywh: [0, 0, 12, 16] + pages: + RecordPageForModuleEntitlementTemplate: + module: EntitlementTemplate + title: Record page for module "EntitlementTemplate" + blocks: + - title: Entitlement Template + options: + fields: + - name: Name + - name: Term + - name: TermType + - name: Type + - name: createdAt + - name: createdBy + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: Record + xywh: [0, 0, 6, 16] + - title: Products that use this entitlements template + options: + allowExport: true + fields: + - name: ProductCode + - name: Name + - name: Family + - name: Photo + - name: IsActive + module: Product + page: RecordPageForModuleProduct + perPage: 20 + prefilter: EntitlementTemplateId = ${recordID} + presort: ProductCode ASC + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: RecordList + xywh: [6, 0, 6, 16] + visible: false + visible: true + visible: true + KnowledgeBase: + title: Knowledge Base + blocks: + - title: Knowledge Base + options: + allowExport: true + fields: + - name: Number + - name: Title + - name: IsPublished + - name: IsReviewed + - name: Status + module: KnowledgeBase + page: RecordPageForModuleKnowledgeBase + perPage: 20 + prefilter: "" + presort: Number ASC + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: RecordList + xywh: [0, 0, 9, 16] + - title: KB articles per type + options: + chart: KnowledgeBaseArticlesPerType + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: Chart + xywh: [9, 0, 3, 8] + - title: KB articles created per day + options: + chart: KnowledgeBaseItemsCreatedPerDay + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: Chart + xywh: [9, 8, 3, 8] + pages: + RecordPageForModuleKnowledgeBase: + module: KnowledgeBase + title: Record page for module "Knowledge Base" + blocks: + - title: Details + options: + fields: + - name: Content + - name: File + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: Record + xywh: [3, 5, 6, 15] + - title: Cases with this KB Item as Solution + options: + fields: + - name: Number + - name: Subject + - name: createdAt + module: Case + page: RecordPageForModuleCase + perPage: 20 + prefilter: Solution = ${recordID} + presort: createdAt DESC + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: RecordList + xywh: [9, 0, 3, 20] + - title: Title + options: + fields: + - name: Title + - name: Number + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: success} + kind: Record + xywh: [3, 0, 6, 5] + - title: Details + options: + fields: + - name: Type + - name: Category + - name: ProductId + - name: Status + - name: IsReviewed + - name: IsPublished + - name: createdAt + - name: createdBy + - name: updatedAt + - name: updatedBy + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: Record + xywh: [0, 0, 3, 20] + visible: false + visible: true + Departments: + title: Departments + blocks: + - title: Departments + options: + allowExport: true + fields: + - name: Name + - name: Employees + - name: HourCost + - name: TotalTime + - name: TotalCost + module: Department + page: RecordPageForModuleDepartment + perPage: 20 + presort: Name ASC + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: RecordList + xywh: [0, 0, 9, 16] + - title: Total time spent per department (in hours) + options: + chart: TotalTimeSpentPerDepartment + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: Chart + xywh: [9, 0, 3, 8] + - title: Total case costs per department (in $) + options: + chart: TotalCostPerDepartment + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: Chart + xywh: [9, 8, 3, 8] + pages: + RecordPageForModuleDepartment: + module: Department + title: Record page for module "Department" + blocks: + - title: Department details + options: + fields: + - name: Name + - name: Employees + - name: HourCost + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: Record + xywh: [0, 0, 6, 6] + - title: Total time and cost of department related to work on cases + options: + fields: + - name: TotalTime + - name: TotalCost + - name: DepartmentSelect + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: Record + xywh: [6, 0, 6, 6] + - title: Case updates related to the department + options: + allowExport: true + fields: + - name: CaseId + - name: AccountId + - name: ContactId + - name: Type + - name: Subject + - name: TimeSpend + - name: Cost + - name: createdAt + module: Update + page: RecordPageForModuleUpdate + perPage: 20 + prefilter: Department = ${recordID} + presort: createdAt DESC + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: RecordList + xywh: [0, 6, 12, 10] + visible: false + visible: true + Settings: + title: Settings + blocks: + - title: Settings + options: + fields: + - name: KBNextNumber + - name: DefaultCostPerHour + - name: DefaultDepartment + - name: DefaultTimeUpdate + - name: DefaultSupportChannel + - name: DefaultCaseRecordLink + - name: DefaultCaseEmailTemplate + hideAddButton: true + hidePaging: true + hideSearch: true + hideSorting: true + module: Settings + page: RecordPageForModuleSettings + perPage: 20 + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: RecordList + xywh: [0, 0, 12, 5] + pages: + RecordPageForModuleSettings: + module: Settings + title: Record page for module "Settings" + blocks: + - title: Settings + options: + fields: + - name: KBNextNumber + - name: DefaultCostPerHour + - name: DefaultDepartment + - name: DefaultTimeUpdate + - name: DefaultSupportChannel + - name: DefaultCaseRecordLink + - name: DefaultCaseEmailTemplate + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: Record + xywh: [0, 0, 6, 17] + visible: false + EmailTemplates: + title: Email Templates + blocks: + - title: Email Templates + options: + allowExport: true + fields: + - name: Name + - name: Subject + - name: Description + - name: createdAt + module: EmailTemplate + page: RecordPageForModuleEmailTemplate + perPage: 20 + presort: Name ASC + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: RecordList + xywh: [0, 0, 12, 16] + pages: + RecordPageForModuleEmailTemplate: + module: EmailTemplate + title: Record page for module "Email Template" + blocks: + - title: Template + options: + fields: + - name: Name + - name: Description + - name: Subject + - name: Body + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: Record + xywh: [0, 0, 8, 12] + - title: Other Information + options: + fields: + - name: createdBy + - name: createdAt + - name: updatedBy + - name: updatedAt + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: Record + xywh: [8, 0, 4, 12] + - title: Template is used in following emails + options: + allowExport: true + fields: + - name: Subject + - name: CaseId + - name: ContactId + - name: ToAddress + - name: Status + - name: MessageDate + module: EmailMessage + page: RecordPageForModuleEmailMessage + perPage: 20 + prefilter: EmailTemplateId = ${recordID} + presort: createdAt DESC + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: RecordList + xywh: [0, 12, 12, 10] + visible: false + visible: true + visible: true + Dashboard: + title: Dashboard + blocks: + - title: Cases by category + options: + chart: CasesByCategory + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: Chart + xywh: [3, 18, 3, 6] + - title: Cases by priority + options: + chart: CasesByPriority + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: Chart + xywh: [0, 18, 3, 6] + - title: New cases per month + options: + chart: NewCasesByMonth + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: Chart + xywh: [0, 0, 3, 6] + - title: Number of active entitlements + options: + chart: ActiveEntitlements + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: Chart + xywh: [9, 18, 3, 6] + - title: Knowledge base articles per type + options: + chart: KnowledgeBaseArticlesPerType + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: Chart + xywh: [6, 24, 3, 6] + - title: Closed cases per month + options: + chart: ClosedCasesPerMonth + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: Chart + xywh: [3, 0, 3, 6] + - title: Average time spent per case (in hours) + options: + chart: AverageTimeSpentPerCase + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: Chart + xywh: [6, 18, 3, 6] + - title: Total time spent per month (in hours) + options: + chart: TotalTimeSpentPerMonth + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: Chart + xywh: [6, 0, 3, 6] + - title: Total cost per case category (in $) + options: + chart: CostPerCategory + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: Chart + xywh: [9, 6, 3, 6] + - title: Total cost per month (in $) + options: + chart: TotalCostPerMonth + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: Chart + xywh: [9, 0, 3, 6] + - title: Case updates per type + options: + chart: CaseUpdatesPerType + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: Chart + xywh: [3, 24, 3, 6] + - title: Total time spent per category (in hours) + options: + chart: TotalTimeSpentPerCategory + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: Chart + xywh: [6, 6, 3, 6] + - title: Cases by status + options: + chart: CasesByStatus + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: Chart + xywh: [0, 24, 3, 6] + - title: Total time spent per account (in hours) + options: + chart: TimePerAccount + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: Chart + xywh: [6, 12, 3, 6] + - title: Total costs per account (in $) + options: + chart: CostsPerAccount + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: Chart + xywh: [9, 12, 3, 6] + - title: Time spent per product family (in hours) + options: + chart: TimeSpentPerProductFamily + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: Chart + xywh: [0, 12, 3, 6] + - title: Total costs per product family (in $) + options: + chart: CostPerProductFamily + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: Chart + xywh: [3, 12, 3, 6] + - title: Total time spent per department (in hours) + options: + chart: TotalTimeSpentPerDepartment + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: Chart + xywh: [0, 6, 3, 6] + - title: Total cost per department (in $) + options: + chart: TotalCostPerDepartment + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: Chart + xywh: [3, 6, 3, 6] + - title: KB articles created per day + options: + chart: KnowledgeBaseItemsCreatedPerDay + style: + variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary} + kind: Chart + xywh: [9, 24, 3, 6] + visible: true \ No newline at end of file diff --git a/provision/compose/src/1500_record_settings.yaml b/provision/compose/src/1500_record_settings_crm.yaml similarity index 100% rename from provision/compose/src/1500_record_settings.yaml rename to provision/compose/src/1500_record_settings_crm.yaml diff --git a/provision/compose/src/1500_record_settings_service_cloud.yaml b/provision/compose/src/1500_record_settings_service_cloud.yaml new file mode 100644 index 000000000..de85a97d1 --- /dev/null +++ b/provision/compose/src/1500_record_settings_service_cloud.yaml @@ -0,0 +1,18 @@ +namespace: service-cloud +records: + Department: + - values: + Name: "Service" + HourCost: "50" + EmailTemplate: + - values: + Name: "Case Update" + Description: "This is the default case update template" + Subject: "Case: [{{Case.Number}}] {{Case.Subject}}" + Body: |- +

Dear {{Contact.FirstName}},

We are contacting you with regard to the case "{{Case.Subject}}".

ADD_REASON_FOR_CONTACT_HERE

You can reply directly to this email. When replying, please make sure the ticket ID is kept in the subject so we can track your replies.

Kind regards,

The service team

+ Settings: + - values: + KBNextNumber: "1" + DefaultCostPerHour: "50" + DefaultTimeUpdate: "0.25" diff --git a/provision/compose/static.go b/provision/compose/static.go index 1a2c0aff9..c0bd06f9c 100644 --- a/provision/compose/static.go +++ b/provision/compose/static.go @@ -3,4 +3,4 @@ // Package contains static assets. package compose -var Asset = "PK\x03\x04\x14\x00\x08\x00\x00\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00 \x000000_access_control.yamlUT\x05\x00\x01\x80Cm8allow:\n everyone:\n compose:\n - access\n\n admins:\n compose:\n - access\n - grant\n - settings.read\n - settings.manage\n - namespace.create\n\n compose:namespace:\n - read\n - update\n - delete\n - manage\n - page.create\n - module.create\n - chart.create\n - automation-script.create\n\n compose:module:\n - read\n - update\n - delete\n - record.create\n - record.read\n - record.update\n - record.delete\n - automation-trigger.manage\n\n compose:chart:\n - read\n - update\n - delete\n\n compose:page:\n - read\n - update\n - delete\n\n compose:automation-script:\n - read\n - update\n - delete\nPK\x07\x08\x83\"\xb2>\xdd\x02\x00\x00\xdd\x02\x00\x00PK\x03\x04\x14\x00\x08\x00\x00\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00 \x000100_settings.yamlUT\x05\x00\x01\x80Cm8settings:\n ui.namespace-switcher.enabled: false\n\n record.attachments.max-size: 10\n record.attachments.mimetypes: []\n\n page.attachments.max-size: 10\n page.attachments.mimetypes: []\nPK\x07\x08\x12\xb2K=\xb9\x00\x00\x00\xb9\x00\x00\x00PK\x03\x04\x14\x00\x08\x00\x00\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00 \x001000_namespace.yamlUT\x05\x00\x01\x80Cm8namespaces:\n crm:\n name: CRM\n allow:\n everyone:\n - module.create\n - read\n deny:\n everyone:\n - delete\nPK\x07\x08\xe8\x0c\x08\xf3\x88\x00\x00\x00\x88\x00\x00\x00PK\x03\x04\x14\x00\x08\x00\x00\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x00 \x001100_modules.yamlUT\x05\x00\x01\x80Cm8namespace: crm\nmodules:\n Account:\n name: Account\n fields:\n AccountName:\n label: Account Name\n kind: String\n required: true\n AccountSource:\n label: Account Source\n kind: Select\n options:\n options:\n - Customer Referral\n - Direct\n - Employee Referral\n - Event\n - Existing Customer\n - Inbound Call\n - Outbound List\n - Partner Referral\n - Seminar\n - Social Media\n - Webinar\n - Website (Organic)\n - Website (PPC)\n - Word of Mouth\n - Other\n selectType: default\n AnnualRevenue:\n label: Annual Revenue\n kind: Select\n options:\n options:\n - Less Than 500,000\n - 500,000 To 1 Million\n - 1 To 2.5 Million\n - 2.5 To 5 Million\n - 5 To 10 Million\n - 10 To 20 Million\n - 20 To 50 Million\n - 50 To 100 Million\n - 100 To 500 Million\n selectType: default\n BillingCity:\n label: Billing City\n kind: String\n BillingCountry:\n label: Billing Country\n kind: Select\n options:\n options:\n - Afghanistan\n - \xc3\x85land Islands\n - Albania\n - Algeria\n - American Samoa\n - Andorra\n - Angola\n - Anguilla\n - Antarctica\n - Antigua And Barbuda\n - Argentina\n - Armenia\n - Aruba\n - Australia\n - Austria\n - Azerbaijan\n - Bahamas\n - Bahrain\n - Bangladesh\n - Barbados\n - Belarus\n - Belgium\n - Belize\n - Benin\n - Bermuda\n - Bhutan\n - Bolivia\n - Bosnia And Herzegovina\n - Botswana\n - Bouvet Island\n - Brazil\n - British Indian Ocean Territory\n - Brunei Darussalam\n - Bulgaria\n - Burkina Faso\n - Burundi\n - Cambodia\n - Cameroon\n - Canada\n - Cape Verde\n - Cayman Islands\n - Central African Republic\n - Chad\n - Chile\n - China\n - Christmas Island\n - Cocos (Keeling) Islands\n - Colombia\n - Comoros\n - Congo\n - Congo; The Democratic Republic Of The\n - Cook Islands\n - Costa Rica\n - Cote D'ivoire\n - Croatia\n - Cuba\n - Cyprus\n - Czechia\n - Denmark\n - Djibouti\n - Dominica\n - Dominican Republic\n - Ecuador\n - Egypt\n - El Salvador\n - Equatorial Guinea\n - Eritrea\n - Estonia\n - Ethiopia\n - Falkland Islands (Malvinas)\n - Faroe Islands\n - Fiji\n - Finland\n - France\n - French Guiana\n - French Polynesia\n - French Southern Territories\n - Gabon\n - Gambia\n - Georgia\n - Germany\n - Ghana\n - Gibraltar\n - Greece\n - Greenland\n - Grenada\n - Guadeloupe\n - Guam\n - Guatemala\n - Guernsey\n - Guinea\n - Guinea-bissau\n - Guyana\n - Haiti\n - Heard Island And Mcdonald Islands\n - Holy See (Vatican City State)\n - Honduras\n - Hong Kong\n - Hungary\n - Iceland\n - India\n - Indonesia\n - Iran; Islamic Republic Of\n - Iraq\n - Ireland\n - Isle Of Man\n - Israel\n - Italy\n - Jamaica\n - Japan\n - Jersey\n - Jordan\n - Kazakhstan\n - Kenya\n - Kiribati\n - Korea; Democratic People's Republic Of\n - Korea; Republic Of\n - Kuwait\n - Kyrgyzstan\n - Lao People's Democratic Republic\n - Latvia\n - Lebanon\n - Lesotho\n - Liberia\n - Libyan Arab Jamahiriya\n - Liechtenstein\n - Lithuania\n - Luxembourg\n - Macao\n - Macedonia; The Former Yugoslav Republic Of\n - Madagascar\n - Malawi\n - Malaysia\n - Maldives\n - Mali\n - Malta\n - Marshall Islands\n - Martinique\n - Mauritania\n - Mauritius\n - Mayotte\n - Mexico\n - Micronesia; Federated States Of\n - Moldova; Republic Of\n - Monaco\n - Mongolia\n - Montenegro\n - Montserrat\n - Morocco\n - Mozambique\n - Myanmar\n - Namibia\n - Nauru\n - Nepal\n - Netherlands\n - Netherlands Antilles\n - New Caledonia\n - New Zealand\n - Nicaragua\n - Niger\n - Nigeria\n - Niue\n - Norfolk Island\n - Northern Mariana Islands\n - Norway\n - Oman\n - Pakistan\n - Palau\n - Palestinian Territory; Occupied\n - Panama\n - Papua New Guinea\n - Paraguay\n - Peru\n - Philippines\n - Pitcairn\n - Poland\n - Portugal\n - Puerto Rico\n - Qatar\n - Reunion\n - Romania\n - Russian Federation\n - Rwanda\n - Saint Helena\n - Saint Kitts And Nevis\n - Saint Lucia\n - Saint Pierre And Miquelon\n - Saint Vincent And The Grenadines\n - Samoa\n - San Marino\n - Sao Tome And Principe\n - Saudi Arabia\n - Senegal\n - Serbia\n - Seychelles\n - Sierra Leone\n - Singapore\n - Slovakia\n - Slovenia\n - Solomon Islands\n - Somalia\n - South Africa\n - South Georgia And The South Sandwich Islands\n - Spain\n - Sri Lanka\n - Sudan\n - Suriname\n - Svalbard And Jan Mayen\n - Swaziland\n - Sweden\n - Switzerland\n - Syrian Arab Republic\n - Taiwan; Province Of China\n - Tajikistan\n - Tanzania; United Republic Of\n - Thailand\n - Timor-leste\n - Togo\n - Tokelau\n - Tonga\n - Trinidad And Tobago\n - Tunisia\n - Turkey\n - Turkmenistan\n - Turks And Caicos Islands\n - Tuvalu\n - Uganda\n - Ukraine\n - United Arab Emirates\n - United Kingdom\n - United States\n - United States Minor Outlying Islands\n - Uruguay\n - Uzbekistan\n - Vanuatu\n - Venezuela\n - Viet Nam\n - Virgin Islands; British\n - Virgin Islands; U.S.\n - Wallis And Futuna\n - Western Sahara\n - Yemen\n - Zambia\n - Zimbabwe\n selectType: default\n BillingPostalCode:\n label: Billing Postal Code\n kind: String\n BillingState:\n label: Billing State\n kind: String\n BillingStreet:\n label: Billing Street\n kind: String\n Description:\n label: Description\n kind: String\n options:\n multiLine: true\n useRichTextEditor: true\n Facebook:\n label: Facebook\n kind: String\n Fax:\n label: Fax\n kind: String\n Industry:\n label: Industry\n kind: Select\n options:\n options:\n - \"\"\n - Agriculture\n - Apparel\n - Banking\n - Biotechnology\n - Chemicals\n - Communications\n - Construction\n - Consulting\n - Education\n - Electronics\n - Energy\n - Engineering\n - Entertainment\n - Environmental\n - Finance\n - Food & Beverage\n - Government\n - Healthcare\n - Hospitality\n - Insurance\n - Machinery\n - Manufacturing\n - Media\n - Not For Profit\n - Other\n - Recreation\n - Retail\n - Shipping\n - Technology\n - Telecommunications\n - Transportation\n - Utilities\n selectType: default\n LastViewedDate:\n label: Last Viewed Date\n kind: DateTime\n LinkedIn:\n label: LinkedIn\n kind: String\n NumberOfEmployees:\n label: Employees\n kind: Number\n options:\n format: 0\n precision: 0\n OwnerId:\n label: Account Owner\n kind: User\n options:\n presetWithAuthenticated: false\n selectType: default\n Ownership:\n label: Ownership\n kind: Select\n options:\n options:\n - Public\n - Private\n selectType: default\n ParentId:\n label: Parent Account\n kind: Record\n options:\n labelField: AccountName\n module: Account\n queryFields:\n - AccountName\n selectType: default\n Phone:\n label: Phone\n kind: String\n Rating:\n label: Rating\n kind: Select\n options:\n options:\n - \xe2\x98\x86\xe2\x98\x86\xe2\x98\x86\xe2\x98\x86\xe2\x98\x86\n - \xe2\x98\x85\xe2\x98\x86\xe2\x98\x86\xe2\x98\x86\xe2\x98\x86\n - \xe2\x98\x85\xe2\x98\x85\xe2\x98\x86\xe2\x98\x86\xe2\x98\x86\n - \xe2\x98\x85\xe2\x98\x85\xe2\x98\x85\xe2\x98\x86\xe2\x98\x86\n - \xe2\x98\x85\xe2\x98\x85\xe2\x98\x85\xe2\x98\x85\xe2\x98\x86\n - \xe2\x98\x85\xe2\x98\x85\xe2\x98\x85\xe2\x98\x85\xe2\x98\x85\n selectType: default\n ShippingCity:\n label: Shipping City\n kind: String\n ShippingCountry:\n label: Shipping Country\n kind: Select\n options:\n options:\n - Afghanistan\n - \xc3\x85land Islands\n - Albania\n - Algeria\n - American Samoa\n - Andorra\n - Angola\n - Anguilla\n - Antarctica\n - Antigua And Barbuda\n - Argentina\n - Armenia\n - Aruba\n - Australia\n - Austria\n - Azerbaijan\n - Bahamas\n - Bahrain\n - Bangladesh\n - Barbados\n - Belarus\n - Belgium\n - Belize\n - Benin\n - Bermuda\n - Bhutan\n - Bolivia\n - Bosnia And Herzegovina\n - Botswana\n - Bouvet Island\n - Brazil\n - British Indian Ocean Territory\n - Brunei Darussalam\n - Bulgaria\n - Burkina Faso\n - Burundi\n - Cambodia\n - Cameroon\n - Canada\n - Cape Verde\n - Cayman Islands\n - Central African Republic\n - Chad\n - Chile\n - China\n - Christmas Island\n - Cocos (Keeling) Islands\n - Colombia\n - Comoros\n - Congo\n - Congo; The Democratic Republic Of The\n - Cook Islands\n - Costa Rica\n - Cote D'ivoire\n - Croatia\n - Cuba\n - Cyprus\n - Czechia\n - Denmark\n - Djibouti\n - Dominica\n - Dominican Republic\n - Ecuador\n - Egypt\n - El Salvador\n - Equatorial Guinea\n - Eritrea\n - Estonia\n - Ethiopia\n - Falkland Islands (Malvinas)\n - Faroe Islands\n - Fiji\n - Finland\n - France\n - French Guiana\n - French Polynesia\n - French Southern Territories\n - Gabon\n - Gambia\n - Georgia\n - Germany\n - Ghana\n - Gibraltar\n - Greece\n - Greenland\n - Grenada\n - Guadeloupe\n - Guam\n - Guatemala\n - Guernsey\n - Guinea\n - Guinea-bissau\n - Guyana\n - Haiti\n - Heard Island And Mcdonald Islands\n - Holy See (Vatican City State)\n - Honduras\n - Hong Kong\n - Hungary\n - Iceland\n - India\n - Indonesia\n - Iran; Islamic Republic Of\n - Iraq\n - Ireland\n - Isle Of Man\n - Israel\n - Italy\n - Jamaica\n - Japan\n - Jersey\n - Jordan\n - Kazakhstan\n - Kenya\n - Kiribati\n - Korea; Democratic People's Republic Of\n - Korea; Republic Of\n - Kuwait\n - Kyrgyzstan\n - Lao People's Democratic Republic\n - Latvia\n - Lebanon\n - Lesotho\n - Liberia\n - Libyan Arab Jamahiriya\n - Liechtenstein\n - Lithuania\n - Luxembourg\n - Macao\n - Macedonia; The Former Yugoslav Republic Of\n - Madagascar\n - Malawi\n - Malaysia\n - Maldives\n - Mali\n - Malta\n - Marshall Islands\n - Martinique\n - Mauritania\n - Mauritius\n - Mayotte\n - Mexico\n - Micronesia; Federated States Of\n - Moldova; Republic Of\n - Monaco\n - Mongolia\n - Montenegro\n - Montserrat\n - Morocco\n - Mozambique\n - Myanmar\n - Namibia\n - Nauru\n - Nepal\n - Netherlands\n - Netherlands Antilles\n - New Caledonia\n - New Zealand\n - Nicaragua\n - Niger\n - Nigeria\n - Niue\n - Norfolk Island\n - Northern Mariana Islands\n - Norway\n - Oman\n - Pakistan\n - Palau\n - Palestinian Territory; Occupied\n - Panama\n - Papua New Guinea\n - Paraguay\n - Peru\n - Philippines\n - Pitcairn\n - Poland\n - Portugal\n - Puerto Rico\n - Qatar\n - Reunion\n - Romania\n - Russian Federation\n - Rwanda\n - Saint Helena\n - Saint Kitts And Nevis\n - Saint Lucia\n - Saint Pierre And Miquelon\n - Saint Vincent And The Grenadines\n - Samoa\n - San Marino\n - Sao Tome And Principe\n - Saudi Arabia\n - Senegal\n - Serbia\n - Seychelles\n - Sierra Leone\n - Singapore\n - Slovakia\n - Slovenia\n - Solomon Islands\n - Somalia\n - South Africa\n - South Georgia And The South Sandwich Islands\n - Spain\n - Sri Lanka\n - Sudan\n - Suriname\n - Svalbard And Jan Mayen\n - Swaziland\n - Sweden\n - Switzerland\n - Syrian Arab Republic\n - Taiwan; Province Of China\n - Tajikistan\n - Tanzania; United Republic Of\n - Thailand\n - Timor-leste\n - Togo\n - Tokelau\n - Tonga\n - Trinidad And Tobago\n - Tunisia\n - Turkey\n - Turkmenistan\n - Turks And Caicos Islands\n - Tuvalu\n - Uganda\n - Ukraine\n - United Arab Emirates\n - United Kingdom\n - United States\n - United States Minor Outlying Islands\n - Uruguay\n - Uzbekistan\n - Vanuatu\n - Venezuela\n - Viet Nam\n - Virgin Islands; British\n - Virgin Islands; U.S.\n - Wallis And Futuna\n - Western Sahara\n - Yemen\n - Zambia\n - Zimbabwe\n selectType: default\n ShippingPostalCode:\n label: Shipping Postal Code\n kind: String\n ShippingState:\n label: Shipping State\n kind: String\n ShippingStreet:\n label: Shipping Street\n kind: String\n Sic:\n label: SIC Code\n kind: String\n SicDesc:\n label: SIC Description\n kind: String\n Twitter:\n label: Twitter\n kind: String\n Type:\n label: Type\n kind: Select\n options:\n options:\n - Channel Partner / Reseller\n - Customer - Channel\n - Customer - Direct\n - Installation Partner\n - Pending\n - Prospect\n - Technology Partner\n - Other\n selectType: default\n Website:\n label: Website\n kind: String\n AccountContactRole:\n name: AccountContactRole\n fields:\n AccountId:\n label: Account\n kind: Record\n options:\n labelField: AccountName\n module: Account\n queryFields:\n - AccountName\n ContactId:\n label: Contact\n kind: Record\n options:\n labelField: MasterRecordId\n module: Contact\n queryFields:\n - AccountId\n - MasterRecordId\n IsPrimary:\n label: Primary\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n Role:\n label: Role\n kind: Select\n options:\n options:\n - Business User\n - Decision Maker\n - Economic Buyer\n - Economic Decision Maker\n - Evaluator\n - Executive Sponsor\n - Gatekeeper\n - Influencer\n - Project Manager\n - Technical Buyer\n - Other\n CampaignMember:\n name: CampaignMember\n fields:\n CampaignId:\n label: Campaign\n kind: Record\n options:\n labelField: Name\n module: Campaigns\n queryFields:\n - Name\n ContactId:\n label: Contact\n kind: Record\n options:\n labelField: Email\n module: Contact\n queryFields:\n - AccountId\n - Email\n - FirstName\n - LastName\n FirstRespondedDate:\n label: First Responded Date\n kind: DateTime\n HasResponded:\n label: Responded\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n LeadId:\n label: Lead\n kind: Record\n options:\n labelField: Email\n module: Lead\n queryFields:\n - Email\n - FirstName\n - LastName\n Status:\n label: Status\n kind: Select\n options:\n options:\n - Attended\n - Registered\n - Responded\n - Viewed a Demo\n - Visited Booth\n - Viewed a Webinar\n Campaigns:\n name: Campaigns\n fields:\n ActualCost:\n label: Actual Cost\n kind: Number\n options:\n format: 0\n precision: 0\n AmountAllOpportunities:\n label: Value Opportunities in Campaign\n kind: Number\n options:\n format: 0\n precision: 0\n AmountWonOpportunities:\n label: Value Won Opportunities in Campaign\n kind: Number\n options:\n format: 0\n precision: 0\n BudgetedCost:\n label: Budgeted Cost\n kind: Number\n options:\n format: 0\n precision: 0\n Description:\n label: Description\n kind: String\n options:\n multiLine: true\n useRichTextEditor: true\n EndDate:\n label: End Date\n kind: DateTime\n options:\n onlyDate: true\n ExpectedResponse:\n label: Expected Response (%)\n kind: Number\n options:\n format: 0\n precision: 0\n ExpectedRevenue:\n label: Expected Revenue\n kind: Number\n options:\n format: 0\n precision: 0\n IsActive:\n label: Active\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n LastActivityDate:\n label: Last Activity\n kind: DateTime\n LastModifiedById:\n label: Last Modified By\n kind: User\n options:\n presetWithAuthenticated: false\n LastModifiedDate:\n label: Last Modified Date\n kind: DateTime\n LastViewedDate:\n label: Last Viewed Date\n kind: DateTime\n Name:\n label: Campaign Name\n kind: String\n NumberOfContacts:\n label: Contacts in Campaign\n kind: Number\n options:\n format: 0\n precision: 0\n NumberOfConvertedLeads:\n label: Converted Leads in Campaign\n kind: Number\n options:\n format: 0\n precision: 0\n NumberOfLeads:\n label: Leads in Campaign\n kind: Number\n options:\n format: 0\n precision: 0\n NumberOfOpportunities:\n label: Opportunities in Campaign\n kind: Number\n options:\n format: 0\n precision: 0\n NumberOfResponses:\n label: Responses in Campaign\n kind: Number\n options:\n format: 0\n precision: 0\n NumberOfWonOpportunities:\n label: Won Opportunities in Campaign\n kind: Number\n options:\n format: 0\n precision: 0\n NumberSent:\n label: Num Sent\n kind: Number\n options:\n format: 0\n precision: 0\n OwnerId:\n label: Campaign Owner\n kind: User\n options:\n presetWithAuthenticated: false\n ParentId:\n label: Parent Campaign\n kind: Record\n options:\n module: Campaigns\n queryFields:\n - Name\n StartDate:\n label: Start Date\n kind: DateTime\n options:\n onlyDate: true\n Status:\n label: Status\n kind: Select\n options:\n options:\n - Aborted\n - Completed\n - In Progress\n - Planned\n - Tentative\n Type:\n label: Type\n kind: Select\n options:\n options:\n - Lead Generation - Direct Mail\n - Lead Generation - Conference\n - Lead Generation - Email Blast\n - Lead Generation - PPC\n - Lead Generation - Seminar\n - Lead Generation - Trade Show\n - Lead Generation - Webinar\n - Lead Generation - Website\n - Brand Building - Print advertisement\n - Brand Building - Radio advertisement\n - Brand Building - TV advertisement\n - Brand Building - Sponsoring\n - Brand Building - Social Media\n - Lead Generation - Contacting personal network\n Case:\n name: Case\n fields:\n AccountId:\n label: Account Name\n kind: Record\n options:\n labelField: AccountName\n module: Account\n queryFields:\n - AccountName\n CaseNumber:\n label: Case Number\n kind: Number\n options:\n format: \"0000000\"\n precision: 0\n ClosedDate:\n label: Date/Time Closed\n kind: DateTime\n ContactId:\n label: Contact Name\n kind: Record\n options:\n labelField: RecordLabel\n module: Contact\n queryFields:\n - RecordLabel\n Description:\n label: Description\n kind: String\n options:\n multiLine: true\n useRichTextEditor: true\n File:\n label: File\n kind: File\n options:\n allowDocuments: false\n allowImages: false\n mode: list\n IsClosed:\n label: Closed\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n IsClosedOnCreate:\n label: Closed When Created\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n IsEscalated:\n label: Escalated\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n Origin:\n label: Case Origin\n kind: Select\n options:\n options:\n - Email\n - Messaging\n - Phone\n - Web\n - Other\n OwnerId:\n label: Case Owner\n kind: User\n options:\n presetWithAuthenticated: false\n ParentId:\n label: Parent Case\n kind: Record\n options:\n labelField: Subject\n module: Case\n queryFields:\n - AccountId\n - CaseNumber\n - Subject\n Priority:\n label: Priority\n kind: Select\n options:\n options:\n - Low\n - Medium\n - High\n ProductId:\n label: Product\n kind: Record\n options:\n labelField: Name\n module: Product\n queryFields:\n - ProductCode\n - Name\n Reason:\n label: Case Reason\n kind: Select\n options:\n options:\n - Documentation unclear\n - Software bug\n - User didn't attend training\n - Other\n SolutionFile:\n label: Solution File\n kind: File\n options:\n allowDocuments: false\n allowImages: false\n mode: list\n SolutionId:\n label: Solution Record\n kind: Record\n options:\n labelField: SolutionName\n module: Solution\n queryFields:\n - SolutionNote\n - SolutionNumber\n - SolutionName\n SolutionName:\n label: Solution Title\n kind: String\n SolutionNote:\n label: Solution Details\n kind: String\n options:\n multiLine: true\n useRichTextEditor: true\n Status:\n label: Status\n kind: Select\n options:\n options:\n - New\n - Working\n - Escalated\n - Closed\n Subject:\n label: Subject\n kind: String\n SubmitAsSolution:\n label: Submit as Solution Record when Case is Closed\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n SuppliedCompany:\n label: Supplied Company\n kind: String\n SuppliedEmail:\n label: Supplied Email\n kind: String\n SuppliedName:\n label: Supplied Name\n kind: String\n SuppliedPhone:\n label: Supplied Phone\n kind: String\n Type:\n label: Type\n kind: Select\n options:\n options:\n - Bug\n - Feature Request\n - Question\n - Other\n CaseContactRole:\n name: CaseContactRole\n fields:\n CaseId:\n label: Case\n kind: Record\n options:\n labelField: Subject\n module: Case\n queryFields:\n - CaseNumber\n - Subject\n ContactId:\n label: Contact\n kind: Record\n options:\n labelField: RecordLabel\n module: Contact\n queryFields:\n - RecordLabel\n IsPrimary:\n label: Primary\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n Role:\n label: Role\n kind: Select\n options:\n options:\n - Business User\n - Decision Maker\n - Economic Buyer\n - Economic Decision Maker\n - Evaluator\n - Executive Sponsor\n - Gatekeeper\n - Influencer\n - Project Manager\n - Technical Buyer\n - Other\n CaseMilestone:\n name: CaseMilestone\n fields:\n CaseId:\n label: Case\n kind: Record\n options:\n labelField: Subject\n module: Case\n queryFields:\n - AccountId\n - CaseNumber\n - Subject\n CompletionDate:\n label: Completion Date\n kind: DateTime\n IsCompleted:\n label: Completed\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n IsViolated:\n label: Violation\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n MilestoneTypeId:\n label: Milestone Type\n kind: Record\n options:\n labelField: Name\n module: MilestoneType\n queryFields:\n - Name\n StartDate:\n label: Start Date\n kind: DateTime\n TargetDate:\n label: Target Date\n kind: DateTime\n TargetResponseInDays:\n label: Target Response (Days)\n kind: Number\n options:\n format: 0\n precision: 0\n TargetResponseInHrs:\n label: Target Response (Hours)\n kind: Number\n options:\n format: 0\n precision: 0\n TargetResponseInMins:\n label: Target Response (Mins)\n kind: Number\n options:\n format: 0\n precision: 0\n CaseUpdate:\n name: CaseUpdate\n fields:\n CaseId:\n label: Case\n kind: Record\n options:\n labelField: Subject\n module: Case\n queryFields:\n - AccountId\n - CaseNumber\n - Subject\n Description:\n label: Description\n kind: String\n options:\n multiLine: true\n useRichTextEditor: true\n File:\n label: File\n kind: File\n options:\n allowDocuments: false\n allowImages: false\n mode: list\n IsSolution:\n label: Marked as solution\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n Type:\n label: Type\n kind: Select\n options:\n options:\n - Email\n - Call\n - Fax\n - Letter\n - Visit\n Contact:\n name: Contact\n fields:\n AccountId:\n label: Account Name\n kind: Record\n options:\n labelField: AccountName\n module: Account\n queryFields: []\n AssistantName:\n label: Assistant\n kind: String\n AssistantPhone:\n label: Asst. Phone\n kind: String\n Birthdate:\n label: Birthdate\n kind: DateTime\n private: true\n Department:\n label: Department\n kind: String\n Description:\n label: Description\n kind: String\n options:\n multiLine: true\n useRichTextEditor: true\n DoNotCall:\n label: Do Not Call\n kind: Bool\n options:\n falseLabel: \"False\"\n trueLabel: Do Not Call\n Email:\n label: Email\n kind: Email\n private: true\n Facebook:\n label: Facebook\n kind: Url\n private: true\n Fax:\n label: Fax\n kind: String\n private: true\n FirstName:\n label: First Name\n kind: String\n private: true\n HasOptedOutOfEmail:\n label: Email Opt Out\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n HasOptedOutOfFax:\n label: Fax Opt Out\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n HomePhone:\n label: Home Phone\n kind: String\n private: true\n IsDeleted:\n label: Deleted\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n IsPrimary:\n label: Primary contact for account\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n LastName:\n label: Last Name\n kind: String\n private: true\n LastViewedDate:\n label: Last Viewed Date\n kind: DateTime\n LeadSource:\n label: Lead Source\n kind: Select\n options:\n options:\n - Customer Referral\n - Direct\n - Employee Referral\n - Event\n - Existing Customer\n - Inbound Call\n - Outbound List\n - Partner Referral\n - Seminar\n - Social Media\n - Webinar\n - Website (Organic)\n - Website (PPC)\n - Word of Mouth\n - Other\n LinkedIn:\n label: LinkedIn\n kind: Url\n private: true\n MailingCity:\n label: Mailing City\n kind: String\n private: true\n MailingCountry:\n label: Mailing Country\n kind: Select\n options:\n options:\n - Afghanistan\n - \xc3\x85land Islands\n - Albania\n - Algeria\n - American Samoa\n - Andorra\n - Angola\n - Anguilla\n - Antarctica\n - Antigua And Barbuda\n - Argentina\n - Armenia\n - Aruba\n - Australia\n - Austria\n - Azerbaijan\n - Bahamas\n - Bahrain\n - Bangladesh\n - Barbados\n - Belarus\n - Belgium\n - Belize\n - Benin\n - Bermuda\n - Bhutan\n - Bolivia\n - Bosnia And Herzegovina\n - Botswana\n - Bouvet Island\n - Brazil\n - British Indian Ocean Territory\n - Brunei Darussalam\n - Bulgaria\n - Burkina Faso\n - Burundi\n - Cambodia\n - Cameroon\n - Canada\n - Cape Verde\n - Cayman Islands\n - Central African Republic\n - Chad\n - Chile\n - China\n - Christmas Island\n - Cocos (Keeling) Islands\n - Colombia\n - Comoros\n - Congo\n - Congo; The Democratic Republic Of The\n - Cook Islands\n - Costa Rica\n - Cote D'ivoire\n - Croatia\n - Cuba\n - Cyprus\n - Czechia\n - Denmark\n - Djibouti\n - Dominica\n - Dominican Republic\n - Ecuador\n - Egypt\n - El Salvador\n - Equatorial Guinea\n - Eritrea\n - Estonia\n - Ethiopia\n - Falkland Islands (Malvinas)\n - Faroe Islands\n - Fiji\n - Finland\n - France\n - French Guiana\n - French Polynesia\n - French Southern Territories\n - Gabon\n - Gambia\n - Georgia\n - Germany\n - Ghana\n - Gibraltar\n - Greece\n - Greenland\n - Grenada\n - Guadeloupe\n - Guam\n - Guatemala\n - Guernsey\n - Guinea\n - Guinea-bissau\n - Guyana\n - Haiti\n - Heard Island And Mcdonald Islands\n - Holy See (Vatican City State)\n - Honduras\n - Hong Kong\n - Hungary\n - Iceland\n - India\n - Indonesia\n - Iran; Islamic Republic Of\n - Iraq\n - Ireland\n - Isle Of Man\n - Israel\n - Italy\n - Jamaica\n - Japan\n - Jersey\n - Jordan\n - Kazakhstan\n - Kenya\n - Kiribati\n - Korea; Democratic People's Republic Of\n - Korea; Republic Of\n - Kuwait\n - Kyrgyzstan\n - Lao People's Democratic Republic\n - Latvia\n - Lebanon\n - Lesotho\n - Liberia\n - Libyan Arab Jamahiriya\n - Liechtenstein\n - Lithuania\n - Luxembourg\n - Macao\n - Macedonia; The Former Yugoslav Republic Of\n - Madagascar\n - Malawi\n - Malaysia\n - Maldives\n - Mali\n - Malta\n - Marshall Islands\n - Martinique\n - Mauritania\n - Mauritius\n - Mayotte\n - Mexico\n - Micronesia; Federated States Of\n - Moldova; Republic Of\n - Monaco\n - Mongolia\n - Montenegro\n - Montserrat\n - Morocco\n - Mozambique\n - Myanmar\n - Namibia\n - Nauru\n - Nepal\n - Netherlands\n - Netherlands Antilles\n - New Caledonia\n - New Zealand\n - Nicaragua\n - Niger\n - Nigeria\n - Niue\n - Norfolk Island\n - Northern Mariana Islands\n - Norway\n - Oman\n - Pakistan\n - Palau\n - Palestinian Territory; Occupied\n - Panama\n - Papua New Guinea\n - Paraguay\n - Peru\n - Philippines\n - Pitcairn\n - Poland\n - Portugal\n - Puerto Rico\n - Qatar\n - Reunion\n - Romania\n - Russian Federation\n - Rwanda\n - Saint Helena\n - Saint Kitts And Nevis\n - Saint Lucia\n - Saint Pierre And Miquelon\n - Saint Vincent And The Grenadines\n - Samoa\n - San Marino\n - Sao Tome And Principe\n - Saudi Arabia\n - Senegal\n - Serbia\n - Seychelles\n - Sierra Leone\n - Singapore\n - Slovakia\n - Slovenia\n - Solomon Islands\n - Somalia\n - South Africa\n - South Georgia And The South Sandwich Islands\n - Spain\n - Sri Lanka\n - Sudan\n - Suriname\n - Svalbard And Jan Mayen\n - Swaziland\n - Sweden\n - Switzerland\n - Syrian Arab Republic\n - Taiwan; Province Of China\n - Tajikistan\n - Tanzania; United Republic Of\n - Thailand\n - Timor-leste\n - Togo\n - Tokelau\n - Tonga\n - Trinidad And Tobago\n - Tunisia\n - Turkey\n - Turkmenistan\n - Turks And Caicos Islands\n - Tuvalu\n - Uganda\n - Ukraine\n - United Arab Emirates\n - United Kingdom\n - United States\n - United States Minor Outlying Islands\n - Uruguay\n - Uzbekistan\n - Vanuatu\n - Venezuela\n - Viet Nam\n - Virgin Islands; British\n - Virgin Islands; U.S.\n - Wallis And Futuna\n - Western Sahara\n - Yemen\n - Zambia\n - Zimbabwe\n private: true\n MailingPostalCode:\n label: Mailing Postal Code\n kind: String\n private: true\n MailingState:\n label: Mailing State\n kind: String\n private: true\n MailingStreet:\n label: Mailing Street\n kind: String\n private: true\n MasterRecordId:\n label: Contact\n kind: Record\n options:\n labelField: Email\n module: Contact\n queryFields: []\n MobilePhone:\n label: Mobile\n kind: String\n private: true\n OtherCity:\n label: Other City\n kind: String\n private: true\n OtherCountry:\n label: Other Country\n kind: Select\n options:\n options:\n - Afghanistan\n - \xc3\x85land Islands\n - Albania\n - Algeria\n - American Samoa\n - Andorra\n - Angola\n - Anguilla\n - Antarctica\n - Antigua And Barbuda\n - Argentina\n - Armenia\n - Aruba\n - Australia\n - Austria\n - Azerbaijan\n - Bahamas\n - Bahrain\n - Bangladesh\n - Barbados\n - Belarus\n - Belgium\n - Belize\n - Benin\n - Bermuda\n - Bhutan\n - Bolivia\n - Bosnia And Herzegovina\n - Botswana\n - Bouvet Island\n - Brazil\n - British Indian Ocean Territory\n - Brunei Darussalam\n - Bulgaria\n - Burkina Faso\n - Burundi\n - Cambodia\n - Cameroon\n - Canada\n - Cape Verde\n - Cayman Islands\n - Central African Republic\n - Chad\n - Chile\n - China\n - Christmas Island\n - Cocos (Keeling) Islands\n - Colombia\n - Comoros\n - Congo\n - Congo; The Democratic Republic Of The\n - Cook Islands\n - Costa Rica\n - Cote D'ivoire\n - Croatia\n - Cuba\n - Cyprus\n - Czechia\n - Denmark\n - Djibouti\n - Dominica\n - Dominican Republic\n - Ecuador\n - Egypt\n - El Salvador\n - Equatorial Guinea\n - Eritrea\n - Estonia\n - Ethiopia\n - Falkland Islands (Malvinas)\n - Faroe Islands\n - Fiji\n - Finland\n - France\n - French Guiana\n - French Polynesia\n - French Southern Territories\n - Gabon\n - Gambia\n - Georgia\n - Germany\n - Ghana\n - Gibraltar\n - Greece\n - Greenland\n - Grenada\n - Guadeloupe\n - Guam\n - Guatemala\n - Guernsey\n - Guinea\n - Guinea-bissau\n - Guyana\n - Haiti\n - Heard Island And Mcdonald Islands\n - Holy See (Vatican City State)\n - Honduras\n - Hong Kong\n - Hungary\n - Iceland\n - India\n - Indonesia\n - Iran; Islamic Republic Of\n - Iraq\n - Ireland\n - Isle Of Man\n - Israel\n - Italy\n - Jamaica\n - Japan\n - Jersey\n - Jordan\n - Kazakhstan\n - Kenya\n - Kiribati\n - Korea; Democratic People's Republic Of\n - Korea; Republic Of\n - Kuwait\n - Kyrgyzstan\n - Lao People's Democratic Republic\n - Latvia\n - Lebanon\n - Lesotho\n - Liberia\n - Libyan Arab Jamahiriya\n - Liechtenstein\n - Lithuania\n - Luxembourg\n - Macao\n - Macedonia; The Former Yugoslav Republic Of\n - Madagascar\n - Malawi\n - Malaysia\n - Maldives\n - Mali\n - Malta\n - Marshall Islands\n - Martinique\n - Mauritania\n - Mauritius\n - Mayotte\n - Mexico\n - Micronesia; Federated States Of\n - Moldova; Republic Of\n - Monaco\n - Mongolia\n - Montenegro\n - Montserrat\n - Morocco\n - Mozambique\n - Myanmar\n - Namibia\n - Nauru\n - Nepal\n - Netherlands\n - Netherlands Antilles\n - New Caledonia\n - New Zealand\n - Nicaragua\n - Niger\n - Nigeria\n - Niue\n - Norfolk Island\n - Northern Mariana Islands\n - Norway\n - Oman\n - Pakistan\n - Palau\n - Palestinian Territory; Occupied\n - Panama\n - Papua New Guinea\n - Paraguay\n - Peru\n - Philippines\n - Pitcairn\n - Poland\n - Portugal\n - Puerto Rico\n - Qatar\n - Reunion\n - Romania\n - Russian Federation\n - Rwanda\n - Saint Helena\n - Saint Kitts And Nevis\n - Saint Lucia\n - Saint Pierre And Miquelon\n - Saint Vincent And The Grenadines\n - Samoa\n - San Marino\n - Sao Tome And Principe\n - Saudi Arabia\n - Senegal\n - Serbia\n - Seychelles\n - Sierra Leone\n - Singapore\n - Slovakia\n - Slovenia\n - Solomon Islands\n - Somalia\n - South Africa\n - South Georgia And The South Sandwich Islands\n - Spain\n - Sri Lanka\n - Sudan\n - Suriname\n - Svalbard And Jan Mayen\n - Swaziland\n - Sweden\n - Switzerland\n - Syrian Arab Republic\n - Taiwan; Province Of China\n - Tajikistan\n - Tanzania; United Republic Of\n - Thailand\n - Timor-leste\n - Togo\n - Tokelau\n - Tonga\n - Trinidad And Tobago\n - Tunisia\n - Turkey\n - Turkmenistan\n - Turks And Caicos Islands\n - Tuvalu\n - Uganda\n - Ukraine\n - United Arab Emirates\n - United Kingdom\n - United States\n - United States Minor Outlying Islands\n - Uruguay\n - Uzbekistan\n - Vanuatu\n - Venezuela\n - Viet Nam\n - Virgin Islands; British\n - Virgin Islands; U.S.\n - Wallis And Futuna\n - Western Sahara\n - Yemen\n - Zambia\n - Zimbabwe\n private: true\n OtherPhone:\n label: Other Phone\n kind: String\n private: true\n OtherPostalCode:\n label: Other Postal Code\n kind: String\n private: true\n OtherState:\n label: Other State\n kind: String\n private: true\n OtherStreet:\n label: Other Street\n kind: String\n private: true\n OwnerId:\n label: Contact Owner\n kind: User\n options:\n presetWithAuthenticated: false\n Phone:\n label: Phone\n kind: String\n private: true\n PhotoUrl:\n label: Photo URL\n kind: Url\n private: true\n RecordLabel:\n label: Record Label\n kind: String\n private: true\n ReportsToId:\n label: Reports To\n kind: Record\n options:\n labelField: Email\n module: Contact\n queryFields:\n - AccountId\n - Email\n - FirstName\n - LastName\n Salutation:\n label: Salutation\n kind: String\n private: true\n Title:\n label: Title\n kind: String\n private: true\n Twitter:\n label: Twitter\n kind: Url\n private: true\n Contract:\n name: Contract\n fields:\n AccountId:\n label: Account Name\n kind: Record\n options:\n labelField: AccountName\n module: Account\n queryFields:\n - AccountName\n ActivatedById:\n label: Activated By\n kind: Record\n options:\n labelField: Email\n module: Contact\n queryFields:\n - AccountId\n - Email\n - FirstName\n - LastName\n ActivatedDate:\n label: Activated Date\n kind: DateTime\n BillingCity:\n label: Billing City\n kind: String\n private: true\n BillingCountry:\n label: Billing Country\n kind: Select\n options:\n options:\n - Afghanistan\n - \xc3\x85land Islands\n - Albania\n - Algeria\n - American Samoa\n - Andorra\n - Angola\n - Anguilla\n - Antarctica\n - Antigua And Barbuda\n - Argentina\n - Armenia\n - Aruba\n - Australia\n - Austria\n - Azerbaijan\n - Bahamas\n - Bahrain\n - Bangladesh\n - Barbados\n - Belarus\n - Belgium\n - Belize\n - Benin\n - Bermuda\n - Bhutan\n - Bolivia\n - Bosnia And Herzegovina\n - Botswana\n - Bouvet Island\n - Brazil\n - British Indian Ocean Territory\n - Brunei Darussalam\n - Bulgaria\n - Burkina Faso\n - Burundi\n - Cambodia\n - Cameroon\n - Canada\n - Cape Verde\n - Cayman Islands\n - Central African Republic\n - Chad\n - Chile\n - China\n - Christmas Island\n - Cocos (Keeling) Islands\n - Colombia\n - Comoros\n - Congo\n - Congo; The Democratic Republic Of The\n - Cook Islands\n - Costa Rica\n - Cote D'ivoire\n - Croatia\n - Cuba\n - Cyprus\n - Czechia\n - Denmark\n - Djibouti\n - Dominica\n - Dominican Republic\n - Ecuador\n - Egypt\n - El Salvador\n - Equatorial Guinea\n - Eritrea\n - Estonia\n - Ethiopia\n - Falkland Islands (Malvinas)\n - Faroe Islands\n - Fiji\n - Finland\n - France\n - French Guiana\n - French Polynesia\n - French Southern Territories\n - Gabon\n - Gambia\n - Georgia\n - Germany\n - Ghana\n - Gibraltar\n - Greece\n - Greenland\n - Grenada\n - Guadeloupe\n - Guam\n - Guatemala\n - Guernsey\n - Guinea\n - Guinea-bissau\n - Guyana\n - Haiti\n - Heard Island And Mcdonald Islands\n - Holy See (Vatican City State)\n - Honduras\n - Hong Kong\n - Hungary\n - Iceland\n - India\n - Indonesia\n - Iran; Islamic Republic Of\n - Iraq\n - Ireland\n - Isle Of Man\n - Israel\n - Italy\n - Jamaica\n - Japan\n - Jersey\n - Jordan\n - Kazakhstan\n - Kenya\n - Kiribati\n - Korea; Democratic People's Republic Of\n - Korea; Republic Of\n - Kuwait\n - Kyrgyzstan\n - Lao People's Democratic Republic\n - Latvia\n - Lebanon\n - Lesotho\n - Liberia\n - Libyan Arab Jamahiriya\n - Liechtenstein\n - Lithuania\n - Luxembourg\n - Macao\n - Macedonia; The Former Yugoslav Republic Of\n - Madagascar\n - Malawi\n - Malaysia\n - Maldives\n - Mali\n - Malta\n - Marshall Islands\n - Martinique\n - Mauritania\n - Mauritius\n - Mayotte\n - Mexico\n - Micronesia; Federated States Of\n - Moldova; Republic Of\n - Monaco\n - Mongolia\n - Montenegro\n - Montserrat\n - Morocco\n - Mozambique\n - Myanmar\n - Namibia\n - Nauru\n - Nepal\n - Netherlands\n - Netherlands Antilles\n - New Caledonia\n - New Zealand\n - Nicaragua\n - Niger\n - Nigeria\n - Niue\n - Norfolk Island\n - Northern Mariana Islands\n - Norway\n - Oman\n - Pakistan\n - Palau\n - Palestinian Territory; Occupied\n - Panama\n - Papua New Guinea\n - Paraguay\n - Peru\n - Philippines\n - Pitcairn\n - Poland\n - Portugal\n - Puerto Rico\n - Qatar\n - Reunion\n - Romania\n - Russian Federation\n - Rwanda\n - Saint Helena\n - Saint Kitts And Nevis\n - Saint Lucia\n - Saint Pierre And Miquelon\n - Saint Vincent And The Grenadines\n - Samoa\n - San Marino\n - Sao Tome And Principe\n - Saudi Arabia\n - Senegal\n - Serbia\n - Seychelles\n - Sierra Leone\n - Singapore\n - Slovakia\n - Slovenia\n - Solomon Islands\n - Somalia\n - South Africa\n - South Georgia And The South Sandwich Islands\n - Spain\n - Sri Lanka\n - Sudan\n - Suriname\n - Svalbard And Jan Mayen\n - Swaziland\n - Sweden\n - Switzerland\n - Syrian Arab Republic\n - Taiwan; Province Of China\n - Tajikistan\n - Tanzania; United Republic Of\n - Thailand\n - Timor-leste\n - Togo\n - Tokelau\n - Tonga\n - Trinidad And Tobago\n - Tunisia\n - Turkey\n - Turkmenistan\n - Turks And Caicos Islands\n - Tuvalu\n - Uganda\n - Ukraine\n - United Arab Emirates\n - United Kingdom\n - United States\n - United States Minor Outlying Islands\n - Uruguay\n - Uzbekistan\n - Vanuatu\n - Venezuela\n - Viet Nam\n - Virgin Islands; British\n - Virgin Islands; U.S.\n - Wallis And Futuna\n - Western Sahara\n - Yemen\n - Zambia\n - Zimbabwe\n private: true\n BillingPostalCode:\n label: Billing Postal Code\n kind: String\n private: true\n BillingState:\n label: Billing State\n kind: String\n private: true\n BillingStreet:\n label: Billing Street\n kind: String\n private: true\n CompanySignedDate:\n label: Company Signed Date\n kind: DateTime\n CompanySignedId:\n label: Company Signed By\n kind: Record\n options:\n labelField: Email\n module: Contact\n queryFields:\n - AccountId\n - Email\n - FirstName\n - LastName\n ContractNumber:\n label: Contract Number\n kind: Number\n options:\n format: \"0000000\"\n precision: 0\n ContractTerm:\n label: Term (months)\n kind: Number\n options:\n format: 0\n precision: 0\n CustomerSignedDate:\n label: Customer Signed Date\n kind: DateTime\n CustomerSignedId:\n label: Customer Signed By\n kind: Record\n options:\n labelField: RecordLabel\n module: Contact\n queryFields:\n - RecordLabel\n CustomerSignedTitle:\n label: Customer Signed Title\n kind: String\n Description:\n label: Description\n kind: String\n options:\n multiLine: true\n useRichTextEditor: true\n EndDate:\n label: End Date\n kind: DateTime\n options:\n onlyDate: true\n File1:\n label: File 1\n kind: File\n options:\n allowDocuments: false\n allowImages: false\n mode: list\n File2:\n label: File 2\n kind: File\n options:\n allowDocuments: false\n allowImages: false\n mode: list\n File3:\n label: File 3\n kind: File\n options:\n allowDocuments: false\n allowImages: false\n mode: list\n File4:\n label: File 4\n kind: File\n options:\n allowDocuments: false\n allowImages: false\n mode: list\n LastActivityDate:\n label: Last Activity\n kind: DateTime\n LastApprovedDate:\n label: Last Approved Date\n kind: DateTime\n Name:\n label: Contract Name\n kind: String\n OwnerExpirationNotice:\n label: Owner Expiration Notice\n kind: Select\n options:\n options:\n - 3 Days\n - 5 Days\n - 7 Days\n - 14 Days\n - 30 Days\n - 45 Days\n - 60 Days\n - 75 Days\n - 90 Days\n - 120 Days\n - 180 Days\n - 240 Days\n - 300 Days\n - 365 Days\n OwnerId:\n label: Contract Owner\n kind: User\n options:\n presetWithAuthenticated: false\n RecordLabel:\n label: Record Label\n kind: String\n ShippingCity:\n label: Shipping City\n kind: String\n private: true\n ShippingCountry:\n label: Shipping Country\n kind: Select\n options:\n options:\n - Afghanistan\n - \xc3\x85land Islands\n - Albania\n - Algeria\n - American Samoa\n - Andorra\n - Angola\n - Anguilla\n - Antarctica\n - Antigua And Barbuda\n - Argentina\n - Armenia\n - Aruba\n - Australia\n - Austria\n - Azerbaijan\n - Bahamas\n - Bahrain\n - Bangladesh\n - Barbados\n - Belarus\n - Belgium\n - Belize\n - Benin\n - Bermuda\n - Bhutan\n - Bolivia\n - Bosnia And Herzegovina\n - Botswana\n - Bouvet Island\n - Brazil\n - British Indian Ocean Territory\n - Brunei Darussalam\n - Bulgaria\n - Burkina Faso\n - Burundi\n - Cambodia\n - Cameroon\n - Canada\n - Cape Verde\n - Cayman Islands\n - Central African Republic\n - Chad\n - Chile\n - China\n - Christmas Island\n - Cocos (Keeling) Islands\n - Colombia\n - Comoros\n - Congo\n - Congo; The Democratic Republic Of The\n - Cook Islands\n - Costa Rica\n - Cote D'ivoire\n - Croatia\n - Cuba\n - Cyprus\n - Czechia\n - Denmark\n - Djibouti\n - Dominica\n - Dominican Republic\n - Ecuador\n - Egypt\n - El Salvador\n - Equatorial Guinea\n - Eritrea\n - Estonia\n - Ethiopia\n - Falkland Islands (Malvinas)\n - Faroe Islands\n - Fiji\n - Finland\n - France\n - French Guiana\n - French Polynesia\n - French Southern Territories\n - Gabon\n - Gambia\n - Georgia\n - Germany\n - Ghana\n - Gibraltar\n - Greece\n - Greenland\n - Grenada\n - Guadeloupe\n - Guam\n - Guatemala\n - Guernsey\n - Guinea\n - Guinea-bissau\n - Guyana\n - Haiti\n - Heard Island And Mcdonald Islands\n - Holy See (Vatican City State)\n - Honduras\n - Hong Kong\n - Hungary\n - Iceland\n - India\n - Indonesia\n - Iran; Islamic Republic Of\n - Iraq\n - Ireland\n - Isle Of Man\n - Israel\n - Italy\n - Jamaica\n - Japan\n - Jersey\n - Jordan\n - Kazakhstan\n - Kenya\n - Kiribati\n - Korea; Democratic People's Republic Of\n - Korea; Republic Of\n - Kuwait\n - Kyrgyzstan\n - Lao People's Democratic Republic\n - Latvia\n - Lebanon\n - Lesotho\n - Liberia\n - Libyan Arab Jamahiriya\n - Liechtenstein\n - Lithuania\n - Luxembourg\n - Macao\n - Macedonia; The Former Yugoslav Republic Of\n - Madagascar\n - Malawi\n - Malaysia\n - Maldives\n - Mali\n - Malta\n - Marshall Islands\n - Martinique\n - Mauritania\n - Mauritius\n - Mayotte\n - Mexico\n - Micronesia; Federated States Of\n - Moldova; Republic Of\n - Monaco\n - Mongolia\n - Montenegro\n - Montserrat\n - Morocco\n - Mozambique\n - Myanmar\n - Namibia\n - Nauru\n - Nepal\n - Netherlands\n - Netherlands Antilles\n - New Caledonia\n - New Zealand\n - Nicaragua\n - Niger\n - Nigeria\n - Niue\n - Norfolk Island\n - Northern Mariana Islands\n - Norway\n - Oman\n - Pakistan\n - Palau\n - Palestinian Territory; Occupied\n - Panama\n - Papua New Guinea\n - Paraguay\n - Peru\n - Philippines\n - Pitcairn\n - Poland\n - Portugal\n - Puerto Rico\n - Qatar\n - Reunion\n - Romania\n - Russian Federation\n - Rwanda\n - Saint Helena\n - Saint Kitts And Nevis\n - Saint Lucia\n - Saint Pierre And Miquelon\n - Saint Vincent And The Grenadines\n - Samoa\n - San Marino\n - Sao Tome And Principe\n - Saudi Arabia\n - Senegal\n - Serbia\n - Seychelles\n - Sierra Leone\n - Singapore\n - Slovakia\n - Slovenia\n - Solomon Islands\n - Somalia\n - South Africa\n - South Georgia And The South Sandwich Islands\n - Spain\n - Sri Lanka\n - Sudan\n - Suriname\n - Svalbard And Jan Mayen\n - Swaziland\n - Sweden\n - Switzerland\n - Syrian Arab Republic\n - Taiwan; Province Of China\n - Tajikistan\n - Tanzania; United Republic Of\n - Thailand\n - Timor-leste\n - Togo\n - Tokelau\n - Tonga\n - Trinidad And Tobago\n - Tunisia\n - Turkey\n - Turkmenistan\n - Turks And Caicos Islands\n - Tuvalu\n - Uganda\n - Ukraine\n - United Arab Emirates\n - United Kingdom\n - United States\n - United States Minor Outlying Islands\n - Uruguay\n - Uzbekistan\n - Vanuatu\n - Venezuela\n - Viet Nam\n - Virgin Islands; British\n - Virgin Islands; U.S.\n - Wallis And Futuna\n - Western Sahara\n - Yemen\n - Zambia\n - Zimbabwe\n private: true\n ShippingPostalCode:\n label: Shipping Postal Code\n kind: String\n private: true\n ShippingState:\n label: Shipping State\n kind: String\n private: true\n ShippingStreet:\n label: Shipping Street\n kind: String\n private: true\n SpecialTerms:\n label: Special Terms\n kind: String\n options:\n multiLine: true\n useRichTextEditor: true\n StartDate:\n label: Start Date\n kind: DateTime\n options:\n onlyDate: true\n Status:\n label: Status\n kind: Select\n options:\n options:\n - Draft\n - Activated\n - In Approval Process\n - Inactive (Expired)\n - Inactive (Deactivated)\n ContractContactRole:\n name: ContractContactRole\n fields:\n ContactId:\n label: Contact\n kind: Record\n options:\n labelField: Email\n module: Contact\n queryFields:\n - AccountId\n - Email\n - FirstName\n - LastName\n ContractId:\n label: Contract\n kind: Record\n options:\n labelField: Name\n module: Contract\n queryFields:\n - AccountId\n - Name\n - ContractNumber\n IsPrimary:\n label: Primary\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n Role:\n label: Role\n kind: Select\n options:\n options:\n - Business User\n - Decision Maker\n - Economic Buyer\n - Economic Decision Maker\n - Evaluator\n - Executive Sponsor\n - Gatekeeper\n - Influencer\n - Project Manager\n - Technical Buyer\n - Other\n ContractLineItem:\n name: ContractLineItem\n fields:\n ContractId:\n label: 'Contract '\n kind: Record\n options:\n labelField: Name\n module: Contract\n queryFields:\n - AccountId\n - Name\n - ContractNumber\n Description:\n label: Description\n kind: String\n options:\n multiLine: true\n Discount:\n label: Discount\n kind: Number\n options:\n format: 0\n precision: 0\n EndDate:\n label: End Date\n kind: DateTime\n options:\n onlyDate: true\n LineItemNumber:\n label: Line Item Number\n kind: String\n ListPrice:\n label: List Price\n kind: Number\n options:\n format: 0\n precision: \"2\"\n suffix: \xe2\x82\xac\n PricebookEntryId:\n label: Price Book Entry\n kind: Record\n options:\n labelField: Name\n module: PricebookEntry\n queryFields:\n - ProductCode\n - Name\n Quantity:\n label: Quantity\n kind: Number\n options:\n format: 0\n precision: 0\n StartDate:\n label: Start Date\n kind: DateTime\n options:\n onlyDate: true\n Status:\n label: Status\n kind: Select\n options:\n options:\n - Active\n - Expired\n - Inactive\n Subtotal:\n label: 'Subtotal '\n kind: Number\n options:\n format: 0\n precision: \"2\"\n suffix: \xe2\x82\xac\n TotalPrice:\n label: Total Price\n kind: Number\n options:\n format: 0\n precision: \"2\"\n suffix: \xe2\x82\xac\n UnitPrice:\n label: Sales Price\n kind: Number\n options:\n format: 0\n precision: 2\n suffix: \xe2\x82\xac\n Settings:\n name: Settings\n fields:\n CaseNextNumber:\n label: Next number for a case (updates after saving a new case)\n kind: Number\n options:\n format: \"0000000\"\n precision: 0\n ContractDefaultTime:\n label: Default time for a contract (in months)\n kind: Number\n options:\n format: 0\n precision: 0\n ContractNextNumber:\n label: Next number for a contract (updates after saving a new contract)\n kind: Number\n options:\n format: \"0000000\"\n precision: 0\n OpportunityCloseDateDays:\n label: Days for an opportunity to close\n kind: Number\n options:\n format: 0\n precision: 0\n OpportunityForecaseCategory:\n label: Forecast Category\n kind: String\n OpportunityProbability:\n label: Probability\n kind: Number\n options:\n format: 0\n precision: 0\n suffix: '%'\n OpportunityStagename:\n label: Stage\n kind: String\n QuoteExpirationDays:\n label: Days for a quote to expire\n kind: Number\n options:\n format: 0\n precision: 0\n QuoteNextNumber:\n label: Next number for a quote (updates after saving a new quote)\n kind: Number\n options:\n format: \"0000000\"\n precision: 0\n SolutionNextNumber:\n label: Next number for a solution (updates after saving a new solution)\n kind: Number\n options:\n format: \"0000000\"\n precision: 0\n EmailTemplate:\n name: EmailTemplate\n fields:\n Body:\n label: Body\n kind: String\n options:\n multiLine: true\n useRichTextEditor: true\n Description:\n label: Description\n kind: String\n options:\n multiLine: true\n DeveloperName:\n label: Template Unique Name\n kind: String\n options:\n multiLine: true\n useRichTextEditor: true\n IsActive:\n label: Available For Use\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n LastUsedDate:\n label: Last Used Date\n kind: DateTime\n Markup:\n label: Markup\n kind: String\n options:\n multiLine: true\n useRichTextEditor: true\n Name:\n label: Email Template Name\n kind: String\n Subject:\n label: Subject\n kind: String\n TemplateStyle:\n label: Style\n kind: Select\n options:\n options:\n - \"\"\n TemplateType:\n label: Template Type\n kind: Select\n options:\n options:\n - \"\"\n Entitlement:\n name: Entitlement\n fields:\n AccountId:\n label: Account Name\n kind: Record\n options:\n labelField: AccountName\n module: Account\n queryFields:\n - AccountName\n CasesPerEntitlement:\n label: Cases Per Entitlement\n kind: Number\n options:\n format: 0\n precision: 0\n ContractLineItemId:\n label: Contract Line Item\n kind: Record\n options:\n labelField: ContractId\n module: ContractLineItem\n queryFields:\n - Description\n - LineItemNumber\n - ContractId\n EndDate:\n label: End Date\n kind: DateTime\n EntitlementProcess:\n label: Entitlement Process\n kind: String\n IsPerIncident:\n label: Per Incident\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n LastModifiedById:\n label: Last Modified By\n kind: User\n options:\n presetWithAuthenticated: false\n LastModifiedDate:\n label: Last Modified Date\n kind: DateTime\n LastViewedDate:\n label: Last Viewed Date\n kind: DateTime\n Name:\n label: Entitlement Name\n kind: String\n options:\n multiLine: true\n useRichTextEditor: true\n RemainingCases:\n label: Remaining Cases\n kind: Number\n options:\n format: 0\n precision: 0\n StartDate:\n label: Start Date\n kind: DateTime\n Status:\n label: Status\n kind: Select\n options:\n options:\n - Active\n - Expired\n - Inactive\n Type:\n label: Type\n kind: Select\n options:\n options:\n - Web Support\n - Phone Support\n - Email Support\n - Dedicated Support\n EntitlementContact:\n name: EntitlementContact\n fields:\n CaseMilestoneTypeId:\n label: Casemilestone Type\n kind: Record\n options:\n labelField: Name\n module: MilestoneType\n queryFields:\n - Name\n ContactId:\n label: Contact Name\n kind: Record\n options:\n labelField: Email\n module: Contact\n queryFields:\n - AccountId\n - Email\n - FirstName\n - LastName\n EntitlementId:\n label: Entitlement Name\n kind: Record\n options:\n labelField: Name\n module: Entitlement\n queryFields:\n - AccountId\n - Name\n Name:\n label: Entitlement Contact\n kind: String\n options:\n multiLine: true\n useRichTextEditor: true\n EntitlementTemplate:\n name: EntitlementTemplate\n fields:\n BusinessHours:\n label: Business Hours\n kind: String\n CasesPerEntitlement:\n label: Cases Per Entitlement\n kind: Number\n options:\n format: 0\n precision: 0\n IsPerIncident:\n label: Per Incident\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n Name:\n label: Entitlement Template Name\n kind: String\n Term:\n label: Term (Days)\n kind: Number\n options:\n format: 0\n precision: 0\n Type:\n label: Type\n kind: Select\n options:\n options:\n - Email\n - Messaging\n - Phone\n - Web\n Event:\n name: Event\n fields:\n AccountId:\n label: Account\n kind: Record\n options:\n labelField: AccountName\n module: Account\n queryFields:\n - AccountName\n ActivityDate:\n label: Start\n kind: DateTime\n CaseId:\n label: Case\n kind: Record\n options:\n labelField: Subject\n module: Case\n queryFields:\n - AccountId\n - CaseNumber\n - Subject\n ContactId:\n label: Contact\n kind: Record\n options:\n labelField: RecordLabel\n module: Contact\n queryFields:\n - RecordLabel\n ContractId:\n label: Contract\n kind: Record\n options:\n labelField: Name\n module: Contract\n queryFields:\n - AccountId\n - Name\n - ContractNumber\n Description:\n label: Description\n kind: String\n options:\n multiLine: true\n useRichTextEditor: true\n DurationInMinutes:\n label: Duration\n kind: Number\n options:\n format: 0\n precision: 0\n EndDateTime:\n label: End\n kind: DateTime\n IsAllDayEvent:\n label: All-Day Event\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n IsArchived:\n label: Archived\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n IsPrivate:\n label: Private\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n IsReminderSet:\n label: Reminder Set\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n LeadId:\n label: Lead\n kind: Record\n options:\n labelField: RecordLabel\n module: Lead\n queryFields:\n - RecordLabel\n Location:\n label: Location\n kind: String\n OpportunityId:\n label: Opportunity\n kind: Record\n options:\n labelField: RecordLabel\n module: Opportunity\n queryFields:\n - AccountId\n - Name\n OwnerId:\n label: Assigned To\n kind: User\n options:\n presetWithAuthenticated: false\n QuoteId:\n label: Quote\n kind: Record\n options:\n labelField: Name\n module: Quote\n queryFields:\n - AccountId\n - Name\n - QuoteNumber\n ReminderDateTime:\n label: Reminder Date/Time\n kind: DateTime\n Subject:\n label: Subject\n kind: String\n Type:\n label: Type\n kind: Select\n options:\n options:\n - Call\n - Email\n - Meeting\n - Send Letter / Quote\n - Other\n Idea:\n name: Idea\n fields:\n Body:\n label: Idea Body\n kind: String\n options:\n multiLine: true\n useRichTextEditor: true\n Categories:\n label: Categories\n kind: Select\n options:\n options:\n - Ecosystem\n - Human Resources\n - Marketing\n - Product\n - Sales\n - Services\n - Support\n CreatorName:\n label: Name of Creator\n kind: String\n ParentIdeaId:\n label: Parent Idea\n kind: Record\n options:\n labelField: Title\n module: Idea\n queryFields:\n - Title\n Status:\n label: Status\n kind: Select\n options:\n options:\n - New\n - Under Consideration\n - Accepted\n - Implemented\n - Duplicate\n Title:\n label: Title\n kind: String\n VoteScore:\n label: Vote Score\n kind: Number\n options:\n format: 0\n precision: 0\n VoteTotal:\n label: Vote Total\n kind: Number\n options:\n format: 0\n precision: 0\n Lead:\n name: Lead\n fields:\n AnnualRevenue:\n label: Annual Revenue\n kind: Select\n options:\n options:\n - Less Than 500,000\n - 500,000 To 1 Million\n - 1 To 2.5 Million\n - 2.5 To 5 Million\n - 5 To 10 Million\n - 10 To 20 Million\n - 20 To 50 Million\n - 50 To 100 Million\n - 100 To 500 Million\n selectType: default\n City:\n label: Address City\n kind: String\n private: true\n Company:\n label: Company\n kind: String\n required: true\n ConvertedAccountId:\n label: Converted Account\n kind: Record\n options:\n labelField: AccountName\n module: Account\n queryFields:\n - AccountName\n selectType: default\n ConvertedContactId:\n label: Converted Contact\n kind: Record\n options:\n labelField: RecordLabel\n module: Contact\n queryFields:\n - RecordLabel\n selectType: default\n ConvertedDate:\n label: Converted Date\n kind: DateTime\n ConvertedOpportunityId:\n label: Converted Opportunity\n kind: Record\n options:\n labelField: Name\n module: Opportunity\n queryFields:\n - AccountId\n - Name\n selectType: default\n Country:\n label: Address Country\n kind: Select\n options:\n options:\n - Afghanistan\n - \xc3\x85land Islands\n - Albania\n - Algeria\n - American Samoa\n - Andorra\n - Angola\n - Anguilla\n - Antarctica\n - Antigua And Barbuda\n - Argentina\n - Armenia\n - Aruba\n - Australia\n - Austria\n - Azerbaijan\n - Bahamas\n - Bahrain\n - Bangladesh\n - Barbados\n - Belarus\n - Belgium\n - Belize\n - Benin\n - Bermuda\n - Bhutan\n - Bolivia\n - Bosnia And Herzegovina\n - Botswana\n - Bouvet Island\n - Brazil\n - British Indian Ocean Territory\n - Brunei Darussalam\n - Bulgaria\n - Burkina Faso\n - Burundi\n - Cambodia\n - Cameroon\n - Canada\n - Cape Verde\n - Cayman Islands\n - Central African Republic\n - Chad\n - Chile\n - China\n - Christmas Island\n - Cocos (Keeling) Islands\n - Colombia\n - Comoros\n - Congo\n - Congo; The Democratic Republic Of The\n - Cook Islands\n - Costa Rica\n - Cote D'ivoire\n - Croatia\n - Cuba\n - Cyprus\n - Czechia\n - Denmark\n - Djibouti\n - Dominica\n - Dominican Republic\n - Ecuador\n - Egypt\n - El Salvador\n - Equatorial Guinea\n - Eritrea\n - Estonia\n - Ethiopia\n - Falkland Islands (Malvinas)\n - Faroe Islands\n - Fiji\n - Finland\n - France\n - French Guiana\n - French Polynesia\n - French Southern Territories\n - Gabon\n - Gambia\n - Georgia\n - Germany\n - Ghana\n - Gibraltar\n - Greece\n - Greenland\n - Grenada\n - Guadeloupe\n - Guam\n - Guatemala\n - Guernsey\n - Guinea\n - Guinea-bissau\n - Guyana\n - Haiti\n - Heard Island And Mcdonald Islands\n - Holy See (Vatican City State)\n - Honduras\n - Hong Kong\n - Hungary\n - Iceland\n - India\n - Indonesia\n - Iran; Islamic Republic Of\n - Iraq\n - Ireland\n - Isle Of Man\n - Israel\n - Italy\n - Jamaica\n - Japan\n - Jersey\n - Jordan\n - Kazakhstan\n - Kenya\n - Kiribati\n - Korea; Democratic People's Republic Of\n - Korea; Republic Of\n - Kuwait\n - Kyrgyzstan\n - Lao People's Democratic Republic\n - Latvia\n - Lebanon\n - Lesotho\n - Liberia\n - Libyan Arab Jamahiriya\n - Liechtenstein\n - Lithuania\n - Luxembourg\n - Macao\n - Macedonia; The Former Yugoslav Republic Of\n - Madagascar\n - Malawi\n - Malaysia\n - Maldives\n - Mali\n - Malta\n - Marshall Islands\n - Martinique\n - Mauritania\n - Mauritius\n - Mayotte\n - Mexico\n - Micronesia; Federated States Of\n - Moldova; Republic Of\n - Monaco\n - Mongolia\n - Montenegro\n - Montserrat\n - Morocco\n - Mozambique\n - Myanmar\n - Namibia\n - Nauru\n - Nepal\n - Netherlands\n - Netherlands Antilles\n - New Caledonia\n - New Zealand\n - Nicaragua\n - Niger\n - Nigeria\n - Niue\n - Norfolk Island\n - Northern Mariana Islands\n - Norway\n - Oman\n - Pakistan\n - Palau\n - Palestinian Territory; Occupied\n - Panama\n - Papua New Guinea\n - Paraguay\n - Peru\n - Philippines\n - Pitcairn\n - Poland\n - Portugal\n - Puerto Rico\n - Qatar\n - Reunion\n - Romania\n - Russian Federation\n - Rwanda\n - Saint Helena\n - Saint Kitts And Nevis\n - Saint Lucia\n - Saint Pierre And Miquelon\n - Saint Vincent And The Grenadines\n - Samoa\n - San Marino\n - Sao Tome And Principe\n - Saudi Arabia\n - Senegal\n - Serbia\n - Seychelles\n - Sierra Leone\n - Singapore\n - Slovakia\n - Slovenia\n - Solomon Islands\n - Somalia\n - South Africa\n - South Georgia And The South Sandwich Islands\n - Spain\n - Sri Lanka\n - Sudan\n - Suriname\n - Svalbard And Jan Mayen\n - Swaziland\n - Sweden\n - Switzerland\n - Syrian Arab Republic\n - Taiwan; Province Of China\n - Tajikistan\n - Tanzania; United Republic Of\n - Thailand\n - Timor-leste\n - Togo\n - Tokelau\n - Tonga\n - Trinidad And Tobago\n - Tunisia\n - Turkey\n - Turkmenistan\n - Turks And Caicos Islands\n - Tuvalu\n - Uganda\n - Ukraine\n - United Arab Emirates\n - United Kingdom\n - United States\n - United States Minor Outlying Islands\n - Uruguay\n - Uzbekistan\n - Vanuatu\n - Venezuela\n - Viet Nam\n - Virgin Islands; British\n - Virgin Islands; U.S.\n - Wallis And Futuna\n - Western Sahara\n - Yemen\n - Zambia\n - Zimbabwe\n selectType: default\n private: true\n Description:\n label: Description\n kind: String\n options:\n multiLine: true\n useRichTextEditor: true\n DoNotCall:\n label: Do Not Call\n kind: Bool\n options:\n falseLabel: \"False\"\n trueLabel: Do Not Call\n Email:\n label: Email\n kind: String\n private: true\n Facebook:\n label: Facebook\n kind: Url\n private: true\n Fax:\n label: Fax\n kind: String\n private: true\n FirstName:\n label: First Name\n kind: String\n private: true\n HasOptedOutOfEmail:\n label: Email Opt Out\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n HasOptedOutOfFax:\n label: Fax Opt Out\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n Industry:\n label: Industry\n kind: Select\n options:\n options:\n - \"\"\n - Agriculture\n - Apparel\n - Banking\n - Biotechnology\n - Chemicals\n - Communications\n - Construction\n - Consulting\n - Education\n - Electronics\n - Energy\n - Engineering\n - Entertainment\n - Environmental\n - Finance\n - Food & Beverage\n - Government\n - Healthcare\n - Hospitality\n - Insurance\n - Machinery\n - Manufacturing\n - Media\n - Not For Profit\n - Other\n - Recreation\n - Retail\n - Shipping\n - Technology\n - Telecommunications\n - Transportation\n - Utilities\n selectType: default\n IsConverted:\n label: Converted\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n IsDeleted:\n label: Deleted\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n IsUnreadByOwner:\n label: Unread By Owner\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n LastName:\n label: Last Name\n kind: String\n private: true\n required: true\n LastTransferDate:\n label: Last Transfer Date\n kind: DateTime\n LastViewedDate:\n label: Last Viewed Date\n kind: DateTime\n LeadSource:\n label: Lead Source\n kind: Select\n options:\n options:\n - Customer Referral\n - Direct\n - Employee Referral\n - Event\n - Existing Customer\n - Inbound Call\n - Outbound List\n - Partner Referral\n - Seminar\n - Social Media\n - Webinar\n - Website (Organic)\n - Website (PPC)\n - Word of Mouth\n - Other\n selectType: default\n LinkedIn:\n label: LinkedIn\n kind: Url\n private: true\n MasterRecordId:\n label: Lead\n kind: Record\n options:\n labelField: Email\n module: Lead\n queryFields: []\n selectType: default\n MobilePhone:\n label: Mobile\n kind: String\n NumberOfEmployees:\n label: No. of Employees (exact)\n kind: Number\n options:\n format: 0\n precision: 0\n NumberOfEmployeesRange:\n label: No. of Employees (range)\n kind: Select\n options:\n options:\n - 1 - 9\n - 10 - 24\n - 25 - 49\n - 50 - 99\n - 100 - 249\n - 250 - 499\n - 500 - 999\n - 1000 - 2499\n - 2500 - 4999\n - 5000 - 9999\n - Over 10000\n selectType: default\n OwnerId:\n label: Lead Owner\n kind: User\n options:\n presetWithAuthenticated: false\n selectType: default\n Phone:\n label: Phone\n kind: String\n private: true\n PostalCode:\n label: Address Postal Code\n kind: String\n private: true\n Rating:\n label: Rating\n kind: Select\n options:\n options:\n - \xe2\x98\x86\xe2\x98\x86\xe2\x98\x86\xe2\x98\x86\xe2\x98\x86\n - \xe2\x98\x85\xe2\x98\x86\xe2\x98\x86\xe2\x98\x86\xe2\x98\x86\n - \xe2\x98\x85\xe2\x98\x85\xe2\x98\x86\xe2\x98\x86\xe2\x98\x86\n - \xe2\x98\x85\xe2\x98\x85\xe2\x98\x85\xe2\x98\x86\xe2\x98\x86\n - \xe2\x98\x85\xe2\x98\x85\xe2\x98\x85\xe2\x98\x85\xe2\x98\x86\n - \xe2\x98\x85\xe2\x98\x85\xe2\x98\x85\xe2\x98\x85\xe2\x98\x85\n selectType: default\n RecordLabel:\n label: Record Label\n kind: String\n private: true\n SICCode:\n label: SIC Code\n kind: Number\n options:\n format: 0\n precision: 0\n Salutation:\n label: Salutation\n kind: String\n State:\n label: Address State\n kind: String\n private: true\n Status:\n label: Lead Status\n kind: Select\n options:\n options:\n - New\n - Assigned\n - In Progress\n - Converted\n - Recycled\n - Dead\n selectType: default\n Street:\n label: Address Street\n kind: String\n private: true\n Title:\n label: Title\n kind: String\n Twitter:\n label: Twitter\n kind: Url\n private: true\n Website:\n label: Website\n kind: Url\n MilestoneType:\n name: MilestoneType\n fields:\n Description:\n label: Description\n kind: String\n options:\n multiLine: true\n Name:\n label: Name\n kind: String\n RecurrenceType:\n label: Recurrence Type\n kind: Select\n options:\n options:\n - No Recurrence\n - Independent\n - Sequential\n Note:\n name: Note\n fields:\n AccountContactRoleId:\n label: Account Contact Role\n kind: Record\n options:\n labelField: Role\n module: AccountContactRole\n queryFields:\n - AccountId\n - ContactId\n - Role\n AccountId:\n label: Account\n kind: Record\n options:\n labelField: AccountName\n module: Account\n queryFields:\n - AccountName\n Body:\n label: Body\n kind: String\n options:\n multiLine: true\n useRichTextEditor: true\n CampaignId:\n label: Campaign\n kind: Record\n options:\n labelField: Name\n module: Campaigns\n queryFields:\n - Name\n CampaignMemberId:\n label: Campaign Member\n kind: Record\n options:\n labelField: CampaignId\n module: CampaignMember\n queryFields:\n - CampaignId\n - ContactId\n - LeadId\n CaseContactRoleId:\n label: Case Contact Role\n kind: Record\n options:\n labelField: Role\n module: CaseContactRole\n queryFields:\n - CaseId\n - Role\n CaseId:\n label: Case\n kind: Record\n options:\n labelField: Subject\n module: Case\n queryFields:\n - AccountId\n - CaseNumber\n - Subject\n CaseMilestoneId:\n label: Case Milestone\n kind: Record\n options:\n labelField: CaseId\n module: CaseMilestone\n queryFields:\n - CaseId\n - MilestoneTypeId\n ContactId:\n label: Contact\n kind: Record\n options:\n labelField: RecordLabel\n module: Contact\n queryFields:\n - RecordLabel\n ContractContactRoleId:\n label: Contract Contact Role\n kind: Record\n options:\n labelField: ContactId\n module: ContractContactRole\n queryFields:\n - ContactId\n - ContractId\n ContractId:\n label: Contract\n kind: Record\n options:\n labelField: Name\n module: Contract\n queryFields:\n - AccountId\n - Name\n - ContractNumber\n ContractLineItemId:\n label: Contract Line Item\n kind: Record\n options:\n labelField: PricebookEntryId\n module: ContractLineItem\n queryFields:\n - PricebookEntryId\n EmailTemplateId:\n label: Email Template\n kind: Record\n options:\n labelField: Subject\n module: EmailTemplate\n queryFields:\n - Subject\n EntitlementContactId:\n label: Entitlement Contact\n kind: Record\n options:\n labelField: EntitlementId\n module: EntitlementContact\n queryFields:\n - EntitlementId\n EntitlementId:\n label: Entitlement\n kind: Record\n options:\n labelField: Name\n module: Entitlement\n queryFields:\n - Name\n EntitlementTemplateId:\n label: Entitlement Template\n kind: Record\n options:\n labelField: Name\n module: EntitlementTemplate\n queryFields:\n - Name\n EventId:\n label: Event\n kind: Record\n options:\n labelField: Subject\n module: Event\n queryFields:\n - Subject\n FileAdd1:\n label: File 1\n kind: File\n options:\n allowDocuments: false\n allowImages: false\n mode: grid\n FileAdd2:\n label: File 2\n kind: File\n options:\n allowDocuments: false\n allowImages: false\n mode: grid\n FileAdd3:\n label: File 3\n kind: File\n options:\n allowDocuments: false\n allowImages: false\n mode: grid\n FileAdd4:\n label: File 4\n kind: File\n options:\n allowDocuments: false\n allowImages: false\n mode: grid\n IsPrivate:\n label: Private\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n LeadId:\n label: Lead\n kind: Record\n options:\n labelField: RecordLabel\n module: Lead\n queryFields:\n - RecordLabel\n OpportunityCompetitorId:\n label: Opportunity Competitor\n kind: Record\n options:\n labelField: CompetitorName\n module: OpportunityCompetitor\n queryFields:\n - CompetitorName\n OpportunityContactRoleId:\n label: Opportunity Contact Role\n kind: Record\n options:\n labelField: ContactId\n module: OpportunityContactRole\n queryFields:\n - ContactId\n - Role\n OpportunityId:\n label: Opportunity\n kind: Record\n options:\n labelField: Name\n module: Opportunity\n queryFields:\n - AccountId\n - Name\n OpportunityLineItemId:\n label: Opportunity Line Item\n kind: Record\n options:\n labelField: ProductId\n module: OpportunityLineItem\n queryFields:\n - Description\n - Name\n - ProductId\n PricebookEntryId:\n label: Pricebook Entry\n kind: Record\n options:\n labelField: Name\n module: PricebookEntry\n queryFields:\n - ProductCode\n - Name\n PricebookId:\n label: Pricebook\n kind: Record\n options:\n labelField: Name\n module: Pricebook\n queryFields:\n - Name\n ProductId:\n label: Product\n kind: Record\n options:\n labelField: Name\n module: Product\n queryFields:\n - ProductCode\n - Name\n QuoteId:\n label: Quote\n kind: Record\n options:\n labelField: Name\n module: Quote\n queryFields:\n - AccountId\n - Name\n - QuoteNumber\n TaskId:\n label: Task\n kind: Record\n options:\n labelField: Subject\n module: Task\n queryFields:\n - Subject\n Title:\n label: Title\n kind: String\n Opportunity:\n name: Opportunity\n fields:\n AccountId:\n label: Account Name\n kind: Record\n options:\n labelField: AccountName\n module: Account\n queryFields:\n - AccountName\n selectType: default\n Amount:\n label: Amount\n kind: Number\n options:\n format: 0\n precision: 2\n suffix: \xe2\x82\xac\n Authority:\n label: Authority\n kind: String\n options:\n multiLine: true\n Budget:\n label: Budget\n kind: String\n options:\n multiLine: true\n CampaignId:\n label: Primary Campaign Source\n kind: Record\n options:\n labelField: Name\n module: Campaigns\n queryFields:\n - Name\n selectType: default\n CloseDate:\n label: Close Date\n kind: DateTime\n Competition:\n label: Competition\n kind: String\n options:\n multiLine: true\n ContractId:\n label: Contract\n kind: Record\n options:\n labelField: Name\n module: Contract\n queryFields:\n - AccountId\n - Name\n - ContractNumber\n selectType: default\n Description:\n label: Description\n kind: String\n options:\n multiLine: true\n useRichTextEditor: true\n ExpectedRevenue:\n label: Expected Revenue\n kind: Number\n options:\n format: 0\n precision: 2\n suffix: \xe2\x82\xac\n FiscalQuarter:\n label: Fiscal Period\n kind: Number\n options:\n format: 0\n precision: 0\n FiscalYear:\n label: Fiscal Period\n kind: Number\n options:\n format: 0\n precision: 0\n ForecastCategory:\n label: Forecast Category\n kind: Select\n options:\n options:\n - Pipeline\n - Best Case\n - Commit\n selectType: default\n HasOpportunityLineItem:\n label: Has Line Item\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n IsClosed:\n label: Closed\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n IsPrivate:\n label: Private\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n IsWon:\n label: Won\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n LeadSource:\n label: Lead Source\n kind: Select\n options:\n options:\n - Customer Referral\n - Direct\n - Employee Referral\n - Event\n - Existing Customer\n - Inbound Call\n - Outbound List\n - Partner Referral\n - Seminar\n - Social Media\n - Webinar\n - Website (Organic)\n - Website (PPC)\n - Word of Mouth\n - Other\n selectType: default\n Name:\n label: Opportunity Name\n kind: String\n Need:\n label: Need\n kind: String\n options:\n multiLine: true\n NextStep:\n label: Next Step\n kind: String\n OwnerId:\n label: Opportunity Owner\n kind: User\n options:\n presetWithAuthenticated: false\n selectType: default\n PricebookId:\n label: Price Book\n kind: Record\n options:\n labelField: Name\n module: Pricebook\n queryFields:\n - Name\n selectType: default\n Probability:\n label: Probability (%)\n kind: Number\n options:\n format: 0\n precision: 0\n suffix: '%'\n RecordLabel:\n label: Record Label\n kind: String\n StageName:\n label: Stage\n kind: Select\n options:\n options:\n - Qualification\n - Need Analysis\n - Proposal\n - Negotiation\n - Closed Won\n - Closed Lost\n selectType: default\n Timeline:\n label: Timeline\n kind: String\n options:\n multiLine: true\n TotalOpportunityQuantity:\n label: Quantity\n kind: Number\n options:\n format: 0\n precision: 0\n Type:\n label: Type\n kind: Select\n options:\n options:\n - Exisiting Business\n - New Business\n selectType: default\n OpportunityCompetitor:\n name: OpportunityCompetitor\n fields:\n CompetitorName:\n label: Competitor Name\n kind: String\n OpportunityId:\n label: Opportunity\n kind: Record\n options:\n labelField: Name\n module: Opportunity\n queryFields:\n - AccountId\n - Name\n Strengths:\n label: Strengths\n kind: String\n options:\n multiLine: true\n useRichTextEditor: true\n Weaknesses:\n label: Weaknesses\n kind: String\n options:\n multiLine: true\n useRichTextEditor: true\n OpportunityContactRole:\n name: OpportunityContactRole\n fields:\n ContactId:\n label: Contact\n kind: Record\n options:\n labelField: RecordLabel\n module: Contact\n queryFields:\n - RecordLabel\n IsPrimary:\n label: Primary\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n OpportunityId:\n label: Opportunity\n kind: Record\n options:\n labelField: Name\n module: Opportunity\n queryFields: []\n Role:\n label: Role\n kind: Select\n options:\n options:\n - Business User\n - Decision Maker\n - Economic Buyer\n - Economic Decision Maker\n - Evaluator\n - Executive Sponsor\n - Gatekeeper\n - Influencer\n - Project Manager\n - Technical Buyer\n - Other\n OpportunityLineItem:\n name: OpportunityLineItem\n fields:\n Description:\n label: Line Description\n kind: String\n Discount:\n label: Discount\n kind: Number\n options:\n format: 0\n precision: 2\n suffix: \xe2\x82\xac\n ListPrice:\n label: List Price\n kind: Number\n options:\n format: 0\n precision: 2\n suffix: \xe2\x82\xac\n Name:\n label: Opportunity Product Name\n kind: String\n OpportunityId:\n label: Opportunity\n kind: Record\n options:\n labelField: Name\n module: Opportunity\n queryFields:\n - AccountId\n - Name\n PricebookEntryId:\n label: Price Book Entry\n kind: Record\n options:\n labelField: Name\n module: PricebookEntry\n queryFields:\n - ProductCode\n - Name\n ProductCode:\n label: Product Code\n kind: String\n ProductId:\n label: Product\n kind: Record\n options:\n labelField: Name\n module: Product\n queryFields: []\n Quantity:\n label: Quantity\n kind: Number\n options:\n format: 0\n precision: 0\n ServiceDate:\n label: Date\n kind: DateTime\n SortOrder:\n label: Sort Order\n kind: Number\n options:\n format: 0\n precision: 0\n Subtotal:\n label: Subtotal\n kind: Number\n options:\n format: 0\n precision: 2\n suffix: \xe2\x82\xac\n TotalPrice:\n label: Total Price\n kind: Number\n options:\n format: 0\n precision: 2\n suffix: \xe2\x82\xac\n UnitPrice:\n label: Sales Price\n kind: Number\n options:\n format: 0\n precision: 2\n suffix: \xe2\x82\xac\n Pricebook:\n name: Pricebook\n fields:\n Description:\n label: Description\n kind: String\n options:\n multiLine: true\n IsActive:\n label: Active\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n IsStandard:\n label: Is Standard Price Book\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n Name:\n label: Price Book Name\n kind: String\n PricebookEntry:\n name: PricebookEntry\n fields:\n IsActive:\n label: Active\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n Name:\n label: Product Name\n kind: String\n PricebookId:\n label: Price Book\n kind: Record\n options:\n labelField: Name\n module: Pricebook\n queryFields:\n - Name\n ProductCode:\n label: Product Code\n kind: String\n ProductId:\n label: Product\n kind: Record\n options:\n labelField: Name\n module: Product\n queryFields:\n - ProductCode\n - Name\n UnitPrice:\n label: List Price\n kind: Number\n options:\n format: 0\n precision: 2\n suffix: \xe2\x82\xac\n UseStandardPrice:\n label: Use Standard Price\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n Product:\n name: Product\n fields:\n Description:\n label: Product Description\n kind: String\n options:\n multiLine: true\n useRichTextEditor: true\n Family:\n label: Product Family\n kind: Select\n options:\n options:\n - Crust Core\n - Crust Add-On\n IsActive:\n label: Active\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n Name:\n label: Product Name\n kind: String\n ProductCode:\n label: Product Code\n kind: String\n Question:\n name: Question\n fields:\n BestReplyId:\n label: Best Reply\n kind: Record\n options:\n labelField: Name\n module: Reply\n queryFields:\n - Name\n Body:\n label: Question Body\n kind: String\n options:\n multiLine: true\n useRichTextEditor: true\n NumReplies:\n label: Number of Replies\n kind: Number\n options:\n format: 0\n precision: 0\n Title:\n label: Question Title\n kind: String\n UpVotes:\n label: Up Votes\n kind: Number\n options:\n format: 0\n precision: 0\n VoteScore:\n label: Vote Score\n kind: Number\n options:\n format: 0\n precision: 0\n Quote:\n name: Quote\n fields:\n AccountId:\n label: Account Name\n kind: Record\n options:\n labelField: AccountName\n module: Account\n queryFields:\n - AccountName\n AdditionalCity:\n label: Additional To City\n kind: String\n AdditionalCountry:\n label: Additional To Country\n kind: Select\n options:\n options:\n - Afghanistan\n - \xc3\x85land Islands\n - Albania\n - Algeria\n - American Samoa\n - Andorra\n - Angola\n - Anguilla\n - Antarctica\n - Antigua And Barbuda\n - Argentina\n - Armenia\n - Aruba\n - Australia\n - Austria\n - Azerbaijan\n - Bahamas\n - Bahrain\n - Bangladesh\n - Barbados\n - Belarus\n - Belgium\n - Belize\n - Benin\n - Bermuda\n - Bhutan\n - Bolivia\n - Bosnia And Herzegovina\n - Botswana\n - Bouvet Island\n - Brazil\n - British Indian Ocean Territory\n - Brunei Darussalam\n - Bulgaria\n - Burkina Faso\n - Burundi\n - Cambodia\n - Cameroon\n - Canada\n - Cape Verde\n - Cayman Islands\n - Central African Republic\n - Chad\n - Chile\n - China\n - Christmas Island\n - Cocos (Keeling) Islands\n - Colombia\n - Comoros\n - Congo\n - Congo; The Democratic Republic Of The\n - Cook Islands\n - Costa Rica\n - Cote D'ivoire\n - Croatia\n - Cuba\n - Cyprus\n - Czechia\n - Denmark\n - Djibouti\n - Dominica\n - Dominican Republic\n - Ecuador\n - Egypt\n - El Salvador\n - Equatorial Guinea\n - Eritrea\n - Estonia\n - Ethiopia\n - Falkland Islands (Malvinas)\n - Faroe Islands\n - Fiji\n - Finland\n - France\n - French Guiana\n - French Polynesia\n - French Southern Territories\n - Gabon\n - Gambia\n - Georgia\n - Germany\n - Ghana\n - Gibraltar\n - Greece\n - Greenland\n - Grenada\n - Guadeloupe\n - Guam\n - Guatemala\n - Guernsey\n - Guinea\n - Guinea-bissau\n - Guyana\n - Haiti\n - Heard Island And Mcdonald Islands\n - Holy See (Vatican City State)\n - Honduras\n - Hong Kong\n - Hungary\n - Iceland\n - India\n - Indonesia\n - Iran; Islamic Republic Of\n - Iraq\n - Ireland\n - Isle Of Man\n - Israel\n - Italy\n - Jamaica\n - Japan\n - Jersey\n - Jordan\n - Kazakhstan\n - Kenya\n - Kiribati\n - Korea; Democratic People's Republic Of\n - Korea; Republic Of\n - Kuwait\n - Kyrgyzstan\n - Lao People's Democratic Republic\n - Latvia\n - Lebanon\n - Lesotho\n - Liberia\n - Libyan Arab Jamahiriya\n - Liechtenstein\n - Lithuania\n - Luxembourg\n - Macao\n - Macedonia; The Former Yugoslav Republic Of\n - Madagascar\n - Malawi\n - Malaysia\n - Maldives\n - Mali\n - Malta\n - Marshall Islands\n - Martinique\n - Mauritania\n - Mauritius\n - Mayotte\n - Mexico\n - Micronesia; Federated States Of\n - Moldova; Republic Of\n - Monaco\n - Mongolia\n - Montenegro\n - Montserrat\n - Morocco\n - Mozambique\n - Myanmar\n - Namibia\n - Nauru\n - Nepal\n - Netherlands\n - Netherlands Antilles\n - New Caledonia\n - New Zealand\n - Nicaragua\n - Niger\n - Nigeria\n - Niue\n - Norfolk Island\n - Northern Mariana Islands\n - Norway\n - Oman\n - Pakistan\n - Palau\n - Palestinian Territory; Occupied\n - Panama\n - Papua New Guinea\n - Paraguay\n - Peru\n - Philippines\n - Pitcairn\n - Poland\n - Portugal\n - Puerto Rico\n - Qatar\n - Reunion\n - Romania\n - Russian Federation\n - Rwanda\n - Saint Helena\n - Saint Kitts And Nevis\n - Saint Lucia\n - Saint Pierre And Miquelon\n - Saint Vincent And The Grenadines\n - Samoa\n - San Marino\n - Sao Tome And Principe\n - Saudi Arabia\n - Senegal\n - Serbia\n - Seychelles\n - Sierra Leone\n - Singapore\n - Slovakia\n - Slovenia\n - Solomon Islands\n - Somalia\n - South Africa\n - South Georgia And The South Sandwich Islands\n - Spain\n - Sri Lanka\n - Sudan\n - Suriname\n - Svalbard And Jan Mayen\n - Swaziland\n - Sweden\n - Switzerland\n - Syrian Arab Republic\n - Taiwan; Province Of China\n - Tajikistan\n - Tanzania; United Republic Of\n - Thailand\n - Timor-leste\n - Togo\n - Tokelau\n - Tonga\n - Trinidad And Tobago\n - Tunisia\n - Turkey\n - Turkmenistan\n - Turks And Caicos Islands\n - Tuvalu\n - Uganda\n - Ukraine\n - United Arab Emirates\n - United Kingdom\n - United States\n - United States Minor Outlying Islands\n - Uruguay\n - Uzbekistan\n - Vanuatu\n - Venezuela\n - Viet Nam\n - Virgin Islands; British\n - Virgin Islands; U.S.\n - Wallis And Futuna\n - Western Sahara\n - Yemen\n - Zambia\n - Zimbabwe\n AdditionalName:\n label: Additional To Name\n kind: String\n AdditionalPostalCode:\n label: Additional To Postal Code\n kind: String\n AdditionalState:\n label: Additional To State\n kind: String\n AdditionalStreet:\n label: Additional To Street\n kind: String\n BillingCity:\n label: Bill To City\n kind: String\n BillingCountry:\n label: Bill To Country\n kind: Select\n options:\n options:\n - Afghanistan\n - \xc3\x85land Islands\n - Albania\n - Algeria\n - American Samoa\n - Andorra\n - Angola\n - Anguilla\n - Antarctica\n - Antigua And Barbuda\n - Argentina\n - Armenia\n - Aruba\n - Australia\n - Austria\n - Azerbaijan\n - Bahamas\n - Bahrain\n - Bangladesh\n - Barbados\n - Belarus\n - Belgium\n - Belize\n - Benin\n - Bermuda\n - Bhutan\n - Bolivia\n - Bosnia And Herzegovina\n - Botswana\n - Bouvet Island\n - Brazil\n - British Indian Ocean Territory\n - Brunei Darussalam\n - Bulgaria\n - Burkina Faso\n - Burundi\n - Cambodia\n - Cameroon\n - Canada\n - Cape Verde\n - Cayman Islands\n - Central African Republic\n - Chad\n - Chile\n - China\n - Christmas Island\n - Cocos (Keeling) Islands\n - Colombia\n - Comoros\n - Congo\n - Congo; The Democratic Republic Of The\n - Cook Islands\n - Costa Rica\n - Cote D'ivoire\n - Croatia\n - Cuba\n - Cyprus\n - Czechia\n - Denmark\n - Djibouti\n - Dominica\n - Dominican Republic\n - Ecuador\n - Egypt\n - El Salvador\n - Equatorial Guinea\n - Eritrea\n - Estonia\n - Ethiopia\n - Falkland Islands (Malvinas)\n - Faroe Islands\n - Fiji\n - Finland\n - France\n - French Guiana\n - French Polynesia\n - French Southern Territories\n - Gabon\n - Gambia\n - Georgia\n - Germany\n - Ghana\n - Gibraltar\n - Greece\n - Greenland\n - Grenada\n - Guadeloupe\n - Guam\n - Guatemala\n - Guernsey\n - Guinea\n - Guinea-bissau\n - Guyana\n - Haiti\n - Heard Island And Mcdonald Islands\n - Holy See (Vatican City State)\n - Honduras\n - Hong Kong\n - Hungary\n - Iceland\n - India\n - Indonesia\n - Iran; Islamic Republic Of\n - Iraq\n - Ireland\n - Isle Of Man\n - Israel\n - Italy\n - Jamaica\n - Japan\n - Jersey\n - Jordan\n - Kazakhstan\n - Kenya\n - Kiribati\n - Korea; Democratic People's Republic Of\n - Korea; Republic Of\n - Kuwait\n - Kyrgyzstan\n - Lao People's Democratic Republic\n - Latvia\n - Lebanon\n - Lesotho\n - Liberia\n - Libyan Arab Jamahiriya\n - Liechtenstein\n - Lithuania\n - Luxembourg\n - Macao\n - Macedonia; The Former Yugoslav Republic Of\n - Madagascar\n - Malawi\n - Malaysia\n - Maldives\n - Mali\n - Malta\n - Marshall Islands\n - Martinique\n - Mauritania\n - Mauritius\n - Mayotte\n - Mexico\n - Micronesia; Federated States Of\n - Moldova; Republic Of\n - Monaco\n - Mongolia\n - Montenegro\n - Montserrat\n - Morocco\n - Mozambique\n - Myanmar\n - Namibia\n - Nauru\n - Nepal\n - Netherlands\n - Netherlands Antilles\n - New Caledonia\n - New Zealand\n - Nicaragua\n - Niger\n - Nigeria\n - Niue\n - Norfolk Island\n - Northern Mariana Islands\n - Norway\n - Oman\n - Pakistan\n - Palau\n - Palestinian Territory; Occupied\n - Panama\n - Papua New Guinea\n - Paraguay\n - Peru\n - Philippines\n - Pitcairn\n - Poland\n - Portugal\n - Puerto Rico\n - Qatar\n - Reunion\n - Romania\n - Russian Federation\n - Rwanda\n - Saint Helena\n - Saint Kitts And Nevis\n - Saint Lucia\n - Saint Pierre And Miquelon\n - Saint Vincent And The Grenadines\n - Samoa\n - San Marino\n - Sao Tome And Principe\n - Saudi Arabia\n - Senegal\n - Serbia\n - Seychelles\n - Sierra Leone\n - Singapore\n - Slovakia\n - Slovenia\n - Solomon Islands\n - Somalia\n - South Africa\n - South Georgia And The South Sandwich Islands\n - Spain\n - Sri Lanka\n - Sudan\n - Suriname\n - Svalbard And Jan Mayen\n - Swaziland\n - Sweden\n - Switzerland\n - Syrian Arab Republic\n - Taiwan; Province Of China\n - Tajikistan\n - Tanzania; United Republic Of\n - Thailand\n - Timor-leste\n - Togo\n - Tokelau\n - Tonga\n - Trinidad And Tobago\n - Tunisia\n - Turkey\n - Turkmenistan\n - Turks And Caicos Islands\n - Tuvalu\n - Uganda\n - Ukraine\n - United Arab Emirates\n - United Kingdom\n - United States\n - United States Minor Outlying Islands\n - Uruguay\n - Uzbekistan\n - Vanuatu\n - Venezuela\n - Viet Nam\n - Virgin Islands; British\n - Virgin Islands; U.S.\n - Wallis And Futuna\n - Western Sahara\n - Yemen\n - Zambia\n - Zimbabwe\n BillingName:\n label: Bill To Name\n kind: String\n BillingPostalCode:\n label: Bill To Postal Code\n kind: String\n BillingState:\n label: Bill To State\n kind: String\n BillingStreet:\n label: Bill To Street\n kind: String\n ContactId:\n label: Contact Name\n kind: Record\n options:\n labelField: RecordLabel\n module: Contact\n queryFields:\n - RecordLabel\n Description:\n label: Description\n kind: String\n options:\n multiLine: true\n Discount:\n label: Additional Discount\n kind: Number\n options:\n format: 0\n precision: 2\n suffix: \xe2\x82\xac\n Email:\n label: Email\n kind: Email\n ExpirationDate:\n label: Expiration Date\n kind: DateTime\n Fax:\n label: Fax\n kind: String\n GrandTotal:\n label: Grand Total (calculated)\n kind: Number\n options:\n format: 0\n precision: 2\n suffix: \xe2\x82\xac\n LineItemCount:\n label: Line Items\n kind: Number\n options:\n format: 0\n precision: 0\n Name:\n label: Quote Name\n kind: String\n OpportunityId:\n label: Opportunity Name\n kind: Record\n options:\n labelField: Name\n module: Opportunity\n queryFields:\n - AccountId\n - Name\n Phone:\n label: Phone\n kind: String\n PricebookId:\n label: Pricebook\n kind: Record\n options:\n labelField: Name\n module: Pricebook\n queryFields:\n - Name\n QuoteNumber:\n label: Quote Number\n kind: Number\n options:\n format: \"0000000\"\n precision: 0\n QuoteToCity:\n label: Quote To City\n kind: String\n QuoteToCountry:\n label: Quote To Country\n kind: Select\n options:\n options:\n - Afghanistan\n - \xc3\x85land Islands\n - Albania\n - Algeria\n - American Samoa\n - Andorra\n - Angola\n - Anguilla\n - Antarctica\n - Antigua And Barbuda\n - Argentina\n - Armenia\n - Aruba\n - Australia\n - Austria\n - Azerbaijan\n - Bahamas\n - Bahrain\n - Bangladesh\n - Barbados\n - Belarus\n - Belgium\n - Belize\n - Benin\n - Bermuda\n - Bhutan\n - Bolivia\n - Bosnia And Herzegovina\n - Botswana\n - Bouvet Island\n - Brazil\n - British Indian Ocean Territory\n - Brunei Darussalam\n - Bulgaria\n - Burkina Faso\n - Burundi\n - Cambodia\n - Cameroon\n - Canada\n - Cape Verde\n - Cayman Islands\n - Central African Republic\n - Chad\n - Chile\n - China\n - Christmas Island\n - Cocos (Keeling) Islands\n - Colombia\n - Comoros\n - Congo\n - Congo; The Democratic Republic Of The\n - Cook Islands\n - Costa Rica\n - Cote D'ivoire\n - Croatia\n - Cuba\n - Cyprus\n - Czechia\n - Denmark\n - Djibouti\n - Dominica\n - Dominican Republic\n - Ecuador\n - Egypt\n - El Salvador\n - Equatorial Guinea\n - Eritrea\n - Estonia\n - Ethiopia\n - Falkland Islands (Malvinas)\n - Faroe Islands\n - Fiji\n - Finland\n - France\n - French Guiana\n - French Polynesia\n - French Southern Territories\n - Gabon\n - Gambia\n - Georgia\n - Germany\n - Ghana\n - Gibraltar\n - Greece\n - Greenland\n - Grenada\n - Guadeloupe\n - Guam\n - Guatemala\n - Guernsey\n - Guinea\n - Guinea-bissau\n - Guyana\n - Haiti\n - Heard Island And Mcdonald Islands\n - Holy See (Vatican City State)\n - Honduras\n - Hong Kong\n - Hungary\n - Iceland\n - India\n - Indonesia\n - Iran; Islamic Republic Of\n - Iraq\n - Ireland\n - Isle Of Man\n - Israel\n - Italy\n - Jamaica\n - Japan\n - Jersey\n - Jordan\n - Kazakhstan\n - Kenya\n - Kiribati\n - Korea; Democratic People's Republic Of\n - Korea; Republic Of\n - Kuwait\n - Kyrgyzstan\n - Lao People's Democratic Republic\n - Latvia\n - Lebanon\n - Lesotho\n - Liberia\n - Libyan Arab Jamahiriya\n - Liechtenstein\n - Lithuania\n - Luxembourg\n - Macao\n - Macedonia; The Former Yugoslav Republic Of\n - Madagascar\n - Malawi\n - Malaysia\n - Maldives\n - Mali\n - Malta\n - Marshall Islands\n - Martinique\n - Mauritania\n - Mauritius\n - Mayotte\n - Mexico\n - Micronesia; Federated States Of\n - Moldova; Republic Of\n - Monaco\n - Mongolia\n - Montenegro\n - Montserrat\n - Morocco\n - Mozambique\n - Myanmar\n - Namibia\n - Nauru\n - Nepal\n - Netherlands\n - Netherlands Antilles\n - New Caledonia\n - New Zealand\n - Nicaragua\n - Niger\n - Nigeria\n - Niue\n - Norfolk Island\n - Northern Mariana Islands\n - Norway\n - Oman\n - Pakistan\n - Palau\n - Palestinian Territory; Occupied\n - Panama\n - Papua New Guinea\n - Paraguay\n - Peru\n - Philippines\n - Pitcairn\n - Poland\n - Portugal\n - Puerto Rico\n - Qatar\n - Reunion\n - Romania\n - Russian Federation\n - Rwanda\n - Saint Helena\n - Saint Kitts And Nevis\n - Saint Lucia\n - Saint Pierre And Miquelon\n - Saint Vincent And The Grenadines\n - Samoa\n - San Marino\n - Sao Tome And Principe\n - Saudi Arabia\n - Senegal\n - Serbia\n - Seychelles\n - Sierra Leone\n - Singapore\n - Slovakia\n - Slovenia\n - Solomon Islands\n - Somalia\n - South Africa\n - South Georgia And The South Sandwich Islands\n - Spain\n - Sri Lanka\n - Sudan\n - Suriname\n - Svalbard And Jan Mayen\n - Swaziland\n - Sweden\n - Switzerland\n - Syrian Arab Republic\n - Taiwan; Province Of China\n - Tajikistan\n - Tanzania; United Republic Of\n - Thailand\n - Timor-leste\n - Togo\n - Tokelau\n - Tonga\n - Trinidad And Tobago\n - Tunisia\n - Turkey\n - Turkmenistan\n - Turks And Caicos Islands\n - Tuvalu\n - Uganda\n - Ukraine\n - United Arab Emirates\n - United Kingdom\n - United States\n - United States Minor Outlying Islands\n - Uruguay\n - Uzbekistan\n - Vanuatu\n - Venezuela\n - Viet Nam\n - Virgin Islands; British\n - Virgin Islands; U.S.\n - Wallis And Futuna\n - Western Sahara\n - Yemen\n - Zambia\n - Zimbabwe\n QuoteToName:\n label: Quote To Name\n kind: String\n QuoteToPostalCode:\n label: Quote To Postal Code\n kind: String\n QuoteToState:\n label: Quote To State\n kind: String\n QuoteToStreet:\n label: Quote To Street\n kind: String\n RecordLabel:\n label: Record Label\n kind: String\n ShippingCity:\n label: Ship To City\n kind: String\n ShippingCountry:\n label: Ship To Country\n kind: Select\n options:\n options:\n - Afghanistan\n - \xc3\x85land Islands\n - Albania\n - Algeria\n - American Samoa\n - Andorra\n - Angola\n - Anguilla\n - Antarctica\n - Antigua And Barbuda\n - Argentina\n - Armenia\n - Aruba\n - Australia\n - Austria\n - Azerbaijan\n - Bahamas\n - Bahrain\n - Bangladesh\n - Barbados\n - Belarus\n - Belgium\n - Belize\n - Benin\n - Bermuda\n - Bhutan\n - Bolivia\n - Bosnia And Herzegovina\n - Botswana\n - Bouvet Island\n - Brazil\n - British Indian Ocean Territory\n - Brunei Darussalam\n - Bulgaria\n - Burkina Faso\n - Burundi\n - Cambodia\n - Cameroon\n - Canada\n - Cape Verde\n - Cayman Islands\n - Central African Republic\n - Chad\n - Chile\n - China\n - Christmas Island\n - Cocos (Keeling) Islands\n - Colombia\n - Comoros\n - Congo\n - Congo; The Democratic Republic Of The\n - Cook Islands\n - Costa Rica\n - Cote D'ivoire\n - Croatia\n - Cuba\n - Cyprus\n - Czechia\n - Denmark\n - Djibouti\n - Dominica\n - Dominican Republic\n - Ecuador\n - Egypt\n - El Salvador\n - Equatorial Guinea\n - Eritrea\n - Estonia\n - Ethiopia\n - Falkland Islands (Malvinas)\n - Faroe Islands\n - Fiji\n - Finland\n - France\n - French Guiana\n - French Polynesia\n - French Southern Territories\n - Gabon\n - Gambia\n - Georgia\n - Germany\n - Ghana\n - Gibraltar\n - Greece\n - Greenland\n - Grenada\n - Guadeloupe\n - Guam\n - Guatemala\n - Guernsey\n - Guinea\n - Guinea-bissau\n - Guyana\n - Haiti\n - Heard Island And Mcdonald Islands\n - Holy See (Vatican City State)\n - Honduras\n - Hong Kong\n - Hungary\n - Iceland\n - India\n - Indonesia\n - Iran; Islamic Republic Of\n - Iraq\n - Ireland\n - Isle Of Man\n - Israel\n - Italy\n - Jamaica\n - Japan\n - Jersey\n - Jordan\n - Kazakhstan\n - Kenya\n - Kiribati\n - Korea; Democratic People's Republic Of\n - Korea; Republic Of\n - Kuwait\n - Kyrgyzstan\n - Lao People's Democratic Republic\n - Latvia\n - Lebanon\n - Lesotho\n - Liberia\n - Libyan Arab Jamahiriya\n - Liechtenstein\n - Lithuania\n - Luxembourg\n - Macao\n - Macedonia; The Former Yugoslav Republic Of\n - Madagascar\n - Malawi\n - Malaysia\n - Maldives\n - Mali\n - Malta\n - Marshall Islands\n - Martinique\n - Mauritania\n - Mauritius\n - Mayotte\n - Mexico\n - Micronesia; Federated States Of\n - Moldova; Republic Of\n - Monaco\n - Mongolia\n - Montenegro\n - Montserrat\n - Morocco\n - Mozambique\n - Myanmar\n - Namibia\n - Nauru\n - Nepal\n - Netherlands\n - Netherlands Antilles\n - New Caledonia\n - New Zealand\n - Nicaragua\n - Niger\n - Nigeria\n - Niue\n - Norfolk Island\n - Northern Mariana Islands\n - Norway\n - Oman\n - Pakistan\n - Palau\n - Palestinian Territory; Occupied\n - Panama\n - Papua New Guinea\n - Paraguay\n - Peru\n - Philippines\n - Pitcairn\n - Poland\n - Portugal\n - Puerto Rico\n - Qatar\n - Reunion\n - Romania\n - Russian Federation\n - Rwanda\n - Saint Helena\n - Saint Kitts And Nevis\n - Saint Lucia\n - Saint Pierre And Miquelon\n - Saint Vincent And The Grenadines\n - Samoa\n - San Marino\n - Sao Tome And Principe\n - Saudi Arabia\n - Senegal\n - Serbia\n - Seychelles\n - Sierra Leone\n - Singapore\n - Slovakia\n - Slovenia\n - Solomon Islands\n - Somalia\n - South Africa\n - South Georgia And The South Sandwich Islands\n - Spain\n - Sri Lanka\n - Sudan\n - Suriname\n - Svalbard And Jan Mayen\n - Swaziland\n - Sweden\n - Switzerland\n - Syrian Arab Republic\n - Taiwan; Province Of China\n - Tajikistan\n - Tanzania; United Republic Of\n - Thailand\n - Timor-leste\n - Togo\n - Tokelau\n - Tonga\n - Trinidad And Tobago\n - Tunisia\n - Turkey\n - Turkmenistan\n - Turks And Caicos Islands\n - Tuvalu\n - Uganda\n - Ukraine\n - United Arab Emirates\n - United Kingdom\n - United States\n - United States Minor Outlying Islands\n - Uruguay\n - Uzbekistan\n - Vanuatu\n - Venezuela\n - Viet Nam\n - Virgin Islands; British\n - Virgin Islands; U.S.\n - Wallis And Futuna\n - Western Sahara\n - Yemen\n - Zambia\n - Zimbabwe\n ShippingHandling:\n label: Shipping and Handling\n kind: Number\n options:\n format: 0\n precision: 2\n suffix: \xe2\x82\xac\n ShippingName:\n label: Ship To Name\n kind: String\n ShippingPostalCode:\n label: Ship To Postal Code\n kind: String\n ShippingState:\n label: Ship To State\n kind: String\n ShippingStreet:\n label: Ship To Street\n kind: String\n Status:\n label: Status\n kind: Select\n options:\n options:\n - Draft\n - Needs Review\n - In Review\n - Approved\n - Rejected\n - Presented\n - Accepted\n - Denied\n Subtotal:\n label: Subtotal (calculated)\n kind: Number\n options:\n format: 0\n precision: 2\n suffix: \xe2\x82\xac\n Tax:\n label: Tax\n kind: Number\n options:\n format: 0\n precision: 0\n suffix: '%'\n TotalPrice:\n label: Total Price (calculated)\n kind: Number\n options:\n format: 0\n precision: 2\n suffix: \xe2\x82\xac\n QuoteLineItem:\n name: QuoteLineItem\n fields:\n Description:\n label: Line Description\n kind: String\n Discount:\n label: Discount\n kind: Number\n options:\n format: 0\n precision: \"2\"\n suffix: \xe2\x82\xac\n LineItemDescription:\n label: Line Item Description\n kind: String\n options:\n multiLine: true\n LineItemNumber:\n label: Line Item Number\n kind: String\n ListPrice:\n label: List Price\n kind: Number\n options:\n format: 0\n precision: \"2\"\n suffix: \xe2\x82\xac\n PricebookEntryId:\n label: Price Book Entry\n kind: Record\n options:\n labelField: Name\n module: PricebookEntry\n queryFields:\n - ProductCode\n - Name\n ProductCode:\n label: Product Code\n kind: String\n ProductId:\n label: Product\n kind: Record\n options:\n labelField: Name\n module: Product\n queryFields:\n - ProductCode\n - Name\n Quantity:\n label: Quantity\n kind: Number\n options:\n format: 0\n precision: 0\n QuoteId:\n label: Quote\n kind: Record\n options:\n labelField: Name\n module: Quote\n queryFields:\n - AccountId\n - Name\n - QuoteNumber\n ServiceDate:\n label: Date\n kind: DateTime\n SortOrder:\n label: Sort Order\n kind: Number\n options:\n format: 0\n precision: 0\n Subtotal:\n label: Subtotal\n kind: Number\n options:\n format: 0\n precision: \"2\"\n suffix: \xe2\x82\xac\n TotalPrice:\n label: Total Price\n kind: Number\n options:\n format: 0\n precision: \"2\"\n suffix: \xe2\x82\xac\n UnitPrice:\n label: Sales Price\n kind: Number\n options:\n format: 0\n precision: 2\n suffix: \xe2\x82\xac\n Reply:\n name: Reply\n fields:\n Body:\n label: Reply Body\n kind: String\n options:\n multiLine: true\n useRichTextEditor: true\n DownVotes:\n label: Down Votes\n kind: Number\n options:\n format: 0\n precision: 0\n IdeaId:\n label: Idea\n kind: Record\n options:\n labelField: Title\n module: Idea\n queryFields:\n - Title\n Name:\n label: Name\n kind: String\n QuestionId:\n label: Question\n kind: Record\n options:\n labelField: Title\n module: Question\n queryFields:\n - Title\n UpVotes:\n label: Up Votes\n kind: Number\n options:\n format: 0\n precision: 0\n VoteTotal:\n label: Vote Total\n kind: Number\n options:\n format: 0\n precision: 0\n Solution:\n name: Solution\n fields:\n CaseId:\n label: Case\n kind: Record\n options:\n labelField: Subject\n module: Case\n queryFields:\n - AccountId\n - CaseNumber\n - Subject\n File:\n label: File\n kind: File\n options:\n allowDocuments: false\n allowImages: false\n mode: list\n IsPublished:\n label: Public\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n IsReviewed:\n label: Reviewed\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n ProductId:\n label: Product\n kind: Record\n options:\n labelField: Name\n module: Product\n queryFields:\n - ProductCode\n - Name\n SolutionName:\n label: Solution Title\n kind: String\n SolutionNote:\n label: Solution Details\n kind: String\n options:\n multiLine: true\n useRichTextEditor: true\n SolutionNumber:\n label: Solution Number\n kind: Number\n options:\n format: \"0000000\"\n precision: 0\n Status:\n label: Status\n kind: Select\n options:\n options:\n - New\n - Pending review\n - Accepted\n - Obsolete\n - Duplicate\n Task:\n name: Task\n fields:\n AccountId:\n label: Account\n kind: Record\n options:\n labelField: AccountName\n module: Account\n queryFields:\n - AccountName\n selectType: default\n ActivityDate:\n label: Due Date\n kind: DateTime\n CallDisposition:\n label: Call Result\n kind: String\n CallDurationInSeconds:\n label: Call Duration\n kind: Number\n options:\n format: 0\n precision: 0\n CallObject:\n label: Call Object Identifier\n kind: String\n CallType:\n label: Call Type\n kind: Select\n options:\n options:\n - Internal\n - Inbound\n - Outbound\n selectType: default\n CaseId:\n label: Case\n kind: Record\n options:\n labelField: Subject\n module: Case\n queryFields:\n - AccountId\n - CaseNumber\n - Subject\n selectType: default\n ContactId:\n label: Contact\n kind: Record\n options:\n labelField: RecordLabel\n module: Contact\n queryFields:\n - RecordLabel\n selectType: default\n ContractId:\n label: Contract\n kind: Record\n options:\n labelField: Name\n module: Contract\n queryFields:\n - AccountId\n - Name\n - ContractNumber\n selectType: default\n Description:\n label: Comments\n kind: String\n options:\n multiLine: true\n useRichTextEditor: true\n IsClosed:\n label: Closed\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n IsReminderSet:\n label: Reminder Set\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n LeadId:\n label: Lead\n kind: Record\n options:\n labelField: RecordLabel\n module: Lead\n queryFields:\n - RecordLabel\n selectType: default\n OpportunityId:\n label: Opportunity\n kind: Record\n options:\n labelField: Name\n module: Opportunity\n queryFields:\n - AccountId\n - Name\n selectType: default\n OwnerId:\n label: Assigned To\n kind: User\n options:\n presetWithAuthenticated: false\n selectType: default\n Priority:\n label: Priority\n kind: Select\n options:\n options:\n - High\n - Normal\n - Low\n selectType: default\n QuoteId:\n label: Quote\n kind: Record\n options:\n labelField: Name\n module: Quote\n queryFields:\n - AccountId\n - Name\n - QuoteNumber\n selectType: default\n ReminderDateTime:\n label: Reminder Date/Time\n kind: DateTime\n Status:\n label: Status\n kind: Select\n options:\n options:\n - Open\n - Completed\n selectType: default\n Subject:\n label: Subject\n kind: String\n Type:\n label: Type\n kind: Select\n options:\n options:\n - Call\n - Email\n - Send letter\n - Send Quote\n - Send Message\n - Other\n selectType: default\n Vote:\n name: Vote\n fields:\n IdeaId:\n label: Idea\n kind: Record\n options:\n labelField: Title\n module: Idea\n queryFields:\n - Title\n QuestionId:\n label: Question\n kind: Record\n options:\n labelField: Title\n module: Question\n queryFields:\n - Title\n ReplyId:\n label: Reply\n kind: Record\n options:\n labelField: Name\n module: Reply\n queryFields:\n - Name\n Score:\n label: Score\n kind: Number\n options:\n format: 0\n precision: 0\nPK\x07\x08r<\x06\xf9\xc9-\x02\x00\xc9-\x02\x00PK\x03\x04\x14\x00\x08\x00\x00\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00 \x001200_charts.yamlUT\x05\x00\x01\x80Cm8namespace: crm\ncharts:\n LeadsByCountry:\n name: Leads by country\n config:\n reports:\n - metrics:\n - backgroundColor: '#e5a83b'\n beginAtZero: true\n field: count\n fixTooltips: true\n label: Number of leads\n type: bar\n dimensions:\n - conditions: {}\n field: Country\n modifier: (no grouping / buckets)\n module: Lead\n LeadsBySource:\n name: Leads by source\n config:\n reports:\n - metrics:\n - backgroundColor: '#36d436'\n beginAtZero: true\n field: count\n label: Number of leads\n type: bar\n dimensions:\n - conditions: {}\n field: LeadSource\n modifier: (no grouping / buckets)\n module: Lead\n LeadsByType:\n name: Leads by type\n config:\n reports:\n - metrics:\n - backgroundColor: '#63da1a'\n beginAtZero: true\n field: count\n label: Number of leads\n type: bar\n dimensions:\n - conditions: {}\n field: Status\n modifier: (no grouping / buckets)\n module: Lead\n LeadsPerDay:\n name: Leads per day\n config:\n reports:\n - metrics:\n - aggregate: SUM\n axisType: linear\n backgroundColor: '#fc7507'\n beginAtZero: true\n field: count\n fill: false\n label: Leads per day\n type: line\n dimensions:\n - conditions: {}\n field: created_at\n modifier: DATE\n module: Lead\n OpportunitiesByValue:\n name: Opportunities by value\n config:\n reports:\n - metrics:\n - aggregate: SUM\n backgroundColor: '#5977ff'\n beginAtZero: true\n field: Amount\n label: Total value\n type: bar\n dimensions:\n - conditions: {}\n field: StageName\n modifier: (no grouping / buckets)\n module: Opportunity\n QuarterlyPerformance:\n name: Quarterly performance\n config:\n reports:\n - filter: Amount > 0\n metrics:\n - aggregate: SUM\n axisPosition: left\n axisType: linear\n backgroundColor: '#009eff'\n beginAtZero: true\n field: Amount\n fill: true\n label: Amount\n type: line\n dimensions:\n - autoSkip: true\n conditions: {}\n field: CloseDate\n modifier: QUARTER\n module: Opportunity\nPK\x07\x08\x18\x18\xf1\xc2\xb0 \x00\x00\xb0 \x00\x00PK\x03\x04\x14\x00\x08\x00\x00\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x00 \x001300_scripts.yamlUT\x05\x00\x01\x80Cm8namespace: crm\nscripts:\n AccountCreateNewOpportunity:\n source: |-\n //Get the default settings\n return Compose.findLastRecord('Settings').then(settings => {\n\n let opportunityCloseDays = settings.values.OpportunityCloseDateDays\n let opportunityProbability = settings.values.OpportunityProbability\n let opportunityForecaseCategory = settings.values.OpportunityForecaseCategory\n let opportunityStagename = settings.values.OpportunityStagename\n\n //Calculate the expiration date\n let m = new Date()\n m.setDate(m.getDate() + parseInt(opportunityCloseDays, 10))\n let closeDate = m.getUTCFullYear() + \"/\" + (m.getUTCMonth() + 1) + \"/\" + m.getUTCDate() + \" \" + m.getUTCHours() + \":\" + m.getUTCMinutes() + \":\" + m.getUTCSeconds()\n\n // Find the contact we want to link the new case to (by default, the primary contact)\n return Compose.findRecords(`AccountId = ${$record.recordID}`, 'Contact')\n\n .then(({ set, filter }) => {\n\n let ContactId, SuppliedName, SuppliedEmail, SuppliedPhone\n\n // Loop through the contacts of the account, to save the primary contact\n set.forEach(r => {\n\n //Check if it's the primary contact\n let contactIsPrimary = r.values.IsPrimary\n if (contactIsPrimary === '1') {\n\n //Add the contact\n ContactId = r.recordID\n }\n })\n\n // Create the related opportunity\n return Compose.makeRecord({\n 'OwnerId': $record.values.OwnerId,\n 'LeadSource': $record.values.LeadSource,\n 'Name': '(unnamed)',\n 'AccountId': $record.recordID,\n 'IsClosed': 'No',\n 'IsWon': 'No',\n 'CloseDate': closeDate,\n 'Probability': opportunityProbability,\n 'ForecastCategory': opportunityForecaseCategory,\n 'StageName': opportunityStagename\n }, 'Opportunity')\n\n .then(myOpportunity => {\n\n return Compose.saveRecord(myOpportunity)\n\n }).then(mySavedOpportunity => {\n\n //Create a new contact linked to the opportunity\n return Compose.makeRecord({\n 'ContactId': ContactId,\n 'OpportunityId': mySavedOpportunity.recordID,\n 'IsPrimary': '1'\n }, 'OpportunityContactRole')\n\n .then(myOpportunityContactRole => {\n\n return Compose.saveRecord(myOpportunityContactRole)\n\n .then(() => {\n\n // Notify current user\n ComposeUI.success(`The new opportunity has been created.`)\n\n\n }).then(() => {\n\n // Go to the record\n ComposeUI.gotoRecordEditor(mySavedOpportunity)\n\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n async: false\n runInUA: true\n critical: true\n enabled: true\n timeout: 0\n triggers:\n - event: manual\n module: Account\n resource: compose:record\n CaseInsertCaseNumber:\n source: |-\n //Get the default settings\n return Compose.findLastRecord('Settings').then(settings => {\n\n // Map the case number\n let nextCaseNumber = settings.values.CaseNextNumber\n if (typeof nextCaseNumber == \"undefined\" || nextCaseNumber === '' || isNaN(nextCaseNumber)) {\n nextCaseNumber = 0\n }\n\n $record.values.CaseNumber = nextCaseNumber\n let nextCaseNumberUpdated = parseInt(nextCaseNumber,10) + 1\n\n // Update the config\n settings.values.CaseNextNumber = nextCaseNumberUpdated\n return Compose.saveRecord(settings).then(mySavedSettings => {\n\n console.log('Record saved, new ID', mySavedSettings.recordID)\n\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n async: false\n runInUA: false\n critical: true\n enabled: true\n timeout: 0\n triggers:\n - event: beforeCreate\n module: Case\n resource: compose:record\n CaseInformContactOfSolution:\n source: |-\n // Check if the case is solved\n if (!$record.values.Status === 'Closed') {\n\n // Get the to address\n let to = $record.values.SuppliedEmail\n if (!to) {\n ComposeUI.warning(`There is no supplied email. Please fill in an email address in the supplied email field.`)\n return\n }\n\n // Get email body\n let html = \"

Solution of case: \" + $record.values.CaseNumber + \" - \" + $record.values.Subject + \"

\"\n html = html + \"
\"\n html = html + \"Solution Title: \" + $record.values.SolutionName + \"
\"\n html = html + \"Solution Details: \" + $record.values.SolutionNote\n\n // Send the email\n return Compose.sendMail(to, `Corteza - Quote: ${$record.values.QuoteNumber} - ${$record.values.Name}`, { html: html }).then(() => {\n ComposeUI.success(`The case solutoin has been sent via email.`)\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n } else {\n ComposeUI.warning(`You can only inform the client of a solution when the case status is \"Closed\".`)\n return\n }\n async: false\n runInUA: true\n critical: true\n enabled: true\n timeout: 0\n triggers:\n - event: manual\n module: Case\n resource: compose:record\n ContactSetRecordLabel:\n source: |-\n // Set the record label string\n let recordLabel = ''\n\n // Get the first name\n let firstName = $record.values.FirstName\n if (!firstName) {\n firstName = ''\n }\n\n // Get the last name\n let lastName = $record.values.LastName\n if (!lastName) {\n lastName = ''\n }\n\n // Create the full name\n let fullName = ''\n if ((firstName !== '') && (lastName === '')) {\n recordLabel = firstName\n }\n\n if ((firstName === '') && (lastName !== '')) {\n recordLabel = lastName\n }\n\n if ((firstName !== '') && (lastName !== '')) {\n recordLabel = firstName + ' ' + lastName\n }\n\n // Get the company name from the account\n // Check if there is a related account, to map the fields of the account\n let accountId = $record.values.AccountId\n if (accountId) {\n return Compose.findRecordByID(accountId, 'Account').then(accountRecord => {\n\n // Add to the record label\n recordLabel = recordLabel + ' (' + accountRecord.values.AccountName + ')'\n $record.values.RecordLabel = recordLabel\n\n }).catch(err => {\n // solve the problem\n $record.values.RecordLabel = recordLabel\n\n console.error(err)\n })\n\n }\n async: false\n runInUA: false\n critical: true\n enabled: true\n timeout: 0\n triggers:\n - event: beforeUpdate\n module: Contact\n resource: compose:record\n - event: beforeCreate\n module: Contact\n resource: compose:record\n LeadSetRecordLabel:\n source: |-\n // Set the record label string\n let recordLabel = ''\n\n // Get the first name\n let firstName = $record.values.FirstName\n if (!firstName) {\n fistName = ''\n }\n\n // Get the last name\n let lastName = $record.values.LastName\n if (!lastName) {\n lastName = ''\n }\n\n // Create the full name\n let fullName = ''\n if ((firstName !== '') && (lastName === '')) {\n recordLabel = firstName\n }\n\n if ((firstName === '') && (lastName !== '')) {\n recordLabel = lastName\n }\n\n if ((firstName !== '') && (lastName !== '')) {\n recordLabel = firstName + ' ' + lastName\n }\n\n // Get the company name\n let company = $record.values.Company\n if (!company) {\n company = ''\n }\n\n // Add the company name (if there is one)\n if (company !== '') {\n recordLabel = recordLabel + ' (' + company + ')'\n }\n\n // Set the label\n $record.values.RecordLabel = recordLabel\n async: false\n runInUA: false\n critical: true\n enabled: true\n timeout: 0\n triggers:\n - event: beforeUpdate\n module: Lead\n resource: compose:record\n - event: beforeCreate\n module: Lead\n resource: compose:record\n QuoteApproveQuote:\n source: |-\n //Check if the quote has the correct status\n if ($record.values.Status !== 'In Review') {\n // Inform\n ComposeUI.warning(`A quote needs to have the status In Review in order to be approved.`)\n return true\n }\n\n //Change value\n $record.values.Status = 'Approved'\n\n return Compose.saveRecord($record)\n .then(mySavedRecord => {\n\n // Get the email of the owner\n return System.findUserByID($record.createdBy).then(user => {\n\n // Send the mail\n return Compose.sendMail(\n user.email,\n `Quote \"${$record.values.Name}\" has been approved`,\n { html: `The following quote has been approved:

${$record.values.Name}` }\n )\n }).then(() => {\n\n // Notify current user\n ComposeUI.success(`The quote has been approved and the quote owner has been notified via email.`)\n\n })\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n async: false\n runInUA: true\n critical: true\n enabled: true\n timeout: 0\n triggers:\n - event: manual\n module: Quote\n resource: compose:record\n SolutionInsertSolutionNumber:\n source: |-\n //Get the default settings\n return Compose.findLastRecord('Settings').then(settings => {\n\n // Map the case number\n let nextSolutionNumber = settings.values.SolutionNextNumber\n if (typeof nextSolutionNumber == \"undefined\" || nextSolutionNumber === '' || isNaN(nextSolutionNumber)) {\n nextSolutionNumber = 0\n }\n $record.values.SolutionNumber = nextSolutionNumber\n let nextSolutionNumberUpdated = parseInt(nextSolutionNumber,10) + 1\n\n // Update the config\n settings.values.SolutionNextNumber = nextSolutionNumberUpdated\n\n return Compose.saveRecord(settings).then(mySavedSettings => {\n console.log('Record saved, new ID', mySavedSettings.recordID)\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n async: false\n runInUA: false\n critical: true\n enabled: true\n timeout: 0\n triggers:\n - event: beforeCreate\n module: Solution\n resource: compose:record\n AccountCreateNewContract:\n source: |-\n //Get the default settings\n return Compose.findLastRecord('Settings').then(settings => {\n\n // Map the case number\n let ContractDefaultTime = settings.values.ContractDefaultTime\n\n // Get the contract number\n let nextContractNumber = settings.values.ContractNextNumber\n if (typeof nextContractNumber == \"undefined\" || nextContractNumber === '' || isNaN(nextContractNumber)) {\n nextContractNumber = 0\n }\n\n return Compose.makeRecord({\n 'OwnerId' : $record.values.OwnerId,\n 'AccountId' : $record.recordID,\n 'Status' : 'Draft',\n 'BillingStreet' : $record.values.BillingStreet,\n 'BillingCity' : $record.values.BillingCity,\n 'BillingState' : $record.values.BillingState,\n 'BillingPostalCode' : $record.values.BillingPostalCode,\n 'BillingCountry' : $record.values.BillingCountry,\n 'ShippingStreet' : $record.values.BillingStreet,\n 'ShippingCity' : $record.values.BillingCity,\n 'ShippingState' : $record.values.BillingState,\n 'ShippingPostalCode' : $record.values.BillingPostalCode,\n 'ShippingCountry' : $record.values.BillingCountry,\n 'ContractTerm' : ContractDefaultTime,\n 'ContractNumber' : nextContractNumber\n }, 'Contract').then(myContract => {\n\n // return was missing here. Set tjhe mySavedCase below\n return Compose.saveRecord(myContract)\n\n }).then(mySavedContract => {\n let nextContractNumberUpdated = parseInt(nextContractNumber,10) + 1\n\n // Update the config\n settings.values.ContractNextNumber = nextContractNumberUpdated\n return Compose.saveRecord(settings).then(mySavedSettings => {\n\n console.log('Record saved, new ID', mySavedSettings.recordID)\n\n }).then(() => {\n\n // Notify current user\n ComposeUI.success(`The new contract record has been created.`)\n\n }).then(() => {\n\n // Go to the record\n ComposeUI.gotoRecordEditor(mySavedContract)\n\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n async: false\n runInUA: true\n critical: true\n enabled: true\n timeout: 0\n triggers:\n - event: manual\n module: Account\n resource: compose:record\n CaseSetStatusToWorking:\n source: |-\n // Update the status\n $record.values.Status = 'Working'\n let caseRecord = $record\n\n // Save the case\n return Compose.makeRecord({\n 'CaseId' : caseRecord.recordID,\n 'Description' : 'State set to \"Working\"',\n 'Type' : 'State change'\n }, 'CaseUpdate').then(myCaseUpdate => {\n\n return Compose.saveRecord(myCaseUpdate)\n\n }).then(myCaseUpdate => {\n\n return Compose.saveRecord(caseRecord)\n\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n async: false\n runInUA: true\n critical: true\n enabled: true\n timeout: 0\n triggers:\n - event: manual\n module: Case\n resource: compose:record\n CaseSetStatusToClosed:\n source: |-\n // Check if the case is already closed\n if ($record.values.Status === 'Closed') {\n // Case is closed already. Exit\n ComposeUI.success(`This case is already closed.`)\n return true\n }\n\n // Check if there is a solution\n let SolutionName = $record.values.SolutionName\n let solutionRecord = $record.values.SolutionId\n\n // If there is no solution, show that it's not possible to close the case\n if ((!SolutionName) && (!solutionRecord)) {\n ComposeUI.warning(`Unable to close the case. Please add a solution name or select an existing solution before closing the case.`)\n return true\n }\n\n // Update the status\n $record.values.IsClosed = true\n var m = new Date()\n var dateString = m.getUTCFullYear() + \"/\" + (m.getUTCMonth() + 1) + \"/\" + m.getUTCDate() + \" \" + m.getUTCHours() + \":\" + m.getUTCMinutes() + \":\" + m.getUTCSeconds()\n $record.values.ClosedDate = dateString\n $record.values.Status = 'Closed'\n\n return Compose.saveRecord($record)\n .then(mySavedRecord => {\n\n // Create the CaseUpdate record\n return Compose.makeRecord({\n 'Description': 'State set to \"Closed',\n 'Type': 'State change',\n 'CaseId': $record.recordID\n }, 'CaseUpdate')\n\n .then(myCaseUpdate => {\n\n return Compose.saveRecord(myCaseUpdate)\n\n }).then(mySavedCaseUpdate => {\n\n // Check if a solution record has been selected\n if (solutionRecord) {\n\n // If there is a solution record, map the values in the case\n return Compose.findRecordByID(solutionRecord, 'Solution').then(solution => {\n $record.values.SolutionName = solution.values.SolutionName\n $record.values.SolutionNote = solution.values.SolutionNote\n $record.values.SolutionFile = solution.values.File\n\n return Compose.saveRecord($record)\n }).catch(err => {\n\n // solve the problem\n console.error(err)\n })\n } else {\n\n // If there is no solution record, check if the value \"SubmitAsSolution\" is checked. If so, save the solution as a Solution record\n if ($record.values.SubmitAsSolution) {\n\n //Get the default settings\n return Compose.findLastRecord('Settings').then(settings => {\n\n // Map the solution number\n let nextSolutionNumber = settings.values.SolutionNextNumber\n if (typeof nextSolutionNumber == \"undefined\" || nextSolutionNumber === '' || isNaN(nextSolutionNumber)) {\n nextSolutionNumber = 0\n }\n\n // Create the Solution record\n return Compose.makeRecord({\n 'SolutionName': $record.values.SolutionName,\n 'SolutionNote': $record.values.SolutionNote,\n 'File': $record.values.SolutionFile,\n 'Status': 'New',\n 'IsPublished': '1',\n 'CaseId': $record.recordID,\n 'SolutionNumber': nextSolutionNumber,\n 'ProductId': $record.values.ProductId\n }, 'Solution')\n\n .then(mySolution => {\n\n return Compose.saveRecord(mySolution)\n\n }).then(mySavedSolution => {\n\n // Save the solution record in the case record\n $record.values.SolutionId = mySavedSolution.recordID\n return Compose.saveRecord($record)\n\n }).then(mySavedSolution => {\n\n let nextSolutionNumberUpdated = parseInt(nextSolutionNumber, 10) + 1\n\n // Update the config\n settings.values.SolutionNextNumber = nextSolutionNumberUpdated\n return Compose.saveRecord(settings).then(mySavedSettings => {\n\n console.log('Record saved, ID', mySavedSettings.recordID)\n\n\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n }\n }\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n async: false\n runInUA: true\n critical: true\n enabled: true\n timeout: 0\n triggers:\n - event: manual\n module: Case\n resource: compose:record\n AccountCreateNewCase:\n source: |-\n //Get the default settings\n return Compose.findLastRecord('Settings').then(settings => {\n\n // Map the case number\n let nextCaseNumber = settings.values.CaseNextNumber\n if (typeof nextCaseNumber == \"undefined\" || nextCaseNumber === '' || isNaN(nextCaseNumber)) {\n nextCaseNumber = 0\n }\n\n // Find the contact we want to link the new case to (by default, the primary contact)\n return Compose.findRecords(`AccountId = ${$record.recordID}`, 'Contact').then(({ set, filter }) => {\n\n let ContactId, SuppliedName, SuppliedEmail, SuppliedPhone\n\n // Loop through the contacts of the account, to save the primary contact\n set.forEach(r => {\n\n //Check if it's the primary contact\n let contactIsPrimary = r.values.IsPrimary\n console.log(contactIsPrimary)\n if (contactIsPrimary === '1') {\n\n //Add the contact\n ContactId = r.recordID\n SuppliedName = r.values.FirstName + ' ' + r.values.LastName\n SuppliedEmail = r.values.Email\n SuppliedPhone = r.values.Phone\n }\n })\n\n return Compose.makeRecord({\n 'OwnerId' : $record.values.OwnerId,\n 'Subject' : '(no subject)',\n 'ContactId' : ContactId,\n 'AccountId' : $record.recordID,\n 'Status' : 'New',\n 'Priority' : 'Low',\n 'SuppliedName' : SuppliedName,\n 'SuppliedEmail' : SuppliedEmail,\n 'SuppliedPhone' : SuppliedPhone,\n 'CaseNumber' : nextCaseNumber\n }, 'Case')\n .then(myCase => Compose.saveRecord(myCase))\n .then(mySavedCase => {\n\n let nextCaseNumberUpdated = parseInt(nextCaseNumber,10) + 1\n\n // Update the config\n settings.values.CaseNextNumber = nextCaseNumberUpdated\n return Compose.saveRecord(settings).then(mySavedSettings => {\n\n console.log('Record saved, new ID', mySavedSettings.recordID)\n\n }).then(() => {\n\n // Notify current user\n ComposeUI.success(`The new case has been created.`)\n\n\n }).then(() => {\n\n // Go to the record\n ComposeUI.gotoRecordEditor(mySavedCase)\n\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n async: false\n runInUA: true\n critical: true\n enabled: true\n timeout: 0\n triggers:\n - event: manual\n module: Account\n resource: compose:record\n ContactCreateNewCase:\n source: |-\n //Get the default settings\n return Compose.findLastRecord('Settings').then(settings => {\n\n // Map the case number\n let nextCaseNumber = settings.values.CaseNextNumber\n if (typeof nextCaseNumber == \"undefined\" || nextCaseNumber === '' || isNaN(nextCaseNumber)) {\n nextCaseNumber = 0\n }\n\n return Compose.makeRecord({\n 'OwnerId' : $record.values.OwnerId,\n 'Subject' : '(no subject)',\n 'ContactId' : $record.recordID,\n 'AccountId' : $record.values.AccountId,\n 'Status' : 'New',\n 'Priority' : 'Low',\n 'SuppliedName' : $record.values.FirstName + ' ' + $record.values.LastName,\n 'SuppliedEmail' : $record.values.Email,\n 'SuppliedPhone' : $record.values.Phone,\n 'CaseNumber' : nextCaseNumber\n }, 'Case').then(myCase => {\n\n // return was missing here. Set tjhe mySavedCase below\n return Compose.saveRecord(myCase)\n\n }).then(mySavedCase => {\n let nextCaseNumberUpdated = parseInt(nextCaseNumber, 10) + 1\n\n // Update the config\n settings.values.CaseNextNumber = nextCaseNumberUpdated\n return Compose.saveRecord(settings).then(mySavedSettings => {\n\n console.log('Record saved, new ID', mySavedSettings.recordID)\n // then(({ mySavedCase }) wasn't needed, since it is already defined\n // for the entire block, starting at line 27\n }).then(() => {\n\n // Notify current user\n ComposeUI.success(`The new case has been created.`)\n\n }).then(() => {\n\n // Go to the record\n ComposeUI.gotoRecordEditor(mySavedCase)\n\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n async: false\n runInUA: true\n critical: true\n enabled: true\n timeout: 0\n triggers:\n - event: manual\n module: Contact\n resource: compose:record\n LeadConvertLeadIntoAccount:\n source: |-\n if ($record.values.Status === 'Converted') {\n // Lead already converted. Inform user and exit\n ComposeUI.warning('This lead is already converted.')\n return true\n }\n\n // create new record of type/module Account and copy all values\n return Compose.makeRecord({\n 'BillingStreet' : $record.values.Street,\n 'BillingCity' : $record.values.City,\n 'BillingState' : $record.values.State,\n 'BillingPostalCode' : $record.values.PostalCode,\n 'BillingCountry' : $record.values.Country,\n 'AnnualRevenue' : $record.values.AnnualRevenue,\n 'AccountName' : $record.values.Company,\n 'Description' : $record.values.Description,\n 'Fax' : $record.values.Fax,\n 'Industry' : $record.values.Industry,\n 'OwnerId' : $record.values.OwnerId,\n 'AccountSource' : $record.values.LeadSource,\n 'Phone' : $record.values.Phone,\n 'NumberOfEmployees' : $record.values.NumberOfEmployees,\n 'Rating' : $record.values.Rating,\n 'Website' : $record.values.Website,\n 'Twitter' : $record.values.Twitter,\n 'Facebook' : $record.values.Facebook,\n 'LinkedIn' : $record.values.LinkedIn\n }, 'Account').then(myAccount => {\n\n return Compose.saveRecord(myAccount)\n\n }).then(mySavedAccount => {\n\n // Create the related contact\n return Compose.makeRecord({\n 'MailingStreet' : $record.values.Street,\n 'MailingCity' : $record.values.City,\n 'MailingState' : $record.values.State,\n 'MailingPostalCode' : $record.values.PostalCode,\n 'MailingCountry' : $record.values.Country,\n 'Description' : $record.values.Description,\n 'DoNotCall' : $record.values.DoNotCall,\n 'Email' : $record.values.Email,\n 'HasOptedOutOfEmail' : $record.values.HasOptedOutOfEmail,\n 'Fax' : $record.values.Fax,\n 'HasOptedOutOfFax' : $record.values.HasOptedOutOfFax,\n 'OwnerId' : $record.values.OwnerId,\n 'LeadSource' : $record.values.LeadSource,\n 'Website' : $record.values.Website,\n 'Twitter' : $record.values.Twitter,\n 'Facebook' : $record.values.Facebook,\n 'LinkedIn' : $record.values.LinkedIn,\n 'Salutation' : $record.values.Salutation,\n 'FirstName' : $record.values.FirstName,\n 'LastName' : $record.values.LastName,\n 'MobilePhone' : $record.values.MobilePhone,\n 'Phone' : $record.values.Phone,\n 'Title' : $record.values.Title,\n 'IsPrimary' : '1',\n 'AccountId' : mySavedAccount.recordID\n }, 'Contact').then(myContact => {\n\n return Compose.saveRecord(myContact)\n\n }).then(updatedAccount => {\n\n //Update the lead record\n $record.values.Status = 'Converted'\n $record.values.IsConverted = 'Yes'\n $record.values.ConvertedAccountId = mySavedAccount.recordID\n $record.values.ConvertedContactId = mySavedAccount.recordID\n $record.values.ConvertedDate = mySavedAccount.createdAt\n\n return Compose.saveRecord($record)\n\n }).then(leadUser => {\n\n return System.findUserByID($record.values.OwnerId).then(user => {\n\n // Notifies the owner that a new account was created and assigned to him\n Compose.sendRecordToMail(\n user.email,\n 'Lead ' + $record.values.FirstName + ' ' + $record.values.LastName + ' from ' + $record.values.Company + ' has been converted',\n {\n header: '

The following lead has been converted:

'\n },\n mySavedAccount\n )\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n\n }).then(({ mySavedAccount }) => {\n\n // Notify current user\n ComposeUI.success(`The lead has been converted.`)\n\n\n }).then(({ mySavedAccount }) => {\n\n // Go to the record\n ComposeUI.gotoRecordEditor(mySavedAccount)\n\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n async: false\n runInUA: true\n critical: true\n enabled: true\n timeout: 0\n triggers:\n - event: manual\n module: Lead\n resource: compose:record\n LeadConvertLeadToAccountAndOpportunity:\n source: |-\n if ($record.values.Status === 'Converted') {\n // Lead already converted. Inform user and exit\n ComposeUI.warning('This lead is already converted.')\n return true\n }\n\n // create new record of type/module Account and copy all values\n return Compose.makeRecord({\n 'BillingStreet' : $record.values.Street,\n 'BillingCity' : $record.values.City,\n 'BillingState' : $record.values.State,\n 'BillingPostalCode' : $record.values.PostalCode,\n 'BillingCountry' : $record.values.Country,\n 'AnnualRevenue' : $record.values.AnnualRevenue,\n 'AccountName' : $record.values.Company,\n 'Description' : $record.values.Description,\n 'Fax' : $record.values.Fax,\n 'Industry' : $record.values.Industry,\n 'OwnerId' : $record.values.OwnerId,\n 'AccountSource' : $record.values.LeadSource,\n 'Phone' : $record.values.Phone,\n 'NumberOfEmployees' : $record.values.NumberOfEmployees,\n 'Rating' : $record.values.Rating,\n 'Website' : $record.values.Website,\n 'Twitter' : $record.values.Twitter,\n 'Facebook' : $record.values.Facebook,\n 'LinkedIn' : $record.values.LinkedIn\n }, 'Account').then(myAccount => {\n\n return Compose.saveRecord(myAccount)\n\n }).then(mySavedAccount => {\n\n // Create the related contact\n return Compose.makeRecord({\n 'MailingStreet' : $record.values.Street,\n 'MailingCity' : $record.values.City,\n 'MailingState' : $record.values.State,\n 'MailingPostalCode' : $record.values.PostalCode,\n 'MailingCountry' : $record.values.Country,\n 'Description' : $record.values.Description,\n 'DoNotCall' : $record.values.DoNotCall,\n 'Email' : $record.values.Email,\n 'HasOptedOutOfEmail' : $record.values.HasOptedOutOfEmail,\n 'Fax' : $record.values.Fax,\n 'HasOptedOutOfFax' : $record.values.HasOptedOutOfFax,\n 'OwnerId' : $record.values.OwnerId,\n 'LeadSource' : $record.values.LeadSource,\n 'Website' : $record.values.Website,\n 'Twitter' : $record.values.Twitter,\n 'Facebook' : $record.values.Facebook,\n 'LinkedIn' : $record.values.LinkedIn,\n 'Salutation' : $record.values.Salutation,\n 'FirstName' : $record.values.FirstName,\n 'LastName' : $record.values.LastName,\n 'MobilePhone' : $record.values.MobilePhone,\n 'Phone' : $record.values.Phone,\n 'Title' : $record.values.Title,\n 'IsPrimary' : '1',\n 'AccountId' : mySavedAccount.recordID\n }, 'Contact').then(mySavedContact => {\n\n return Compose.saveRecord(mySavedContact).then(mySavedContact => {\n\n // First get the default values\n //Get the default settings\n return Compose.findLastRecord('Settings').then(settings => {\n\n let opportunityCloseDays = settings.values.OpportunityCloseDateDays\n let opportunityProbability = settings.values.OpportunityProbability\n let opportunityForecaseCategory = settings.values.OpportunityForecaseCategory\n let opportunityStagename = settings.values.OpportunityStagename\n\n //Calculate the expiration date\n let m = new Date()\n m.setDate(m.getDate() + parseInt(opportunityCloseDays,10))\n let closeDate = m.getUTCFullYear() +\"/\"+ (m.getUTCMonth()+1) +\"/\"+ m.getUTCDate() + \" \" + m.getUTCHours() + \":\" + m.getUTCMinutes() + \":\" + m.getUTCSeconds()\n\n // Create the related opportunity\n return Compose.makeRecord({\n 'Description' : $record.values.Description,\n 'OwnerId' : $record.values.OwnerId,\n 'LeadSource' : $record.values.LeadSource,\n 'Name' : '(unnamed)',\n 'AccountId' : mySavedAccount.recordID,\n 'IsClosed' : 'No',\n 'IsWon' : 'No',\n 'CloseDate' : closeDate,\n 'Probability' : opportunityProbability,\n 'ForecastCategory' : opportunityForecaseCategory,\n 'StageName' : opportunityStagename\n }, 'Opportunity').then(myOpportunity => {\n return Compose.saveRecord(myOpportunity)\n\n }).then(mySavedOpportunity => {\n\n //Create a new contact linked to the opportunity\n return Compose.makeRecord({\n 'ContactId' : mySavedContact.recordID,\n 'OpportunityId' : mySavedOpportunity.recordID,\n 'IsPrimary' : '1'\n }, 'OpportunityContactRole').then(myOpportunityContactRole => {\n return Compose.saveRecord(myOpportunityContactRole)\n\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n\n\n }).then(updatedAccount => {\n\n //Update the lead record\n $record.values.Status = 'Converted'\n $record.values.IsConverted = 'Yes'\n $record.values.ConvertedAccountId = mySavedAccount.recordID\n $record.values.ConvertedContactId = mySavedAccount.recordID\n $record.values.ConvertedDate = mySavedAccount.createdAt\n\n return Compose.saveRecord($record)\n\n }).then(leadUser => {\n\n return System.findUserByID($record.values.OwnerId).then(user => {\n\n // Notifies the owner that a new account was created and assigned to him\n Compose.sendRecordToMail(\n user.email,\n 'Lead ' + $record.values.FirstName + ' ' + $record.values.LastName + ' from ' + $record.values.Company + ' has been converted',\n {\n header: '

The following lead has been converted:

'\n },\n mySavedAccount\n )\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n\n }).then(({ mySavedAccount }) => {\n\n // Notify current user\n ComposeUI.success(`The lead has been converted.`)\n\n\n }).then(({ mySavedAccount }) => {\n\n // Go to the record\n ComposeUI.gotoRecordEditor(mySavedAccount)\n\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n\n async: false\n runInUA: true\n critical: true\n enabled: true\n timeout: 0\n triggers:\n - event: manual\n module: Lead\n resource: compose:record\n QuoteSendQuoteToCustomEmail:\n source: |-\n // Get the to address\n let to = prompt(\"Please enter an email to send this quote to:\")\n if (to === null || to === \"\") {\n ComposeUI.warning(`Please enter an email to send this quote to .`)\n return\n }\n\n let lineitems = ''\n Compose.findRecords(`QuoteId = ${$record.recordID}`, 'QuoteLineItem')\n\n .then(({ set, filter }) => {\n\n set.forEach(lineitem => {\n\n lineitems = lineitems + \"Price: \" + lineitem.values.UnitPrice + \"
\"\n lineitems = lineitems + \"Quantity: \" + lineitem.values.Quantity + \"
\"\n lineitems = lineitems + \"Subtotal: \" + lineitem.values.Subtotal + \"
\"\n lineitems = lineitems + \"Discount: \" + lineitem.values.Discount + \"
\"\n lineitems = lineitems + \"Total Price: \" + lineitem.values.TotalPrice + \"
\"\n lineitems = lineitems + \"-------------------------
\"\n })\n return lineitems\n }).then(lineitems => {\n\n\n // Get email body\n let html = \"

Details of Quote: \" + $record.values.QuoteNumber + \" - \" + $record.values.Name + \"

\"\n html = html + \"
\"\n html = html + \"\"\n html = html + \"\"\n html = html + \"\"\n html = html + \"\"\n html = html + \"\"\n html = html + \"\"\n html = html + \"\"\n html = html + \"\"\n html = html + \"\"\n html = html + \"\"\n html = html + \"\"\n html = html + \"\"\n html = html + \"\"\n html = html + \"\"\n html = html + \"
\"\n html = html + \"Quote Information
\"\n html = html + \"
\"\n html = html + \"Quote Number: \" + $record.values.QuoteNumber + \"
\"\n html = html + \"Quote Name: \" + $record.values.Name + \"
\"\n html = html + \"Expiration Date: \" + $record.values.ExpirationDate + \"
\"\n html = html + \"Description: \" + $record.values.Description\n html = html + \"
\"\n html = html + \"Primary contact data
\"\n html = html + \"
\"\n html = html + \"Contact Name: \" + $record.values.ContactId + \"
\"\n html = html + \"Email: \" + $record.values.Email + \"
\"\n html = html + \"Phone: \" + $record.values.Phone\n html = html + \"
\"\n html = html + \"Totals
\"\n html = html + \"
\"\n html = html + \"Subtotal: \" + $record.values.Subtotal + \"
\"\n html = html + \"Additional Discount: \" + $record.values.Discount + \"
\"\n html = html + \"Shipping and Handling: \" + $record.values.ShippingHandling + \"
\"\n html = html + \"Total Price: \" + $record.values.TotalPrice + \"
\"\n html = html + \"Tax: \" + $record.values.Tax + \"
\"\n html = html + \"Grand Total: \" + $record.values.GrandTotal\n html = html + \"
\"\n html = html + \"Products
\"\n html = html + \"
\"\n html = html + lineitems\n html = html + \"
\"\n html = html + \"Bill To
\"\n html = html + \"
\"\n html = html + \"Bill to Name: \" + $record.values.BillingName + \"
\"\n html = html + \"Bill to Street: \" + $record.values.BillingStreet + \"
\"\n html = html + \"Bill to City: \" + $record.values.BillingCity + \"
\"\n html = html + \"Bill to State: \" + $record.values.BillingState + \"
\"\n html = html + \"Bill to Postal Code: \" + $record.values.BillingPostalCode + \"
\"\n html = html + \"Bill to Country: \" + $record.values.BillingCountry\n html = html + \"
\"\n html = html + \"Quote To
\"\n html = html + \"
\"\n html = html + \"Quote to Name: \" + $record.values.QuoteToName + \"
\"\n html = html + \"Quote to Street: \" + $record.values.QuoteToStreet + \"
\"\n html = html + \"Quote to City: \" + $record.values.QuoteToCity + \"
\"\n html = html + \"Quote to State: \" + $record.values.QuoteToState + \"
\"\n html = html + \"Quote to Postal Code: \" + $record.values.QuoteToPostalCode + \"
\"\n html = html + \"Quote to Country: \" + $record.values.QuoteToCountry\n html = html + \"
\"\n html = html + \"Ship To
\"\n html = html + \"
\"\n html = html + \"Ship to Name: \" + $record.values.ShippingName + \"
\"\n html = html + \"Ship to Street: \" + $record.values.ShippingStreet + \"
\"\n html = html + \"Ship to City: \" + $record.values.ShippingCity + \"
\"\n html = html + \"Ship to State: \" + $record.values.ShippingState + \"
\"\n html = html + \"Ship to Postal Code: \" + $record.values.ShippingPostalCode + \"
\"\n html = html + \"Ship to Country: \" + $record.values.ShippingCountry\n html = html + \"
\"\n\n // Send the email\n return Compose.sendMail(to, `Corteza - Quote: ${$record.values.QuoteNumber} - ${$record.values.Name}`, { html: html }).then(() => {\n ComposeUI.success(`The quote has been sent via email.`)\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n async: false\n runInUA: true\n critical: true\n enabled: true\n timeout: 0\n triggers:\n - event: manual\n module: Quote\n resource: compose:record\n QuoteSendQuoteToPrimaryContact:\n source: |-\n // Get the to address\n let to = $record.values.Email\n if (!to) {\n ComposeUI.warning(`There is no email linked to the quote. Please fill in an email address in the \"Primary contact data\" block.`)\n return\n }\n\n let lineitems = ''\n Compose.findRecords(`QuoteId = ${$record.recordID}`, 'QuoteLineItem')\n\n .then(({ set, filter }) => {\n\n set.forEach(lineitem => {\n\n lineitems = lineitems + \"Price: \" + lineitem.values.UnitPrice + \"
\"\n lineitems = lineitems + \"Quantity: \" + lineitem.values.Quantity + \"
\"\n lineitems = lineitems + \"Subtotal: \" + lineitem.values.Subtotal + \"
\"\n lineitems = lineitems + \"Discount: \" + lineitem.values.Discount + \"
\"\n lineitems = lineitems + \"Total Price: \" + lineitem.values.TotalPrice + \"
\"\n lineitems = lineitems + \"-------------------------
\"\n })\n return lineitems\n }).then(lineitems => {\n\n\n // Get email body\n let html = \"

Details of Quote: \" + $record.values.QuoteNumber + \" - \" + $record.values.Name + \"

\"\n html = html + \"
\"\n html = html + \"\"\n html = html + \"\"\n html = html + \"\"\n html = html + \"\"\n html = html + \"\"\n html = html + \"\"\n html = html + \"\"\n html = html + \"\"\n html = html + \"\"\n html = html + \"\"\n html = html + \"\"\n html = html + \"\"\n html = html + \"\"\n html = html + \"\"\n html = html + \"
\"\n html = html + \"Quote Information
\"\n html = html + \"
\"\n html = html + \"Quote Number: \" + $record.values.QuoteNumber + \"
\"\n html = html + \"Quote Name: \" + $record.values.Name + \"
\"\n html = html + \"Expiration Date: \" + $record.values.ExpirationDate + \"
\"\n html = html + \"Description: \" + $record.values.Description\n html = html + \"
\"\n html = html + \"Primary contact data
\"\n html = html + \"
\"\n html = html + \"Contact Name: \" + $record.values.ContactId + \"
\"\n html = html + \"Email: \" + $record.values.Email + \"
\"\n html = html + \"Phone: \" + $record.values.Phone\n html = html + \"
\"\n html = html + \"Totals
\"\n html = html + \"
\"\n html = html + \"Subtotal: \" + $record.values.Subtotal + \"
\"\n html = html + \"Additional Discount: \" + $record.values.Discount + \"
\"\n html = html + \"Shipping and Handling: \" + $record.values.ShippingHandling + \"
\"\n html = html + \"Total Price: \" + $record.values.TotalPrice + \"
\"\n html = html + \"Tax: \" + $record.values.Tax + \"
\"\n html = html + \"Grand Total: \" + $record.values.GrandTotal\n html = html + \"
\"\n html = html + \"Products
\"\n html = html + \"
\"\n html = html + lineitems\n html = html + \"
\"\n html = html + \"Bill To
\"\n html = html + \"
\"\n html = html + \"Bill to Name: \" + $record.values.BillingName + \"
\"\n html = html + \"Bill to Street: \" + $record.values.BillingStreet + \"
\"\n html = html + \"Bill to City: \" + $record.values.BillingCity + \"
\"\n html = html + \"Bill to State: \" + $record.values.BillingState + \"
\"\n html = html + \"Bill to Postal Code: \" + $record.values.BillingPostalCode + \"
\"\n html = html + \"Bill to Country: \" + $record.values.BillingCountry\n html = html + \"
\"\n html = html + \"Quote To
\"\n html = html + \"
\"\n html = html + \"Quote to Name: \" + $record.values.QuoteToName + \"
\"\n html = html + \"Quote to Street: \" + $record.values.QuoteToStreet + \"
\"\n html = html + \"Quote to City: \" + $record.values.QuoteToCity + \"
\"\n html = html + \"Quote to State: \" + $record.values.QuoteToState + \"
\"\n html = html + \"Quote to Postal Code: \" + $record.values.QuoteToPostalCode + \"
\"\n html = html + \"Quote to Country: \" + $record.values.QuoteToCountry\n html = html + \"
\"\n html = html + \"Ship To
\"\n html = html + \"
\"\n html = html + \"Ship to Name: \" + $record.values.ShippingName + \"
\"\n html = html + \"Ship to Street: \" + $record.values.ShippingStreet + \"
\"\n html = html + \"Ship to City: \" + $record.values.ShippingCity + \"
\"\n html = html + \"Ship to State: \" + $record.values.ShippingState + \"
\"\n html = html + \"Ship to Postal Code: \" + $record.values.ShippingPostalCode + \"
\"\n html = html + \"Ship to Country: \" + $record.values.ShippingCountry\n html = html + \"
\"\n\n // Send the email\n return Compose.sendMail(to, `Corteza - Quote: ${$record.values.QuoteNumber} - ${$record.values.Name}`, { html: html }).then(() => {\n ComposeUI.success(`The quote has been sent via email.`)\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n async: false\n runInUA: true\n critical: true\n enabled: true\n timeout: 0\n triggers:\n - event: manual\n module: Quote\n resource: compose:record\n QuoteSubmitQuoteForApproval:\n source: |-\n // Check if it can be reviewed\n if ($record.values.Status !== 'Draft' && $record.values.Status !== 'Needs Review') {\n crust.notify.ui.alert.warning('A quote needs to have the status Draft or Needs Review in order to be sent for approval')\n return true\n }\n\n // Set the status\n $record.values.Status = 'In Review'\n\n // Saves the quote and inform\n return Compose.saveRecord($record)\n .then(mySavedRecord => {\n\n // Get the email of the owner\n return System.findUserByID($record.createdBy).then(user => {\n\n // Send the mail\n return Compose.sendMail(\n user.email, //Change this to the email address of the person that needs to approve the quotes\n `Quote \"${$record.values.Name}\" needs approval`,\n { html: `The following quote needs approval:

${$record.values.Name}` }\n )\n }).then(() => {\n\n // Notify current user\n ComposeUI.success(`The quote has been sent for approval.`)\n\n })\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n async: false\n runInUA: true\n critical: true\n enabled: true\n timeout: 0\n triggers:\n - event: manual\n module: Quote\n resource: compose:record\n OpportunityGenerateNewQuote:\n source: |-\n // Check if there is a related account, to map the fields of the account\n if (!$record.values.AccountId) {\n\n // Exit when there is no account related to the opportunity.\n ComposeUI.warning('Please link the opportunity to an account before generating a quote')\n return\n }\n\n let quoteContactId\n let quoteEmail\n let quotePhone\n let quoteFax\n let quoteAccountId\n let quoteBillingStreet\n let quoteBillingCity\n let quoteBillingState\n let quoteBillingPostalCode\n let quoteBillingCountry\n let quoteBillingName\n let quoteToStreet\n let quoteToCity\n let quoteToState\n let quoteToPostalCode\n let quoteToCountry\n let quoteToName\n let quoteShippingStreet\n let quoteShippingCity\n let quoteShippingState\n let quoteShippingPostalCode\n let quoteShippingCountry\n let quoteShippingName\n let quoteExpirationDate\n let quoteNumber\n\n // Get the primary contact for the quote\n return Compose.findRecords(`OpportunityId = ${$record.recordID}`, 'OpportunityContactRole')\n\n .then(({ set, filter }) => {\n\n let primary_contact\n\n if (set.length === 1) {\n\n // Get the contact\n primary_contact = set[0]\n\n } else {\n\n // Loop through the contacts of the account, to save the primary contact\n set.forEach(r => {\n\n // Check if it's the primary contact\n let contactIsPrimary = r.values.IsPrimary\n if (contactIsPrimary === '1') {\n\n // Add the contact\n primary_contact = r\n }\n })\n }\n return primary_contact\n\n }).then(primary_contact => {\n\n // If we have the primary contact, continue to add it to the quote. Else, skip this block\n if (primary_contact) {\n\n // Get the contact data\n return Compose.findRecordByID(primary_contact.values.ContactId, 'Contact').then(contact => {\n\n quoteContactId = contact.recordID\n quoteEmail = contact.values.Email\n quotePhone = contact.values.Phone\n quoteFax = contact.values.Fax\n\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n }\n\n }).then(mySavedQuote => {\n\n // Get the related account\n return Compose.findRecordByID($record.values.AccountId, 'Account').then(account => {\n\n quoteAccountId = account.recordID,\n quoteBillingStreet = account.values.BillingStreet,\n quoteBillingCity = account.values.BillingCity,\n quoteBillingState = account.values.BillingState,\n quoteBillingPostalCode = account.values.BillingPostalCode,\n quoteBillingCountry = account.values.BillingCountry,\n quoteBillingName = account.values.AccountName,\n quoteToStreet = account.values.BillingStreet,\n quoteToCity = account.values.BillingCity,\n quoteToState = account.values.BillingState,\n quoteToPostalCode = account.values.BillingPostalCode,\n quoteToCountry = account.values.BillingCountry,\n quoteToName = account.values.AccountName,\n quoteShippingStreet = account.values.BillingStreet,\n quoteShippingCity = account.values.BillingCity,\n quoteShippingState = account.values.BillingState,\n quoteShippingPostalCode = account.values.BillingPostalCode,\n quoteShippingCountry = account.values.BillingCountry,\n quoteShippingName = account.values.AccountName\n\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n\n }).then(mySavedQuote => {\n\n // Get the default settings\n return Compose.findLastRecord('Settings').then(settings => {\n\n // Get the expiration date\n let quoteExpirationDays = settings.values.QuoteExpirationDays\n\n // Calculate the expiration date\n let m = new Date()\n m.setDate(m.getDate() + parseInt(quoteExpirationDays, 10))\n let expirationDate = m.getUTCFullYear() + \"/\" + (m.getUTCMonth() + 1) + \"/\" + m.getUTCDate() + \" \" + m.getUTCHours() + \":\" + m.getUTCMinutes() + \":\" + m.getUTCSeconds()\n\n // Save the date\n quoteExpirationDate = expirationDate\n\n // Map the quote number\n let nextQuoteNumber = settings.values.QuoteNextNumber\n if (typeof nextQuoteNumber == \"undefined\" || nextQuoteNumber === '' || isNaN(nextQuoteNumber)) {\n nextQuoteNumber = 0\n }\n quoteNumber = nextQuoteNumber\n let nextQuoteNumberUpdated = parseInt(nextQuoteNumber, 10) + 1\n\n // Update the config\n settings.values.QuoteNextNumber = nextQuoteNumberUpdated\n return Compose.saveRecord(settings).then(mySavedSettings => {\n\n console.log('Record saved, ID', mySavedSettings.recordID)\n\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n\n }).then(mySavedQuote => {\n\n // Create a new quote record for the opportunity\n return Compose.makeRecord({\n 'ShippingHandling': 0,\n 'Status': 'Draft',\n 'Discount': 0,\n 'Tax': 0,\n 'OpportunityId': $record.recordID,\n 'GrandTotal': $record.values.Amount,\n 'PricebookId': $record.values.PricebookId,\n 'Name': $record.values.Name,\n 'Subtotal': $record.values.Amount,\n 'TotalPrice': $record.values.Amount,\n 'ContactId': quoteContactId,\n 'Email': quoteEmail,\n 'Phone': quotePhone,\n 'Fax': quoteFax,\n 'AccountId': quoteAccountId,\n 'BillingStreet': quoteBillingStreet,\n 'BillingCity': quoteBillingCity,\n 'BillingState': quoteBillingState,\n 'BillingPostalCode': quoteBillingPostalCode,\n 'BillingCountry': quoteBillingCountry,\n 'BillingName': quoteBillingName,\n 'QuoteToStreet': quoteToStreet,\n 'QuoteToCity': quoteToCity,\n 'QuoteToState': quoteToState,\n 'QuoteToPostalCode': quoteToPostalCode,\n 'QuoteToCountry': quoteToCountry,\n 'QuoteToName': quoteToName,\n 'ShippingStreet': quoteShippingStreet,\n 'ShippingCity': quoteShippingCity,\n 'ShippingState': quoteShippingState,\n 'ShippingPostalCode': quoteShippingPostalCode,\n 'ShippingCountry': quoteShippingCountry,\n 'ShippingName': quoteShippingName,\n 'ExpirationDate': quoteExpirationDate,\n 'QuoteNumber': quoteNumber\n }, 'Quote')\n\n .then(myQuote => {\n\n return Compose.saveRecord(myQuote)\n\n .then(mySavedQuote => {\n\n // Get the list of products from the opportunity to the quote\n return Compose.findRecords(`OpportunityId = ${$record.recordID}`, 'OpportunityLineItem')\n\n .then(({ set, filter }) => {\n\n // Loop through the lineitems related to the opportunity\n set.forEach(r => {\n\n // Create a new contact linked to the opportunity\n return Compose.makeRecord({\n 'Discount': r.values.Discount,\n 'Description': r.values.Description,\n 'ListPrice': r.values.ListPrice,\n 'PricebookEntryId': r.values.PricebookEntryId,\n 'ProductId': r.values.ProductId,\n 'ProductCode': r.values.ProductCode,\n 'Quantity': r.values.Quantity,\n 'UnitPrice': r.values.UnitPrice,\n 'Subtotal': r.values.Subtotal,\n 'TotalPrice': r.values.TotalPrice,\n 'QuoteId': mySavedQuote.recordID\n }, 'QuoteLineItem')\n\n .then(myQuoteLineItem => {\n\n return Compose.saveRecord(myQuoteLineItem)\n\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n })\n })\n\n }).then(() => {\n\n // Notify current user\n ComposeUI.success(`The new quote has been created.`)\n\n\n }).then(() => {\n\n // Go to the record\n ComposeUI.gotoRecordEditor(mySavedQuote)\n\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n async: false\n runInUA: true\n critical: true\n enabled: true\n timeout: 0\n triggers:\n - event: manual\n module: Opportunity\n resource: compose:record\n QuoteUpdateTotalPrice:\n source: |-\n // Get the subtotal\n let subtotal = parseFloat($record.values.Subtotal)\n\n // Apply additional quote discount\n let discount = $record.values.Discount\n if (!discount || discount === '' || isNaN(discount)) {\n discount = 0\n }\n let totalPrice = subtotal - parseFloat(discount)\n\n // Calculate if it's not below 0\n if (totalPrice < 0) {\n totalPrice = 0\n }\n\n // Apply shipping\n let shippingHandling = $record.values.ShippingHandling\n if (!shippingHandling || shippingHandling === '' || isNaN(shippingHandling)) {\n shippingHandling = 0\n }\n totalPrice = totalPrice + parseFloat(shippingHandling)\n\n // Add totalPrice to the record\n $record.values.TotalPrice = totalPrice\n\n // Apply taxes\n let tax = $record.values.Tax\n if (!shippingHandling || shippingHandling === '' || isNaN(shippingHandling)) {\n // No tax, so don't do anything\n $record.values.GrandTotal = totalPrice\n } else {\n if (tax > 0) {\n // Apply tax\n let taxpercent = parseFloat(tax / 100);\n $record.values.GrandTotal = totalPrice * (1 + taxpercent)\n }\n }\n async: false\n runInUA: false\n critical: true\n enabled: true\n timeout: 0\n triggers:\n - event: beforeUpdate\n module: Quote\n resource: compose:record\n OpportunityApplyPriceBook:\n source: |-\n // Get the current price book\n let pricebookId = $record.values.PricebookId\n\n // Check if there is a price book. If there isn't one, find the standard one\n if (!pricebookId) {\n\n //If there is no price book selected, get the default price book.\n return Compose.findRecords('IsActive = 1', 'Pricebook')\n\n .then(({ set, filter }) => {\n\n if (set.length === 0) {\n\n // return that there are no Price books in the CRM\n ComposeUI.warning(`There are no active price books configured in the CRM. Please insert an active price book in the Price book module.`)\n\n } else {\n\n // Loop through the price books, to find the standard one\n set.forEach(r => {\n\n //Check if the price book is the standard one\n if (r.values.IsStandard === '1') {\n\n //Get the price book id\n pricebookId = r.recordID\n }\n })\n\n if (pricebookId) {\n\n //Save the price book in the opportunity\n $record.values.PricebookId = pricebookId\n\n // Save the price book in the opportunity\n return Compose.saveRecord($record)\n }\n }\n\n\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n }\n\n // Check if a price book is selected or if a standard price book has been found. If not, exit.\n if (!pricebookId) {\n ComposeUI.warning(`Please select a Price book for this opportunity first.`)\n return\n }\n\n //Set the total amount of the opportunity\n let amount = 0\n\n // Find all opportunity lineitems\n return Compose.findRecords(`OpportunityId = ${$record.recordID}`, 'OpportunityLineItem')\n\n .then(({ set, filter }) => {\n\n set.forEach(lineitem => {\n\n //Set the default values\n let quantity = lineitem.values.Quantity\n let discount = lineitem.values.Discount\n let listprice = 0\n let unitprice = 0\n let subtotal = 0\n let totalprice = 0\n\n // Get the product\n return Compose.findRecordByID(lineitem.values.ProductId, 'Product').then(product => {\n\n // Set the product name and code\n lineitem.values.Name = product.values.Name\n lineitem.values.ProductCode = product.values.ProductCode\n\n }).then(product => {\n\n // Get the right price from the selected price book\n return Compose.findRecords(`PricebookId = ${pricebookId} AND ProductId = ${lineitem.values.ProductId}`, 'PricebookEntry')\n\n .then(({ set, filter }) => {\n\n if (set.length > 0) {\n\n let pricebookEntry = set[0]\n\n // Get the list price\n listprice = pricebookEntry.values.UnitPrice\n\n // Update unitprice only when the value is empty\n unitprice = lineitem.values.UnitPrice\n if (!unitprice || unitprice === '' || isNaN(unitprice)) {\n unitprice = listprice\n }\n\n // Calculate the totals\n if (!quantity || quantity === '' || isNaN(quantity)) {\n quantity = 0\n }\n subtotal = unitprice * quantity\n\n // Calculate the total\n if (!discount || discount === '' || isNaN(discount)) {\n totalprice = subtotal\n } else {\n totalprice = subtotal - discount\n }\n\n // Update it in the listitem record\n lineitem.values.ListPrice = listprice\n lineitem.values.UnitPrice = unitprice\n lineitem.values.Subtotal = subtotal\n lineitem.values.TotalPrice = totalprice\n\n //Add the total price to the amount of the opportunity\n amount = amount + totalprice\n\n // Save the lineitem\n return Compose.saveRecord(lineitem)\n }\n }).then(mySolution => {\n\n //Save the opportunity record\n $record.values.Amount = amount\n return Compose.saveRecord($record)\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n async: false\n runInUA: true\n critical: true\n enabled: true\n timeout: 0\n triggers:\n - event: manual\n module: Opportunity\n resource: compose:record\nPK\x07\x08Zl\xb7X\xf0\x05\x01\x00\xf0\x05\x01\x00PK\x03\x04\x14\x00\x08\x00\x00\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x00 \x001400_pages.yamlUT\x05\x00\x01\x80Cm8namespace: crm\npages:\n - handle: Home\n title: Home\n blocks:\n - title: New Leads\n options:\n fields:\n - name: FirstName\n - name: LastName\n - name: Email\n - name: LeadSource\n - name: Status\n module: Lead\n page: RecordPageForModuleLead\n perPage: 5\n prefilter: Status = 'New'\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [0, 14, 6, 9]\n - title: Leads by Type\n options:\n chart: LeadsByType\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Chart\n xywh: [9, 0, 3, 7]\n - title: Open Opportunities\n options:\n fields:\n - name: Name\n - name: AccountId\n - name: Amount\n - name: StageName\n - name: NextStep\n module: Opportunity\n page: RecordPageForModuleOpportunity\n perPage: 3\n prefilter: StageName != 'Closed Won' AND StageName != 'Closed Lost'\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [6, 14, 6, 9]\n - title: Leads by Country\n options:\n chart: LeadsByCountry\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Chart\n xywh: [6, 0, 3, 7]\n - title: Leads per day\n options:\n chart: LeadsPerDay\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Chart\n xywh: [6, 7, 3, 7]\n - title: My Calendar\n options:\n feeds:\n - endField: EndDateTime\n module: Event\n startField: ActivityDate\n titleField: Subject\n - endField: null\n module: Task\n startField: ActivityDate\n titleField: Subject\n header:\n views:\n - agendaWeek\n - agendaMonth\n - agendaDay\n - month\n - listMonth\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Calendar\n xywh: [0, 0, 6, 14]\n - title: Opportunities\n options:\n chart: OpportunitiesByValue\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Chart\n xywh: [9, 7, 3, 7]\n visible: \n - handle: Leads\n title: Leads\n blocks:\n - title: List of leads\n options:\n fields:\n - name: FirstName\n - name: LastName\n - name: Email\n - name: Rating\n - name: Company\n - name: Country\n - name: Status\n - name: OwnerId\n module: Lead\n page: RecordPageForModuleLead\n perPage: 20\n prefilter: \"\"\n presort: createdAt DESC\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [0, 0, 9, 21]\n - title: Leads by type\n options:\n chart: LeadsByType\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Chart\n xywh: [9, 0, 3, 7]\n - title: Leads by country\n options:\n chart: LeadsByCountry\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Chart\n xywh: [9, 7, 3, 7]\n - title: Leads by source\n options:\n chart: LeadsBySource\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Chart\n xywh: [9, 14, 3, 7]\n pages:\n - handle: RecordPageForModuleLead\n module: Lead\n title: Record page for module \"Lead\"\n blocks:\n - title: Personal Data\n options:\n fields:\n - name: FirstName\n - name: LastName\n - name: Salutation\n - name: Title\n - name: Phone\n - name: MobilePhone\n - name: Email\n - name: Website\n - name: Twitter\n - name: LinkedIn\n - name: Facebook\n kind: Record\n xywh: [0, 0, 3, 15]\n - title: Twitter feed\n options:\n fields: []\n profileSourceField: Twitter\n kind: SocialFeed\n xywh: [9, 0, 3, 31]\n - title: Company Data\n options:\n fields:\n - name: Company\n - name: Industry\n - name: AnnualRevenue\n - name: NumberOfEmployees\n - name: NumberOfEmployeesRange\n - name: Country\n - name: City\n - name: Street\n - name: State\n - name: PostalCode\n kind: Record\n xywh: [3, 0, 3, 15]\n - title: Other Information\n options:\n fields:\n - name: Rating\n - name: Status\n - name: LeadSource\n - name: OwnerId\n - name: Description\n - name: ConvertedAccountId\n - name: ConvertedContactId\n - name: ConvertedOpportunityId\n - name: ConvertedDate\n kind: Record\n xywh: [6, 0, 3, 15]\n - title: Notes\n options:\n fields:\n - name: Title\n - name: Body\n - name: createdAt\n module: Note\n page: RecordPageForModuleNote\n perPage: 5\n prefilter: LeadId = ${recordID}\n presort: createdAt DESC\n kind: RecordList\n xywh: [0, 15, 6, 8]\n - title: Events\n options:\n fields:\n - name: Type\n - name: Subject\n - name: ActivityDate\n module: Event\n page: RecordPageForModuleEvent\n perPage: 5\n prefilter: LeadId = ${recordID}\n presort: ActivityDate DESC\n kind: RecordList\n xywh: [0, 23, 4, 8]\n - title: Tasks\n options:\n fields:\n - name: Type\n - name: Subject\n - name: Status\n - name: ActivityDate\n module: Task\n page: RecordPageForModuleTask\n perPage: 5\n prefilter: LeadId = ${recordID}\n presort: ActivityDate DESC\n kind: RecordList\n xywh: [4, 23, 5, 8]\n - title: Lead Actions\n options:\n buttons:\n - label: Convert this Lead in to an Account\n script: LeadConvertLeadIntoAccount\n variant: primary\n - label: 'Lead: Convert a lead into an account and opportunity'\n script: LeadConvertLeadToAccountAndOpportunity\n variant: primary\n kind: Automation\n xywh: [6, 15, 3, 8]\n visible: true\n - handle: AllNewLeads\n title: All New Leads\n blocks:\n - title: New Leads\n options:\n fields:\n - name: FirstName\n - name: LastName\n - name: Email\n - name: Rating\n - name: Company\n - name: Country\n - name: LeadSource\n - name: Status\n - name: OwnerId\n module: Lead\n page: RecordPageForModuleLead\n perPage: 20\n prefilter: Status = 'New' OR Status = 'Assigned'\n presort: createdAt DESC\n kind: RecordList\n xywh: [0, 0, 12, 20]\n visible: true\n - handle: MyLeads\n title: My Leads\n blocks:\n - title: My Leads\n options:\n fields:\n - name: FirstName\n - name: LastName\n - name: Email\n - name: Rating\n - name: Company\n - name: Country\n - name: LeadSource\n - name: Status\n - name: OwnerId\n module: Lead\n page: RecordPageForModuleLead\n perPage: 20\n prefilter: OwnerId = ${userID}\n presort: createdAt DESC\n kind: RecordList\n xywh: [0, 0, 12, 21]\n visible: true\n visible: true\n - handle: Accounts\n title: Accounts\n blocks:\n - title: All accounts\n options:\n fields:\n - name: AccountName\n - name: Type\n - name: Rating\n - name: Industry\n - name: AccountSource\n - name: OwnerId\n - name: createdAt\n module: Account\n page: RecordPageForModuleAccount\n perPage: 20\n presort: createdAt DESC\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [0, 0, 12, 19]\n pages:\n - handle: RecordPageForModuleAccount\n module: Account\n title: Record page for module \"Account\"\n blocks:\n - title: Account Detail\n options:\n fields:\n - name: AccountName\n - name: Type\n - name: Industry\n - name: NumberOfEmployees\n - name: AnnualRevenue\n - name: Twitter\n - name: LinkedIn\n - name: Facebook\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [0, 0, 3, 12]\n - title: Account Address\n options:\n fields:\n - name: BillingStreet\n - name: BillingCity\n - name: BillingState\n - name: BillingPostalCode\n - name: BillingCountry\n - name: Phone\n - name: Website\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [3, 0, 3, 12]\n - title: Other Information\n options:\n fields:\n - name: Rating\n - name: ParentId\n - name: AccountSource\n - name: OwnerId\n - name: Description\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [6, 0, 3, 12]\n - title: Company Twitter Feed\n options:\n fields: []\n profileSourceField: Twitter\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: SocialFeed\n xywh: [9, 0, 3, 20]\n - title: Opportunities\n options:\n fields:\n - name: Name\n - name: StageName\n - name: Amount\n - name: CloseDate\n hideAddButton: true\n module: Opportunity\n page: RecordPageForModuleOpportunity\n perPage: 5\n prefilter: AccountId = ${recordID}\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [0, 12, 6, 8]\n - title: Contacts\n options:\n fields:\n - name: FirstName\n - name: LastName\n - name: Title\n hidePaging: true\n module: Contact\n page: RecordPageForModuleContact\n perPage: 5\n prefilter: AccountId = ${recordID}\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [0, 20, 4, 8]\n - title: Notes\n options:\n fields:\n - name: Title\n - name: Body\n - name: createdAt\n module: Note\n page: RecordPageForModuleNote\n perPage: 5\n prefilter: AccountId = ${recordID}\n presort: createdAt DESC\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [0, 28, 4, 8]\n - title: Cases\n options:\n fields:\n - name: CaseNumber\n - name: Subject\n - name: Status\n hideAddButton: true\n module: Case\n page: RecordPageForModuleCase\n perPage: 5\n prefilter: AccountId = ${recordID}\n presort: createdAt DESC\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [8, 20, 4, 8]\n - title: Events\n options:\n fields:\n - name: Type\n - name: Subject\n - name: ActivityDate\n module: Event\n page: RecordPageForModuleEvent\n perPage: 5\n prefilter: AccountId = ${recordID}\n presort: ActivityDate DESC\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [4, 28, 4, 8]\n - title: Tasks\n options:\n fields:\n - name: Type\n - name: Subject\n - name: Status\n - name: ActivityDate\n module: Task\n page: RecordPageForModuleTask\n perPage: 5\n prefilter: AccountId = ${recordID}\n presort: ActivityDate DESC\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [8, 28, 4, 8]\n - title: Contracts\n options:\n fields:\n - name: Name\n - name: StartDate\n - name: EndDate\n - name: Status\n hideAddButton: true\n module: Contract\n page: RecordPageForModuleContract\n perPage: 5\n prefilter: AccountId = ${recordID}\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [4, 20, 4, 8]\n - title: Account Actions\n options:\n buttons:\n - label: Generate a new Opportunity for this Account\n script: AccountCreateNewOpportunity\n variant: primary\n - label: Generate a new Contract for this Account\n script: AccountCreateNewContract\n variant: primary\n - label: Generate a new Case for this Account\n script: AccountCreateNewCase\n variant: primary\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Automation\n xywh: [6, 12, 3, 8]\n pages:\n - handle: RecordPageForModuleAccountContactRole\n module: AccountContactRole\n title: Record page for module \"AccountContactRole\"\n blocks:\n - title: Account Contact Role Details\n options:\n fields:\n - name: AccountId\n - name: ContactId\n - name: Role\n - name: IsPrimary\n kind: Record\n xywh: [0, 0, 5, 15]\n visible: false\n visible: true\n - handle: MyAccounts\n title: My Accounts\n blocks:\n - title: My Accounts\n options: \n fields:\n - name: AccountName\n - name: Type\n - name: Rating\n - name: Industry\n - name: AccountSource\n - name: OwnerId\n - name: createdAt\n module: Account\n page: RecordPageForModuleAccount\n perPage: 20\n prefilter: OwnerId = ${userID}\n presort: createdAt DESC\n kind: RecordList\n xywh: [0, 0, 12, 21]\n visible: true\n visible: true\n - handle: Opportunities\n title: Opportunities\n blocks:\n - title: List of Opportunities\n options:\n fields:\n - name: Name\n - name: Amount\n - name: AccountId\n - name: StageName\n - name: CloseDate\n - name: OwnerId\n - name: createdAt\n module: Opportunity\n page: RecordPageForModuleOpportunity\n perPage: 20\n presort: createdAt DESC\n kind: RecordList\n xywh: [0, 0, 12, 20]\n pages:\n - handle: RecordPageForModuleOpportunity\n module: Opportunity\n title: Record page for module \"Opportunity\"\n blocks:\n - title: Opportunity Detail\n options:\n fields:\n - name: Name\n - name: AccountId\n - name: Type\n - name: CloseDate\n - name: Probability\n - name: PricebookId\n - name: Amount\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [0, 0, 4, 11]\n - title: Additional Information\n options:\n fields:\n - name: OwnerId\n - name: NextStep\n - name: LeadSource\n - name: CampaignId\n - name: ForecastCategory\n - name: Description\n - name: createdAt\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [8, 0, 4, 11]\n - title: Contact Roles\n options:\n fields:\n - name: ContactId\n - name: IsPrimary\n - name: Role\n module: OpportunityContactRole\n page: RecordPageForModuleOpportunityContactRole\n perPage: 5\n prefilter: OpportunityId = ${recordID}\n presort: IsPrimary DESC\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [6, 19, 6, 8]\n - title: Opportunity Qualification\n options:\n fields:\n - name: StageName\n - name: Budget\n - name: Authority\n - name: Need\n - name: Timeline\n - name: Competition\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [4, 0, 4, 11]\n - title: Products\n options:\n fields:\n - name: ProductId\n - name: ProductCode\n - name: ListPrice\n - name: UnitPrice\n - name: Quantity\n - name: Subtotal\n - name: Discount\n - name: TotalPrice\n module: OpportunityLineItem\n page: RecordPageForModuleOpportunityLineItem\n perPage: 5\n prefilter: OpportunityId = ${recordID}\n presort: ProductId ASC\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [0, 11, 8, 8]\n - title: Notes\n options:\n fields:\n - name: Title\n - name: Body\n - name: createdAt\n module: Note\n page: RecordPageForModuleNote\n perPage: 5\n prefilter: OpportunityId = ${recordID}\n presort: createdAt DESC\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [0, 27, 4, 8]\n - title: Events\n options:\n fields:\n - name: Type\n - name: Subject\n - name: ActivityDate\n module: Event\n page: RecordPageForModuleEvent\n perPage: 5\n prefilter: OpportunityId = ${recordID}\n presort: ActivityDate DESC\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [4, 27, 4, 8]\n - title: Tasks\n options:\n fields:\n - name: Type\n - name: Subject\n - name: Status\n - name: ActivityDate\n module: Task\n page: RecordPageForModuleTask\n perPage: 5\n prefilter: OpportunityId = ${recordID}\n presort: ActivityDate DESC\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [8, 27, 4, 8]\n - title: Quotes\n options:\n fields:\n - name: QuoteNumber\n - name: Name\n - name: ExpirationDate\n - name: Subtotal\n - name: TotalPrice\n hideAddButton: true\n module: Quote\n page: RecordPageForModuleQuote\n perPage: 5\n prefilter: OpportunityId = ${recordID}\n presort: createdAt DESC\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [0, 19, 6, 8]\n - title: Opportunity Actions\n options:\n buttons:\n - label: Update prices of Products by applying the selected Price Book\n and inserted discounts\n script: OpportunityApplyPriceBook\n variant: primary\n - label: Generate a new Quote for this Opportunity\n script: OpportunityGenerateNewQuote\n variant: primary\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Automation\n xywh: [8, 11, 4, 8]\n pages:\n - handle: RecordPageForModuleOpportunityLineItem\n module: OpportunityLineItem\n title: Record page for module \"OpportunityLineItem\"\n blocks:\n - title: Opportunity Line Item Details\n options:\n fields:\n - name: OpportunityId\n - name: ProductId\n - name: Description\n - name: UnitPrice\n - name: Quantity\n - name: Discount\n kind: Record\n xywh: [0, 0, 4, 13]\n - title: Automatically inserted values\n options:\n fields:\n - name: ProductCode\n - name: ListPrice\n - name: Subtotal\n - name: TotalPrice\n kind: Record\n xywh: [4, 0, 4, 13]\n visible: false\n - handle: RecordPageForModuleOpportunityCompetitor\n module: OpportunityCompetitor\n title: Record page for module \"OpportunityCompetitor\"\n blocks:\n - title: Opportunity Competitor Details\n options:\n fields:\n - name: OpportunityId\n - name: CompetitorName\n - name: Strengths\n - name: Weaknesses\n kind: Record\n xywh: [0, 0, 5, 17]\n visible: false\n - handle: RecordPageForModuleOpportunityContactRole\n module: OpportunityContactRole\n title: Record page for module \"OpportunityContactRole\"\n blocks:\n - title: Opportunity Contact Role Details\n options:\n fields:\n - name: OpportunityId\n - name: ContactId\n - name: Role\n - name: IsPrimary\n kind: Record\n xywh: [0, 0, 4, 16]\n pages:\n - handle: RecordPageForModulePricebookEntry\n module: PricebookEntry\n title: Record page for module \"PricebookEntry\"\n blocks:\n - title: Details\n options:\n fields:\n - name: PricebookId\n - name: ProductId\n - name: UnitPrice\n kind: Record\n xywh: [0, 0, 4, 15]\n visible: false\n visible: false\n visible: false\n - handle: MyOpportunities\n title: My Opportunities\n blocks:\n - title: My Opportunities\n options:\n fields:\n - name: Name\n - name: Amount\n - name: AccountId\n - name: StageName\n - name: CloseDate\n - name: OwnerId\n - name: createdAt\n module: Opportunity\n page: RecordPageForModuleOpportunity\n perPage: 20\n prefilter: OwnerId = ${userID}\n presort: createdAt DESC\n kind: RecordList\n xywh: [0, 0, 12, 20]\n visible: true\n visible: true\n - handle: Contacts\n title: Contacts\n blocks:\n - title: List of Contacts\n options:\n fields:\n - name: FirstName\n - name: LastName\n - name: AccountId\n - name: Phone\n - name: Email\n - name: OwnerId\n module: Contact\n page: RecordPageForModuleContact\n perPage: 20\n presort: createdAt DESC\n kind: RecordList\n xywh: [0, 0, 12, 20]\n pages:\n - handle: RecordPageForModuleContact\n module: Contact\n title: Record page for module \"Contact\"\n blocks:\n - title: Personal Data\n options:\n fields:\n - name: FirstName\n - name: LastName\n - name: Salutation\n - name: Title\n - name: Phone\n - name: Email\n - name: Twitter\n - name: Facebook\n - name: LinkedIn\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [0, 0, 3, 13]\n - title: Contact Address\n options:\n fields:\n - name: AccountId\n - name: IsPrimary\n - name: MailingStreet\n - name: MailingCity\n - name: MailingState\n - name: MailingPostalCode\n - name: MailingCountry\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [3, 0, 3, 13]\n - title: Other Information\n options:\n fields:\n - name: OwnerId\n - name: DoNotCall\n - name: HasOptedOutOfEmail\n - name: ContactSource\n - name: Description\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [6, 0, 3, 13]\n - title: Contact Twitter Feed\n options:\n fields: []\n profileSourceField: Twitter\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: SocialFeed\n xywh: [9, 0, 3, 20]\n - title: Notes\n options:\n fields:\n - name: Title\n - name: Body\n - name: LastModifiedDate\n - name: CreatedById\n module: Note\n page: RecordPageForModuleNote\n perPage: 5\n prefilter: ContactId = ${recordID}\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [0, 21, 4, 8]\n - title: Events\n options:\n fields:\n - name: Type\n - name: Subject\n - name: ActivityDate\n module: Event\n page: RecordPageForModuleEvent\n perPage: 5\n prefilter: ContactId = ${recordID}\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [4, 21, 4, 8]\n - title: Tasks\n options:\n fields:\n - name: Type\n - name: Subject\n - name: Status\n - name: ActivityDate\n module: Task\n page: RecordPageForModuleTask\n perPage: 5\n prefilter: ContactId = ${recordID}\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [8, 21, 4, 8]\n - title: Cases related with this Contact\n options:\n fields:\n - name: CaseNumber\n - name: Status\n - name: Subject\n - name: createdAt\n hideAddButton: true\n module: Case\n page: RecordPageForModuleCase\n perPage: 5\n prefilter: ContactId = ${recordID}\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [0, 13, 6, 8]\n - title: Contact Actions\n options:\n buttons:\n - label: Create a new Case for this Contact\n script: ContactCreateNewCase\n variant: primary\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Automation\n xywh: [6, 13, 3, 8]\n visible: false\n visible: true\n - handle: Quotes\n title: Quotes\n blocks:\n - title: List of Quotes\n options:\n fields:\n - name: QuoteNumber\n - name: Name\n - name: OpportunityId\n - name: Discount\n - name: TotalPrice\n - name: Tax\n - name: GrandTotal\n - name: createdAt\n - name: ExpirationDate\n module: Quote\n page: RecordPageForModuleQuote\n perPage: 20\n presort: createdAt DESC\n kind: RecordList\n xywh: [0, 0, 12, 20]\n pages:\n - handle: RecordPageForModuleQuote\n module: Quote\n title: Record page for module \"Quote\"\n blocks:\n - title: Quote Information\n options:\n fields:\n - name: QuoteNumber\n - name: Name\n - name: OpportunityId\n - name: ExpirationDate\n - name: Status\n - name: Description\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [0, 0, 4, 12]\n - title: Totals\n options:\n fields:\n - name: PricebookId\n - name: Subtotal\n - name: Discount\n - name: ShippingHandling\n - name: TotalPrice\n - name: Tax\n - name: GrandTotal\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [8, 0, 4, 12]\n - title: Primary contact data\n options:\n fields:\n - name: AccountId\n - name: ContactId\n - name: Email\n - name: Phone\n - name: createdBy\n - name: createdAt\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [4, 0, 4, 12]\n - title: Bill To\n options:\n fields:\n - name: BillingName\n - name: BillingStreet\n - name: BillingCity\n - name: BillingState\n - name: BillingPostalCode\n - name: BillingCountry\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [0, 20, 4, 9]\n - title: Quote To\n options:\n fields:\n - name: QuoteToName\n - name: QuoteToStreet\n - name: QuoteToCity\n - name: QuoteToState\n - name: QuoteToPostalCode\n - name: QuoteToCountry\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [4, 20, 4, 9]\n - title: Ship To\n options:\n fields:\n - name: ShippingName\n - name: ShippingStreet\n - name: ShippingCity\n - name: ShippingState\n - name: ShippingPostalCode\n - name: ShippingCountry\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [8, 20, 4, 9]\n - title: Quote Line Items\n options:\n fields:\n - name: ProductId\n - name: UnitPrice\n - name: Quantity\n - name: Subtotal\n - name: Discount\n - name: TotalPrice\n - name: ListPrice\n module: QuoteLineItem\n page: RecordPageForModuleQuoteLineItem\n perPage: 5\n prefilter: QuoteId = ${recordID}\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [0, 12, 8, 8]\n - title: Notes\n options:\n fields:\n - name: Title\n - name: Body\n - name: createdAt\n module: Note\n page: RecordPageForModuleNote\n perPage: 5\n prefilter: QuoteId = ${recordID}\n presort: createdAt DESC\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [0, 29, 4, 8]\n - title: Events\n options:\n fields:\n - name: Type\n - name: Subject\n - name: ActivityDate\n module: Event\n page: RecordPageForModuleEvent\n perPage: 5\n prefilter: QuoteId = ${recordID}\n presort: ActivityDate DESC\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [4, 29, 4, 8]\n - title: Tasks\n options:\n fields:\n - name: Type\n - name: Subject\n - name: Status\n - name: ActivityDate\n module: Task\n page: RecordPageForModuleTask\n perPage: 5\n prefilter: QuoteId = ${recordID}\n presort: ActivityDate DESC\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [8, 29, 4, 8]\n - title: Quote Actions\n options:\n buttons:\n - label: Submit this Quote for approval\n script: QuoteSubmitQuoteForApproval\n variant: primary\n - label: Approve this Quote\n script: QuoteApproveQuote\n variant: primary\n - label: Send this Quote via email to the primary contact\n script: QuoteSendQuoteToPrimaryContact\n variant: primary\n - label: Send this Quote to a custom email\n script: QuoteSendQuoteToCustomEmail\n variant: primary\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Automation\n xywh: [8, 12, 4, 8]\n pages:\n - handle: RecordPageForModuleQuoteLineItem\n module: QuoteLineItem\n title: Record page for module \"QuoteLineItem\"\n blocks:\n - title: Quote Line Item Information\n options:\n fields:\n - name: QuoteId\n - name: LineItemNumber\n - name: LineItemDescription\n - name: ProductId\n - name: ListPrice\n - name: UnitPrice\n - name: Quantity\n - name: Subtotal\n - name: Discount\n - name: TotalPrice\n kind: Record\n xywh: [0, 0, 4, 19]\n visible: false\n visible: false\n visible: true\n - handle: Products\n title: Products\n blocks:\n - title: List of Products\n options:\n fields:\n - name: Name\n - name: ProductCode\n - name: Description\n - name: Family\n module: Product\n page: RecordPageForModuleProduct\n perPage: 20\n presort: Name ASC\n kind: RecordList\n xywh: [0, 0, 12, 20]\n pages:\n - handle: RecordPageForModuleProduct\n module: Product\n title: Record page for module \"Product\"\n blocks:\n - title: Product Details\n options:\n fields:\n - name: Name\n - name: ProductCode\n - name: Family\n - name: Description\n - name: IsActive\n kind: Record\n xywh: [0, 0, 6, 10]\n - title: Appears in the following Price Books\n options:\n fields:\n - name: PricebookId\n - name: UnitPrice\n hideAddButton: true\n module: PricebookEntry\n page: RecordPageForModulePricebookEntry\n perPage: 5\n prefilter: ProductId = ${recordID}\n kind: RecordList\n xywh: [6, 0, 6, 10]\n - title: Related Cases\n options:\n fields:\n - name: CaseNumber\n - name: Subject\n - name: Status\n hideAddButton: true\n module: Case\n page: RecordPageForModuleCase\n perPage: 5\n prefilter: ProductId = ${recordID}\n presort: CaseNumber DESC\n kind: RecordList\n xywh: [0, 10, 6, 8]\n - title: Notes\n options:\n fields:\n - name: Title\n - name: Body\n - name: createdAt\n module: Note\n page: RecordPageForModuleNote\n perPage: 5\n prefilter: ProductId = ${recordID}\n presort: createdAt DESC\n kind: RecordList\n xywh: [6, 10, 6, 8]\n visible: false\n - handle: PriceBook\n title: Price book\n blocks:\n - title: Price books\n options:\n fields:\n - name: Name\n - name: Description\n - name: IsStandard\n - name: IsActive\n module: Pricebook\n page: RecordPageForModulePricebook\n perPage: 20\n kind: RecordList\n xywh: [0, 0, 12, 20]\n pages:\n - handle: RecordPageForModuleCaseContactRole\n module: CaseContactRole\n title: Record page for module \"CaseContactRole\"\n blocks:\n - title: Case Contact Role Details\n options:\n fields:\n - name: CasesId\n - name: ContactId\n - name: Role\n - name: IsPrimary\n kind: Record\n xywh: [0, 0, 5, 16]\n visible: false\n - handle: RecordPageForModulePricebook\n module: Pricebook\n title: Record page for module \"Pricebook\"\n blocks:\n - title: Price Book Details\n options:\n fields:\n - name: Name\n - name: Description\n - name: IsStandard\n - name: IsActive\n kind: Record\n xywh: [0, 0, 6, 14]\n - title: Price Book Entries\n options:\n fields:\n - name: ProductId\n - name: UnitPrice\n module: PricebookEntry\n page: RecordPageForModulePricebookEntry\n perPage: 12\n prefilter: PricebookId = ${recordID}\n kind: RecordList\n xywh: [6, 0, 6, 14]\n - title: Notes\n options:\n fields:\n - name: Title\n - name: Body\n - name: createdAt\n module: Note\n page: RecordPageForModuleNote\n perPage: 5\n prefilter: PricebookId = ${recordID}\n presort: createdAt DESC\n kind: RecordList\n xywh: [0, 14, 12, 8]\n visible: false\n visible: true\n visible: true\n - handle: Contracts\n title: Contracts\n blocks:\n - title: List of Contracts\n options:\n fields:\n - name: ContractNumber\n - name: AccountId\n - name: Status\n - name: StartDate\n - name: EndDate\n - name: ContractTerm\n module: Contract\n page: RecordPageForModuleContract\n perPage: 20\n presort: createdAt DESC\n kind: RecordList\n xywh: [0, 0, 12, 20]\n pages:\n - handle: RecordPageForModuleContract\n module: Contract\n title: Record page for module \"Contract\"\n blocks:\n - title: Contract Details\n options:\n fields:\n - name: AccountId\n - name: ContractNumber\n - name: Status\n - name: StartDate\n - name: EndDate\n - name: ContractTerm\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [0, 0, 4, 12]\n - title: Contract Billing Address\n options:\n fields:\n - name: BillingStreet\n - name: BillingCity\n - name: BillingState\n - name: BillingPostalCode\n - name: BillingCountry\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [0, 12, 4, 9]\n - title: Contract Description and Special Terms\n options:\n fields:\n - name: OwnerId\n - name: Description\n - name: SpecialTerms\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [4, 0, 4, 12]\n - title: Contract Files\n options:\n fields:\n - name: File1\n - name: File2\n - name: File3\n - name: File4\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [8, 0, 4, 12]\n - title: Contract Shipping Address\n options:\n fields:\n - name: ShippingStreet\n - name: ShippingCity\n - name: ShippingState\n - name: ShippingPostalCode\n - name: ShippingCountry\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [4, 12, 4, 9]\n - title: Notes\n options:\n fields:\n - name: Title\n - name: Body\n - name: createdAt\n module: Note\n page: RecordPageForModuleNote\n perPage: 5\n prefilter: ContractId = ${recordID}\n presort: createdAt DESC\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [0, 21, 4, 8]\n - title: Events\n options:\n fields:\n - name: Type\n - name: Subject\n - name: ActivityDate\n module: Event\n page: RecordPageForModuleEvent\n perPage: 5\n prefilter: ContractId = ${recordID}\n presort: ActivityDate DESC\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [4, 21, 4, 8]\n - title: Tasks\n options:\n fields:\n - name: Type\n - name: Subject\n - name: Status\n - name: ActivityDate\n module: Task\n page: RecordPageForModuleTask\n perPage: 5\n prefilter: ContractId = ${recordID}\n presort: ActivityDate DESC\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [8, 21, 4, 8]\n pages:\n - handle: RecordPageForModuleContractLineItem\n module: ContractLineItem\n title: Record page for module \"ContractLineItem\"\n blocks:\n - title: Contract Line Item Details\n options:\n fields:\n - name: LineItemNumber\n - name: Description\n - name: StartDate\n - name: EndDate\n - name: Status\n kind: Record\n xywh: [0, 0, 4, 11]\n - title: Contract Line Item Pricing\n options:\n fields:\n - name: UnitPrice\n - name: Quantity\n - name: Subtotal\n - name: Discount\n - name: TotalPrice\n kind: Record\n xywh: [4, 0, 4, 11]\n - title: Notes\n options:\n fields:\n - name: Title\n - name: Body\n - name: createdAt\n module: Note\n page: RecordPageForModuleNote\n perPage: 5\n prefilter: ContractLineItemId = ${recordID}\n kind: RecordList\n xywh: [8, 0, 4, 11]\n visible: false\n - handle: RecordPageForModuleEntitlement\n module: Entitlement\n title: Record page for module \"Entitlement\"\n blocks:\n - title: Entitlement Details\n options:\n fields:\n - name: Name\n - name: Entitlement Process\n - name: CasesPerEntitlement\n - name: Type\n - name: RemainingCases\n - name: IsPerIncident\n - name: StartDate\n - name: EndDate\n - name: Status\n kind: Record\n xywh: [0, 0, 4, 13]\n - title: Other Information\n options:\n fields:\n - name: AccountId\n - name: ContractLineItemId\n - name: CreatedById\n - name: CreatedDate\n - name: LastModifiedById\n - name: LastModifiedDate\n kind: Record\n xywh: [4, 0, 4, 13]\n - title: Notes\n options:\n fields:\n - name: Title\n - name: Body\n module: Note\n page: RecordPageForModuleNote\n perPage: 5\n prefilter: EntitlementId = ${recordID}\n kind: RecordList\n xywh: [6, 13, 6, 7]\n - title: Entitlement Templates\n options:\n fields:\n - name: Name\n - name: Type\n - name: CasesPerEntitlement\n - name: IsPerIncident\n - name: Term\n module: EntitlementTemplate\n page: RecordPageForModuleEntitlementTemplate\n perPage: 5\n prefilter: EntitlementId = ${recordID}\n kind: RecordList\n xywh: [0, 13, 6, 7]\n - title: Entitlement Contacts\n options:\n fields:\n - name: ContactId\n - name: Name\n module: EntitlementContact\n page: RecordPageForModuleEntitlementContact\n perPage: 8\n prefilter: EntitlementId = ${recordID}\n kind: RecordList\n xywh: [8, 0, 4, 13]\n pages:\n - handle: RecordPageForModuleEntitlementTemplate\n module: EntitlementTemplate\n title: Record page for module \"EntitlementTemplate\"\n blocks:\n - title: Entitlement Template Details\n options:\n fields:\n - name: Name\n - name: Type\n - name: CasesPerEntitlement\n - name: IsPerIncident\n - name: Term\n - name: BusinessHours\n kind: Record\n xywh: [0, 0, 4, 14]\n visible: false\n - handle: RecordPageForModuleEntitlementContact\n module: EntitlementContact\n title: Record page for module \"EntitlementContact\"\n blocks:\n - title: Entitlement Contact Details\n options:\n fields:\n - name: EntitlementId\n - name: ContactId\n - name: Name\n kind: Record\n xywh: [0, 0, 4, 14]\n visible: false\n visible: false\n - handle: RecordPageForModuleContractContactRole\n module: ContractContactRole\n title: Record page for module \"ContractContactRole\"\n blocks:\n - title: Contract Contact Role Details\n options:\n fields:\n - name: ContractId\n - name: ContactId\n - name: Role\n - name: IsPrimary\n kind: Record\n xywh: [0, 0, 4, 16]\n visible: false\n visible: false\n visible: true\n - handle: Cases\n title: Cases\n blocks:\n - title: List of Cases\n options:\n fields:\n - name: CaseNumber\n - name: Subject\n - name: Status\n - name: CreatedDate\n - name: OwnerId\n - name: createdAt\n module: Case\n page: RecordPageForModuleCase\n perPage: 20\n presort: createdAt DESC\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [0, 0, 12, 20]\n pages:\n - handle: RecordPageForModuleCase\n module: Case\n title: Record page for module \"Case\"\n blocks:\n - title: Case Main Information\n options:\n fields:\n - name: CaseNumber\n - name: Subject\n - name: AccountId\n - name: ContactId\n - name: SuppliedName\n - name: SuppliedEmail\n - name: SuppliedPhone\n kind: Record\n xywh: [0, 0, 3, 14]\n - title: Case Details\n options:\n fields:\n - name: Type\n - name: Description\n - name: File\n - name: Origin\n - name: ProductId\n kind: Record\n xywh: [3, 0, 3, 14]\n - title: Case Status\n options:\n fields:\n - name: Status\n - name: OwnerId\n - name: CreatedDate\n - name: Priority\n - name: IsEscalated\n - name: IsClosed\n - name: ClosedDate\n - name: Reason\n kind: Record\n xywh: [9, 0, 3, 14]\n - title: Notes\n options:\n fields:\n - name: Title\n - name: Body\n - name: createdAt\n module: Note\n page: RecordPageForModuleNote\n perPage: 5\n prefilter: CaseId = ${recordID}\n presort: createdAt DESC\n kind: RecordList\n xywh: [0, 22, 4, 8]\n - title: Events\n options:\n fields:\n - name: Type\n - name: Subject\n - name: ActivityDate\n module: Event\n page: RecordPageForModuleEvent\n perPage: 5\n prefilter: CaseId = ${recordID}\n presort: ActivityDate DESC\n kind: RecordList\n xywh: [4, 22, 5, 8]\n - title: Tasks\n options:\n fields:\n - name: Type\n - name: Subject\n - name: Status\n - name: ActivityDate\n module: Task\n page: RecordPageForModuleTask\n perPage: 5\n prefilter: CaseId = ${recordID}\n presort: ActivityDate DESC\n kind: RecordList\n xywh: [9, 22, 3, 8]\n - title: Case Updates\n options:\n fields:\n - name: Type\n - name: Description\n - name: File\n - name: createdBy\n - name: createdAt\n module: CaseUpdate\n page: RecordPageForModuleCaseUpdate\n perPage: 5\n prefilter: CaseId = ${recordID}\n presort: createdAt DESC\n kind: RecordList\n xywh: [0, 14, 9, 8]\n - title: Case Actions\n options:\n buttons:\n - label: Set Case status to Working\n script: CaseSetStatusToWorking\n variant: primary\n - label: Set Case status to Closed\n script: CaseSetStatusToClosed\n variant: primary\n - label: Inform the contact via email of the Case's solution\n script: CaseInformContactOfSolution\n variant: primary\n kind: Automation\n xywh: [9, 14, 3, 8]\n - title: Case Solution\n options:\n fields:\n - name: SolutionName\n - name: SolutionNote\n - name: SolutionFile\n - name: SolutionId\n - name: SubmitAsSolution\n kind: Record\n xywh: [6, 0, 3, 14]\n pages:\n - handle: RecordPageForModuleCaseUpdate\n module: CaseUpdate\n title: Record page for module \"CaseUpdate\"\n blocks:\n - title: Case Update\n options:\n fields:\n - name: CaseId\n - name: Description\n - name: Type\n - name: File\n - name: IsSolution\n - name: createdBy\n - name: createdAt\n kind: Record\n xywh: [0, 0, 4, 20]\n visible: false\n - handle: RecordPageForModuleCaseMilestone\n module: CaseMilestone\n title: Record page for module \"CaseMilestone\"\n blocks:\n - title: Case Milestone Details\n options:\n fields:\n - name: CaseId\n - name: TargetDate\n - name: TargetResponseInDays\n - name: TargetResponseInHrs\n - name: TargetResponseInMins\n - name: StartDate\n - name: CompletionDate\n - name: IsViolated\n - name: IsCompleted\n kind: Record\n xywh: [0, 0, 5, 19]\n pages:\n - handle: RecordPageForModuleMilestoneType\n module: MilestoneType\n title: Record page for module \"MilestoneType\"\n blocks:\n - title: Case Milestone Type Details\n options:\n fields:\n - name: Name\n - name: Description\n - name: RecurrenceType\n kind: Record\n xywh: [0, 0, 4, 15]\n visible: false\n visible: false\n visible: false\n - handle: Solutions\n title: Solutions\n blocks:\n - title: List of Solutions\n options:\n fields:\n - name: SolutionNumber\n - name: SolutionName\n - name: SolutionNote\n - name: CaseId\n - name: ProductId\n module: Solution\n page: RecordPageForModuleSolution\n perPage: 20\n presort: createdAt DESC\n kind: RecordList\n xywh: [0, 0, 12, 20]\n pages:\n - handle: RecordPageForModuleSolution\n module: Solution\n title: Record page for module \"Solution\"\n blocks:\n - title: Solution Details\n options:\n fields:\n - name: SolutionNumber\n - name: SolutionName\n - name: SolutionNote\n - name: File\n - name: CaseId\n - name: ProductId\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [0, 0, 5, 17]\n visible: false\n visible: true\n visible: true\n - handle: Campaigns\n title: Campaigns\n blocks:\n - title: List of Campaigns\n options:\n fields:\n - name: Name\n - name: ParentId\n - name: Type\n - name: Status\n - name: StartDate\n - name: EndDate\n module: Campaigns\n page: RecordPageForModuleCampaign\n perPage: 20\n prefilter: \"\"\n presort: createdAt DESC\n kind: RecordList\n xywh: [0, 0, 12, 20]\n pages:\n - handle: RecordPageForModuleCampaign\n module: Campaigns\n title: Record page for module \"Campaign\"\n blocks:\n - title: Campaign Details\n options:\n fields:\n - name: Name\n - name: IsActive\n - name: ParentId\n - name: Type\n - name: OwnerId\n - name: Status\n - name: StartDate\n - name: EndDate\n kind: Record\n xywh: [0, 0, 4, 13]\n - title: Campaign Planning\n options:\n fields:\n - name: BudgetedCost\n - name: ActualCost\n - name: ExpectedRevenue\n - name: CreatedById\n - name: CreatedDate\n - name: Description\n kind: Record\n xywh: [4, 0, 4, 13]\n - title: Campaign Statistics\n options:\n fields:\n - name: NumberOfLeads\n - name: NumberOfConvertedLeads\n - name: NumberOfContacts\n - name: NumberOfOpportunities\n - name: NumberOfWonOpportunities\n - name: AmountAllOpportunities\n - name: AmountWonOpportunities\n kind: Record\n xywh: [8, 0, 4, 13]\n - title: Campaign Members\n options:\n fields:\n - name: LeadId\n - name: ContactId\n - name: Status\n module: CampaignMember\n page: RecordPageForModuleCampaignMember\n perPage: 5\n prefilter: CampaignId = ${recordID}\n kind: RecordList\n xywh: [0, 13, 8, 8]\n - title: Generated Opportunities\n options:\n fields:\n - name: Name\n - name: StageName\n - name: Amount\n - name: CloseDate\n module: Opportunity\n page: RecordPageForModuleOpportunity\n perPage: 5\n prefilter: CampaignId = ${recordID}\n kind: RecordList\n xywh: [0, 21, 8, 8]\n - title: Notes\n options:\n fields:\n - name: Title\n - name: Body\n - name: createdAt\n module: Note\n page: RecordPageForModuleNote\n perPage: 5\n prefilter: CampaignId = ${recordID}\n presort: createdAt DESC\n kind: RecordList\n xywh: [8, 21, 4, 8]\n pages:\n - handle: RecordPageForModuleCampaignMember\n module: CampaignMember\n title: Record page for module \"CampaignMember\"\n blocks:\n - title: Campaign Member Details\n options:\n fields:\n - name: CampaignId\n - name: LeadId\n - name: ContactId\n - name: HasResponded\n - name: FirstRespondedDate\n - name: Status\n kind: Record\n xywh: [0, 0, 5, 13]\n visible: false\n visible: false\n visible: true\n - handle: Tasks\n title: Tasks\n blocks:\n - title: List of Tasks\n options:\n fields:\n - name: Subject\n - name: Status\n - name: LeadId\n - name: AccountId\n - name: ContactId\n - name: OpportunityId\n - name: QuoteId\n - name: ContractId\n - name: CaseId\n - name: ActivityDate\n module: Task\n page: RecordPageForModuleTask\n perPage: 20\n prefilter: \"\"\n presort: ActivityDate DESC\n kind: RecordList\n xywh: [0, 0, 12, 20]\n pages:\n - handle: RecordPageForModuleTask\n module: Task\n title: Record page for module \"Task\"\n blocks:\n - title: Task Details\n options:\n fields:\n - name: Subject\n - name: Description\n - name: Type\n kind: Record\n xywh: [0, 0, 4, 20]\n - title: Related To\n options:\n fields:\n - name: LeadId\n - name: AccountId\n - name: ContactId\n - name: OpportunityId\n - name: QuoteId\n - name: ContractId\n kind: Record\n xywh: [8, 0, 4, 20]\n - title: Task Status\n options:\n fields:\n - name: Status\n - name: ActivityDate\n - name: Priority\n - name: createdBy\n - name: createdAt\n kind: Record\n xywh: [4, 0, 4, 20]\n visible: false\n visible: true\n - handle: Events\n title: Events\n blocks:\n - title: List of Events\n options:\n fields:\n - name: WhoId\n - name: Subject\n - name: ActivityDate\n - name: StartDateTime\n - name: EndDateTime\n - name: LeadId\n - name: AccountId\n - name: OpportunityId\n - name: createdBy\n module: Event\n page: RecordPageForModuleEvent\n perPage: 20\n kind: RecordList\n xywh: [0, 0, 12, 20]\n pages:\n - handle: RecordPageForModuleEvent\n module: Event\n title: Record page for module \"Event\"\n blocks:\n - title: Event Data\n options:\n fields:\n - name: Subject\n - name: Description\n - name: Location\n - name: createdAt\n - name: createdBy\n kind: Record\n xywh: [0, 0, 4, 20]\n - title: Related Objects\n options:\n fields:\n - name: LeadId\n - name: AccountId\n - name: ContactId\n - name: OpportunityId\n - name: QuoteId\n - name: ContractId\n - name: CaseId\n kind: Record\n xywh: [8, 0, 4, 20]\n - title: Event Date and Time\n options:\n fields:\n - name: ActivityDate\n - name: DurationInMinutes\n - name: EndDateTime\n - name: IsAllDayEvent\n kind: Record\n xywh: [4, 0, 4, 20]\n visible: false\n visible: true\n - handle: Notes\n title: Notes\n blocks:\n - title: List of Notes\n options:\n fields:\n - name: Title\n - name: LeadId\n - name: AccountId\n - name: ContactId\n - name: OpportunityId\n - name: QuoteId\n - name: ContractId\n - name: CaseId\n - name: createdAt\n - name: createdBy\n module: Note\n page: RecordPageForModuleNote\n perPage: 20\n presort: createdAt DESC\n kind: RecordList\n xywh: [0, 0, 12, 20]\n pages:\n - handle: RecordPageForModuleNote\n module: Note\n title: Record page for module \"Note\"\n blocks:\n - title: Note\n options:\n fields:\n - name: Title\n - name: Body\n - name: createdAt\n - name: createdBy\n kind: Record\n xywh: [0, 0, 4, 20]\n - title: Files\n options:\n fields:\n - name: FileAdd1\n - name: FileAdd2\n - name: FileAdd3\n - name: FileAdd4\n kind: Record\n xywh: [4, 0, 4, 20]\n - title: Related Objects\n options:\n fields:\n - name: LeadId\n - name: AccountId\n - name: ContactId\n - name: OpportunityId\n - name: QuoteId\n - name: ContractId\n - name: CaseId\n kind: Record\n xywh: [8, 0, 4, 20]\n visible: false\n visible: true\n - handle: Dashboards\n title: Dashboards\n blocks:\n - title: Content\n options:\n body:

Each page in Corteza can be a dashboard. You can add text blocks,\n record lists or charts to make a Sales Activities Dashboard, an executive\n dashboard, or any other dashboard you may need, and set the access\n permissions to define who can view or edit the dashboard.

\n kind: Content\n xywh: [0, 0, 5, 16]\n - title: Leads per day\n options:\n chart: LeadsPerDay\n kind: Chart\n xywh: [5, 0, 3, 16]\n pages:\n - handle: Settings\n title: Settings\n description: A list of default values which are called upon in automation\n processes.\n blocks:\n - title: Settings\n options:\n fields:\n - name: createdAt\n - name: updatedAt\n hidePaging: true\n module: Settings\n page: RecordPageForModuleSettings\n perPage: 1\n kind: RecordList\n xywh: [0, 0, 12, 7]\n pages:\n - handle: RecordPageForModuleSettings\n module: Settings\n title: Record page for module \"Settings\"\n blocks:\n - title: Quote Settings\n options:\n fields:\n - name: QuoteNextNumber\n - name: QuoteExpirationDays\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [3, 0, 3, 12]\n - title: Opportunity Settings\n options:\n fields:\n - name: OpportunityCloseDateDays\n - name: OpportunityProbability\n - name: OpportunityForecaseCategory\n - name: OpportunityStagename\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [0, 0, 3, 12]\n - title: Contract Settings\n options:\n fields:\n - name: ContractNextNumber\n - name: ContractDefaultTime\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [6, 0, 3, 12]\n - title: Case Settings\n options:\n fields:\n - name: CaseNextNumber\n - name: SolutionNextNumber\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [9, 0, 3, 12]\n visible: false\n visible: true\n visible: true\n - handle: UnpublishedModules\n title: Unpublished modules\n pages:\n - handle: Questions\n title: Questions\n visible: false\n blocks:\n - title: List of Questions\n options:\n fields:\n - name: Title\n - name: CreatedDate\n - name: NumReplies\n module: Question\n page: RecordPageForModuleQuestion\n perPage: 20\n presort: createdAt DESC\n kind: RecordList\n xywh: [0, 0, 12, 20]\n pages:\n - handle: RecordPageForModuleQuestion\n module: Question\n title: Record page for module \"Question\"\n blocks:\n - title: Question Details\n options:\n fields:\n - name: Title\n - name: Body\n - name: NumReplies\n - name: BestReplyId\n - name: UpVotes\n - name: VoteScore\n kind: Record\n xywh: [0, 0, 4, 13]\n - title: Replies\n options:\n fields:\n - name: Body\n - name: Name\n - name: UpVotes\n - name: DownVotes\n - name: VoteTotal\n module: Reply\n page: RecordPageForModuleReply\n perPage: 5\n prefilter: QuestionId = ${recordID}\n kind: RecordList\n xywh: [0, 13, 12, 7]\n - title: Votes\n options:\n fields:\n - name: Score\n module: Vote\n page: RecordPageForModuleVote\n perPage: 8\n prefilter: QuestionId = ${recordID}\n kind: RecordList\n xywh: [4, 0, 8, 13]\n pages:\n - handle: RecordPageForModuleVote\n module: Vote\n title: Record page for module \"Vote\"\n blocks:\n - title: Vote Score\n options:\n fields:\n - name: Score\n - name: CreatedById\n - name: CreatedDate\n kind: Record\n xywh: [0, 0, 4, 13]\n - title: Related Object\n options:\n fields:\n - name: IdeaId\n - name: ReplyId\n - name: QuestionId\n kind: Record\n xywh: [4, 0, 4, 13]\n visible: false\n - handle: RecordPageForModuleReply\n module: Reply\n title: Record page for module \"Reply\"\n blocks:\n - title: Reply Details\n options:\n fields:\n - name: QuestionId\n - name: IdeaId\n - name: Body\n - name: Name\n - name: UpVotes\n - name: DownVotes\n - name: VoteTotal\n kind: Record\n xywh: [0, 0, 6, 20]\n - title: Votes\n options:\n fields:\n - name: Score\n - name: CreatedById\n - name: CreatedDate\n module: Vote\n page: RecordPageForModuleVote\n perPage: 20\n prefilter: ReplyId = ${recordID}\n kind: RecordList\n xywh: [6, 0, 6, 20]\n visible: false\n visible: false\n - handle: Ideas\n title: Ideas\n blocks:\n - title: List of Ideas\n options:\n fields:\n - name: Title\n - name: Categories\n - name: ParentIdeaId\n - name: VoteScore\n - name: Status\n module: Idea\n page: RecordPageForModuleIdea\n perPage: 20\n presort: createdAt DESC\n kind: RecordList\n xywh: [0, 0, 12, 20]\n pages:\n - handle: RecordPageForModuleIdea\n module: Idea\n title: Record page for module \"Idea\"\n blocks:\n - title: Idea Details\n options:\n fields:\n - name: Title\n - name: Body\n - name: Categories\n - name: ParentIdeaId\n - name: CreatorName\n - name: Status\n - name: VoteScore\n - name: VoteTotal\n kind: Record\n xywh: [0, 0, 4, 20]\n - title: Votes\n options:\n fields:\n - name: Score\n - name: CreatedById\n - name: CreatedDate\n module: Vote\n page: RecordPageForModuleVote\n perPage: 20\n prefilter: IdeaId = ${recordID}\n kind: RecordList\n xywh: [8, 0, 4, 20]\n - title: Replies\n options:\n fields:\n - name: Body\n - name: Name\n - name: UpVotes\n - name: DownVotes\n - name: VoteTotal\n module: Reply\n page: RecordPageForModuleReply\n perPage: 20\n prefilter: IdeaId = ${recordID}\n kind: RecordList\n xywh: [4, 0, 4, 20]\n visible: false\n visible: false\n - handle: Emails\n title: Emails\n blocks:\n - title: List of Email Templates\n options:\n fields:\n - name: Name\n - name: IsActive\n - name: createdBy\n module: EmailTemplate\n page: RecordPageForModuleEmailTemplate\n perPage: 20\n presort: createdAt DESC\n kind: RecordList\n xywh: [0, 0, 12, 20]\n pages:\n - handle: RecordPageForModuleEmailTemplate\n module: EmailTemplate\n title: Record page for module \"EmailTemplate\"\n blocks:\n - title: Email Template Details\n options:\n fields:\n - name: Name\n - name: Subject\n - name: Description\n - name: Body\n - name: IsActive\n kind: Record\n xywh: [0, 0, 6, 19]\n visible: false\n visible: false\n visible: false\nPK\x07\x08\xa7\xd8\xefxm \x01\x00m \x01\x00PK\x03\x04\x14\x00\x08\x00\x00\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00 \x001500_record_settings.yamlUT\x05\x00\x01\x80Cm8namespace: crm\nrecords:\n Settings:\n - values:\n QuoteExpirationDays: \"30\"\n QuoteNextNumber: \"1\"\n OpportunityCloseDateDays: \"30\"\n OpportunityProbability: \"10\"\n OpportunityForecaseCategory: \"Pipeline\"\n OpportunityStagename: \"Qualification\"\n ContractNextNumber: \"1\"\n ContractDefaultTime: \"12\"\n CaseNextNumber: \"1\"\n SolutionNextNumber: \"1\"\nPK\x07\x08+t\xf5;\x83\x01\x00\x00\x83\x01\x00\x00PK\x01\x02\x14\x03\x14\x00\x08\x00\x00\x00\x00\x00!(\x83\"\xb2>\xdd\x02\x00\x00\xdd\x02\x00\x00\x18\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x00\x00\x00\x000000_access_control.yamlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x00\x00\x00\x00!(\x12\xb2K=\xb9\x00\x00\x00\xb9\x00\x00\x00\x12\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81,\x03\x00\x000100_settings.yamlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x00\x00\x00\x00!(\xe8\x0c\x08\xf3\x88\x00\x00\x00\x88\x00\x00\x00\x13\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81.\x04\x00\x001000_namespace.yamlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x00\x00\x00\x00!(r<\x06\xf9\xc9-\x02\x00\xc9-\x02\x00\x11\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x00\x05\x00\x001100_modules.yamlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x00\x00\x00\x00!(\x18\x18\xf1\xc2\xb0 \x00\x00\xb0 \x00\x00\x10\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x113\x02\x001200_charts.yamlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x00\x00\x00\x00!(Zl\xb7X\xf0\x05\x01\x00\xf0\x05\x01\x00\x11\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x08=\x02\x001300_scripts.yamlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x00\x00\x00\x00!(\xa7\xd8\xefxm \x01\x00m \x01\x00\x0f\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81@C\x03\x001400_pages.yamlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x00\x00\x00\x00!(+t\xf5;\x83\x01\x00\x00\x83\x01\x00\x00\x19\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\xf3c\x04\x001500_record_settings.yamlUT\x05\x00\x01\x80Cm8PK\x05\x06\x00\x00\x00\x00\x08\x00\x08\x00O\x02\x00\x00\xc6e\x04\x00\x00\x00" +var Asset = "PK\x03\x04\x14\x00\x08\x00\x00\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00 \x000000_access_control.yamlUT\x05\x00\x01\x80Cm8allow:\n everyone:\n compose:\n - access\n\n admins:\n compose:\n - access\n - grant\n - settings.read\n - settings.manage\n - namespace.create\n\n compose:namespace:\n - read\n - update\n - delete\n - manage\n - page.create\n - module.create\n - chart.create\n - automation-script.create\n\n compose:module:\n - read\n - update\n - delete\n - record.create\n - record.read\n - record.update\n - record.delete\n - automation-trigger.manage\n\n compose:chart:\n - read\n - update\n - delete\n\n compose:page:\n - read\n - update\n - delete\n\n compose:automation-script:\n - read\n - update\n - delete\nPK\x07\x08\x83\"\xb2>\xdd\x02\x00\x00\xdd\x02\x00\x00PK\x03\x04\x14\x00\x08\x00\x00\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00 \x000100_settings.yamlUT\x05\x00\x01\x80Cm8settings:\n ui.namespace-switcher.enabled: false\n\n record.attachments.max-size: 10\n record.attachments.mimetypes: []\n\n page.attachments.max-size: 10\n page.attachments.mimetypes: []\nPK\x07\x08\x12\xb2K=\xb9\x00\x00\x00\xb9\x00\x00\x00PK\x03\x04\x14\x00\x08\x00\x00\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x17\x00 \x001000_namespace_crm.yamlUT\x05\x00\x01\x80Cm8namespaces:\n crm:\n name: CRM\n allow:\n everyone:\n - module.create\n - read\n deny:\n everyone:\n - delete\nPK\x07\x08\xe8\x0c\x08\xf3\x88\x00\x00\x00\x88\x00\x00\x00PK\x03\x04\x14\x00\x08\x00\x00\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00!\x00 \x001000_namespace_service_cloud.yamlUT\x05\x00\x01\x80Cm8namespaces:\n service-cloud:\n name: Service Cloud\nPK\x07\x08\x8c~U\x925\x00\x00\x005\x00\x00\x00PK\x03\x04\x14\x00\x08\x00\x00\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00 \x001100_modules_crm.yamlUT\x05\x00\x01\x80Cm8namespace: crm\nmodules:\n Account:\n name: Account\n fields:\n AccountName:\n label: Account Name\n kind: String\n required: true\n AccountSource:\n label: Account Source\n kind: Select\n options:\n options:\n - Customer Referral\n - Direct\n - Employee Referral\n - Event\n - Existing Customer\n - Inbound Call\n - Outbound List\n - Partner Referral\n - Seminar\n - Social Media\n - Webinar\n - Website (Organic)\n - Website (PPC)\n - Word of Mouth\n - Other\n selectType: default\n AnnualRevenue:\n label: Annual Revenue\n kind: Select\n options:\n options:\n - Less Than 500,000\n - 500,000 To 1 Million\n - 1 To 2.5 Million\n - 2.5 To 5 Million\n - 5 To 10 Million\n - 10 To 20 Million\n - 20 To 50 Million\n - 50 To 100 Million\n - 100 To 500 Million\n selectType: default\n BillingCity:\n label: Billing City\n kind: String\n BillingCountry:\n label: Billing Country\n kind: Select\n options:\n options:\n - Afghanistan\n - \xc3\x85land Islands\n - Albania\n - Algeria\n - American Samoa\n - Andorra\n - Angola\n - Anguilla\n - Antarctica\n - Antigua And Barbuda\n - Argentina\n - Armenia\n - Aruba\n - Australia\n - Austria\n - Azerbaijan\n - Bahamas\n - Bahrain\n - Bangladesh\n - Barbados\n - Belarus\n - Belgium\n - Belize\n - Benin\n - Bermuda\n - Bhutan\n - Bolivia\n - Bosnia And Herzegovina\n - Botswana\n - Bouvet Island\n - Brazil\n - British Indian Ocean Territory\n - Brunei Darussalam\n - Bulgaria\n - Burkina Faso\n - Burundi\n - Cambodia\n - Cameroon\n - Canada\n - Cape Verde\n - Cayman Islands\n - Central African Republic\n - Chad\n - Chile\n - China\n - Christmas Island\n - Cocos (Keeling) Islands\n - Colombia\n - Comoros\n - Congo\n - Congo; The Democratic Republic Of The\n - Cook Islands\n - Costa Rica\n - Cote D'ivoire\n - Croatia\n - Cuba\n - Cyprus\n - Czechia\n - Denmark\n - Djibouti\n - Dominica\n - Dominican Republic\n - Ecuador\n - Egypt\n - El Salvador\n - Equatorial Guinea\n - Eritrea\n - Estonia\n - Ethiopia\n - Falkland Islands (Malvinas)\n - Faroe Islands\n - Fiji\n - Finland\n - France\n - French Guiana\n - French Polynesia\n - French Southern Territories\n - Gabon\n - Gambia\n - Georgia\n - Germany\n - Ghana\n - Gibraltar\n - Greece\n - Greenland\n - Grenada\n - Guadeloupe\n - Guam\n - Guatemala\n - Guernsey\n - Guinea\n - Guinea-bissau\n - Guyana\n - Haiti\n - Heard Island And Mcdonald Islands\n - Holy See (Vatican City State)\n - Honduras\n - Hong Kong\n - Hungary\n - Iceland\n - India\n - Indonesia\n - Iran; Islamic Republic Of\n - Iraq\n - Ireland\n - Isle Of Man\n - Israel\n - Italy\n - Jamaica\n - Japan\n - Jersey\n - Jordan\n - Kazakhstan\n - Kenya\n - Kiribati\n - Korea; Democratic People's Republic Of\n - Korea; Republic Of\n - Kuwait\n - Kyrgyzstan\n - Lao People's Democratic Republic\n - Latvia\n - Lebanon\n - Lesotho\n - Liberia\n - Libyan Arab Jamahiriya\n - Liechtenstein\n - Lithuania\n - Luxembourg\n - Macao\n - Macedonia; The Former Yugoslav Republic Of\n - Madagascar\n - Malawi\n - Malaysia\n - Maldives\n - Mali\n - Malta\n - Marshall Islands\n - Martinique\n - Mauritania\n - Mauritius\n - Mayotte\n - Mexico\n - Micronesia; Federated States Of\n - Moldova; Republic Of\n - Monaco\n - Mongolia\n - Montenegro\n - Montserrat\n - Morocco\n - Mozambique\n - Myanmar\n - Namibia\n - Nauru\n - Nepal\n - Netherlands\n - Netherlands Antilles\n - New Caledonia\n - New Zealand\n - Nicaragua\n - Niger\n - Nigeria\n - Niue\n - Norfolk Island\n - Northern Mariana Islands\n - Norway\n - Oman\n - Pakistan\n - Palau\n - Palestinian Territory; Occupied\n - Panama\n - Papua New Guinea\n - Paraguay\n - Peru\n - Philippines\n - Pitcairn\n - Poland\n - Portugal\n - Puerto Rico\n - Qatar\n - Reunion\n - Romania\n - Russian Federation\n - Rwanda\n - Saint Helena\n - Saint Kitts And Nevis\n - Saint Lucia\n - Saint Pierre And Miquelon\n - Saint Vincent And The Grenadines\n - Samoa\n - San Marino\n - Sao Tome And Principe\n - Saudi Arabia\n - Senegal\n - Serbia\n - Seychelles\n - Sierra Leone\n - Singapore\n - Slovakia\n - Slovenia\n - Solomon Islands\n - Somalia\n - South Africa\n - South Georgia And The South Sandwich Islands\n - Spain\n - Sri Lanka\n - Sudan\n - Suriname\n - Svalbard And Jan Mayen\n - Swaziland\n - Sweden\n - Switzerland\n - Syrian Arab Republic\n - Taiwan; Province Of China\n - Tajikistan\n - Tanzania; United Republic Of\n - Thailand\n - Timor-leste\n - Togo\n - Tokelau\n - Tonga\n - Trinidad And Tobago\n - Tunisia\n - Turkey\n - Turkmenistan\n - Turks And Caicos Islands\n - Tuvalu\n - Uganda\n - Ukraine\n - United Arab Emirates\n - United Kingdom\n - United States\n - United States Minor Outlying Islands\n - Uruguay\n - Uzbekistan\n - Vanuatu\n - Venezuela\n - Viet Nam\n - Virgin Islands; British\n - Virgin Islands; U.S.\n - Wallis And Futuna\n - Western Sahara\n - Yemen\n - Zambia\n - Zimbabwe\n selectType: default\n BillingPostalCode:\n label: Billing Postal Code\n kind: String\n BillingState:\n label: Billing State\n kind: String\n BillingStreet:\n label: Billing Street\n kind: String\n Description:\n label: Description\n kind: String\n options:\n multiLine: true\n useRichTextEditor: true\n Facebook:\n label: Facebook\n kind: String\n Fax:\n label: Fax\n kind: String\n Industry:\n label: Industry\n kind: Select\n options:\n options:\n - \"\"\n - Agriculture\n - Apparel\n - Banking\n - Biotechnology\n - Chemicals\n - Communications\n - Construction\n - Consulting\n - Education\n - Electronics\n - Energy\n - Engineering\n - Entertainment\n - Environmental\n - Finance\n - Food & Beverage\n - Government\n - Healthcare\n - Hospitality\n - Insurance\n - Machinery\n - Manufacturing\n - Media\n - Not For Profit\n - Other\n - Recreation\n - Retail\n - Shipping\n - Technology\n - Telecommunications\n - Transportation\n - Utilities\n selectType: default\n LastViewedDate:\n label: Last Viewed Date\n kind: DateTime\n LinkedIn:\n label: LinkedIn\n kind: String\n NumberOfEmployees:\n label: Employees\n kind: Number\n options:\n format: 0\n precision: 0\n OwnerId:\n label: Account Owner\n kind: User\n options:\n presetWithAuthenticated: false\n selectType: default\n Ownership:\n label: Ownership\n kind: Select\n options:\n options:\n - Public\n - Private\n selectType: default\n ParentId:\n label: Parent Account\n kind: Record\n options:\n labelField: AccountName\n module: Account\n queryFields:\n - AccountName\n selectType: default\n Phone:\n label: Phone\n kind: String\n Rating:\n label: Rating\n kind: Select\n options:\n options:\n - \xe2\x98\x86\xe2\x98\x86\xe2\x98\x86\xe2\x98\x86\xe2\x98\x86\n - \xe2\x98\x85\xe2\x98\x86\xe2\x98\x86\xe2\x98\x86\xe2\x98\x86\n - \xe2\x98\x85\xe2\x98\x85\xe2\x98\x86\xe2\x98\x86\xe2\x98\x86\n - \xe2\x98\x85\xe2\x98\x85\xe2\x98\x85\xe2\x98\x86\xe2\x98\x86\n - \xe2\x98\x85\xe2\x98\x85\xe2\x98\x85\xe2\x98\x85\xe2\x98\x86\n - \xe2\x98\x85\xe2\x98\x85\xe2\x98\x85\xe2\x98\x85\xe2\x98\x85\n selectType: default\n ShippingCity:\n label: Shipping City\n kind: String\n ShippingCountry:\n label: Shipping Country\n kind: Select\n options:\n options:\n - Afghanistan\n - \xc3\x85land Islands\n - Albania\n - Algeria\n - American Samoa\n - Andorra\n - Angola\n - Anguilla\n - Antarctica\n - Antigua And Barbuda\n - Argentina\n - Armenia\n - Aruba\n - Australia\n - Austria\n - Azerbaijan\n - Bahamas\n - Bahrain\n - Bangladesh\n - Barbados\n - Belarus\n - Belgium\n - Belize\n - Benin\n - Bermuda\n - Bhutan\n - Bolivia\n - Bosnia And Herzegovina\n - Botswana\n - Bouvet Island\n - Brazil\n - British Indian Ocean Territory\n - Brunei Darussalam\n - Bulgaria\n - Burkina Faso\n - Burundi\n - Cambodia\n - Cameroon\n - Canada\n - Cape Verde\n - Cayman Islands\n - Central African Republic\n - Chad\n - Chile\n - China\n - Christmas Island\n - Cocos (Keeling) Islands\n - Colombia\n - Comoros\n - Congo\n - Congo; The Democratic Republic Of The\n - Cook Islands\n - Costa Rica\n - Cote D'ivoire\n - Croatia\n - Cuba\n - Cyprus\n - Czechia\n - Denmark\n - Djibouti\n - Dominica\n - Dominican Republic\n - Ecuador\n - Egypt\n - El Salvador\n - Equatorial Guinea\n - Eritrea\n - Estonia\n - Ethiopia\n - Falkland Islands (Malvinas)\n - Faroe Islands\n - Fiji\n - Finland\n - France\n - French Guiana\n - French Polynesia\n - French Southern Territories\n - Gabon\n - Gambia\n - Georgia\n - Germany\n - Ghana\n - Gibraltar\n - Greece\n - Greenland\n - Grenada\n - Guadeloupe\n - Guam\n - Guatemala\n - Guernsey\n - Guinea\n - Guinea-bissau\n - Guyana\n - Haiti\n - Heard Island And Mcdonald Islands\n - Holy See (Vatican City State)\n - Honduras\n - Hong Kong\n - Hungary\n - Iceland\n - India\n - Indonesia\n - Iran; Islamic Republic Of\n - Iraq\n - Ireland\n - Isle Of Man\n - Israel\n - Italy\n - Jamaica\n - Japan\n - Jersey\n - Jordan\n - Kazakhstan\n - Kenya\n - Kiribati\n - Korea; Democratic People's Republic Of\n - Korea; Republic Of\n - Kuwait\n - Kyrgyzstan\n - Lao People's Democratic Republic\n - Latvia\n - Lebanon\n - Lesotho\n - Liberia\n - Libyan Arab Jamahiriya\n - Liechtenstein\n - Lithuania\n - Luxembourg\n - Macao\n - Macedonia; The Former Yugoslav Republic Of\n - Madagascar\n - Malawi\n - Malaysia\n - Maldives\n - Mali\n - Malta\n - Marshall Islands\n - Martinique\n - Mauritania\n - Mauritius\n - Mayotte\n - Mexico\n - Micronesia; Federated States Of\n - Moldova; Republic Of\n - Monaco\n - Mongolia\n - Montenegro\n - Montserrat\n - Morocco\n - Mozambique\n - Myanmar\n - Namibia\n - Nauru\n - Nepal\n - Netherlands\n - Netherlands Antilles\n - New Caledonia\n - New Zealand\n - Nicaragua\n - Niger\n - Nigeria\n - Niue\n - Norfolk Island\n - Northern Mariana Islands\n - Norway\n - Oman\n - Pakistan\n - Palau\n - Palestinian Territory; Occupied\n - Panama\n - Papua New Guinea\n - Paraguay\n - Peru\n - Philippines\n - Pitcairn\n - Poland\n - Portugal\n - Puerto Rico\n - Qatar\n - Reunion\n - Romania\n - Russian Federation\n - Rwanda\n - Saint Helena\n - Saint Kitts And Nevis\n - Saint Lucia\n - Saint Pierre And Miquelon\n - Saint Vincent And The Grenadines\n - Samoa\n - San Marino\n - Sao Tome And Principe\n - Saudi Arabia\n - Senegal\n - Serbia\n - Seychelles\n - Sierra Leone\n - Singapore\n - Slovakia\n - Slovenia\n - Solomon Islands\n - Somalia\n - South Africa\n - South Georgia And The South Sandwich Islands\n - Spain\n - Sri Lanka\n - Sudan\n - Suriname\n - Svalbard And Jan Mayen\n - Swaziland\n - Sweden\n - Switzerland\n - Syrian Arab Republic\n - Taiwan; Province Of China\n - Tajikistan\n - Tanzania; United Republic Of\n - Thailand\n - Timor-leste\n - Togo\n - Tokelau\n - Tonga\n - Trinidad And Tobago\n - Tunisia\n - Turkey\n - Turkmenistan\n - Turks And Caicos Islands\n - Tuvalu\n - Uganda\n - Ukraine\n - United Arab Emirates\n - United Kingdom\n - United States\n - United States Minor Outlying Islands\n - Uruguay\n - Uzbekistan\n - Vanuatu\n - Venezuela\n - Viet Nam\n - Virgin Islands; British\n - Virgin Islands; U.S.\n - Wallis And Futuna\n - Western Sahara\n - Yemen\n - Zambia\n - Zimbabwe\n selectType: default\n ShippingPostalCode:\n label: Shipping Postal Code\n kind: String\n ShippingState:\n label: Shipping State\n kind: String\n ShippingStreet:\n label: Shipping Street\n kind: String\n Sic:\n label: SIC Code\n kind: String\n SicDesc:\n label: SIC Description\n kind: String\n Twitter:\n label: Twitter\n kind: String\n Type:\n label: Type\n kind: Select\n options:\n options:\n - Channel Partner / Reseller\n - Customer - Channel\n - Customer - Direct\n - Installation Partner\n - Pending\n - Prospect\n - Technology Partner\n - Other\n selectType: default\n Website:\n label: Website\n kind: String\n AccountContactRole:\n name: AccountContactRole\n fields:\n AccountId:\n label: Account\n kind: Record\n options:\n labelField: AccountName\n module: Account\n queryFields:\n - AccountName\n ContactId:\n label: Contact\n kind: Record\n options:\n labelField: MasterRecordId\n module: Contact\n queryFields:\n - AccountId\n - MasterRecordId\n IsPrimary:\n label: Primary\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n Role:\n label: Role\n kind: Select\n options:\n options:\n - Business User\n - Decision Maker\n - Economic Buyer\n - Economic Decision Maker\n - Evaluator\n - Executive Sponsor\n - Gatekeeper\n - Influencer\n - Project Manager\n - Technical Buyer\n - Other\n CampaignMember:\n name: CampaignMember\n fields:\n CampaignId:\n label: Campaign\n kind: Record\n options:\n labelField: Name\n module: Campaigns\n queryFields:\n - Name\n ContactId:\n label: Contact\n kind: Record\n options:\n labelField: Email\n module: Contact\n queryFields:\n - AccountId\n - Email\n - FirstName\n - LastName\n FirstRespondedDate:\n label: First Responded Date\n kind: DateTime\n HasResponded:\n label: Responded\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n LeadId:\n label: Lead\n kind: Record\n options:\n labelField: Email\n module: Lead\n queryFields:\n - Email\n - FirstName\n - LastName\n Status:\n label: Status\n kind: Select\n options:\n options:\n - Attended\n - Registered\n - Responded\n - Viewed a Demo\n - Visited Booth\n - Viewed a Webinar\n Campaigns:\n name: Campaigns\n fields:\n ActualCost:\n label: Actual Cost\n kind: Number\n options:\n format: 0\n precision: 0\n AmountAllOpportunities:\n label: Value Opportunities in Campaign\n kind: Number\n options:\n format: 0\n precision: 0\n AmountWonOpportunities:\n label: Value Won Opportunities in Campaign\n kind: Number\n options:\n format: 0\n precision: 0\n BudgetedCost:\n label: Budgeted Cost\n kind: Number\n options:\n format: 0\n precision: 0\n Description:\n label: Description\n kind: String\n options:\n multiLine: true\n useRichTextEditor: true\n EndDate:\n label: End Date\n kind: DateTime\n options:\n onlyDate: true\n ExpectedResponse:\n label: Expected Response (%)\n kind: Number\n options:\n format: 0\n precision: 0\n ExpectedRevenue:\n label: Expected Revenue\n kind: Number\n options:\n format: 0\n precision: 0\n IsActive:\n label: Active\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n LastActivityDate:\n label: Last Activity\n kind: DateTime\n LastModifiedById:\n label: Last Modified By\n kind: User\n options:\n presetWithAuthenticated: false\n LastModifiedDate:\n label: Last Modified Date\n kind: DateTime\n LastViewedDate:\n label: Last Viewed Date\n kind: DateTime\n Name:\n label: Campaign Name\n kind: String\n NumberOfContacts:\n label: Contacts in Campaign\n kind: Number\n options:\n format: 0\n precision: 0\n NumberOfConvertedLeads:\n label: Converted Leads in Campaign\n kind: Number\n options:\n format: 0\n precision: 0\n NumberOfLeads:\n label: Leads in Campaign\n kind: Number\n options:\n format: 0\n precision: 0\n NumberOfOpportunities:\n label: Opportunities in Campaign\n kind: Number\n options:\n format: 0\n precision: 0\n NumberOfResponses:\n label: Responses in Campaign\n kind: Number\n options:\n format: 0\n precision: 0\n NumberOfWonOpportunities:\n label: Won Opportunities in Campaign\n kind: Number\n options:\n format: 0\n precision: 0\n NumberSent:\n label: Num Sent\n kind: Number\n options:\n format: 0\n precision: 0\n OwnerId:\n label: Campaign Owner\n kind: User\n options:\n presetWithAuthenticated: false\n ParentId:\n label: Parent Campaign\n kind: Record\n options:\n module: Campaigns\n queryFields:\n - Name\n StartDate:\n label: Start Date\n kind: DateTime\n options:\n onlyDate: true\n Status:\n label: Status\n kind: Select\n options:\n options:\n - Aborted\n - Completed\n - In Progress\n - Planned\n - Tentative\n Type:\n label: Type\n kind: Select\n options:\n options:\n - Lead Generation - Direct Mail\n - Lead Generation - Conference\n - Lead Generation - Email Blast\n - Lead Generation - PPC\n - Lead Generation - Seminar\n - Lead Generation - Trade Show\n - Lead Generation - Webinar\n - Lead Generation - Website\n - Brand Building - Print advertisement\n - Brand Building - Radio advertisement\n - Brand Building - TV advertisement\n - Brand Building - Sponsoring\n - Brand Building - Social Media\n - Lead Generation - Contacting personal network\n Case:\n name: Case\n fields:\n AccountId:\n label: Account Name\n kind: Record\n options:\n labelField: AccountName\n module: Account\n queryFields:\n - AccountName\n CaseNumber:\n label: Case Number\n kind: Number\n options:\n format: \"0000000\"\n precision: 0\n ClosedDate:\n label: Date/Time Closed\n kind: DateTime\n ContactId:\n label: Contact Name\n kind: Record\n options:\n labelField: RecordLabel\n module: Contact\n queryFields:\n - RecordLabel\n Description:\n label: Description\n kind: String\n options:\n multiLine: true\n useRichTextEditor: true\n File:\n label: File\n kind: File\n options:\n allowDocuments: false\n allowImages: false\n mode: list\n IsClosed:\n label: Closed\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n IsClosedOnCreate:\n label: Closed When Created\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n IsEscalated:\n label: Escalated\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n Origin:\n label: Case Origin\n kind: Select\n options:\n options:\n - Email\n - Messaging\n - Phone\n - Web\n - Other\n OwnerId:\n label: Case Owner\n kind: User\n options:\n presetWithAuthenticated: false\n ParentId:\n label: Parent Case\n kind: Record\n options:\n labelField: Subject\n module: Case\n queryFields:\n - AccountId\n - CaseNumber\n - Subject\n Priority:\n label: Priority\n kind: Select\n options:\n options:\n - Low\n - Medium\n - High\n ProductId:\n label: Product\n kind: Record\n options:\n labelField: Name\n module: Product\n queryFields:\n - ProductCode\n - Name\n Reason:\n label: Case Reason\n kind: Select\n options:\n options:\n - Documentation unclear\n - Software bug\n - User didn't attend training\n - Other\n SolutionFile:\n label: Solution File\n kind: File\n options:\n allowDocuments: false\n allowImages: false\n mode: list\n SolutionId:\n label: Solution Record\n kind: Record\n options:\n labelField: SolutionName\n module: Solution\n queryFields:\n - SolutionNote\n - SolutionNumber\n - SolutionName\n SolutionName:\n label: Solution Title\n kind: String\n SolutionNote:\n label: Solution Details\n kind: String\n options:\n multiLine: true\n useRichTextEditor: true\n Status:\n label: Status\n kind: Select\n options:\n options:\n - New\n - Working\n - Escalated\n - Closed\n Subject:\n label: Subject\n kind: String\n SubmitAsSolution:\n label: Submit as Solution Record when Case is Closed\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n SuppliedCompany:\n label: Supplied Company\n kind: String\n SuppliedEmail:\n label: Supplied Email\n kind: String\n SuppliedName:\n label: Supplied Name\n kind: String\n SuppliedPhone:\n label: Supplied Phone\n kind: String\n Type:\n label: Type\n kind: Select\n options:\n options:\n - Bug\n - Feature Request\n - Question\n - Other\n CaseContactRole:\n name: CaseContactRole\n fields:\n CaseId:\n label: Case\n kind: Record\n options:\n labelField: Subject\n module: Case\n queryFields:\n - CaseNumber\n - Subject\n ContactId:\n label: Contact\n kind: Record\n options:\n labelField: RecordLabel\n module: Contact\n queryFields:\n - RecordLabel\n IsPrimary:\n label: Primary\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n Role:\n label: Role\n kind: Select\n options:\n options:\n - Business User\n - Decision Maker\n - Economic Buyer\n - Economic Decision Maker\n - Evaluator\n - Executive Sponsor\n - Gatekeeper\n - Influencer\n - Project Manager\n - Technical Buyer\n - Other\n CaseMilestone:\n name: CaseMilestone\n fields:\n CaseId:\n label: Case\n kind: Record\n options:\n labelField: Subject\n module: Case\n queryFields:\n - AccountId\n - CaseNumber\n - Subject\n CompletionDate:\n label: Completion Date\n kind: DateTime\n IsCompleted:\n label: Completed\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n IsViolated:\n label: Violation\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n MilestoneTypeId:\n label: Milestone Type\n kind: Record\n options:\n labelField: Name\n module: MilestoneType\n queryFields:\n - Name\n StartDate:\n label: Start Date\n kind: DateTime\n TargetDate:\n label: Target Date\n kind: DateTime\n TargetResponseInDays:\n label: Target Response (Days)\n kind: Number\n options:\n format: 0\n precision: 0\n TargetResponseInHrs:\n label: Target Response (Hours)\n kind: Number\n options:\n format: 0\n precision: 0\n TargetResponseInMins:\n label: Target Response (Mins)\n kind: Number\n options:\n format: 0\n precision: 0\n CaseUpdate:\n name: CaseUpdate\n fields:\n CaseId:\n label: Case\n kind: Record\n options:\n labelField: Subject\n module: Case\n queryFields:\n - AccountId\n - CaseNumber\n - Subject\n Description:\n label: Description\n kind: String\n options:\n multiLine: true\n useRichTextEditor: true\n File:\n label: File\n kind: File\n options:\n allowDocuments: false\n allowImages: false\n mode: list\n IsSolution:\n label: Marked as solution\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n Type:\n label: Type\n kind: Select\n options:\n options:\n - Email\n - Call\n - Fax\n - Letter\n - Visit\n Contact:\n name: Contact\n fields:\n AccountId:\n label: Account Name\n kind: Record\n options:\n labelField: AccountName\n module: Account\n queryFields: []\n AssistantName:\n label: Assistant\n kind: String\n AssistantPhone:\n label: Asst. Phone\n kind: String\n Birthdate:\n label: Birthdate\n kind: DateTime\n private: true\n Department:\n label: Department\n kind: String\n Description:\n label: Description\n kind: String\n options:\n multiLine: true\n useRichTextEditor: true\n DoNotCall:\n label: Do Not Call\n kind: Bool\n options:\n falseLabel: \"False\"\n trueLabel: Do Not Call\n Email:\n label: Email\n kind: Email\n private: true\n Facebook:\n label: Facebook\n kind: Url\n private: true\n Fax:\n label: Fax\n kind: String\n private: true\n FirstName:\n label: First Name\n kind: String\n private: true\n HasOptedOutOfEmail:\n label: Email Opt Out\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n HasOptedOutOfFax:\n label: Fax Opt Out\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n HomePhone:\n label: Home Phone\n kind: String\n private: true\n IsDeleted:\n label: Deleted\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n IsPrimary:\n label: Primary contact for account\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n LastName:\n label: Last Name\n kind: String\n private: true\n LastViewedDate:\n label: Last Viewed Date\n kind: DateTime\n LeadSource:\n label: Lead Source\n kind: Select\n options:\n options:\n - Customer Referral\n - Direct\n - Employee Referral\n - Event\n - Existing Customer\n - Inbound Call\n - Outbound List\n - Partner Referral\n - Seminar\n - Social Media\n - Webinar\n - Website (Organic)\n - Website (PPC)\n - Word of Mouth\n - Other\n LinkedIn:\n label: LinkedIn\n kind: Url\n private: true\n MailingCity:\n label: Mailing City\n kind: String\n private: true\n MailingCountry:\n label: Mailing Country\n kind: Select\n options:\n options:\n - Afghanistan\n - \xc3\x85land Islands\n - Albania\n - Algeria\n - American Samoa\n - Andorra\n - Angola\n - Anguilla\n - Antarctica\n - Antigua And Barbuda\n - Argentina\n - Armenia\n - Aruba\n - Australia\n - Austria\n - Azerbaijan\n - Bahamas\n - Bahrain\n - Bangladesh\n - Barbados\n - Belarus\n - Belgium\n - Belize\n - Benin\n - Bermuda\n - Bhutan\n - Bolivia\n - Bosnia And Herzegovina\n - Botswana\n - Bouvet Island\n - Brazil\n - British Indian Ocean Territory\n - Brunei Darussalam\n - Bulgaria\n - Burkina Faso\n - Burundi\n - Cambodia\n - Cameroon\n - Canada\n - Cape Verde\n - Cayman Islands\n - Central African Republic\n - Chad\n - Chile\n - China\n - Christmas Island\n - Cocos (Keeling) Islands\n - Colombia\n - Comoros\n - Congo\n - Congo; The Democratic Republic Of The\n - Cook Islands\n - Costa Rica\n - Cote D'ivoire\n - Croatia\n - Cuba\n - Cyprus\n - Czechia\n - Denmark\n - Djibouti\n - Dominica\n - Dominican Republic\n - Ecuador\n - Egypt\n - El Salvador\n - Equatorial Guinea\n - Eritrea\n - Estonia\n - Ethiopia\n - Falkland Islands (Malvinas)\n - Faroe Islands\n - Fiji\n - Finland\n - France\n - French Guiana\n - French Polynesia\n - French Southern Territories\n - Gabon\n - Gambia\n - Georgia\n - Germany\n - Ghana\n - Gibraltar\n - Greece\n - Greenland\n - Grenada\n - Guadeloupe\n - Guam\n - Guatemala\n - Guernsey\n - Guinea\n - Guinea-bissau\n - Guyana\n - Haiti\n - Heard Island And Mcdonald Islands\n - Holy See (Vatican City State)\n - Honduras\n - Hong Kong\n - Hungary\n - Iceland\n - India\n - Indonesia\n - Iran; Islamic Republic Of\n - Iraq\n - Ireland\n - Isle Of Man\n - Israel\n - Italy\n - Jamaica\n - Japan\n - Jersey\n - Jordan\n - Kazakhstan\n - Kenya\n - Kiribati\n - Korea; Democratic People's Republic Of\n - Korea; Republic Of\n - Kuwait\n - Kyrgyzstan\n - Lao People's Democratic Republic\n - Latvia\n - Lebanon\n - Lesotho\n - Liberia\n - Libyan Arab Jamahiriya\n - Liechtenstein\n - Lithuania\n - Luxembourg\n - Macao\n - Macedonia; The Former Yugoslav Republic Of\n - Madagascar\n - Malawi\n - Malaysia\n - Maldives\n - Mali\n - Malta\n - Marshall Islands\n - Martinique\n - Mauritania\n - Mauritius\n - Mayotte\n - Mexico\n - Micronesia; Federated States Of\n - Moldova; Republic Of\n - Monaco\n - Mongolia\n - Montenegro\n - Montserrat\n - Morocco\n - Mozambique\n - Myanmar\n - Namibia\n - Nauru\n - Nepal\n - Netherlands\n - Netherlands Antilles\n - New Caledonia\n - New Zealand\n - Nicaragua\n - Niger\n - Nigeria\n - Niue\n - Norfolk Island\n - Northern Mariana Islands\n - Norway\n - Oman\n - Pakistan\n - Palau\n - Palestinian Territory; Occupied\n - Panama\n - Papua New Guinea\n - Paraguay\n - Peru\n - Philippines\n - Pitcairn\n - Poland\n - Portugal\n - Puerto Rico\n - Qatar\n - Reunion\n - Romania\n - Russian Federation\n - Rwanda\n - Saint Helena\n - Saint Kitts And Nevis\n - Saint Lucia\n - Saint Pierre And Miquelon\n - Saint Vincent And The Grenadines\n - Samoa\n - San Marino\n - Sao Tome And Principe\n - Saudi Arabia\n - Senegal\n - Serbia\n - Seychelles\n - Sierra Leone\n - Singapore\n - Slovakia\n - Slovenia\n - Solomon Islands\n - Somalia\n - South Africa\n - South Georgia And The South Sandwich Islands\n - Spain\n - Sri Lanka\n - Sudan\n - Suriname\n - Svalbard And Jan Mayen\n - Swaziland\n - Sweden\n - Switzerland\n - Syrian Arab Republic\n - Taiwan; Province Of China\n - Tajikistan\n - Tanzania; United Republic Of\n - Thailand\n - Timor-leste\n - Togo\n - Tokelau\n - Tonga\n - Trinidad And Tobago\n - Tunisia\n - Turkey\n - Turkmenistan\n - Turks And Caicos Islands\n - Tuvalu\n - Uganda\n - Ukraine\n - United Arab Emirates\n - United Kingdom\n - United States\n - United States Minor Outlying Islands\n - Uruguay\n - Uzbekistan\n - Vanuatu\n - Venezuela\n - Viet Nam\n - Virgin Islands; British\n - Virgin Islands; U.S.\n - Wallis And Futuna\n - Western Sahara\n - Yemen\n - Zambia\n - Zimbabwe\n private: true\n MailingPostalCode:\n label: Mailing Postal Code\n kind: String\n private: true\n MailingState:\n label: Mailing State\n kind: String\n private: true\n MailingStreet:\n label: Mailing Street\n kind: String\n private: true\n MasterRecordId:\n label: Contact\n kind: Record\n options:\n labelField: Email\n module: Contact\n queryFields: []\n MobilePhone:\n label: Mobile\n kind: String\n private: true\n OtherCity:\n label: Other City\n kind: String\n private: true\n OtherCountry:\n label: Other Country\n kind: Select\n options:\n options:\n - Afghanistan\n - \xc3\x85land Islands\n - Albania\n - Algeria\n - American Samoa\n - Andorra\n - Angola\n - Anguilla\n - Antarctica\n - Antigua And Barbuda\n - Argentina\n - Armenia\n - Aruba\n - Australia\n - Austria\n - Azerbaijan\n - Bahamas\n - Bahrain\n - Bangladesh\n - Barbados\n - Belarus\n - Belgium\n - Belize\n - Benin\n - Bermuda\n - Bhutan\n - Bolivia\n - Bosnia And Herzegovina\n - Botswana\n - Bouvet Island\n - Brazil\n - British Indian Ocean Territory\n - Brunei Darussalam\n - Bulgaria\n - Burkina Faso\n - Burundi\n - Cambodia\n - Cameroon\n - Canada\n - Cape Verde\n - Cayman Islands\n - Central African Republic\n - Chad\n - Chile\n - China\n - Christmas Island\n - Cocos (Keeling) Islands\n - Colombia\n - Comoros\n - Congo\n - Congo; The Democratic Republic Of The\n - Cook Islands\n - Costa Rica\n - Cote D'ivoire\n - Croatia\n - Cuba\n - Cyprus\n - Czechia\n - Denmark\n - Djibouti\n - Dominica\n - Dominican Republic\n - Ecuador\n - Egypt\n - El Salvador\n - Equatorial Guinea\n - Eritrea\n - Estonia\n - Ethiopia\n - Falkland Islands (Malvinas)\n - Faroe Islands\n - Fiji\n - Finland\n - France\n - French Guiana\n - French Polynesia\n - French Southern Territories\n - Gabon\n - Gambia\n - Georgia\n - Germany\n - Ghana\n - Gibraltar\n - Greece\n - Greenland\n - Grenada\n - Guadeloupe\n - Guam\n - Guatemala\n - Guernsey\n - Guinea\n - Guinea-bissau\n - Guyana\n - Haiti\n - Heard Island And Mcdonald Islands\n - Holy See (Vatican City State)\n - Honduras\n - Hong Kong\n - Hungary\n - Iceland\n - India\n - Indonesia\n - Iran; Islamic Republic Of\n - Iraq\n - Ireland\n - Isle Of Man\n - Israel\n - Italy\n - Jamaica\n - Japan\n - Jersey\n - Jordan\n - Kazakhstan\n - Kenya\n - Kiribati\n - Korea; Democratic People's Republic Of\n - Korea; Republic Of\n - Kuwait\n - Kyrgyzstan\n - Lao People's Democratic Republic\n - Latvia\n - Lebanon\n - Lesotho\n - Liberia\n - Libyan Arab Jamahiriya\n - Liechtenstein\n - Lithuania\n - Luxembourg\n - Macao\n - Macedonia; The Former Yugoslav Republic Of\n - Madagascar\n - Malawi\n - Malaysia\n - Maldives\n - Mali\n - Malta\n - Marshall Islands\n - Martinique\n - Mauritania\n - Mauritius\n - Mayotte\n - Mexico\n - Micronesia; Federated States Of\n - Moldova; Republic Of\n - Monaco\n - Mongolia\n - Montenegro\n - Montserrat\n - Morocco\n - Mozambique\n - Myanmar\n - Namibia\n - Nauru\n - Nepal\n - Netherlands\n - Netherlands Antilles\n - New Caledonia\n - New Zealand\n - Nicaragua\n - Niger\n - Nigeria\n - Niue\n - Norfolk Island\n - Northern Mariana Islands\n - Norway\n - Oman\n - Pakistan\n - Palau\n - Palestinian Territory; Occupied\n - Panama\n - Papua New Guinea\n - Paraguay\n - Peru\n - Philippines\n - Pitcairn\n - Poland\n - Portugal\n - Puerto Rico\n - Qatar\n - Reunion\n - Romania\n - Russian Federation\n - Rwanda\n - Saint Helena\n - Saint Kitts And Nevis\n - Saint Lucia\n - Saint Pierre And Miquelon\n - Saint Vincent And The Grenadines\n - Samoa\n - San Marino\n - Sao Tome And Principe\n - Saudi Arabia\n - Senegal\n - Serbia\n - Seychelles\n - Sierra Leone\n - Singapore\n - Slovakia\n - Slovenia\n - Solomon Islands\n - Somalia\n - South Africa\n - South Georgia And The South Sandwich Islands\n - Spain\n - Sri Lanka\n - Sudan\n - Suriname\n - Svalbard And Jan Mayen\n - Swaziland\n - Sweden\n - Switzerland\n - Syrian Arab Republic\n - Taiwan; Province Of China\n - Tajikistan\n - Tanzania; United Republic Of\n - Thailand\n - Timor-leste\n - Togo\n - Tokelau\n - Tonga\n - Trinidad And Tobago\n - Tunisia\n - Turkey\n - Turkmenistan\n - Turks And Caicos Islands\n - Tuvalu\n - Uganda\n - Ukraine\n - United Arab Emirates\n - United Kingdom\n - United States\n - United States Minor Outlying Islands\n - Uruguay\n - Uzbekistan\n - Vanuatu\n - Venezuela\n - Viet Nam\n - Virgin Islands; British\n - Virgin Islands; U.S.\n - Wallis And Futuna\n - Western Sahara\n - Yemen\n - Zambia\n - Zimbabwe\n private: true\n OtherPhone:\n label: Other Phone\n kind: String\n private: true\n OtherPostalCode:\n label: Other Postal Code\n kind: String\n private: true\n OtherState:\n label: Other State\n kind: String\n private: true\n OtherStreet:\n label: Other Street\n kind: String\n private: true\n OwnerId:\n label: Contact Owner\n kind: User\n options:\n presetWithAuthenticated: false\n Phone:\n label: Phone\n kind: String\n private: true\n PhotoUrl:\n label: Photo URL\n kind: Url\n private: true\n RecordLabel:\n label: Record Label\n kind: String\n private: true\n ReportsToId:\n label: Reports To\n kind: Record\n options:\n labelField: Email\n module: Contact\n queryFields:\n - AccountId\n - Email\n - FirstName\n - LastName\n Salutation:\n label: Salutation\n kind: String\n private: true\n Title:\n label: Title\n kind: String\n private: true\n Twitter:\n label: Twitter\n kind: Url\n private: true\n Contract:\n name: Contract\n fields:\n AccountId:\n label: Account Name\n kind: Record\n options:\n labelField: AccountName\n module: Account\n queryFields:\n - AccountName\n ActivatedById:\n label: Activated By\n kind: Record\n options:\n labelField: Email\n module: Contact\n queryFields:\n - AccountId\n - Email\n - FirstName\n - LastName\n ActivatedDate:\n label: Activated Date\n kind: DateTime\n BillingCity:\n label: Billing City\n kind: String\n private: true\n BillingCountry:\n label: Billing Country\n kind: Select\n options:\n options:\n - Afghanistan\n - \xc3\x85land Islands\n - Albania\n - Algeria\n - American Samoa\n - Andorra\n - Angola\n - Anguilla\n - Antarctica\n - Antigua And Barbuda\n - Argentina\n - Armenia\n - Aruba\n - Australia\n - Austria\n - Azerbaijan\n - Bahamas\n - Bahrain\n - Bangladesh\n - Barbados\n - Belarus\n - Belgium\n - Belize\n - Benin\n - Bermuda\n - Bhutan\n - Bolivia\n - Bosnia And Herzegovina\n - Botswana\n - Bouvet Island\n - Brazil\n - British Indian Ocean Territory\n - Brunei Darussalam\n - Bulgaria\n - Burkina Faso\n - Burundi\n - Cambodia\n - Cameroon\n - Canada\n - Cape Verde\n - Cayman Islands\n - Central African Republic\n - Chad\n - Chile\n - China\n - Christmas Island\n - Cocos (Keeling) Islands\n - Colombia\n - Comoros\n - Congo\n - Congo; The Democratic Republic Of The\n - Cook Islands\n - Costa Rica\n - Cote D'ivoire\n - Croatia\n - Cuba\n - Cyprus\n - Czechia\n - Denmark\n - Djibouti\n - Dominica\n - Dominican Republic\n - Ecuador\n - Egypt\n - El Salvador\n - Equatorial Guinea\n - Eritrea\n - Estonia\n - Ethiopia\n - Falkland Islands (Malvinas)\n - Faroe Islands\n - Fiji\n - Finland\n - France\n - French Guiana\n - French Polynesia\n - French Southern Territories\n - Gabon\n - Gambia\n - Georgia\n - Germany\n - Ghana\n - Gibraltar\n - Greece\n - Greenland\n - Grenada\n - Guadeloupe\n - Guam\n - Guatemala\n - Guernsey\n - Guinea\n - Guinea-bissau\n - Guyana\n - Haiti\n - Heard Island And Mcdonald Islands\n - Holy See (Vatican City State)\n - Honduras\n - Hong Kong\n - Hungary\n - Iceland\n - India\n - Indonesia\n - Iran; Islamic Republic Of\n - Iraq\n - Ireland\n - Isle Of Man\n - Israel\n - Italy\n - Jamaica\n - Japan\n - Jersey\n - Jordan\n - Kazakhstan\n - Kenya\n - Kiribati\n - Korea; Democratic People's Republic Of\n - Korea; Republic Of\n - Kuwait\n - Kyrgyzstan\n - Lao People's Democratic Republic\n - Latvia\n - Lebanon\n - Lesotho\n - Liberia\n - Libyan Arab Jamahiriya\n - Liechtenstein\n - Lithuania\n - Luxembourg\n - Macao\n - Macedonia; The Former Yugoslav Republic Of\n - Madagascar\n - Malawi\n - Malaysia\n - Maldives\n - Mali\n - Malta\n - Marshall Islands\n - Martinique\n - Mauritania\n - Mauritius\n - Mayotte\n - Mexico\n - Micronesia; Federated States Of\n - Moldova; Republic Of\n - Monaco\n - Mongolia\n - Montenegro\n - Montserrat\n - Morocco\n - Mozambique\n - Myanmar\n - Namibia\n - Nauru\n - Nepal\n - Netherlands\n - Netherlands Antilles\n - New Caledonia\n - New Zealand\n - Nicaragua\n - Niger\n - Nigeria\n - Niue\n - Norfolk Island\n - Northern Mariana Islands\n - Norway\n - Oman\n - Pakistan\n - Palau\n - Palestinian Territory; Occupied\n - Panama\n - Papua New Guinea\n - Paraguay\n - Peru\n - Philippines\n - Pitcairn\n - Poland\n - Portugal\n - Puerto Rico\n - Qatar\n - Reunion\n - Romania\n - Russian Federation\n - Rwanda\n - Saint Helena\n - Saint Kitts And Nevis\n - Saint Lucia\n - Saint Pierre And Miquelon\n - Saint Vincent And The Grenadines\n - Samoa\n - San Marino\n - Sao Tome And Principe\n - Saudi Arabia\n - Senegal\n - Serbia\n - Seychelles\n - Sierra Leone\n - Singapore\n - Slovakia\n - Slovenia\n - Solomon Islands\n - Somalia\n - South Africa\n - South Georgia And The South Sandwich Islands\n - Spain\n - Sri Lanka\n - Sudan\n - Suriname\n - Svalbard And Jan Mayen\n - Swaziland\n - Sweden\n - Switzerland\n - Syrian Arab Republic\n - Taiwan; Province Of China\n - Tajikistan\n - Tanzania; United Republic Of\n - Thailand\n - Timor-leste\n - Togo\n - Tokelau\n - Tonga\n - Trinidad And Tobago\n - Tunisia\n - Turkey\n - Turkmenistan\n - Turks And Caicos Islands\n - Tuvalu\n - Uganda\n - Ukraine\n - United Arab Emirates\n - United Kingdom\n - United States\n - United States Minor Outlying Islands\n - Uruguay\n - Uzbekistan\n - Vanuatu\n - Venezuela\n - Viet Nam\n - Virgin Islands; British\n - Virgin Islands; U.S.\n - Wallis And Futuna\n - Western Sahara\n - Yemen\n - Zambia\n - Zimbabwe\n private: true\n BillingPostalCode:\n label: Billing Postal Code\n kind: String\n private: true\n BillingState:\n label: Billing State\n kind: String\n private: true\n BillingStreet:\n label: Billing Street\n kind: String\n private: true\n CompanySignedDate:\n label: Company Signed Date\n kind: DateTime\n CompanySignedId:\n label: Company Signed By\n kind: Record\n options:\n labelField: Email\n module: Contact\n queryFields:\n - AccountId\n - Email\n - FirstName\n - LastName\n ContractNumber:\n label: Contract Number\n kind: Number\n options:\n format: \"0000000\"\n precision: 0\n ContractTerm:\n label: Term (months)\n kind: Number\n options:\n format: 0\n precision: 0\n CustomerSignedDate:\n label: Customer Signed Date\n kind: DateTime\n CustomerSignedId:\n label: Customer Signed By\n kind: Record\n options:\n labelField: RecordLabel\n module: Contact\n queryFields:\n - RecordLabel\n CustomerSignedTitle:\n label: Customer Signed Title\n kind: String\n Description:\n label: Description\n kind: String\n options:\n multiLine: true\n useRichTextEditor: true\n EndDate:\n label: End Date\n kind: DateTime\n options:\n onlyDate: true\n File1:\n label: File 1\n kind: File\n options:\n allowDocuments: false\n allowImages: false\n mode: list\n File2:\n label: File 2\n kind: File\n options:\n allowDocuments: false\n allowImages: false\n mode: list\n File3:\n label: File 3\n kind: File\n options:\n allowDocuments: false\n allowImages: false\n mode: list\n File4:\n label: File 4\n kind: File\n options:\n allowDocuments: false\n allowImages: false\n mode: list\n LastActivityDate:\n label: Last Activity\n kind: DateTime\n LastApprovedDate:\n label: Last Approved Date\n kind: DateTime\n Name:\n label: Contract Name\n kind: String\n OwnerExpirationNotice:\n label: Owner Expiration Notice\n kind: Select\n options:\n options:\n - 3 Days\n - 5 Days\n - 7 Days\n - 14 Days\n - 30 Days\n - 45 Days\n - 60 Days\n - 75 Days\n - 90 Days\n - 120 Days\n - 180 Days\n - 240 Days\n - 300 Days\n - 365 Days\n OwnerId:\n label: Contract Owner\n kind: User\n options:\n presetWithAuthenticated: false\n RecordLabel:\n label: Record Label\n kind: String\n ShippingCity:\n label: Shipping City\n kind: String\n private: true\n ShippingCountry:\n label: Shipping Country\n kind: Select\n options:\n options:\n - Afghanistan\n - \xc3\x85land Islands\n - Albania\n - Algeria\n - American Samoa\n - Andorra\n - Angola\n - Anguilla\n - Antarctica\n - Antigua And Barbuda\n - Argentina\n - Armenia\n - Aruba\n - Australia\n - Austria\n - Azerbaijan\n - Bahamas\n - Bahrain\n - Bangladesh\n - Barbados\n - Belarus\n - Belgium\n - Belize\n - Benin\n - Bermuda\n - Bhutan\n - Bolivia\n - Bosnia And Herzegovina\n - Botswana\n - Bouvet Island\n - Brazil\n - British Indian Ocean Territory\n - Brunei Darussalam\n - Bulgaria\n - Burkina Faso\n - Burundi\n - Cambodia\n - Cameroon\n - Canada\n - Cape Verde\n - Cayman Islands\n - Central African Republic\n - Chad\n - Chile\n - China\n - Christmas Island\n - Cocos (Keeling) Islands\n - Colombia\n - Comoros\n - Congo\n - Congo; The Democratic Republic Of The\n - Cook Islands\n - Costa Rica\n - Cote D'ivoire\n - Croatia\n - Cuba\n - Cyprus\n - Czechia\n - Denmark\n - Djibouti\n - Dominica\n - Dominican Republic\n - Ecuador\n - Egypt\n - El Salvador\n - Equatorial Guinea\n - Eritrea\n - Estonia\n - Ethiopia\n - Falkland Islands (Malvinas)\n - Faroe Islands\n - Fiji\n - Finland\n - France\n - French Guiana\n - French Polynesia\n - French Southern Territories\n - Gabon\n - Gambia\n - Georgia\n - Germany\n - Ghana\n - Gibraltar\n - Greece\n - Greenland\n - Grenada\n - Guadeloupe\n - Guam\n - Guatemala\n - Guernsey\n - Guinea\n - Guinea-bissau\n - Guyana\n - Haiti\n - Heard Island And Mcdonald Islands\n - Holy See (Vatican City State)\n - Honduras\n - Hong Kong\n - Hungary\n - Iceland\n - India\n - Indonesia\n - Iran; Islamic Republic Of\n - Iraq\n - Ireland\n - Isle Of Man\n - Israel\n - Italy\n - Jamaica\n - Japan\n - Jersey\n - Jordan\n - Kazakhstan\n - Kenya\n - Kiribati\n - Korea; Democratic People's Republic Of\n - Korea; Republic Of\n - Kuwait\n - Kyrgyzstan\n - Lao People's Democratic Republic\n - Latvia\n - Lebanon\n - Lesotho\n - Liberia\n - Libyan Arab Jamahiriya\n - Liechtenstein\n - Lithuania\n - Luxembourg\n - Macao\n - Macedonia; The Former Yugoslav Republic Of\n - Madagascar\n - Malawi\n - Malaysia\n - Maldives\n - Mali\n - Malta\n - Marshall Islands\n - Martinique\n - Mauritania\n - Mauritius\n - Mayotte\n - Mexico\n - Micronesia; Federated States Of\n - Moldova; Republic Of\n - Monaco\n - Mongolia\n - Montenegro\n - Montserrat\n - Morocco\n - Mozambique\n - Myanmar\n - Namibia\n - Nauru\n - Nepal\n - Netherlands\n - Netherlands Antilles\n - New Caledonia\n - New Zealand\n - Nicaragua\n - Niger\n - Nigeria\n - Niue\n - Norfolk Island\n - Northern Mariana Islands\n - Norway\n - Oman\n - Pakistan\n - Palau\n - Palestinian Territory; Occupied\n - Panama\n - Papua New Guinea\n - Paraguay\n - Peru\n - Philippines\n - Pitcairn\n - Poland\n - Portugal\n - Puerto Rico\n - Qatar\n - Reunion\n - Romania\n - Russian Federation\n - Rwanda\n - Saint Helena\n - Saint Kitts And Nevis\n - Saint Lucia\n - Saint Pierre And Miquelon\n - Saint Vincent And The Grenadines\n - Samoa\n - San Marino\n - Sao Tome And Principe\n - Saudi Arabia\n - Senegal\n - Serbia\n - Seychelles\n - Sierra Leone\n - Singapore\n - Slovakia\n - Slovenia\n - Solomon Islands\n - Somalia\n - South Africa\n - South Georgia And The South Sandwich Islands\n - Spain\n - Sri Lanka\n - Sudan\n - Suriname\n - Svalbard And Jan Mayen\n - Swaziland\n - Sweden\n - Switzerland\n - Syrian Arab Republic\n - Taiwan; Province Of China\n - Tajikistan\n - Tanzania; United Republic Of\n - Thailand\n - Timor-leste\n - Togo\n - Tokelau\n - Tonga\n - Trinidad And Tobago\n - Tunisia\n - Turkey\n - Turkmenistan\n - Turks And Caicos Islands\n - Tuvalu\n - Uganda\n - Ukraine\n - United Arab Emirates\n - United Kingdom\n - United States\n - United States Minor Outlying Islands\n - Uruguay\n - Uzbekistan\n - Vanuatu\n - Venezuela\n - Viet Nam\n - Virgin Islands; British\n - Virgin Islands; U.S.\n - Wallis And Futuna\n - Western Sahara\n - Yemen\n - Zambia\n - Zimbabwe\n private: true\n ShippingPostalCode:\n label: Shipping Postal Code\n kind: String\n private: true\n ShippingState:\n label: Shipping State\n kind: String\n private: true\n ShippingStreet:\n label: Shipping Street\n kind: String\n private: true\n SpecialTerms:\n label: Special Terms\n kind: String\n options:\n multiLine: true\n useRichTextEditor: true\n StartDate:\n label: Start Date\n kind: DateTime\n options:\n onlyDate: true\n Status:\n label: Status\n kind: Select\n options:\n options:\n - Draft\n - Activated\n - In Approval Process\n - Inactive (Expired)\n - Inactive (Deactivated)\n ContractContactRole:\n name: ContractContactRole\n fields:\n ContactId:\n label: Contact\n kind: Record\n options:\n labelField: Email\n module: Contact\n queryFields:\n - AccountId\n - Email\n - FirstName\n - LastName\n ContractId:\n label: Contract\n kind: Record\n options:\n labelField: Name\n module: Contract\n queryFields:\n - AccountId\n - Name\n - ContractNumber\n IsPrimary:\n label: Primary\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n Role:\n label: Role\n kind: Select\n options:\n options:\n - Business User\n - Decision Maker\n - Economic Buyer\n - Economic Decision Maker\n - Evaluator\n - Executive Sponsor\n - Gatekeeper\n - Influencer\n - Project Manager\n - Technical Buyer\n - Other\n ContractLineItem:\n name: ContractLineItem\n fields:\n ContractId:\n label: 'Contract '\n kind: Record\n options:\n labelField: Name\n module: Contract\n queryFields:\n - AccountId\n - Name\n - ContractNumber\n Description:\n label: Description\n kind: String\n options:\n multiLine: true\n Discount:\n label: Discount\n kind: Number\n options:\n format: 0\n precision: 0\n EndDate:\n label: End Date\n kind: DateTime\n options:\n onlyDate: true\n LineItemNumber:\n label: Line Item Number\n kind: String\n ListPrice:\n label: List Price\n kind: Number\n options:\n format: 0\n precision: \"2\"\n suffix: \xe2\x82\xac\n PricebookEntryId:\n label: Price Book Entry\n kind: Record\n options:\n labelField: Name\n module: PricebookEntry\n queryFields:\n - ProductCode\n - Name\n Quantity:\n label: Quantity\n kind: Number\n options:\n format: 0\n precision: 0\n StartDate:\n label: Start Date\n kind: DateTime\n options:\n onlyDate: true\n Status:\n label: Status\n kind: Select\n options:\n options:\n - Active\n - Expired\n - Inactive\n Subtotal:\n label: 'Subtotal '\n kind: Number\n options:\n format: 0\n precision: \"2\"\n suffix: \xe2\x82\xac\n TotalPrice:\n label: Total Price\n kind: Number\n options:\n format: 0\n precision: \"2\"\n suffix: \xe2\x82\xac\n UnitPrice:\n label: Sales Price\n kind: Number\n options:\n format: 0\n precision: 2\n suffix: \xe2\x82\xac\n Settings:\n name: Settings\n fields:\n CaseNextNumber:\n label: Next number for a case (updates after saving a new case)\n kind: Number\n options:\n format: \"0000000\"\n precision: 0\n ContractDefaultTime:\n label: Default time for a contract (in months)\n kind: Number\n options:\n format: 0\n precision: 0\n ContractNextNumber:\n label: Next number for a contract (updates after saving a new contract)\n kind: Number\n options:\n format: \"0000000\"\n precision: 0\n OpportunityCloseDateDays:\n label: Days for an opportunity to close\n kind: Number\n options:\n format: 0\n precision: 0\n OpportunityForecaseCategory:\n label: Forecast Category\n kind: String\n OpportunityProbability:\n label: Probability\n kind: Number\n options:\n format: 0\n precision: 0\n suffix: '%'\n OpportunityStagename:\n label: Stage\n kind: String\n QuoteExpirationDays:\n label: Days for a quote to expire\n kind: Number\n options:\n format: 0\n precision: 0\n QuoteNextNumber:\n label: Next number for a quote (updates after saving a new quote)\n kind: Number\n options:\n format: \"0000000\"\n precision: 0\n SolutionNextNumber:\n label: Next number for a solution (updates after saving a new solution)\n kind: Number\n options:\n format: \"0000000\"\n precision: 0\n EmailTemplate:\n name: EmailTemplate\n fields:\n Body:\n label: Body\n kind: String\n options:\n multiLine: true\n useRichTextEditor: true\n Description:\n label: Description\n kind: String\n options:\n multiLine: true\n DeveloperName:\n label: Template Unique Name\n kind: String\n options:\n multiLine: true\n useRichTextEditor: true\n IsActive:\n label: Available For Use\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n LastUsedDate:\n label: Last Used Date\n kind: DateTime\n Markup:\n label: Markup\n kind: String\n options:\n multiLine: true\n useRichTextEditor: true\n Name:\n label: Email Template Name\n kind: String\n Subject:\n label: Subject\n kind: String\n TemplateStyle:\n label: Style\n kind: Select\n options:\n options:\n - \"\"\n TemplateType:\n label: Template Type\n kind: Select\n options:\n options:\n - \"\"\n Entitlement:\n name: Entitlement\n fields:\n AccountId:\n label: Account Name\n kind: Record\n options:\n labelField: AccountName\n module: Account\n queryFields:\n - AccountName\n CasesPerEntitlement:\n label: Cases Per Entitlement\n kind: Number\n options:\n format: 0\n precision: 0\n ContractLineItemId:\n label: Contract Line Item\n kind: Record\n options:\n labelField: ContractId\n module: ContractLineItem\n queryFields:\n - Description\n - LineItemNumber\n - ContractId\n EndDate:\n label: End Date\n kind: DateTime\n EntitlementProcess:\n label: Entitlement Process\n kind: String\n IsPerIncident:\n label: Per Incident\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n LastModifiedById:\n label: Last Modified By\n kind: User\n options:\n presetWithAuthenticated: false\n LastModifiedDate:\n label: Last Modified Date\n kind: DateTime\n LastViewedDate:\n label: Last Viewed Date\n kind: DateTime\n Name:\n label: Entitlement Name\n kind: String\n options:\n multiLine: true\n useRichTextEditor: true\n RemainingCases:\n label: Remaining Cases\n kind: Number\n options:\n format: 0\n precision: 0\n StartDate:\n label: Start Date\n kind: DateTime\n Status:\n label: Status\n kind: Select\n options:\n options:\n - Active\n - Expired\n - Inactive\n Type:\n label: Type\n kind: Select\n options:\n options:\n - Web Support\n - Phone Support\n - Email Support\n - Dedicated Support\n EntitlementContact:\n name: EntitlementContact\n fields:\n CaseMilestoneTypeId:\n label: Casemilestone Type\n kind: Record\n options:\n labelField: Name\n module: MilestoneType\n queryFields:\n - Name\n ContactId:\n label: Contact Name\n kind: Record\n options:\n labelField: Email\n module: Contact\n queryFields:\n - AccountId\n - Email\n - FirstName\n - LastName\n EntitlementId:\n label: Entitlement Name\n kind: Record\n options:\n labelField: Name\n module: Entitlement\n queryFields:\n - AccountId\n - Name\n Name:\n label: Entitlement Contact\n kind: String\n options:\n multiLine: true\n useRichTextEditor: true\n EntitlementTemplate:\n name: EntitlementTemplate\n fields:\n BusinessHours:\n label: Business Hours\n kind: String\n CasesPerEntitlement:\n label: Cases Per Entitlement\n kind: Number\n options:\n format: 0\n precision: 0\n IsPerIncident:\n label: Per Incident\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n Name:\n label: Entitlement Template Name\n kind: String\n Term:\n label: Term (Days)\n kind: Number\n options:\n format: 0\n precision: 0\n Type:\n label: Type\n kind: Select\n options:\n options:\n - Email\n - Messaging\n - Phone\n - Web\n Event:\n name: Event\n fields:\n AccountId:\n label: Account\n kind: Record\n options:\n labelField: AccountName\n module: Account\n queryFields:\n - AccountName\n ActivityDate:\n label: Start\n kind: DateTime\n CaseId:\n label: Case\n kind: Record\n options:\n labelField: Subject\n module: Case\n queryFields:\n - AccountId\n - CaseNumber\n - Subject\n ContactId:\n label: Contact\n kind: Record\n options:\n labelField: RecordLabel\n module: Contact\n queryFields:\n - RecordLabel\n ContractId:\n label: Contract\n kind: Record\n options:\n labelField: Name\n module: Contract\n queryFields:\n - AccountId\n - Name\n - ContractNumber\n Description:\n label: Description\n kind: String\n options:\n multiLine: true\n useRichTextEditor: true\n DurationInMinutes:\n label: Duration\n kind: Number\n options:\n format: 0\n precision: 0\n EndDateTime:\n label: End\n kind: DateTime\n IsAllDayEvent:\n label: All-Day Event\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n IsArchived:\n label: Archived\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n IsPrivate:\n label: Private\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n IsReminderSet:\n label: Reminder Set\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n LeadId:\n label: Lead\n kind: Record\n options:\n labelField: RecordLabel\n module: Lead\n queryFields:\n - RecordLabel\n Location:\n label: Location\n kind: String\n OpportunityId:\n label: Opportunity\n kind: Record\n options:\n labelField: RecordLabel\n module: Opportunity\n queryFields:\n - AccountId\n - Name\n OwnerId:\n label: Assigned To\n kind: User\n options:\n presetWithAuthenticated: false\n QuoteId:\n label: Quote\n kind: Record\n options:\n labelField: Name\n module: Quote\n queryFields:\n - AccountId\n - Name\n - QuoteNumber\n ReminderDateTime:\n label: Reminder Date/Time\n kind: DateTime\n Subject:\n label: Subject\n kind: String\n Type:\n label: Type\n kind: Select\n options:\n options:\n - Call\n - Email\n - Meeting\n - Send Letter / Quote\n - Other\n Idea:\n name: Idea\n fields:\n Body:\n label: Idea Body\n kind: String\n options:\n multiLine: true\n useRichTextEditor: true\n Categories:\n label: Categories\n kind: Select\n options:\n options:\n - Ecosystem\n - Human Resources\n - Marketing\n - Product\n - Sales\n - Services\n - Support\n CreatorName:\n label: Name of Creator\n kind: String\n ParentIdeaId:\n label: Parent Idea\n kind: Record\n options:\n labelField: Title\n module: Idea\n queryFields:\n - Title\n Status:\n label: Status\n kind: Select\n options:\n options:\n - New\n - Under Consideration\n - Accepted\n - Implemented\n - Duplicate\n Title:\n label: Title\n kind: String\n VoteScore:\n label: Vote Score\n kind: Number\n options:\n format: 0\n precision: 0\n VoteTotal:\n label: Vote Total\n kind: Number\n options:\n format: 0\n precision: 0\n Lead:\n name: Lead\n fields:\n AnnualRevenue:\n label: Annual Revenue\n kind: Select\n options:\n options:\n - Less Than 500,000\n - 500,000 To 1 Million\n - 1 To 2.5 Million\n - 2.5 To 5 Million\n - 5 To 10 Million\n - 10 To 20 Million\n - 20 To 50 Million\n - 50 To 100 Million\n - 100 To 500 Million\n selectType: default\n City:\n label: Address City\n kind: String\n private: true\n Company:\n label: Company\n kind: String\n required: true\n ConvertedAccountId:\n label: Converted Account\n kind: Record\n options:\n labelField: AccountName\n module: Account\n queryFields:\n - AccountName\n selectType: default\n ConvertedContactId:\n label: Converted Contact\n kind: Record\n options:\n labelField: RecordLabel\n module: Contact\n queryFields:\n - RecordLabel\n selectType: default\n ConvertedDate:\n label: Converted Date\n kind: DateTime\n ConvertedOpportunityId:\n label: Converted Opportunity\n kind: Record\n options:\n labelField: Name\n module: Opportunity\n queryFields:\n - AccountId\n - Name\n selectType: default\n Country:\n label: Address Country\n kind: Select\n options:\n options:\n - Afghanistan\n - \xc3\x85land Islands\n - Albania\n - Algeria\n - American Samoa\n - Andorra\n - Angola\n - Anguilla\n - Antarctica\n - Antigua And Barbuda\n - Argentina\n - Armenia\n - Aruba\n - Australia\n - Austria\n - Azerbaijan\n - Bahamas\n - Bahrain\n - Bangladesh\n - Barbados\n - Belarus\n - Belgium\n - Belize\n - Benin\n - Bermuda\n - Bhutan\n - Bolivia\n - Bosnia And Herzegovina\n - Botswana\n - Bouvet Island\n - Brazil\n - British Indian Ocean Territory\n - Brunei Darussalam\n - Bulgaria\n - Burkina Faso\n - Burundi\n - Cambodia\n - Cameroon\n - Canada\n - Cape Verde\n - Cayman Islands\n - Central African Republic\n - Chad\n - Chile\n - China\n - Christmas Island\n - Cocos (Keeling) Islands\n - Colombia\n - Comoros\n - Congo\n - Congo; The Democratic Republic Of The\n - Cook Islands\n - Costa Rica\n - Cote D'ivoire\n - Croatia\n - Cuba\n - Cyprus\n - Czechia\n - Denmark\n - Djibouti\n - Dominica\n - Dominican Republic\n - Ecuador\n - Egypt\n - El Salvador\n - Equatorial Guinea\n - Eritrea\n - Estonia\n - Ethiopia\n - Falkland Islands (Malvinas)\n - Faroe Islands\n - Fiji\n - Finland\n - France\n - French Guiana\n - French Polynesia\n - French Southern Territories\n - Gabon\n - Gambia\n - Georgia\n - Germany\n - Ghana\n - Gibraltar\n - Greece\n - Greenland\n - Grenada\n - Guadeloupe\n - Guam\n - Guatemala\n - Guernsey\n - Guinea\n - Guinea-bissau\n - Guyana\n - Haiti\n - Heard Island And Mcdonald Islands\n - Holy See (Vatican City State)\n - Honduras\n - Hong Kong\n - Hungary\n - Iceland\n - India\n - Indonesia\n - Iran; Islamic Republic Of\n - Iraq\n - Ireland\n - Isle Of Man\n - Israel\n - Italy\n - Jamaica\n - Japan\n - Jersey\n - Jordan\n - Kazakhstan\n - Kenya\n - Kiribati\n - Korea; Democratic People's Republic Of\n - Korea; Republic Of\n - Kuwait\n - Kyrgyzstan\n - Lao People's Democratic Republic\n - Latvia\n - Lebanon\n - Lesotho\n - Liberia\n - Libyan Arab Jamahiriya\n - Liechtenstein\n - Lithuania\n - Luxembourg\n - Macao\n - Macedonia; The Former Yugoslav Republic Of\n - Madagascar\n - Malawi\n - Malaysia\n - Maldives\n - Mali\n - Malta\n - Marshall Islands\n - Martinique\n - Mauritania\n - Mauritius\n - Mayotte\n - Mexico\n - Micronesia; Federated States Of\n - Moldova; Republic Of\n - Monaco\n - Mongolia\n - Montenegro\n - Montserrat\n - Morocco\n - Mozambique\n - Myanmar\n - Namibia\n - Nauru\n - Nepal\n - Netherlands\n - Netherlands Antilles\n - New Caledonia\n - New Zealand\n - Nicaragua\n - Niger\n - Nigeria\n - Niue\n - Norfolk Island\n - Northern Mariana Islands\n - Norway\n - Oman\n - Pakistan\n - Palau\n - Palestinian Territory; Occupied\n - Panama\n - Papua New Guinea\n - Paraguay\n - Peru\n - Philippines\n - Pitcairn\n - Poland\n - Portugal\n - Puerto Rico\n - Qatar\n - Reunion\n - Romania\n - Russian Federation\n - Rwanda\n - Saint Helena\n - Saint Kitts And Nevis\n - Saint Lucia\n - Saint Pierre And Miquelon\n - Saint Vincent And The Grenadines\n - Samoa\n - San Marino\n - Sao Tome And Principe\n - Saudi Arabia\n - Senegal\n - Serbia\n - Seychelles\n - Sierra Leone\n - Singapore\n - Slovakia\n - Slovenia\n - Solomon Islands\n - Somalia\n - South Africa\n - South Georgia And The South Sandwich Islands\n - Spain\n - Sri Lanka\n - Sudan\n - Suriname\n - Svalbard And Jan Mayen\n - Swaziland\n - Sweden\n - Switzerland\n - Syrian Arab Republic\n - Taiwan; Province Of China\n - Tajikistan\n - Tanzania; United Republic Of\n - Thailand\n - Timor-leste\n - Togo\n - Tokelau\n - Tonga\n - Trinidad And Tobago\n - Tunisia\n - Turkey\n - Turkmenistan\n - Turks And Caicos Islands\n - Tuvalu\n - Uganda\n - Ukraine\n - United Arab Emirates\n - United Kingdom\n - United States\n - United States Minor Outlying Islands\n - Uruguay\n - Uzbekistan\n - Vanuatu\n - Venezuela\n - Viet Nam\n - Virgin Islands; British\n - Virgin Islands; U.S.\n - Wallis And Futuna\n - Western Sahara\n - Yemen\n - Zambia\n - Zimbabwe\n selectType: default\n private: true\n Description:\n label: Description\n kind: String\n options:\n multiLine: true\n useRichTextEditor: true\n DoNotCall:\n label: Do Not Call\n kind: Bool\n options:\n falseLabel: \"False\"\n trueLabel: Do Not Call\n Email:\n label: Email\n kind: String\n private: true\n Facebook:\n label: Facebook\n kind: Url\n private: true\n Fax:\n label: Fax\n kind: String\n private: true\n FirstName:\n label: First Name\n kind: String\n private: true\n HasOptedOutOfEmail:\n label: Email Opt Out\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n HasOptedOutOfFax:\n label: Fax Opt Out\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n Industry:\n label: Industry\n kind: Select\n options:\n options:\n - \"\"\n - Agriculture\n - Apparel\n - Banking\n - Biotechnology\n - Chemicals\n - Communications\n - Construction\n - Consulting\n - Education\n - Electronics\n - Energy\n - Engineering\n - Entertainment\n - Environmental\n - Finance\n - Food & Beverage\n - Government\n - Healthcare\n - Hospitality\n - Insurance\n - Machinery\n - Manufacturing\n - Media\n - Not For Profit\n - Other\n - Recreation\n - Retail\n - Shipping\n - Technology\n - Telecommunications\n - Transportation\n - Utilities\n selectType: default\n IsConverted:\n label: Converted\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n IsDeleted:\n label: Deleted\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n IsUnreadByOwner:\n label: Unread By Owner\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n LastName:\n label: Last Name\n kind: String\n private: true\n required: true\n LastTransferDate:\n label: Last Transfer Date\n kind: DateTime\n LastViewedDate:\n label: Last Viewed Date\n kind: DateTime\n LeadSource:\n label: Lead Source\n kind: Select\n options:\n options:\n - Customer Referral\n - Direct\n - Employee Referral\n - Event\n - Existing Customer\n - Inbound Call\n - Outbound List\n - Partner Referral\n - Seminar\n - Social Media\n - Webinar\n - Website (Organic)\n - Website (PPC)\n - Word of Mouth\n - Other\n selectType: default\n LinkedIn:\n label: LinkedIn\n kind: Url\n private: true\n MasterRecordId:\n label: Lead\n kind: Record\n options:\n labelField: Email\n module: Lead\n queryFields: []\n selectType: default\n MobilePhone:\n label: Mobile\n kind: String\n NumberOfEmployees:\n label: No. of Employees (exact)\n kind: Number\n options:\n format: 0\n precision: 0\n NumberOfEmployeesRange:\n label: No. of Employees (range)\n kind: Select\n options:\n options:\n - 1 - 9\n - 10 - 24\n - 25 - 49\n - 50 - 99\n - 100 - 249\n - 250 - 499\n - 500 - 999\n - 1000 - 2499\n - 2500 - 4999\n - 5000 - 9999\n - Over 10000\n selectType: default\n OwnerId:\n label: Lead Owner\n kind: User\n options:\n presetWithAuthenticated: false\n selectType: default\n Phone:\n label: Phone\n kind: String\n private: true\n PostalCode:\n label: Address Postal Code\n kind: String\n private: true\n Rating:\n label: Rating\n kind: Select\n options:\n options:\n - \xe2\x98\x86\xe2\x98\x86\xe2\x98\x86\xe2\x98\x86\xe2\x98\x86\n - \xe2\x98\x85\xe2\x98\x86\xe2\x98\x86\xe2\x98\x86\xe2\x98\x86\n - \xe2\x98\x85\xe2\x98\x85\xe2\x98\x86\xe2\x98\x86\xe2\x98\x86\n - \xe2\x98\x85\xe2\x98\x85\xe2\x98\x85\xe2\x98\x86\xe2\x98\x86\n - \xe2\x98\x85\xe2\x98\x85\xe2\x98\x85\xe2\x98\x85\xe2\x98\x86\n - \xe2\x98\x85\xe2\x98\x85\xe2\x98\x85\xe2\x98\x85\xe2\x98\x85\n selectType: default\n RecordLabel:\n label: Record Label\n kind: String\n private: true\n SICCode:\n label: SIC Code\n kind: Number\n options:\n format: 0\n precision: 0\n Salutation:\n label: Salutation\n kind: String\n State:\n label: Address State\n kind: String\n private: true\n Status:\n label: Lead Status\n kind: Select\n options:\n options:\n - New\n - Assigned\n - In Progress\n - Converted\n - Recycled\n - Dead\n selectType: default\n Street:\n label: Address Street\n kind: String\n private: true\n Title:\n label: Title\n kind: String\n Twitter:\n label: Twitter\n kind: Url\n private: true\n Website:\n label: Website\n kind: Url\n MilestoneType:\n name: MilestoneType\n fields:\n Description:\n label: Description\n kind: String\n options:\n multiLine: true\n Name:\n label: Name\n kind: String\n RecurrenceType:\n label: Recurrence Type\n kind: Select\n options:\n options:\n - No Recurrence\n - Independent\n - Sequential\n Note:\n name: Note\n fields:\n AccountContactRoleId:\n label: Account Contact Role\n kind: Record\n options:\n labelField: Role\n module: AccountContactRole\n queryFields:\n - AccountId\n - ContactId\n - Role\n AccountId:\n label: Account\n kind: Record\n options:\n labelField: AccountName\n module: Account\n queryFields:\n - AccountName\n Body:\n label: Body\n kind: String\n options:\n multiLine: true\n useRichTextEditor: true\n CampaignId:\n label: Campaign\n kind: Record\n options:\n labelField: Name\n module: Campaigns\n queryFields:\n - Name\n CampaignMemberId:\n label: Campaign Member\n kind: Record\n options:\n labelField: CampaignId\n module: CampaignMember\n queryFields:\n - CampaignId\n - ContactId\n - LeadId\n CaseContactRoleId:\n label: Case Contact Role\n kind: Record\n options:\n labelField: Role\n module: CaseContactRole\n queryFields:\n - CaseId\n - Role\n CaseId:\n label: Case\n kind: Record\n options:\n labelField: Subject\n module: Case\n queryFields:\n - AccountId\n - CaseNumber\n - Subject\n CaseMilestoneId:\n label: Case Milestone\n kind: Record\n options:\n labelField: CaseId\n module: CaseMilestone\n queryFields:\n - CaseId\n - MilestoneTypeId\n ContactId:\n label: Contact\n kind: Record\n options:\n labelField: RecordLabel\n module: Contact\n queryFields:\n - RecordLabel\n ContractContactRoleId:\n label: Contract Contact Role\n kind: Record\n options:\n labelField: ContactId\n module: ContractContactRole\n queryFields:\n - ContactId\n - ContractId\n ContractId:\n label: Contract\n kind: Record\n options:\n labelField: Name\n module: Contract\n queryFields:\n - AccountId\n - Name\n - ContractNumber\n ContractLineItemId:\n label: Contract Line Item\n kind: Record\n options:\n labelField: PricebookEntryId\n module: ContractLineItem\n queryFields:\n - PricebookEntryId\n EmailTemplateId:\n label: Email Template\n kind: Record\n options:\n labelField: Subject\n module: EmailTemplate\n queryFields:\n - Subject\n EntitlementContactId:\n label: Entitlement Contact\n kind: Record\n options:\n labelField: EntitlementId\n module: EntitlementContact\n queryFields:\n - EntitlementId\n EntitlementId:\n label: Entitlement\n kind: Record\n options:\n labelField: Name\n module: Entitlement\n queryFields:\n - Name\n EntitlementTemplateId:\n label: Entitlement Template\n kind: Record\n options:\n labelField: Name\n module: EntitlementTemplate\n queryFields:\n - Name\n EventId:\n label: Event\n kind: Record\n options:\n labelField: Subject\n module: Event\n queryFields:\n - Subject\n FileAdd1:\n label: File 1\n kind: File\n options:\n allowDocuments: false\n allowImages: false\n mode: grid\n FileAdd2:\n label: File 2\n kind: File\n options:\n allowDocuments: false\n allowImages: false\n mode: grid\n FileAdd3:\n label: File 3\n kind: File\n options:\n allowDocuments: false\n allowImages: false\n mode: grid\n FileAdd4:\n label: File 4\n kind: File\n options:\n allowDocuments: false\n allowImages: false\n mode: grid\n IsPrivate:\n label: Private\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n LeadId:\n label: Lead\n kind: Record\n options:\n labelField: RecordLabel\n module: Lead\n queryFields:\n - RecordLabel\n OpportunityCompetitorId:\n label: Opportunity Competitor\n kind: Record\n options:\n labelField: CompetitorName\n module: OpportunityCompetitor\n queryFields:\n - CompetitorName\n OpportunityContactRoleId:\n label: Opportunity Contact Role\n kind: Record\n options:\n labelField: ContactId\n module: OpportunityContactRole\n queryFields:\n - ContactId\n - Role\n OpportunityId:\n label: Opportunity\n kind: Record\n options:\n labelField: Name\n module: Opportunity\n queryFields:\n - AccountId\n - Name\n OpportunityLineItemId:\n label: Opportunity Line Item\n kind: Record\n options:\n labelField: ProductId\n module: OpportunityLineItem\n queryFields:\n - Description\n - Name\n - ProductId\n PricebookEntryId:\n label: Pricebook Entry\n kind: Record\n options:\n labelField: Name\n module: PricebookEntry\n queryFields:\n - ProductCode\n - Name\n PricebookId:\n label: Pricebook\n kind: Record\n options:\n labelField: Name\n module: Pricebook\n queryFields:\n - Name\n ProductId:\n label: Product\n kind: Record\n options:\n labelField: Name\n module: Product\n queryFields:\n - ProductCode\n - Name\n QuoteId:\n label: Quote\n kind: Record\n options:\n labelField: Name\n module: Quote\n queryFields:\n - AccountId\n - Name\n - QuoteNumber\n TaskId:\n label: Task\n kind: Record\n options:\n labelField: Subject\n module: Task\n queryFields:\n - Subject\n Title:\n label: Title\n kind: String\n Opportunity:\n name: Opportunity\n fields:\n AccountId:\n label: Account Name\n kind: Record\n options:\n labelField: AccountName\n module: Account\n queryFields:\n - AccountName\n selectType: default\n Amount:\n label: Amount\n kind: Number\n options:\n format: 0\n precision: 2\n suffix: \xe2\x82\xac\n Authority:\n label: Authority\n kind: String\n options:\n multiLine: true\n Budget:\n label: Budget\n kind: String\n options:\n multiLine: true\n CampaignId:\n label: Primary Campaign Source\n kind: Record\n options:\n labelField: Name\n module: Campaigns\n queryFields:\n - Name\n selectType: default\n CloseDate:\n label: Close Date\n kind: DateTime\n Competition:\n label: Competition\n kind: String\n options:\n multiLine: true\n ContractId:\n label: Contract\n kind: Record\n options:\n labelField: Name\n module: Contract\n queryFields:\n - AccountId\n - Name\n - ContractNumber\n selectType: default\n Description:\n label: Description\n kind: String\n options:\n multiLine: true\n useRichTextEditor: true\n ExpectedRevenue:\n label: Expected Revenue\n kind: Number\n options:\n format: 0\n precision: 2\n suffix: \xe2\x82\xac\n FiscalQuarter:\n label: Fiscal Period\n kind: Number\n options:\n format: 0\n precision: 0\n FiscalYear:\n label: Fiscal Period\n kind: Number\n options:\n format: 0\n precision: 0\n ForecastCategory:\n label: Forecast Category\n kind: Select\n options:\n options:\n - Pipeline\n - Best Case\n - Commit\n selectType: default\n HasOpportunityLineItem:\n label: Has Line Item\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n IsClosed:\n label: Closed\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n IsPrivate:\n label: Private\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n IsWon:\n label: Won\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n LeadSource:\n label: Lead Source\n kind: Select\n options:\n options:\n - Customer Referral\n - Direct\n - Employee Referral\n - Event\n - Existing Customer\n - Inbound Call\n - Outbound List\n - Partner Referral\n - Seminar\n - Social Media\n - Webinar\n - Website (Organic)\n - Website (PPC)\n - Word of Mouth\n - Other\n selectType: default\n Name:\n label: Opportunity Name\n kind: String\n Need:\n label: Need\n kind: String\n options:\n multiLine: true\n NextStep:\n label: Next Step\n kind: String\n OwnerId:\n label: Opportunity Owner\n kind: User\n options:\n presetWithAuthenticated: false\n selectType: default\n PricebookId:\n label: Price Book\n kind: Record\n options:\n labelField: Name\n module: Pricebook\n queryFields:\n - Name\n selectType: default\n Probability:\n label: Probability (%)\n kind: Number\n options:\n format: 0\n precision: 0\n suffix: '%'\n RecordLabel:\n label: Record Label\n kind: String\n StageName:\n label: Stage\n kind: Select\n options:\n options:\n - Qualification\n - Need Analysis\n - Proposal\n - Negotiation\n - Closed Won\n - Closed Lost\n selectType: default\n Timeline:\n label: Timeline\n kind: String\n options:\n multiLine: true\n TotalOpportunityQuantity:\n label: Quantity\n kind: Number\n options:\n format: 0\n precision: 0\n Type:\n label: Type\n kind: Select\n options:\n options:\n - Exisiting Business\n - New Business\n selectType: default\n OpportunityCompetitor:\n name: OpportunityCompetitor\n fields:\n CompetitorName:\n label: Competitor Name\n kind: String\n OpportunityId:\n label: Opportunity\n kind: Record\n options:\n labelField: Name\n module: Opportunity\n queryFields:\n - AccountId\n - Name\n Strengths:\n label: Strengths\n kind: String\n options:\n multiLine: true\n useRichTextEditor: true\n Weaknesses:\n label: Weaknesses\n kind: String\n options:\n multiLine: true\n useRichTextEditor: true\n OpportunityContactRole:\n name: OpportunityContactRole\n fields:\n ContactId:\n label: Contact\n kind: Record\n options:\n labelField: RecordLabel\n module: Contact\n queryFields:\n - RecordLabel\n IsPrimary:\n label: Primary\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n OpportunityId:\n label: Opportunity\n kind: Record\n options:\n labelField: Name\n module: Opportunity\n queryFields: []\n Role:\n label: Role\n kind: Select\n options:\n options:\n - Business User\n - Decision Maker\n - Economic Buyer\n - Economic Decision Maker\n - Evaluator\n - Executive Sponsor\n - Gatekeeper\n - Influencer\n - Project Manager\n - Technical Buyer\n - Other\n OpportunityLineItem:\n name: OpportunityLineItem\n fields:\n Description:\n label: Line Description\n kind: String\n Discount:\n label: Discount\n kind: Number\n options:\n format: 0\n precision: 2\n suffix: \xe2\x82\xac\n ListPrice:\n label: List Price\n kind: Number\n options:\n format: 0\n precision: 2\n suffix: \xe2\x82\xac\n Name:\n label: Opportunity Product Name\n kind: String\n OpportunityId:\n label: Opportunity\n kind: Record\n options:\n labelField: Name\n module: Opportunity\n queryFields:\n - AccountId\n - Name\n PricebookEntryId:\n label: Price Book Entry\n kind: Record\n options:\n labelField: Name\n module: PricebookEntry\n queryFields:\n - ProductCode\n - Name\n ProductCode:\n label: Product Code\n kind: String\n ProductId:\n label: Product\n kind: Record\n options:\n labelField: Name\n module: Product\n queryFields: []\n Quantity:\n label: Quantity\n kind: Number\n options:\n format: 0\n precision: 0\n ServiceDate:\n label: Date\n kind: DateTime\n SortOrder:\n label: Sort Order\n kind: Number\n options:\n format: 0\n precision: 0\n Subtotal:\n label: Subtotal\n kind: Number\n options:\n format: 0\n precision: 2\n suffix: \xe2\x82\xac\n TotalPrice:\n label: Total Price\n kind: Number\n options:\n format: 0\n precision: 2\n suffix: \xe2\x82\xac\n UnitPrice:\n label: Sales Price\n kind: Number\n options:\n format: 0\n precision: 2\n suffix: \xe2\x82\xac\n Pricebook:\n name: Pricebook\n fields:\n Description:\n label: Description\n kind: String\n options:\n multiLine: true\n IsActive:\n label: Active\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n IsStandard:\n label: Is Standard Price Book\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n Name:\n label: Price Book Name\n kind: String\n PricebookEntry:\n name: PricebookEntry\n fields:\n IsActive:\n label: Active\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n Name:\n label: Product Name\n kind: String\n PricebookId:\n label: Price Book\n kind: Record\n options:\n labelField: Name\n module: Pricebook\n queryFields:\n - Name\n ProductCode:\n label: Product Code\n kind: String\n ProductId:\n label: Product\n kind: Record\n options:\n labelField: Name\n module: Product\n queryFields:\n - ProductCode\n - Name\n UnitPrice:\n label: List Price\n kind: Number\n options:\n format: 0\n precision: 2\n suffix: \xe2\x82\xac\n UseStandardPrice:\n label: Use Standard Price\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n Product:\n name: Product\n fields:\n Description:\n label: Product Description\n kind: String\n options:\n multiLine: true\n useRichTextEditor: true\n Family:\n label: Product Family\n kind: Select\n options:\n options:\n - Crust Core\n - Crust Add-On\n IsActive:\n label: Active\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n Name:\n label: Product Name\n kind: String\n ProductCode:\n label: Product Code\n kind: String\n Question:\n name: Question\n fields:\n BestReplyId:\n label: Best Reply\n kind: Record\n options:\n labelField: Name\n module: Reply\n queryFields:\n - Name\n Body:\n label: Question Body\n kind: String\n options:\n multiLine: true\n useRichTextEditor: true\n NumReplies:\n label: Number of Replies\n kind: Number\n options:\n format: 0\n precision: 0\n Title:\n label: Question Title\n kind: String\n UpVotes:\n label: Up Votes\n kind: Number\n options:\n format: 0\n precision: 0\n VoteScore:\n label: Vote Score\n kind: Number\n options:\n format: 0\n precision: 0\n Quote:\n name: Quote\n fields:\n AccountId:\n label: Account Name\n kind: Record\n options:\n labelField: AccountName\n module: Account\n queryFields:\n - AccountName\n AdditionalCity:\n label: Additional To City\n kind: String\n AdditionalCountry:\n label: Additional To Country\n kind: Select\n options:\n options:\n - Afghanistan\n - \xc3\x85land Islands\n - Albania\n - Algeria\n - American Samoa\n - Andorra\n - Angola\n - Anguilla\n - Antarctica\n - Antigua And Barbuda\n - Argentina\n - Armenia\n - Aruba\n - Australia\n - Austria\n - Azerbaijan\n - Bahamas\n - Bahrain\n - Bangladesh\n - Barbados\n - Belarus\n - Belgium\n - Belize\n - Benin\n - Bermuda\n - Bhutan\n - Bolivia\n - Bosnia And Herzegovina\n - Botswana\n - Bouvet Island\n - Brazil\n - British Indian Ocean Territory\n - Brunei Darussalam\n - Bulgaria\n - Burkina Faso\n - Burundi\n - Cambodia\n - Cameroon\n - Canada\n - Cape Verde\n - Cayman Islands\n - Central African Republic\n - Chad\n - Chile\n - China\n - Christmas Island\n - Cocos (Keeling) Islands\n - Colombia\n - Comoros\n - Congo\n - Congo; The Democratic Republic Of The\n - Cook Islands\n - Costa Rica\n - Cote D'ivoire\n - Croatia\n - Cuba\n - Cyprus\n - Czechia\n - Denmark\n - Djibouti\n - Dominica\n - Dominican Republic\n - Ecuador\n - Egypt\n - El Salvador\n - Equatorial Guinea\n - Eritrea\n - Estonia\n - Ethiopia\n - Falkland Islands (Malvinas)\n - Faroe Islands\n - Fiji\n - Finland\n - France\n - French Guiana\n - French Polynesia\n - French Southern Territories\n - Gabon\n - Gambia\n - Georgia\n - Germany\n - Ghana\n - Gibraltar\n - Greece\n - Greenland\n - Grenada\n - Guadeloupe\n - Guam\n - Guatemala\n - Guernsey\n - Guinea\n - Guinea-bissau\n - Guyana\n - Haiti\n - Heard Island And Mcdonald Islands\n - Holy See (Vatican City State)\n - Honduras\n - Hong Kong\n - Hungary\n - Iceland\n - India\n - Indonesia\n - Iran; Islamic Republic Of\n - Iraq\n - Ireland\n - Isle Of Man\n - Israel\n - Italy\n - Jamaica\n - Japan\n - Jersey\n - Jordan\n - Kazakhstan\n - Kenya\n - Kiribati\n - Korea; Democratic People's Republic Of\n - Korea; Republic Of\n - Kuwait\n - Kyrgyzstan\n - Lao People's Democratic Republic\n - Latvia\n - Lebanon\n - Lesotho\n - Liberia\n - Libyan Arab Jamahiriya\n - Liechtenstein\n - Lithuania\n - Luxembourg\n - Macao\n - Macedonia; The Former Yugoslav Republic Of\n - Madagascar\n - Malawi\n - Malaysia\n - Maldives\n - Mali\n - Malta\n - Marshall Islands\n - Martinique\n - Mauritania\n - Mauritius\n - Mayotte\n - Mexico\n - Micronesia; Federated States Of\n - Moldova; Republic Of\n - Monaco\n - Mongolia\n - Montenegro\n - Montserrat\n - Morocco\n - Mozambique\n - Myanmar\n - Namibia\n - Nauru\n - Nepal\n - Netherlands\n - Netherlands Antilles\n - New Caledonia\n - New Zealand\n - Nicaragua\n - Niger\n - Nigeria\n - Niue\n - Norfolk Island\n - Northern Mariana Islands\n - Norway\n - Oman\n - Pakistan\n - Palau\n - Palestinian Territory; Occupied\n - Panama\n - Papua New Guinea\n - Paraguay\n - Peru\n - Philippines\n - Pitcairn\n - Poland\n - Portugal\n - Puerto Rico\n - Qatar\n - Reunion\n - Romania\n - Russian Federation\n - Rwanda\n - Saint Helena\n - Saint Kitts And Nevis\n - Saint Lucia\n - Saint Pierre And Miquelon\n - Saint Vincent And The Grenadines\n - Samoa\n - San Marino\n - Sao Tome And Principe\n - Saudi Arabia\n - Senegal\n - Serbia\n - Seychelles\n - Sierra Leone\n - Singapore\n - Slovakia\n - Slovenia\n - Solomon Islands\n - Somalia\n - South Africa\n - South Georgia And The South Sandwich Islands\n - Spain\n - Sri Lanka\n - Sudan\n - Suriname\n - Svalbard And Jan Mayen\n - Swaziland\n - Sweden\n - Switzerland\n - Syrian Arab Republic\n - Taiwan; Province Of China\n - Tajikistan\n - Tanzania; United Republic Of\n - Thailand\n - Timor-leste\n - Togo\n - Tokelau\n - Tonga\n - Trinidad And Tobago\n - Tunisia\n - Turkey\n - Turkmenistan\n - Turks And Caicos Islands\n - Tuvalu\n - Uganda\n - Ukraine\n - United Arab Emirates\n - United Kingdom\n - United States\n - United States Minor Outlying Islands\n - Uruguay\n - Uzbekistan\n - Vanuatu\n - Venezuela\n - Viet Nam\n - Virgin Islands; British\n - Virgin Islands; U.S.\n - Wallis And Futuna\n - Western Sahara\n - Yemen\n - Zambia\n - Zimbabwe\n AdditionalName:\n label: Additional To Name\n kind: String\n AdditionalPostalCode:\n label: Additional To Postal Code\n kind: String\n AdditionalState:\n label: Additional To State\n kind: String\n AdditionalStreet:\n label: Additional To Street\n kind: String\n BillingCity:\n label: Bill To City\n kind: String\n BillingCountry:\n label: Bill To Country\n kind: Select\n options:\n options:\n - Afghanistan\n - \xc3\x85land Islands\n - Albania\n - Algeria\n - American Samoa\n - Andorra\n - Angola\n - Anguilla\n - Antarctica\n - Antigua And Barbuda\n - Argentina\n - Armenia\n - Aruba\n - Australia\n - Austria\n - Azerbaijan\n - Bahamas\n - Bahrain\n - Bangladesh\n - Barbados\n - Belarus\n - Belgium\n - Belize\n - Benin\n - Bermuda\n - Bhutan\n - Bolivia\n - Bosnia And Herzegovina\n - Botswana\n - Bouvet Island\n - Brazil\n - British Indian Ocean Territory\n - Brunei Darussalam\n - Bulgaria\n - Burkina Faso\n - Burundi\n - Cambodia\n - Cameroon\n - Canada\n - Cape Verde\n - Cayman Islands\n - Central African Republic\n - Chad\n - Chile\n - China\n - Christmas Island\n - Cocos (Keeling) Islands\n - Colombia\n - Comoros\n - Congo\n - Congo; The Democratic Republic Of The\n - Cook Islands\n - Costa Rica\n - Cote D'ivoire\n - Croatia\n - Cuba\n - Cyprus\n - Czechia\n - Denmark\n - Djibouti\n - Dominica\n - Dominican Republic\n - Ecuador\n - Egypt\n - El Salvador\n - Equatorial Guinea\n - Eritrea\n - Estonia\n - Ethiopia\n - Falkland Islands (Malvinas)\n - Faroe Islands\n - Fiji\n - Finland\n - France\n - French Guiana\n - French Polynesia\n - French Southern Territories\n - Gabon\n - Gambia\n - Georgia\n - Germany\n - Ghana\n - Gibraltar\n - Greece\n - Greenland\n - Grenada\n - Guadeloupe\n - Guam\n - Guatemala\n - Guernsey\n - Guinea\n - Guinea-bissau\n - Guyana\n - Haiti\n - Heard Island And Mcdonald Islands\n - Holy See (Vatican City State)\n - Honduras\n - Hong Kong\n - Hungary\n - Iceland\n - India\n - Indonesia\n - Iran; Islamic Republic Of\n - Iraq\n - Ireland\n - Isle Of Man\n - Israel\n - Italy\n - Jamaica\n - Japan\n - Jersey\n - Jordan\n - Kazakhstan\n - Kenya\n - Kiribati\n - Korea; Democratic People's Republic Of\n - Korea; Republic Of\n - Kuwait\n - Kyrgyzstan\n - Lao People's Democratic Republic\n - Latvia\n - Lebanon\n - Lesotho\n - Liberia\n - Libyan Arab Jamahiriya\n - Liechtenstein\n - Lithuania\n - Luxembourg\n - Macao\n - Macedonia; The Former Yugoslav Republic Of\n - Madagascar\n - Malawi\n - Malaysia\n - Maldives\n - Mali\n - Malta\n - Marshall Islands\n - Martinique\n - Mauritania\n - Mauritius\n - Mayotte\n - Mexico\n - Micronesia; Federated States Of\n - Moldova; Republic Of\n - Monaco\n - Mongolia\n - Montenegro\n - Montserrat\n - Morocco\n - Mozambique\n - Myanmar\n - Namibia\n - Nauru\n - Nepal\n - Netherlands\n - Netherlands Antilles\n - New Caledonia\n - New Zealand\n - Nicaragua\n - Niger\n - Nigeria\n - Niue\n - Norfolk Island\n - Northern Mariana Islands\n - Norway\n - Oman\n - Pakistan\n - Palau\n - Palestinian Territory; Occupied\n - Panama\n - Papua New Guinea\n - Paraguay\n - Peru\n - Philippines\n - Pitcairn\n - Poland\n - Portugal\n - Puerto Rico\n - Qatar\n - Reunion\n - Romania\n - Russian Federation\n - Rwanda\n - Saint Helena\n - Saint Kitts And Nevis\n - Saint Lucia\n - Saint Pierre And Miquelon\n - Saint Vincent And The Grenadines\n - Samoa\n - San Marino\n - Sao Tome And Principe\n - Saudi Arabia\n - Senegal\n - Serbia\n - Seychelles\n - Sierra Leone\n - Singapore\n - Slovakia\n - Slovenia\n - Solomon Islands\n - Somalia\n - South Africa\n - South Georgia And The South Sandwich Islands\n - Spain\n - Sri Lanka\n - Sudan\n - Suriname\n - Svalbard And Jan Mayen\n - Swaziland\n - Sweden\n - Switzerland\n - Syrian Arab Republic\n - Taiwan; Province Of China\n - Tajikistan\n - Tanzania; United Republic Of\n - Thailand\n - Timor-leste\n - Togo\n - Tokelau\n - Tonga\n - Trinidad And Tobago\n - Tunisia\n - Turkey\n - Turkmenistan\n - Turks And Caicos Islands\n - Tuvalu\n - Uganda\n - Ukraine\n - United Arab Emirates\n - United Kingdom\n - United States\n - United States Minor Outlying Islands\n - Uruguay\n - Uzbekistan\n - Vanuatu\n - Venezuela\n - Viet Nam\n - Virgin Islands; British\n - Virgin Islands; U.S.\n - Wallis And Futuna\n - Western Sahara\n - Yemen\n - Zambia\n - Zimbabwe\n BillingName:\n label: Bill To Name\n kind: String\n BillingPostalCode:\n label: Bill To Postal Code\n kind: String\n BillingState:\n label: Bill To State\n kind: String\n BillingStreet:\n label: Bill To Street\n kind: String\n ContactId:\n label: Contact Name\n kind: Record\n options:\n labelField: RecordLabel\n module: Contact\n queryFields:\n - RecordLabel\n Description:\n label: Description\n kind: String\n options:\n multiLine: true\n Discount:\n label: Additional Discount\n kind: Number\n options:\n format: 0\n precision: 2\n suffix: \xe2\x82\xac\n Email:\n label: Email\n kind: Email\n ExpirationDate:\n label: Expiration Date\n kind: DateTime\n Fax:\n label: Fax\n kind: String\n GrandTotal:\n label: Grand Total (calculated)\n kind: Number\n options:\n format: 0\n precision: 2\n suffix: \xe2\x82\xac\n LineItemCount:\n label: Line Items\n kind: Number\n options:\n format: 0\n precision: 0\n Name:\n label: Quote Name\n kind: String\n OpportunityId:\n label: Opportunity Name\n kind: Record\n options:\n labelField: Name\n module: Opportunity\n queryFields:\n - AccountId\n - Name\n Phone:\n label: Phone\n kind: String\n PricebookId:\n label: Pricebook\n kind: Record\n options:\n labelField: Name\n module: Pricebook\n queryFields:\n - Name\n QuoteNumber:\n label: Quote Number\n kind: Number\n options:\n format: \"0000000\"\n precision: 0\n QuoteToCity:\n label: Quote To City\n kind: String\n QuoteToCountry:\n label: Quote To Country\n kind: Select\n options:\n options:\n - Afghanistan\n - \xc3\x85land Islands\n - Albania\n - Algeria\n - American Samoa\n - Andorra\n - Angola\n - Anguilla\n - Antarctica\n - Antigua And Barbuda\n - Argentina\n - Armenia\n - Aruba\n - Australia\n - Austria\n - Azerbaijan\n - Bahamas\n - Bahrain\n - Bangladesh\n - Barbados\n - Belarus\n - Belgium\n - Belize\n - Benin\n - Bermuda\n - Bhutan\n - Bolivia\n - Bosnia And Herzegovina\n - Botswana\n - Bouvet Island\n - Brazil\n - British Indian Ocean Territory\n - Brunei Darussalam\n - Bulgaria\n - Burkina Faso\n - Burundi\n - Cambodia\n - Cameroon\n - Canada\n - Cape Verde\n - Cayman Islands\n - Central African Republic\n - Chad\n - Chile\n - China\n - Christmas Island\n - Cocos (Keeling) Islands\n - Colombia\n - Comoros\n - Congo\n - Congo; The Democratic Republic Of The\n - Cook Islands\n - Costa Rica\n - Cote D'ivoire\n - Croatia\n - Cuba\n - Cyprus\n - Czechia\n - Denmark\n - Djibouti\n - Dominica\n - Dominican Republic\n - Ecuador\n - Egypt\n - El Salvador\n - Equatorial Guinea\n - Eritrea\n - Estonia\n - Ethiopia\n - Falkland Islands (Malvinas)\n - Faroe Islands\n - Fiji\n - Finland\n - France\n - French Guiana\n - French Polynesia\n - French Southern Territories\n - Gabon\n - Gambia\n - Georgia\n - Germany\n - Ghana\n - Gibraltar\n - Greece\n - Greenland\n - Grenada\n - Guadeloupe\n - Guam\n - Guatemala\n - Guernsey\n - Guinea\n - Guinea-bissau\n - Guyana\n - Haiti\n - Heard Island And Mcdonald Islands\n - Holy See (Vatican City State)\n - Honduras\n - Hong Kong\n - Hungary\n - Iceland\n - India\n - Indonesia\n - Iran; Islamic Republic Of\n - Iraq\n - Ireland\n - Isle Of Man\n - Israel\n - Italy\n - Jamaica\n - Japan\n - Jersey\n - Jordan\n - Kazakhstan\n - Kenya\n - Kiribati\n - Korea; Democratic People's Republic Of\n - Korea; Republic Of\n - Kuwait\n - Kyrgyzstan\n - Lao People's Democratic Republic\n - Latvia\n - Lebanon\n - Lesotho\n - Liberia\n - Libyan Arab Jamahiriya\n - Liechtenstein\n - Lithuania\n - Luxembourg\n - Macao\n - Macedonia; The Former Yugoslav Republic Of\n - Madagascar\n - Malawi\n - Malaysia\n - Maldives\n - Mali\n - Malta\n - Marshall Islands\n - Martinique\n - Mauritania\n - Mauritius\n - Mayotte\n - Mexico\n - Micronesia; Federated States Of\n - Moldova; Republic Of\n - Monaco\n - Mongolia\n - Montenegro\n - Montserrat\n - Morocco\n - Mozambique\n - Myanmar\n - Namibia\n - Nauru\n - Nepal\n - Netherlands\n - Netherlands Antilles\n - New Caledonia\n - New Zealand\n - Nicaragua\n - Niger\n - Nigeria\n - Niue\n - Norfolk Island\n - Northern Mariana Islands\n - Norway\n - Oman\n - Pakistan\n - Palau\n - Palestinian Territory; Occupied\n - Panama\n - Papua New Guinea\n - Paraguay\n - Peru\n - Philippines\n - Pitcairn\n - Poland\n - Portugal\n - Puerto Rico\n - Qatar\n - Reunion\n - Romania\n - Russian Federation\n - Rwanda\n - Saint Helena\n - Saint Kitts And Nevis\n - Saint Lucia\n - Saint Pierre And Miquelon\n - Saint Vincent And The Grenadines\n - Samoa\n - San Marino\n - Sao Tome And Principe\n - Saudi Arabia\n - Senegal\n - Serbia\n - Seychelles\n - Sierra Leone\n - Singapore\n - Slovakia\n - Slovenia\n - Solomon Islands\n - Somalia\n - South Africa\n - South Georgia And The South Sandwich Islands\n - Spain\n - Sri Lanka\n - Sudan\n - Suriname\n - Svalbard And Jan Mayen\n - Swaziland\n - Sweden\n - Switzerland\n - Syrian Arab Republic\n - Taiwan; Province Of China\n - Tajikistan\n - Tanzania; United Republic Of\n - Thailand\n - Timor-leste\n - Togo\n - Tokelau\n - Tonga\n - Trinidad And Tobago\n - Tunisia\n - Turkey\n - Turkmenistan\n - Turks And Caicos Islands\n - Tuvalu\n - Uganda\n - Ukraine\n - United Arab Emirates\n - United Kingdom\n - United States\n - United States Minor Outlying Islands\n - Uruguay\n - Uzbekistan\n - Vanuatu\n - Venezuela\n - Viet Nam\n - Virgin Islands; British\n - Virgin Islands; U.S.\n - Wallis And Futuna\n - Western Sahara\n - Yemen\n - Zambia\n - Zimbabwe\n QuoteToName:\n label: Quote To Name\n kind: String\n QuoteToPostalCode:\n label: Quote To Postal Code\n kind: String\n QuoteToState:\n label: Quote To State\n kind: String\n QuoteToStreet:\n label: Quote To Street\n kind: String\n RecordLabel:\n label: Record Label\n kind: String\n ShippingCity:\n label: Ship To City\n kind: String\n ShippingCountry:\n label: Ship To Country\n kind: Select\n options:\n options:\n - Afghanistan\n - \xc3\x85land Islands\n - Albania\n - Algeria\n - American Samoa\n - Andorra\n - Angola\n - Anguilla\n - Antarctica\n - Antigua And Barbuda\n - Argentina\n - Armenia\n - Aruba\n - Australia\n - Austria\n - Azerbaijan\n - Bahamas\n - Bahrain\n - Bangladesh\n - Barbados\n - Belarus\n - Belgium\n - Belize\n - Benin\n - Bermuda\n - Bhutan\n - Bolivia\n - Bosnia And Herzegovina\n - Botswana\n - Bouvet Island\n - Brazil\n - British Indian Ocean Territory\n - Brunei Darussalam\n - Bulgaria\n - Burkina Faso\n - Burundi\n - Cambodia\n - Cameroon\n - Canada\n - Cape Verde\n - Cayman Islands\n - Central African Republic\n - Chad\n - Chile\n - China\n - Christmas Island\n - Cocos (Keeling) Islands\n - Colombia\n - Comoros\n - Congo\n - Congo; The Democratic Republic Of The\n - Cook Islands\n - Costa Rica\n - Cote D'ivoire\n - Croatia\n - Cuba\n - Cyprus\n - Czechia\n - Denmark\n - Djibouti\n - Dominica\n - Dominican Republic\n - Ecuador\n - Egypt\n - El Salvador\n - Equatorial Guinea\n - Eritrea\n - Estonia\n - Ethiopia\n - Falkland Islands (Malvinas)\n - Faroe Islands\n - Fiji\n - Finland\n - France\n - French Guiana\n - French Polynesia\n - French Southern Territories\n - Gabon\n - Gambia\n - Georgia\n - Germany\n - Ghana\n - Gibraltar\n - Greece\n - Greenland\n - Grenada\n - Guadeloupe\n - Guam\n - Guatemala\n - Guernsey\n - Guinea\n - Guinea-bissau\n - Guyana\n - Haiti\n - Heard Island And Mcdonald Islands\n - Holy See (Vatican City State)\n - Honduras\n - Hong Kong\n - Hungary\n - Iceland\n - India\n - Indonesia\n - Iran; Islamic Republic Of\n - Iraq\n - Ireland\n - Isle Of Man\n - Israel\n - Italy\n - Jamaica\n - Japan\n - Jersey\n - Jordan\n - Kazakhstan\n - Kenya\n - Kiribati\n - Korea; Democratic People's Republic Of\n - Korea; Republic Of\n - Kuwait\n - Kyrgyzstan\n - Lao People's Democratic Republic\n - Latvia\n - Lebanon\n - Lesotho\n - Liberia\n - Libyan Arab Jamahiriya\n - Liechtenstein\n - Lithuania\n - Luxembourg\n - Macao\n - Macedonia; The Former Yugoslav Republic Of\n - Madagascar\n - Malawi\n - Malaysia\n - Maldives\n - Mali\n - Malta\n - Marshall Islands\n - Martinique\n - Mauritania\n - Mauritius\n - Mayotte\n - Mexico\n - Micronesia; Federated States Of\n - Moldova; Republic Of\n - Monaco\n - Mongolia\n - Montenegro\n - Montserrat\n - Morocco\n - Mozambique\n - Myanmar\n - Namibia\n - Nauru\n - Nepal\n - Netherlands\n - Netherlands Antilles\n - New Caledonia\n - New Zealand\n - Nicaragua\n - Niger\n - Nigeria\n - Niue\n - Norfolk Island\n - Northern Mariana Islands\n - Norway\n - Oman\n - Pakistan\n - Palau\n - Palestinian Territory; Occupied\n - Panama\n - Papua New Guinea\n - Paraguay\n - Peru\n - Philippines\n - Pitcairn\n - Poland\n - Portugal\n - Puerto Rico\n - Qatar\n - Reunion\n - Romania\n - Russian Federation\n - Rwanda\n - Saint Helena\n - Saint Kitts And Nevis\n - Saint Lucia\n - Saint Pierre And Miquelon\n - Saint Vincent And The Grenadines\n - Samoa\n - San Marino\n - Sao Tome And Principe\n - Saudi Arabia\n - Senegal\n - Serbia\n - Seychelles\n - Sierra Leone\n - Singapore\n - Slovakia\n - Slovenia\n - Solomon Islands\n - Somalia\n - South Africa\n - South Georgia And The South Sandwich Islands\n - Spain\n - Sri Lanka\n - Sudan\n - Suriname\n - Svalbard And Jan Mayen\n - Swaziland\n - Sweden\n - Switzerland\n - Syrian Arab Republic\n - Taiwan; Province Of China\n - Tajikistan\n - Tanzania; United Republic Of\n - Thailand\n - Timor-leste\n - Togo\n - Tokelau\n - Tonga\n - Trinidad And Tobago\n - Tunisia\n - Turkey\n - Turkmenistan\n - Turks And Caicos Islands\n - Tuvalu\n - Uganda\n - Ukraine\n - United Arab Emirates\n - United Kingdom\n - United States\n - United States Minor Outlying Islands\n - Uruguay\n - Uzbekistan\n - Vanuatu\n - Venezuela\n - Viet Nam\n - Virgin Islands; British\n - Virgin Islands; U.S.\n - Wallis And Futuna\n - Western Sahara\n - Yemen\n - Zambia\n - Zimbabwe\n ShippingHandling:\n label: Shipping and Handling\n kind: Number\n options:\n format: 0\n precision: 2\n suffix: \xe2\x82\xac\n ShippingName:\n label: Ship To Name\n kind: String\n ShippingPostalCode:\n label: Ship To Postal Code\n kind: String\n ShippingState:\n label: Ship To State\n kind: String\n ShippingStreet:\n label: Ship To Street\n kind: String\n Status:\n label: Status\n kind: Select\n options:\n options:\n - Draft\n - Needs Review\n - In Review\n - Approved\n - Rejected\n - Presented\n - Accepted\n - Denied\n Subtotal:\n label: Subtotal (calculated)\n kind: Number\n options:\n format: 0\n precision: 2\n suffix: \xe2\x82\xac\n Tax:\n label: Tax\n kind: Number\n options:\n format: 0\n precision: 0\n suffix: '%'\n TotalPrice:\n label: Total Price (calculated)\n kind: Number\n options:\n format: 0\n precision: 2\n suffix: \xe2\x82\xac\n QuoteLineItem:\n name: QuoteLineItem\n fields:\n Description:\n label: Line Description\n kind: String\n Discount:\n label: Discount\n kind: Number\n options:\n format: 0\n precision: \"2\"\n suffix: \xe2\x82\xac\n LineItemDescription:\n label: Line Item Description\n kind: String\n options:\n multiLine: true\n LineItemNumber:\n label: Line Item Number\n kind: String\n ListPrice:\n label: List Price\n kind: Number\n options:\n format: 0\n precision: \"2\"\n suffix: \xe2\x82\xac\n PricebookEntryId:\n label: Price Book Entry\n kind: Record\n options:\n labelField: Name\n module: PricebookEntry\n queryFields:\n - ProductCode\n - Name\n ProductCode:\n label: Product Code\n kind: String\n ProductId:\n label: Product\n kind: Record\n options:\n labelField: Name\n module: Product\n queryFields:\n - ProductCode\n - Name\n Quantity:\n label: Quantity\n kind: Number\n options:\n format: 0\n precision: 0\n QuoteId:\n label: Quote\n kind: Record\n options:\n labelField: Name\n module: Quote\n queryFields:\n - AccountId\n - Name\n - QuoteNumber\n ServiceDate:\n label: Date\n kind: DateTime\n SortOrder:\n label: Sort Order\n kind: Number\n options:\n format: 0\n precision: 0\n Subtotal:\n label: Subtotal\n kind: Number\n options:\n format: 0\n precision: \"2\"\n suffix: \xe2\x82\xac\n TotalPrice:\n label: Total Price\n kind: Number\n options:\n format: 0\n precision: \"2\"\n suffix: \xe2\x82\xac\n UnitPrice:\n label: Sales Price\n kind: Number\n options:\n format: 0\n precision: 2\n suffix: \xe2\x82\xac\n Reply:\n name: Reply\n fields:\n Body:\n label: Reply Body\n kind: String\n options:\n multiLine: true\n useRichTextEditor: true\n DownVotes:\n label: Down Votes\n kind: Number\n options:\n format: 0\n precision: 0\n IdeaId:\n label: Idea\n kind: Record\n options:\n labelField: Title\n module: Idea\n queryFields:\n - Title\n Name:\n label: Name\n kind: String\n QuestionId:\n label: Question\n kind: Record\n options:\n labelField: Title\n module: Question\n queryFields:\n - Title\n UpVotes:\n label: Up Votes\n kind: Number\n options:\n format: 0\n precision: 0\n VoteTotal:\n label: Vote Total\n kind: Number\n options:\n format: 0\n precision: 0\n Solution:\n name: Solution\n fields:\n CaseId:\n label: Case\n kind: Record\n options:\n labelField: Subject\n module: Case\n queryFields:\n - AccountId\n - CaseNumber\n - Subject\n File:\n label: File\n kind: File\n options:\n allowDocuments: false\n allowImages: false\n mode: list\n IsPublished:\n label: Public\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n IsReviewed:\n label: Reviewed\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n ProductId:\n label: Product\n kind: Record\n options:\n labelField: Name\n module: Product\n queryFields:\n - ProductCode\n - Name\n SolutionName:\n label: Solution Title\n kind: String\n SolutionNote:\n label: Solution Details\n kind: String\n options:\n multiLine: true\n useRichTextEditor: true\n SolutionNumber:\n label: Solution Number\n kind: Number\n options:\n format: \"0000000\"\n precision: 0\n Status:\n label: Status\n kind: Select\n options:\n options:\n - New\n - Pending review\n - Accepted\n - Obsolete\n - Duplicate\n Task:\n name: Task\n fields:\n AccountId:\n label: Account\n kind: Record\n options:\n labelField: AccountName\n module: Account\n queryFields:\n - AccountName\n selectType: default\n ActivityDate:\n label: Due Date\n kind: DateTime\n CallDisposition:\n label: Call Result\n kind: String\n CallDurationInSeconds:\n label: Call Duration\n kind: Number\n options:\n format: 0\n precision: 0\n CallObject:\n label: Call Object Identifier\n kind: String\n CallType:\n label: Call Type\n kind: Select\n options:\n options:\n - Internal\n - Inbound\n - Outbound\n selectType: default\n CaseId:\n label: Case\n kind: Record\n options:\n labelField: Subject\n module: Case\n queryFields:\n - AccountId\n - CaseNumber\n - Subject\n selectType: default\n ContactId:\n label: Contact\n kind: Record\n options:\n labelField: RecordLabel\n module: Contact\n queryFields:\n - RecordLabel\n selectType: default\n ContractId:\n label: Contract\n kind: Record\n options:\n labelField: Name\n module: Contract\n queryFields:\n - AccountId\n - Name\n - ContractNumber\n selectType: default\n Description:\n label: Comments\n kind: String\n options:\n multiLine: true\n useRichTextEditor: true\n IsClosed:\n label: Closed\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n IsReminderSet:\n label: Reminder Set\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n LeadId:\n label: Lead\n kind: Record\n options:\n labelField: RecordLabel\n module: Lead\n queryFields:\n - RecordLabel\n selectType: default\n OpportunityId:\n label: Opportunity\n kind: Record\n options:\n labelField: Name\n module: Opportunity\n queryFields:\n - AccountId\n - Name\n selectType: default\n OwnerId:\n label: Assigned To\n kind: User\n options:\n presetWithAuthenticated: false\n selectType: default\n Priority:\n label: Priority\n kind: Select\n options:\n options:\n - High\n - Normal\n - Low\n selectType: default\n QuoteId:\n label: Quote\n kind: Record\n options:\n labelField: Name\n module: Quote\n queryFields:\n - AccountId\n - Name\n - QuoteNumber\n selectType: default\n ReminderDateTime:\n label: Reminder Date/Time\n kind: DateTime\n Status:\n label: Status\n kind: Select\n options:\n options:\n - Open\n - Completed\n selectType: default\n Subject:\n label: Subject\n kind: String\n Type:\n label: Type\n kind: Select\n options:\n options:\n - Call\n - Email\n - Send letter\n - Send Quote\n - Send Message\n - Other\n selectType: default\n Vote:\n name: Vote\n fields:\n IdeaId:\n label: Idea\n kind: Record\n options:\n labelField: Title\n module: Idea\n queryFields:\n - Title\n QuestionId:\n label: Question\n kind: Record\n options:\n labelField: Title\n module: Question\n queryFields:\n - Title\n ReplyId:\n label: Reply\n kind: Record\n options:\n labelField: Name\n module: Reply\n queryFields:\n - Name\n Score:\n label: Score\n kind: Number\n options:\n format: 0\n precision: 0\nPK\x07\x08r<\x06\xf9\xc9-\x02\x00\xc9-\x02\x00PK\x03\x04\x14\x00\x08\x00\x00\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x00 \x001100_modules_service_cloud.yamlUT\x05\x00\x01\x80Cm8namespace: service-cloud\nmodules:\n Account:\n name: Account\n fields:\n AccountName:\n label: Account Name\n kind: String\n required: true\n OwnerId:\n label: Account Owner\n kind: User\n options:\n presetWithAuthenticated: false\n selectType: default\n AccountSource:\n label: Account Source\n kind: Select\n options:\n options:\n - Customer Referral\n - Direct\n - Employee Referral\n - Event\n - Existing Customer\n - Inbound Call\n - Outbound List\n - Partner Referral\n - Seminar\n - Social Media\n - Webinar\n - Website (Organic)\n - Website (PPC)\n - Word of Mouth\n - Other\n selectType: default\n AnnualRevenue:\n label: Annual Revenue\n kind: Number\n options:\n format: 0\n precision: 0\n BillingStreet:\n label: Billing Street\n kind: String\n BillingCity:\n label: Billing City\n kind: String\n BillingState:\n label: Billing State\n kind: String\n BillingPostalCode:\n label: Billing Postal Code\n kind: String\n BillingCountry:\n label: Billing Country\n kind: Select\n options:\n options:\n - Afghanistan\n - \xc3\x85land Islands\n - Albania\n - Algeria\n - American Samoa\n - Andorra\n - Angola\n - Anguilla\n - Antarctica\n - Antigua And Barbuda\n - Argentina\n - Armenia\n - Aruba\n - Australia\n - Austria\n - Azerbaijan\n - Bahamas\n - Bahrain\n - Bangladesh\n - Barbados\n - Belarus\n - Belgium\n - Belize\n - Benin\n - Bermuda\n - Bhutan\n - Bolivia\n - Bosnia And Herzegovina\n - Botswana\n - Bouvet Island\n - Brazil\n - British Indian Ocean Territory\n - Brunei Darussalam\n - Bulgaria\n - Burkina Faso\n - Burundi\n - Cambodia\n - Cameroon\n - Canada\n - Cape Verde\n - Cayman Islands\n - Central African Republic\n - Chad\n - Chile\n - China\n - Christmas Island\n - Cocos (Keeling) Islands\n - Colombia\n - Comoros\n - Congo\n - Congo; The Democratic Republic Of The\n - Cook Islands\n - Costa Rica\n - Cote D'ivoire\n - Croatia\n - Cuba\n - Cyprus\n - Czechia\n - Denmark\n - Djibouti\n - Dominica\n - Dominican Republic\n - Ecuador\n - Egypt\n - El Salvador\n - Equatorial Guinea\n - Eritrea\n - Estonia\n - Ethiopia\n - Falkland Islands (Malvinas)\n - Faroe Islands\n - Fiji\n - Finland\n - France\n - French Guiana\n - French Polynesia\n - French Southern Territories\n - Gabon\n - Gambia\n - Georgia\n - Germany\n - Ghana\n - Gibraltar\n - Greece\n - Greenland\n - Grenada\n - Guadeloupe\n - Guam\n - Guatemala\n - Guernsey\n - Guinea\n - Guinea-bissau\n - Guyana\n - Haiti\n - Heard Island And Mcdonald Islands\n - Holy See (Vatican City State)\n - Honduras\n - Hong Kong\n - Hungary\n - Iceland\n - India\n - Indonesia\n - Iran; Islamic Republic Of\n - Iraq\n - Ireland\n - Isle Of Man\n - Israel\n - Italy\n - Jamaica\n - Japan\n - Jersey\n - Jordan\n - Kazakhstan\n - Kenya\n - Kiribati\n - Korea; Democratic People's Republic Of\n - Korea; Republic Of\n - Kuwait\n - Kyrgyzstan\n - Lao People's Democratic Republic\n - Latvia\n - Lebanon\n - Lesotho\n - Liberia\n - Libyan Arab Jamahiriya\n - Liechtenstein\n - Lithuania\n - Luxembourg\n - Macao\n - Macedonia; The Former Yugoslav Republic Of\n - Madagascar\n - Malawi\n - Malaysia\n - Maldives\n - Mali\n - Malta\n - Marshall Islands\n - Martinique\n - Mauritania\n - Mauritius\n - Mayotte\n - Mexico\n - Micronesia; Federated States Of\n - Moldova; Republic Of\n - Monaco\n - Mongolia\n - Montenegro\n - Montserrat\n - Morocco\n - Mozambique\n - Myanmar\n - Namibia\n - Nauru\n - Nepal\n - Netherlands\n - Netherlands Antilles\n - New Caledonia\n - New Zealand\n - Nicaragua\n - Niger\n - Nigeria\n - Niue\n - Norfolk Island\n - Northern Mariana Islands\n - Norway\n - Oman\n - Pakistan\n - Palau\n - Palestinian Territory; Occupied\n - Panama\n - Papua New Guinea\n - Paraguay\n - Peru\n - Philippines\n - Pitcairn\n - Poland\n - Portugal\n - Puerto Rico\n - Qatar\n - Reunion\n - Romania\n - Russian Federation\n - Rwanda\n - Saint Helena\n - Saint Kitts And Nevis\n - Saint Lucia\n - Saint Pierre And Miquelon\n - Saint Vincent And The Grenadines\n - Samoa\n - San Marino\n - Sao Tome And Principe\n - Saudi Arabia\n - Senegal\n - Serbia\n - Seychelles\n - Sierra Leone\n - Singapore\n - Slovakia\n - Slovenia\n - Solomon Islands\n - Somalia\n - South Africa\n - South Georgia And The South Sandwich Islands\n - Spain\n - Sri Lanka\n - Sudan\n - Suriname\n - Svalbard And Jan Mayen\n - Swaziland\n - Sweden\n - Switzerland\n - Syrian Arab Republic\n - Taiwan; Province Of China\n - Tajikistan\n - Tanzania; United Republic Of\n - Thailand\n - Timor-leste\n - Togo\n - Tokelau\n - Tonga\n - Trinidad And Tobago\n - Tunisia\n - Turkey\n - Turkmenistan\n - Turks And Caicos Islands\n - Tuvalu\n - Uganda\n - Ukraine\n - United Arab Emirates\n - United Kingdom\n - United States\n - United States Minor Outlying Islands\n - Uruguay\n - Uzbekistan\n - Vanuatu\n - Venezuela\n - Viet Nam\n - Virgin Islands; British\n - Virgin Islands; U.S.\n - Wallis And Futuna\n - Western Sahara\n - Yemen\n - Zambia\n - Zimbabwe\n selectType: default\n Description:\n label: Description\n kind: String\n options:\n multiLine: true\n useRichTextEditor: true\n NumberOfEmployees:\n label: Employees\n kind: Number\n options:\n format: 0\n precision: 0\n Fax:\n label: Fax\n kind: String\n Industry:\n label: Industry\n kind: Select\n options:\n options:\n - \"\"\n - Agriculture\n - Apparel\n - Banking\n - Biotechnology\n - Chemicals\n - Communications\n - Construction\n - Consulting\n - Education\n - Electronics\n - Energy\n - Engineering\n - Entertainment\n - Environmental\n - Finance\n - Food & Beverage\n - Government\n - Healthcare\n - Hospitality\n - Insurance\n - Machinery\n - Manufacturing\n - Media\n - Not For Profit\n - Other\n - Recreation\n - Retail\n - Shipping\n - Technology\n - Telecommunications\n - Transportation\n - Utilities\n selectType: default\n LastViewedDate:\n label: Last Viewed Date\n kind: DateTime\n Ownership:\n label: Ownership\n kind: Select\n options:\n options:\n - Public\n - Private\n selectType: default\n ParentId:\n label: Parent Account\n kind: Record\n options:\n labelField: AccountName\n module: Account\n queryFields:\n - AccountName\n selectType: default\n Phone:\n label: Phone\n kind: String\n Rating:\n label: Rating\n kind: Select\n options:\n options:\n - \xe2\x98\x86\xe2\x98\x86\xe2\x98\x86\xe2\x98\x86\xe2\x98\x86\n - \xe2\x98\x85\xe2\x98\x86\xe2\x98\x86\xe2\x98\x86\xe2\x98\x86\n - \xe2\x98\x85\xe2\x98\x85\xe2\x98\x86\xe2\x98\x86\xe2\x98\x86\n - \xe2\x98\x85\xe2\x98\x85\xe2\x98\x85\xe2\x98\x86\xe2\x98\x86\n - \xe2\x98\x85\xe2\x98\x85\xe2\x98\x85\xe2\x98\x85\xe2\x98\x86\n - \xe2\x98\x85\xe2\x98\x85\xe2\x98\x85\xe2\x98\x85\xe2\x98\x85\n selectType: default\n Sic:\n label: SIC Code\n kind: String\n SicDesc:\n label: SIC Description\n kind: String\n ShippingStreet:\n label: Shipping Street\n kind: String\n ShippingCity:\n label: Shipping City\n kind: String\n ShippingState:\n label: Shipping State\n kind: String\n ShippingPostalCode:\n label: Shipping Postal Code\n kind: String\n ShippingCountry:\n label: Shipping Country\n kind: Select\n options:\n options:\n - Afghanistan\n - \xc3\x85land Islands\n - Albania\n - Algeria\n - American Samoa\n - Andorra\n - Angola\n - Anguilla\n - Antarctica\n - Antigua And Barbuda\n - Argentina\n - Armenia\n - Aruba\n - Australia\n - Austria\n - Azerbaijan\n - Bahamas\n - Bahrain\n - Bangladesh\n - Barbados\n - Belarus\n - Belgium\n - Belize\n - Benin\n - Bermuda\n - Bhutan\n - Bolivia\n - Bosnia And Herzegovina\n - Botswana\n - Bouvet Island\n - Brazil\n - British Indian Ocean Territory\n - Brunei Darussalam\n - Bulgaria\n - Burkina Faso\n - Burundi\n - Cambodia\n - Cameroon\n - Canada\n - Cape Verde\n - Cayman Islands\n - Central African Republic\n - Chad\n - Chile\n - China\n - Christmas Island\n - Cocos (Keeling) Islands\n - Colombia\n - Comoros\n - Congo\n - Congo; The Democratic Republic Of The\n - Cook Islands\n - Costa Rica\n - Cote D'ivoire\n - Croatia\n - Cuba\n - Cyprus\n - Czechia\n - Denmark\n - Djibouti\n - Dominica\n - Dominican Republic\n - Ecuador\n - Egypt\n - El Salvador\n - Equatorial Guinea\n - Eritrea\n - Estonia\n - Ethiopia\n - Falkland Islands (Malvinas)\n - Faroe Islands\n - Fiji\n - Finland\n - France\n - French Guiana\n - French Polynesia\n - French Southern Territories\n - Gabon\n - Gambia\n - Georgia\n - Germany\n - Ghana\n - Gibraltar\n - Greece\n - Greenland\n - Grenada\n - Guadeloupe\n - Guam\n - Guatemala\n - Guernsey\n - Guinea\n - Guinea-bissau\n - Guyana\n - Haiti\n - Heard Island And Mcdonald Islands\n - Holy See (Vatican City State)\n - Honduras\n - Hong Kong\n - Hungary\n - Iceland\n - India\n - Indonesia\n - Iran; Islamic Republic Of\n - Iraq\n - Ireland\n - Isle Of Man\n - Israel\n - Italy\n - Jamaica\n - Japan\n - Jersey\n - Jordan\n - Kazakhstan\n - Kenya\n - Kiribati\n - Korea; Democratic People's Republic Of\n - Korea; Republic Of\n - Kuwait\n - Kyrgyzstan\n - Lao People's Democratic Republic\n - Latvia\n - Lebanon\n - Lesotho\n - Liberia\n - Libyan Arab Jamahiriya\n - Liechtenstein\n - Lithuania\n - Luxembourg\n - Macao\n - Macedonia; The Former Yugoslav Republic Of\n - Madagascar\n - Malawi\n - Malaysia\n - Maldives\n - Mali\n - Malta\n - Marshall Islands\n - Martinique\n - Mauritania\n - Mauritius\n - Mayotte\n - Mexico\n - Micronesia; Federated States Of\n - Moldova; Republic Of\n - Monaco\n - Mongolia\n - Montenegro\n - Montserrat\n - Morocco\n - Mozambique\n - Myanmar\n - Namibia\n - Nauru\n - Nepal\n - Netherlands\n - Netherlands Antilles\n - New Caledonia\n - New Zealand\n - Nicaragua\n - Niger\n - Nigeria\n - Niue\n - Norfolk Island\n - Northern Mariana Islands\n - Norway\n - Oman\n - Pakistan\n - Palau\n - Palestinian Territory; Occupied\n - Panama\n - Papua New Guinea\n - Paraguay\n - Peru\n - Philippines\n - Pitcairn\n - Poland\n - Portugal\n - Puerto Rico\n - Qatar\n - Reunion\n - Romania\n - Russian Federation\n - Rwanda\n - Saint Helena\n - Saint Kitts And Nevis\n - Saint Lucia\n - Saint Pierre And Miquelon\n - Saint Vincent And The Grenadines\n - Samoa\n - San Marino\n - Sao Tome And Principe\n - Saudi Arabia\n - Senegal\n - Serbia\n - Seychelles\n - Sierra Leone\n - Singapore\n - Slovakia\n - Slovenia\n - Solomon Islands\n - Somalia\n - South Africa\n - South Georgia And The South Sandwich Islands\n - Spain\n - Sri Lanka\n - Sudan\n - Suriname\n - Svalbard And Jan Mayen\n - Swaziland\n - Sweden\n - Switzerland\n - Syrian Arab Republic\n - Taiwan; Province Of China\n - Tajikistan\n - Tanzania; United Republic Of\n - Thailand\n - Timor-leste\n - Togo\n - Tokelau\n - Tonga\n - Trinidad And Tobago\n - Tunisia\n - Turkey\n - Turkmenistan\n - Turks And Caicos Islands\n - Tuvalu\n - Uganda\n - Ukraine\n - United Arab Emirates\n - United Kingdom\n - United States\n - United States Minor Outlying Islands\n - Uruguay\n - Uzbekistan\n - Vanuatu\n - Venezuela\n - Viet Nam\n - Virgin Islands; British\n - Virgin Islands; U.S.\n - Wallis And Futuna\n - Western Sahara\n - Yemen\n - Zambia\n - Zimbabwe\n selectType: default\n Type:\n label: Type\n kind: Select\n options:\n options:\n - Channel Partner / Reseller\n - Customer - Channel\n - Customer - Direct\n - Installation Partner\n - Pending\n - Prospect\n - Technology Partner\n - Other\n selectType: default\n Website:\n label: Website\n kind: String\n Twitter:\n label: Twitter\n kind: String\n LinkedIn:\n label: LinkedIn\n kind: String\n Facebook:\n label: Facebook\n kind: String\n TotalTime:\n label: Total time of all cases\n kind: Number\n options:\n format: 0\n precision: 2\n suffix: ' hour(s)'\n TotalCost:\n label: Total cost of all cases\n kind: Number\n options:\n format: 0\n precision: 2\n prefix: $\n AccountSelect:\n label: Accounts\n kind: Select\n options:\n selectType: default\n Attachement:\n name: Attachement\n fields:\n File:\n label: File\n kind: File\n options:\n allowDocuments: false\n allowImages: false\n mode: list\n CaseId:\n label: Case\n kind: Record\n options:\n labelField: Number\n module: Case\n queryFields:\n - ContactName\n - Number\n selectType: default\n Name:\n label: Name\n kind: String\n Case:\n name: Case\n fields:\n Status:\n label: Status\n kind: Select\n options:\n options:\n - New\n - Open\n - Closed\n - Removed\n selectType: default\n ContactName:\n label: Name\n kind: String\n private: true\n ContactTitle:\n label: Title\n kind: String\n private: true\n ContactEmail:\n label: Email\n kind: Email\n private: true\n AccountId:\n label: Account\n kind: Record\n options:\n labelField: AccountName\n module: Account\n queryFields:\n - AccountName\n selectType: default\n ContactId:\n label: Contact\n kind: Record\n options:\n labelField: RecordLabel\n module: Contact\n queryFields:\n - RecordLabel\n selectType: default\n Subject:\n label: Subject\n kind: String\n Escalated:\n label: Escalated\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n Category:\n label: Category\n kind: Select\n options:\n options:\n - Question\n - Problem\n - Other\n selectType: default\n ParentCase:\n label: ParentCase\n kind: Record\n options:\n labelField: Number\n module: Case\n queryFields:\n - Number\n selectType: default\n CaseOwner:\n label: Case Owner\n kind: User\n options:\n presetWithAuthenticated: false\n selectType: multiple\n multi: true\n CloseDate:\n label: Close Date\n kind: DateTime\n options:\n onlyDate: true\n Priority:\n label: Priority\n kind: Select\n options:\n options:\n - Very low\n - Low\n - Medium\n - High\n - Very high\n selectType: default\n Description:\n label: Description\n kind: String\n options:\n multiLine: true\n ContactPhone:\n label: Phone\n kind: String\n private: true\n Solution:\n label: Solution\n kind: Record\n options:\n labelField: Title\n module: KnowledgeBase\n queryFields:\n - Title\n selectType: default\n Number:\n label: Case Number\n kind: String\n ProductId:\n label: Product\n kind: Record\n options:\n labelField: Name\n module: Product\n queryFields:\n - ProductCode\n - Name\n selectType: default\n TotalTime:\n label: Total Time Spend on Ticket\n kind: Number\n options:\n format: 0\n precision: 2\n suffix: ' hour(s)'\n TotalCost:\n label: Total Cost\n kind: Number\n options:\n format: 0\n precision: 2\n prefix: $\n MailingList:\n label: Mailing List\n kind: Record\n options:\n labelField: RecordLabel\n module: Contact\n queryFields:\n - RecordLabel\n selectType: default\n multi: true\n PreviousStatus:\n label: PreviousStatus\n kind: String\n Contact:\n name: Contact\n fields:\n AccountId:\n label: Account Name\n kind: Record\n options:\n labelField: AccountName\n module: Account\n queryFields:\n - AccountName\n selectType: default\n AssistantName:\n label: Assistant\n kind: String\n AssistantPhone:\n label: Asst. Phone\n kind: String\n Birthdate:\n label: Birthdate\n kind: DateTime\n private: true\n MasterRecordId:\n label: Contact\n kind: Record\n options:\n labelField: MasterRecordId\n module: Contact\n queryFields:\n - RecordLabel\n selectType: default\n OwnerId:\n label: Contact Owner\n kind: User\n options:\n presetWithAuthenticated: false\n selectType: default\n IsDeleted:\n label: Deleted\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n Department:\n label: Department\n kind: String\n Description:\n label: Description\n kind: String\n options:\n multiLine: true\n useRichTextEditor: true\n DoNotCall:\n label: Do Not Call\n kind: Bool\n options:\n falseLabel: \"False\"\n trueLabel: Do Not Call\n Email:\n label: Email\n kind: Email\n private: true\n HasOptedOutOfEmail:\n label: Email Opt Out\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n Fax:\n label: Fax\n kind: String\n private: true\n HasOptedOutOfFax:\n label: Fax Opt Out\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n HomePhone:\n label: Home Phone\n kind: String\n private: true\n LastViewedDate:\n label: Last Viewed Date\n kind: DateTime\n LeadSource:\n label: Lead Source\n kind: Select\n options:\n options:\n - Customer Referral\n - Direct\n - Employee Referral\n - Event\n - Existing Customer\n - Inbound Call\n - Outbound List\n - Partner Referral\n - Seminar\n - Social Media\n - Webinar\n - Website (Organic)\n - Website (PPC)\n - Word of Mouth\n - Other\n selectType: default\n MailingStreet:\n label: Mailing Street\n kind: String\n private: true\n MailingCity:\n label: Mailing City\n kind: String\n private: true\n MailingState:\n label: Mailing State\n kind: String\n private: true\n MailingPostalCode:\n label: Mailing Postal Code\n kind: String\n private: true\n MailingCountry:\n label: Mailing Country\n kind: Select\n options:\n options:\n - Afghanistan\n - \xc3\x85land Islands\n - Albania\n - Algeria\n - American Samoa\n - Andorra\n - Angola\n - Anguilla\n - Antarctica\n - Antigua And Barbuda\n - Argentina\n - Armenia\n - Aruba\n - Australia\n - Austria\n - Azerbaijan\n - Bahamas\n - Bahrain\n - Bangladesh\n - Barbados\n - Belarus\n - Belgium\n - Belize\n - Benin\n - Bermuda\n - Bhutan\n - Bolivia\n - Bosnia And Herzegovina\n - Botswana\n - Bouvet Island\n - Brazil\n - British Indian Ocean Territory\n - Brunei Darussalam\n - Bulgaria\n - Burkina Faso\n - Burundi\n - Cambodia\n - Cameroon\n - Canada\n - Cape Verde\n - Cayman Islands\n - Central African Republic\n - Chad\n - Chile\n - China\n - Christmas Island\n - Cocos (Keeling) Islands\n - Colombia\n - Comoros\n - Congo\n - Congo; The Democratic Republic Of The\n - Cook Islands\n - Costa Rica\n - Cote D'ivoire\n - Croatia\n - Cuba\n - Cyprus\n - Czechia\n - Denmark\n - Djibouti\n - Dominica\n - Dominican Republic\n - Ecuador\n - Egypt\n - El Salvador\n - Equatorial Guinea\n - Eritrea\n - Estonia\n - Ethiopia\n - Falkland Islands (Malvinas)\n - Faroe Islands\n - Fiji\n - Finland\n - France\n - French Guiana\n - French Polynesia\n - French Southern Territories\n - Gabon\n - Gambia\n - Georgia\n - Germany\n - Ghana\n - Gibraltar\n - Greece\n - Greenland\n - Grenada\n - Guadeloupe\n - Guam\n - Guatemala\n - Guernsey\n - Guinea\n - Guinea-bissau\n - Guyana\n - Haiti\n - Heard Island And Mcdonald Islands\n - Holy See (Vatican City State)\n - Honduras\n - Hong Kong\n - Hungary\n - Iceland\n - India\n - Indonesia\n - Iran; Islamic Republic Of\n - Iraq\n - Ireland\n - Isle Of Man\n - Israel\n - Italy\n - Jamaica\n - Japan\n - Jersey\n - Jordan\n - Kazakhstan\n - Kenya\n - Kiribati\n - Korea; Democratic People's Republic Of\n - Korea; Republic Of\n - Kuwait\n - Kyrgyzstan\n - Lao People's Democratic Republic\n - Latvia\n - Lebanon\n - Lesotho\n - Liberia\n - Libyan Arab Jamahiriya\n - Liechtenstein\n - Lithuania\n - Luxembourg\n - Macao\n - Macedonia; The Former Yugoslav Republic Of\n - Madagascar\n - Malawi\n - Malaysia\n - Maldives\n - Mali\n - Malta\n - Marshall Islands\n - Martinique\n - Mauritania\n - Mauritius\n - Mayotte\n - Mexico\n - Micronesia; Federated States Of\n - Moldova; Republic Of\n - Monaco\n - Mongolia\n - Montenegro\n - Montserrat\n - Morocco\n - Mozambique\n - Myanmar\n - Namibia\n - Nauru\n - Nepal\n - Netherlands\n - Netherlands Antilles\n - New Caledonia\n - New Zealand\n - Nicaragua\n - Niger\n - Nigeria\n - Niue\n - Norfolk Island\n - Northern Mariana Islands\n - Norway\n - Oman\n - Pakistan\n - Palau\n - Palestinian Territory; Occupied\n - Panama\n - Papua New Guinea\n - Paraguay\n - Peru\n - Philippines\n - Pitcairn\n - Poland\n - Portugal\n - Puerto Rico\n - Qatar\n - Reunion\n - Romania\n - Russian Federation\n - Rwanda\n - Saint Helena\n - Saint Kitts And Nevis\n - Saint Lucia\n - Saint Pierre And Miquelon\n - Saint Vincent And The Grenadines\n - Samoa\n - San Marino\n - Sao Tome And Principe\n - Saudi Arabia\n - Senegal\n - Serbia\n - Seychelles\n - Sierra Leone\n - Singapore\n - Slovakia\n - Slovenia\n - Solomon Islands\n - Somalia\n - South Africa\n - South Georgia And The South Sandwich Islands\n - Spain\n - Sri Lanka\n - Sudan\n - Suriname\n - Svalbard And Jan Mayen\n - Swaziland\n - Sweden\n - Switzerland\n - Syrian Arab Republic\n - Taiwan; Province Of China\n - Tajikistan\n - Tanzania; United Republic Of\n - Thailand\n - Timor-leste\n - Togo\n - Tokelau\n - Tonga\n - Trinidad And Tobago\n - Tunisia\n - Turkey\n - Turkmenistan\n - Turks And Caicos Islands\n - Tuvalu\n - Uganda\n - Ukraine\n - United Arab Emirates\n - United Kingdom\n - United States\n - United States Minor Outlying Islands\n - Uruguay\n - Uzbekistan\n - Vanuatu\n - Venezuela\n - Viet Nam\n - Virgin Islands; British\n - Virgin Islands; U.S.\n - Wallis And Futuna\n - Western Sahara\n - Yemen\n - Zambia\n - Zimbabwe\n selectType: default\n private: true\n MobilePhone:\n label: Mobile\n kind: String\n private: true\n Salutation:\n label: Salutation\n kind: String\n private: true\n FirstName:\n label: First Name\n kind: String\n private: true\n LastName:\n label: Last Name\n kind: String\n private: true\n OtherStreet:\n label: Other Street\n kind: String\n private: true\n OtherCity:\n label: Other City\n kind: String\n private: true\n OtherState:\n label: Other State\n kind: String\n private: true\n OtherPostalCode:\n label: Other Postal Code\n kind: String\n private: true\n OtherCountry:\n label: Other Country\n kind: Select\n options:\n options:\n - Afghanistan\n - \xc3\x85land Islands\n - Albania\n - Algeria\n - American Samoa\n - Andorra\n - Angola\n - Anguilla\n - Antarctica\n - Antigua And Barbuda\n - Argentina\n - Armenia\n - Aruba\n - Australia\n - Austria\n - Azerbaijan\n - Bahamas\n - Bahrain\n - Bangladesh\n - Barbados\n - Belarus\n - Belgium\n - Belize\n - Benin\n - Bermuda\n - Bhutan\n - Bolivia\n - Bosnia And Herzegovina\n - Botswana\n - Bouvet Island\n - Brazil\n - British Indian Ocean Territory\n - Brunei Darussalam\n - Bulgaria\n - Burkina Faso\n - Burundi\n - Cambodia\n - Cameroon\n - Canada\n - Cape Verde\n - Cayman Islands\n - Central African Republic\n - Chad\n - Chile\n - China\n - Christmas Island\n - Cocos (Keeling) Islands\n - Colombia\n - Comoros\n - Congo\n - Congo; The Democratic Republic Of The\n - Cook Islands\n - Costa Rica\n - Cote D'ivoire\n - Croatia\n - Cuba\n - Cyprus\n - Czechia\n - Denmark\n - Djibouti\n - Dominica\n - Dominican Republic\n - Ecuador\n - Egypt\n - El Salvador\n - Equatorial Guinea\n - Eritrea\n - Estonia\n - Ethiopia\n - Falkland Islands (Malvinas)\n - Faroe Islands\n - Fiji\n - Finland\n - France\n - French Guiana\n - French Polynesia\n - French Southern Territories\n - Gabon\n - Gambia\n - Georgia\n - Germany\n - Ghana\n - Gibraltar\n - Greece\n - Greenland\n - Grenada\n - Guadeloupe\n - Guam\n - Guatemala\n - Guernsey\n - Guinea\n - Guinea-bissau\n - Guyana\n - Haiti\n - Heard Island And Mcdonald Islands\n - Holy See (Vatican City State)\n - Honduras\n - Hong Kong\n - Hungary\n - Iceland\n - India\n - Indonesia\n - Iran; Islamic Republic Of\n - Iraq\n - Ireland\n - Isle Of Man\n - Israel\n - Italy\n - Jamaica\n - Japan\n - Jersey\n - Jordan\n - Kazakhstan\n - Kenya\n - Kiribati\n - Korea; Democratic People's Republic Of\n - Korea; Republic Of\n - Kuwait\n - Kyrgyzstan\n - Lao People's Democratic Republic\n - Latvia\n - Lebanon\n - Lesotho\n - Liberia\n - Libyan Arab Jamahiriya\n - Liechtenstein\n - Lithuania\n - Luxembourg\n - Macao\n - Macedonia; The Former Yugoslav Republic Of\n - Madagascar\n - Malawi\n - Malaysia\n - Maldives\n - Mali\n - Malta\n - Marshall Islands\n - Martinique\n - Mauritania\n - Mauritius\n - Mayotte\n - Mexico\n - Micronesia; Federated States Of\n - Moldova; Republic Of\n - Monaco\n - Mongolia\n - Montenegro\n - Montserrat\n - Morocco\n - Mozambique\n - Myanmar\n - Namibia\n - Nauru\n - Nepal\n - Netherlands\n - Netherlands Antilles\n - New Caledonia\n - New Zealand\n - Nicaragua\n - Niger\n - Nigeria\n - Niue\n - Norfolk Island\n - Northern Mariana Islands\n - Norway\n - Oman\n - Pakistan\n - Palau\n - Palestinian Territory; Occupied\n - Panama\n - Papua New Guinea\n - Paraguay\n - Peru\n - Philippines\n - Pitcairn\n - Poland\n - Portugal\n - Puerto Rico\n - Qatar\n - Reunion\n - Romania\n - Russian Federation\n - Rwanda\n - Saint Helena\n - Saint Kitts And Nevis\n - Saint Lucia\n - Saint Pierre And Miquelon\n - Saint Vincent And The Grenadines\n - Samoa\n - San Marino\n - Sao Tome And Principe\n - Saudi Arabia\n - Senegal\n - Serbia\n - Seychelles\n - Sierra Leone\n - Singapore\n - Slovakia\n - Slovenia\n - Solomon Islands\n - Somalia\n - South Africa\n - South Georgia And The South Sandwich Islands\n - Spain\n - Sri Lanka\n - Sudan\n - Suriname\n - Svalbard And Jan Mayen\n - Swaziland\n - Sweden\n - Switzerland\n - Syrian Arab Republic\n - Taiwan; Province Of China\n - Tajikistan\n - Tanzania; United Republic Of\n - Thailand\n - Timor-leste\n - Togo\n - Tokelau\n - Tonga\n - Trinidad And Tobago\n - Tunisia\n - Turkey\n - Turkmenistan\n - Turks And Caicos Islands\n - Tuvalu\n - Uganda\n - Ukraine\n - United Arab Emirates\n - United Kingdom\n - United States\n - United States Minor Outlying Islands\n - Uruguay\n - Uzbekistan\n - Vanuatu\n - Venezuela\n - Viet Nam\n - Virgin Islands; British\n - Virgin Islands; U.S.\n - Wallis And Futuna\n - Western Sahara\n - Yemen\n - Zambia\n - Zimbabwe\n selectType: default\n private: true\n OtherPhone:\n label: Other Phone\n kind: String\n private: true\n Phone:\n label: Phone\n kind: String\n private: true\n PhotoUrl:\n label: Photo URL\n kind: Url\n private: true\n ReportsToId:\n label: Reports To\n kind: Record\n options:\n labelField: MasterRecordId\n module: Contact\n queryFields:\n - RecordLabel\n selectType: default\n Title:\n label: Title\n kind: String\n private: true\n Twitter:\n label: Twitter\n kind: Url\n private: true\n Facebook:\n label: Facebook\n kind: Url\n private: true\n LinkedIn:\n label: LinkedIn\n kind: Url\n private: true\n IsPrimary:\n label: Primary contact for account\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n RecordLabel:\n label: Record Label\n kind: String\n private: true\n Department:\n name: Department\n meta: '{}'\n fields:\n Name:\n label: Name\n kind: String\n Employees:\n label: Employees\n kind: User\n options:\n presetWithAuthenticated: false\n selectType: default\n multi: true\n HourCost:\n label: Cost per hour\n kind: Number\n options:\n format: 0\n precision: \"2\"\n prefix: $\n TotalTime:\n label: Total time of all cases\n kind: Number\n options:\n format: 0\n precision: 2\n suffix: ' hour(s)'\n TotalCost:\n label: Total cost of all cases\n kind: Number\n options:\n format: 0\n precision: 2\n prefix: $\n DepartmentSelect:\n label: Departments\n kind: Select\n options:\n selectType: default\n EmailMessage:\n name: EmailMessage\n meta: '{}'\n fields:\n HtmlBody:\n label: Body\n kind: String\n options:\n multiLine: true\n useRichTextEditor: true\n MessageDate:\n label: Message Sent Date\n kind: String\n ContactId:\n label: Contact\n kind: Record\n options:\n labelField: RecordLabel\n module: Contact\n queryFields:\n - RecordLabel\n selectType: default\n Status:\n label: Status\n kind: Select\n options:\n options:\n - Draft\n - Sent\n selectType: default\n ToAddress:\n label: To Address\n kind: Email\n Subject:\n label: Subject\n kind: String\n EmailTemplateId:\n label: Email Template\n kind: Record\n options:\n labelField: Name\n module: EmailTemplate\n queryFields:\n - Name\n selectType: default\n CaseId:\n label: Case\n kind: Record\n options:\n labelField: Number\n module: Case\n queryFields:\n - Number\n selectType: default\n EmailTemplate:\n name: EmailTemplate\n meta: '{}'\n fields:\n Name:\n label: Email Template Name\n kind: String\n Subject:\n label: Subject\n kind: String\n Body:\n label: Body\n kind: String\n options:\n multiLine: true\n useRichTextEditor: true\n Description:\n label: Description\n kind: String\n options:\n multiLine: true\n Entitlement:\n name: Entitlement\n fields:\n AccountId:\n label: Account Name\n kind: Record\n options:\n labelField: AccountName\n module: Account\n queryFields:\n - AccountName\n selectType: default\n ProductId:\n label: Product\n kind: Record\n options:\n labelField: Name\n module: Product\n queryFields:\n - Name\n selectType: default\n Name:\n label: Entitlement Name\n kind: String\n StartDate:\n label: Start Date\n kind: DateTime\n EndDate:\n label: End Date\n kind: DateTime\n Status:\n label: Status\n kind: Select\n options:\n options:\n - Active\n - Expired\n - Inactive\n selectType: default\n Type:\n label: Type\n kind: Select\n options:\n options:\n - Web Support\n - Phone Support\n - Email Support\n - Dedicated Support\n selectType: multiple\n multi: true\n Term:\n label: Term\n kind: Number\n options:\n format: 0\n precision: 0\n TermType:\n label: Term Type\n kind: Select\n options:\n options:\n - Day(s)\n - Month(s)\n - Year(s)\n selectType: default\n EntitlementTemplate:\n name: EntitlementTemplate\n fields:\n Name:\n label: Entitlement Name\n kind: String\n Term:\n label: Term\n kind: Number\n options:\n format: 0\n precision: 0\n TermType:\n label: Term type\n kind: Select\n options:\n options:\n - Day(s)\n - Month(s)\n - Year(s)\n selectType: default\n Type:\n label: Type\n kind: Select\n options:\n options:\n - Email Support\n - Messaging Support\n - Phone Support\n - Web Support\n selectType: multiple\n multi: true\n KnowledgeBase:\n name: KnowledgeBase\n fields:\n Number:\n label: KB Number\n kind: Number\n options:\n format: \"00000000\"\n precision: 0\n prefix: KB#\n Title:\n label: Title\n kind: String\n Content:\n label: Content\n kind: String\n options:\n multiLine: true\n useRichTextEditor: true\n IsPublished:\n label: Public\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n IsReviewed:\n label: Reviewed\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n Status:\n label: Status\n kind: Select\n options:\n options:\n - New\n - Pending review\n - Accepted\n - Obsolete\n - Duplicate\n selectType: default\n File:\n label: File\n kind: File\n options:\n allowDocuments: false\n allowImages: false\n mode: list\n Type:\n label: Type\n kind: Select\n options:\n options:\n - FAQ\n - Solution\n - Tutorial\n - General\n selectType: multiple\n multi: true\n Category:\n label: Category\n kind: Select\n options:\n options:\n - Product\n - Service\n - People Operations\n - Engineering\n - Marketing\n - Sales\n - Finance\n - Legal\n selectType: multiple\n multi: true\n ProductId:\n label: Product\n kind: Record\n options:\n labelField: Name\n module: Product\n queryFields:\n - ProductCode\n - Name\n selectType: default\n Product:\n name: Product\n fields:\n IsActive:\n label: Active\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n ProductCode:\n label: Product Code\n kind: String\n Description:\n label: Product Description\n kind: String\n options:\n multiLine: true\n useRichTextEditor: true\n Family:\n label: Product Family\n kind: Select\n options:\n options:\n - Equipment\n - Consumables\n - Accessories\n - Subscription\n - Service\n selectType: default\n Name:\n label: Product Name\n kind: String\n Photo:\n label: Photo\n kind: File\n options:\n allowDocuments: false\n allowImages: false\n mode: single\n Manual:\n label: Manual\n kind: File\n options:\n allowDocuments: false\n allowImages: false\n mode: list\n EntitlementTemplateId:\n label: Entitlement Template\n kind: Record\n options:\n labelField: Name\n module: EntitlementTemplate\n queryFields:\n - Name\n selectType: default\n TotalTime:\n label: Total time of all cases\n kind: Number\n options:\n format: 0\n precision: 2\n suffix: ' hour(s)'\n TotalCost:\n label: Total cost of all cases\n kind: Number\n options:\n format: 0\n precision: 2\n prefix: $\n ProductSelect:\n label: Products\n kind: Select\n options:\n selectType: default\n Settings:\n name: Settings\n meta: '{}'\n fields:\n KBNextNumber:\n label: Next number for a KB item\n kind: Number\n options:\n format: \"00000000\"\n precision: 0\n prefix: KB#\n DefaultCostPerHour:\n label: Default cost per hour\n kind: Number\n options:\n format: 0\n precision: 2\n prefix: $\n DefaultDepartment:\n label: Default department for new ticket\n kind: Record\n options:\n labelField: Name\n module: Department\n queryFields:\n - Name\n selectType: default\n DefaultTimeUpdate:\n label: Default time for a case update\n kind: Number\n options:\n format: 0\n precision: 2\n suffix: ' hour(s)'\n DefaultSupportChannel:\n label: Default support channel id\n kind: String\n DefaultCaseRecordLink:\n label: Default case link\n kind: String\n DefaultCaseEmailTemplate:\n label: Default case email template\n kind: Record\n options:\n labelField: Name\n module: EmailTemplate\n queryFields:\n - Name\n selectType: default\n Update:\n name: Update\n fields:\n CaseId:\n label: Case\n kind: Record\n options:\n labelField: Number\n module: Case\n queryFields:\n - ContactName\n - Number\n selectType: default\n Type:\n label: Type\n kind: Select\n options:\n options:\n - Incoming email\n - Outgoing email\n - Call\n - Status change\n - Other\n selectType: default\n Subject:\n label: Subject\n kind: String\n Content:\n label: Content\n kind: String\n options:\n multiLine: true\n useRichTextEditor: true\n From:\n label: From\n kind: String\n To:\n label: To\n kind: String\n AccountId:\n label: Account\n kind: Record\n options:\n labelField: AccountName\n module: Account\n queryFields:\n - AccountName\n selectType: default\n SendToMailingList:\n label: Send to Case Mailing List after saving\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n SaveInKB:\n label: Store as entry in Knowledge Base\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n TimeSpend:\n label: Time spend\n kind: Number\n options:\n format: 0\n precision: 2\n suffix: ' hour(s)'\n Cost:\n label: Cost\n kind: Number\n options:\n format: 0\n precision: 2\n prefix: $\n Department:\n label: Department\n kind: Record\n options:\n labelField: Name\n module: Department\n queryFields:\n - Name\n selectType: default\n NotificationCaseCreator:\n label: Notification sent to Case Creator\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n NotificationCaseOwner:\n label: Notification sent to Case Owner\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n NotificationCaseMailingList:\n label: Notification sent to Case Mailing List\n kind: Bool\n options:\n falseLabel: \"No\"\n trueLabel: \"Yes\"\n ContactId:\n label: Contact\n kind: Record\n options:\n labelField: RecordLabel\n module: Contact\n queryFields:\n - RecordLabel\n selectType: defaultPK\x07\x08\xbb\xc3\xd7\xdc\xd6\xbe\x00\x00\xd6\xbe\x00\x00PK\x03\x04\x14\x00\x08\x00\x00\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00 \x001200_charts_crm.yamlUT\x05\x00\x01\x80Cm8namespace: crm\ncharts:\n LeadsByCountry:\n name: Leads by country\n config:\n reports:\n - metrics:\n - backgroundColor: '#e5a83b'\n beginAtZero: true\n field: count\n fixTooltips: true\n label: Number of leads\n type: bar\n dimensions:\n - conditions: {}\n field: Country\n modifier: (no grouping / buckets)\n module: Lead\n LeadsBySource:\n name: Leads by source\n config:\n reports:\n - metrics:\n - backgroundColor: '#36d436'\n beginAtZero: true\n field: count\n label: Number of leads\n type: bar\n dimensions:\n - conditions: {}\n field: LeadSource\n modifier: (no grouping / buckets)\n module: Lead\n LeadsByType:\n name: Leads by type\n config:\n reports:\n - metrics:\n - backgroundColor: '#63da1a'\n beginAtZero: true\n field: count\n label: Number of leads\n type: bar\n dimensions:\n - conditions: {}\n field: Status\n modifier: (no grouping / buckets)\n module: Lead\n LeadsPerDay:\n name: Leads per day\n config:\n reports:\n - metrics:\n - aggregate: SUM\n axisType: linear\n backgroundColor: '#fc7507'\n beginAtZero: true\n field: count\n fill: false\n label: Leads per day\n type: line\n dimensions:\n - conditions: {}\n field: created_at\n modifier: DATE\n module: Lead\n OpportunitiesByValue:\n name: Opportunities by value\n config:\n reports:\n - metrics:\n - aggregate: SUM\n backgroundColor: '#5977ff'\n beginAtZero: true\n field: Amount\n label: Total value\n type: bar\n dimensions:\n - conditions: {}\n field: StageName\n modifier: (no grouping / buckets)\n module: Opportunity\n QuarterlyPerformance:\n name: Quarterly performance\n config:\n reports:\n - filter: Amount > 0\n metrics:\n - aggregate: SUM\n axisPosition: left\n axisType: linear\n backgroundColor: '#009eff'\n beginAtZero: true\n field: Amount\n fill: true\n label: Amount\n type: line\n dimensions:\n - autoSkip: true\n conditions: {}\n field: CloseDate\n modifier: QUARTER\n module: Opportunity\nPK\x07\x08\x18\x18\xf1\xc2\xb0 \x00\x00\xb0 \x00\x00PK\x03\x04\x14\x00\x08\x00\x00\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1e\x00 \x001200_charts_service_cloud.yamlUT\x05\x00\x01\x80Cm8namespace: service-cloud\ncharts:\n ActiveEntitlements:\n name: Number of active entitlements\n config:\n reports:\n - dimensions:\n - conditions: {}\n field: Status\n modifier: (no grouping / buckets)\n filter: \"\"\n metrics:\n - backgroundColor: '#11ff57'\n field: count\n fixTooltips: true\n type: pie\n module: Entitlement\n AverageTimeSpentPerCase:\n name: Average time spent per case\n config:\n reports:\n - dimensions:\n - conditions: {}\n field: created_at\n modifier: MONTH\n filter: \"\"\n metrics:\n - aggregate: AVG\n backgroundColor: '#ff9937'\n beginAtZero: true\n field: TotalTime\n fixTooltips: false\n label: Average case time (in hours)\n type: bar\n module: Case\n CaseUpdatesPerType:\n name: Case updates per type\n config:\n reports:\n - dimensions:\n - conditions: {}\n field: Type\n modifier: (no grouping / buckets)\n filter: \"\"\n metrics:\n - backgroundColor: '#b51392'\n field: count\n fixTooltips: true\n relativeValue: true\n type: doughnut\n module: Update\n CasesByCategory:\n name: Cases by category\n config:\n reports:\n - dimensions:\n - conditions: {}\n field: Category\n modifier: (no grouping / buckets)\n skipMissing: true\n filter: \"\"\n metrics:\n - backgroundColor: '#ff0074'\n field: count\n fixTooltips: true\n label: Category\n relativePrecision: \"2\"\n relativeValue: true\n type: doughnut\n module: Case\n CasesByPriority:\n name: Cases by priority\n config:\n reports:\n - dimensions:\n - conditions: {}\n field: Priority\n modifier: (no grouping / buckets)\n filter: \"\"\n metrics:\n - backgroundColor: '#f50d23'\n field: count\n fixTooltips: true\n label: Priority\n relativeValue: true\n type: doughnut\n module: Case\n CasesByStatus:\n name: Cases by status\n config:\n reports:\n - dimensions:\n - conditions: {}\n field: Status\n modifier: (no grouping / buckets)\n filter: \"\"\n metrics:\n - backgroundColor: '#13b1dc'\n field: count\n fixTooltips: true\n label: Cases by status\n relativeValue: true\n type: doughnut\n module: Case\n ClosedCasesPerMonth:\n name: Closed cases per month\n config:\n reports:\n - dimensions:\n - conditions: {}\n field: CloseDate\n modifier: MONTH\n skipMissing: true\n filter: \"\"\n metrics:\n - backgroundColor: '#4ec811'\n beginAtZero: true\n field: count\n fill: true\n fixTooltips: false\n label: Closed cases\n type: line\n module: Case\n CostPerCategory:\n name: Total costs per category\n config:\n reports:\n - dimensions:\n - conditions: {}\n field: Category\n modifier: (no grouping / buckets)\n skipMissing: false\n filter: \"\"\n metrics:\n - aggregate: SUM\n axisType: null\n backgroundColor: '#ffac45'\n field: TotalCost\n fixTooltips: true\n label: Cost per category (in $)\n relativeValue: false\n type: bar\n module: Case\n CostPerProductFamily:\n name: Total costs per product family\n config:\n reports:\n - dimensions:\n - conditions: {}\n field: Family\n modifier: (no grouping / buckets)\n filter: \"\"\n metrics:\n - aggregate: SUM\n axisType: null\n backgroundColor: '#03ad3b'\n beginAtZero: true\n field: TotalCost\n fixTooltips: true\n label: Total (in $)\n relativeValue: false\n type: bar\n module: Product\n CostsPerAccount:\n name: Total costs per account\n config:\n reports:\n - dimensions:\n - conditions: {}\n field: AccountSelect\n modifier: (no grouping / buckets)\n filter: \"\"\n metrics:\n - aggregate: SUM\n backgroundColor: '#6dc6fb'\n field: TotalCost\n fixTooltips: true\n label: Total cost ($)\n type: bar\n module: Account\n KnowledgeBaseArticlesPerType:\n name: Knowledge Base articles per type\n config:\n reports:\n - dimensions:\n - conditions: {}\n field: Category\n modifier: (no grouping / buckets)\n filter: \"\"\n metrics:\n - backgroundColor: '#ffc623'\n field: count\n fixTooltips: true\n label: Knowledge Base articles per type\n relativeValue: false\n type: pie\n module: KnowledgeBase\n KnowledgeBaseItemsCreatedPerDay:\n name: Knowledge Base items created per day\n config:\n reports:\n - dimensions:\n - conditions: {}\n field: created_at\n modifier: DATE\n filter: \"\"\n metrics:\n - backgroundColor: '#ffc623'\n beginAtZero: true\n field: count\n fill: false\n label: Total (per day)\n type: line\n module: KnowledgeBase\n NewCasesByMonth:\n name: New cases per month\n config:\n reports:\n - dimensions:\n - autoSkip: true\n conditions: {}\n field: created_at\n modifier: MONTH\n skipMissing: true\n filter: \"\"\n metrics:\n - backgroundColor: '#3baef0'\n beginAtZero: true\n field: count\n fill: true\n fixTooltips: false\n label: New cases\n type: line\n module: Case\n TimePerAccount:\n name: Total time spent per account\n config:\n reports:\n - dimensions:\n - conditions: {}\n field: AccountSelect\n modifier: (no grouping / buckets)\n filter: \"\"\n metrics:\n - aggregate: SUM\n backgroundColor: '#41aeee'\n field: TotalTime\n fixTooltips: true\n label: Hours\n type: pie\n module: Account\n TimeSpentPerProductFamily:\n name: Total time Spent per product family\n config:\n reports:\n - dimensions:\n - conditions: {}\n field: Family\n modifier: (no grouping / buckets)\n filter: \"\"\n metrics:\n - aggregate: SUM\n axisType: null\n backgroundColor: '#03ad3b'\n beginAtZero: true\n field: TotalTime\n fixTooltips: true\n label: Time spent (in hours)\n relativeValue: false\n type: pie\n module: Product\n TotalCostPerDepartment:\n name: Total costs per department\n config:\n reports:\n - dimensions:\n - conditions: {}\n field: DepartmentSelect\n modifier: (no grouping / buckets)\n skipMissing: true\n filter: \"\"\n metrics:\n - aggregate: SUM\n backgroundColor: '#bf94ff'\n beginAtZero: true\n field: TotalCost\n fixTooltips: true\n label: Total (in $)\n type: bar\n module: Department\n TotalCostPerMonth:\n name: Total costs per month\n config:\n reports:\n - dimensions:\n - conditions: {}\n field: created_at\n modifier: MONTH\n filter: \"\"\n metrics:\n - aggregate: SUM\n backgroundColor: '#189d00'\n beginAtZero: true\n field: Cost\n label: Total cost per month (in $)\n type: bar\n module: Update\n TotalTimeSpentPerCategory:\n name: Total time spent per category\n config:\n reports:\n - dimensions:\n - conditions: {}\n field: Category\n modifier: (no grouping / buckets)\n skipMissing: true\n filter: \"\"\n metrics:\n - aggregate: SUM\n backgroundColor: '#ffac45'\n field: TotalTime\n fixTooltips: true\n label: Total time spent per category (in hours)\n type: pie\n module: Case\n TotalTimeSpentPerDepartment:\n name: Total time spent per department\n config:\n reports:\n - dimensions:\n - conditions: {}\n field: DepartmentSelect\n modifier: (no grouping / buckets)\n skipMissing: true\n filter: \"\"\n metrics:\n - aggregate: SUM\n backgroundColor: '#bf94ff'\n field: TotalTime\n fixTooltips: true\n label: Total\n type: pie\n module: Department\n TotalTimeSpentPerMonth:\n name: Total time spent per month\n config:\n reports:\n - dimensions:\n - conditions: {}\n field: created_at\n modifier: MONTH\n filter: \"\"\n metrics:\n - aggregate: SUM\n backgroundColor: '#0d83e4'\n beginAtZero: true\n field: TimeSpend\n fixTooltips: false\n label: Total time spent (in hours)\n type: bar\n module: UpdatePK\x07\x080\x96w\xbe\xc9#\x00\x00\xc9#\x00\x00PK\x03\x04\x14\x00\x08\x00\x00\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00 \x001300_scripts_crm.yamlUT\x05\x00\x01\x80Cm8namespace: crm\nscripts:\n AccountCreateNewOpportunity:\n source: |-\n //Get the default settings\n return Compose.findLastRecord('Settings').then(settings => {\n\n let opportunityCloseDays = settings.values.OpportunityCloseDateDays\n let opportunityProbability = settings.values.OpportunityProbability\n let opportunityForecaseCategory = settings.values.OpportunityForecaseCategory\n let opportunityStagename = settings.values.OpportunityStagename\n\n //Calculate the expiration date\n let m = new Date()\n m.setDate(m.getDate() + parseInt(opportunityCloseDays, 10))\n let closeDate = m.getUTCFullYear() + \"/\" + (m.getUTCMonth() + 1) + \"/\" + m.getUTCDate() + \" \" + m.getUTCHours() + \":\" + m.getUTCMinutes() + \":\" + m.getUTCSeconds()\n\n // Find the contact we want to link the new case to (by default, the primary contact)\n return Compose.findRecords(`AccountId = ${$record.recordID}`, 'Contact')\n\n .then(({ set, filter }) => {\n\n let ContactId, SuppliedName, SuppliedEmail, SuppliedPhone\n\n // Loop through the contacts of the account, to save the primary contact\n set.forEach(r => {\n\n //Check if it's the primary contact\n let contactIsPrimary = r.values.IsPrimary\n if (contactIsPrimary === '1') {\n\n //Add the contact\n ContactId = r.recordID\n }\n })\n\n // Create the related opportunity\n return Compose.makeRecord({\n 'OwnerId': $record.values.OwnerId,\n 'LeadSource': $record.values.LeadSource,\n 'Name': '(unnamed)',\n 'AccountId': $record.recordID,\n 'IsClosed': 'No',\n 'IsWon': 'No',\n 'CloseDate': closeDate,\n 'Probability': opportunityProbability,\n 'ForecastCategory': opportunityForecaseCategory,\n 'StageName': opportunityStagename\n }, 'Opportunity')\n\n .then(myOpportunity => {\n\n return Compose.saveRecord(myOpportunity)\n\n }).then(mySavedOpportunity => {\n\n //Create a new contact linked to the opportunity\n return Compose.makeRecord({\n 'ContactId': ContactId,\n 'OpportunityId': mySavedOpportunity.recordID,\n 'IsPrimary': '1'\n }, 'OpportunityContactRole')\n\n .then(myOpportunityContactRole => {\n\n return Compose.saveRecord(myOpportunityContactRole)\n\n .then(() => {\n\n // Notify current user\n ComposeUI.success(`The new opportunity has been created.`)\n\n\n }).then(() => {\n\n // Go to the record\n ComposeUI.gotoRecordEditor(mySavedOpportunity)\n\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n async: false\n runInUA: true\n critical: true\n enabled: true\n timeout: 0\n triggers:\n - event: manual\n module: Account\n resource: compose:record\n CaseInsertCaseNumber:\n source: |-\n //Get the default settings\n return Compose.findLastRecord('Settings').then(settings => {\n\n // Map the case number\n let nextCaseNumber = settings.values.CaseNextNumber\n if (typeof nextCaseNumber == \"undefined\" || nextCaseNumber === '' || isNaN(nextCaseNumber)) {\n nextCaseNumber = 0\n }\n\n $record.values.CaseNumber = nextCaseNumber\n let nextCaseNumberUpdated = parseInt(nextCaseNumber,10) + 1\n\n // Update the config\n settings.values.CaseNextNumber = nextCaseNumberUpdated\n return Compose.saveRecord(settings).then(mySavedSettings => {\n\n console.log('Record saved, new ID', mySavedSettings.recordID)\n\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n async: false\n runInUA: false\n critical: true\n enabled: true\n timeout: 0\n triggers:\n - event: beforeCreate\n module: Case\n resource: compose:record\n CaseInformContactOfSolution:\n source: |-\n // Check if the case is solved\n if (!$record.values.Status === 'Closed') {\n\n // Get the to address\n let to = $record.values.SuppliedEmail\n if (!to) {\n ComposeUI.warning(`There is no supplied email. Please fill in an email address in the supplied email field.`)\n return\n }\n\n // Get email body\n let html = \"

Solution of case: \" + $record.values.CaseNumber + \" - \" + $record.values.Subject + \"

\"\n html = html + \"
\"\n html = html + \"Solution Title: \" + $record.values.SolutionName + \"
\"\n html = html + \"Solution Details: \" + $record.values.SolutionNote\n\n // Send the email\n return Compose.sendMail(to, `Corteza - Quote: ${$record.values.QuoteNumber} - ${$record.values.Name}`, { html: html }).then(() => {\n ComposeUI.success(`The case solutoin has been sent via email.`)\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n } else {\n ComposeUI.warning(`You can only inform the client of a solution when the case status is \"Closed\".`)\n return\n }\n async: false\n runInUA: true\n critical: true\n enabled: true\n timeout: 0\n triggers:\n - event: manual\n module: Case\n resource: compose:record\n ContactSetRecordLabel:\n source: |-\n // Set the record label string\n let recordLabel = ''\n\n // Get the first name\n let firstName = $record.values.FirstName\n if (!firstName) {\n firstName = ''\n }\n\n // Get the last name\n let lastName = $record.values.LastName\n if (!lastName) {\n lastName = ''\n }\n\n // Create the full name\n let fullName = ''\n if ((firstName !== '') && (lastName === '')) {\n recordLabel = firstName\n }\n\n if ((firstName === '') && (lastName !== '')) {\n recordLabel = lastName\n }\n\n if ((firstName !== '') && (lastName !== '')) {\n recordLabel = firstName + ' ' + lastName\n }\n\n // Get the company name from the account\n // Check if there is a related account, to map the fields of the account\n let accountId = $record.values.AccountId\n if (accountId) {\n return Compose.findRecordByID(accountId, 'Account').then(accountRecord => {\n\n // Add to the record label\n recordLabel = recordLabel + ' (' + accountRecord.values.AccountName + ')'\n $record.values.RecordLabel = recordLabel\n\n }).catch(err => {\n // solve the problem\n $record.values.RecordLabel = recordLabel\n\n console.error(err)\n })\n\n }\n async: false\n runInUA: false\n critical: true\n enabled: true\n timeout: 0\n triggers:\n - event: beforeUpdate\n module: Contact\n resource: compose:record\n - event: beforeCreate\n module: Contact\n resource: compose:record\n LeadSetRecordLabel:\n source: |-\n // Set the record label string\n let recordLabel = ''\n\n // Get the first name\n let firstName = $record.values.FirstName\n if (!firstName) {\n fistName = ''\n }\n\n // Get the last name\n let lastName = $record.values.LastName\n if (!lastName) {\n lastName = ''\n }\n\n // Create the full name\n let fullName = ''\n if ((firstName !== '') && (lastName === '')) {\n recordLabel = firstName\n }\n\n if ((firstName === '') && (lastName !== '')) {\n recordLabel = lastName\n }\n\n if ((firstName !== '') && (lastName !== '')) {\n recordLabel = firstName + ' ' + lastName\n }\n\n // Get the company name\n let company = $record.values.Company\n if (!company) {\n company = ''\n }\n\n // Add the company name (if there is one)\n if (company !== '') {\n recordLabel = recordLabel + ' (' + company + ')'\n }\n\n // Set the label\n $record.values.RecordLabel = recordLabel\n async: false\n runInUA: false\n critical: true\n enabled: true\n timeout: 0\n triggers:\n - event: beforeUpdate\n module: Lead\n resource: compose:record\n - event: beforeCreate\n module: Lead\n resource: compose:record\n QuoteApproveQuote:\n source: |-\n //Check if the quote has the correct status\n if ($record.values.Status !== 'In Review') {\n // Inform\n ComposeUI.warning(`A quote needs to have the status In Review in order to be approved.`)\n return true\n }\n\n //Change value\n $record.values.Status = 'Approved'\n\n return Compose.saveRecord($record)\n .then(mySavedRecord => {\n\n // Get the email of the owner\n return System.findUserByID($record.createdBy).then(user => {\n\n // Send the mail\n return Compose.sendMail(\n user.email,\n `Quote \"${$record.values.Name}\" has been approved`,\n { html: `The following quote has been approved:

${$record.values.Name}` }\n )\n }).then(() => {\n\n // Notify current user\n ComposeUI.success(`The quote has been approved and the quote owner has been notified via email.`)\n\n })\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n async: false\n runInUA: true\n critical: true\n enabled: true\n timeout: 0\n triggers:\n - event: manual\n module: Quote\n resource: compose:record\n SolutionInsertSolutionNumber:\n source: |-\n //Get the default settings\n return Compose.findLastRecord('Settings').then(settings => {\n\n // Map the case number\n let nextSolutionNumber = settings.values.SolutionNextNumber\n if (typeof nextSolutionNumber == \"undefined\" || nextSolutionNumber === '' || isNaN(nextSolutionNumber)) {\n nextSolutionNumber = 0\n }\n $record.values.SolutionNumber = nextSolutionNumber\n let nextSolutionNumberUpdated = parseInt(nextSolutionNumber,10) + 1\n\n // Update the config\n settings.values.SolutionNextNumber = nextSolutionNumberUpdated\n\n return Compose.saveRecord(settings).then(mySavedSettings => {\n console.log('Record saved, new ID', mySavedSettings.recordID)\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n async: false\n runInUA: false\n critical: true\n enabled: true\n timeout: 0\n triggers:\n - event: beforeCreate\n module: Solution\n resource: compose:record\n AccountCreateNewContract:\n source: |-\n //Get the default settings\n return Compose.findLastRecord('Settings').then(settings => {\n\n // Map the case number\n let ContractDefaultTime = settings.values.ContractDefaultTime\n\n // Get the contract number\n let nextContractNumber = settings.values.ContractNextNumber\n if (typeof nextContractNumber == \"undefined\" || nextContractNumber === '' || isNaN(nextContractNumber)) {\n nextContractNumber = 0\n }\n\n return Compose.makeRecord({\n 'OwnerId' : $record.values.OwnerId,\n 'AccountId' : $record.recordID,\n 'Status' : 'Draft',\n 'BillingStreet' : $record.values.BillingStreet,\n 'BillingCity' : $record.values.BillingCity,\n 'BillingState' : $record.values.BillingState,\n 'BillingPostalCode' : $record.values.BillingPostalCode,\n 'BillingCountry' : $record.values.BillingCountry,\n 'ShippingStreet' : $record.values.BillingStreet,\n 'ShippingCity' : $record.values.BillingCity,\n 'ShippingState' : $record.values.BillingState,\n 'ShippingPostalCode' : $record.values.BillingPostalCode,\n 'ShippingCountry' : $record.values.BillingCountry,\n 'ContractTerm' : ContractDefaultTime,\n 'ContractNumber' : nextContractNumber\n }, 'Contract').then(myContract => {\n\n // return was missing here. Set tjhe mySavedCase below\n return Compose.saveRecord(myContract)\n\n }).then(mySavedContract => {\n let nextContractNumberUpdated = parseInt(nextContractNumber,10) + 1\n\n // Update the config\n settings.values.ContractNextNumber = nextContractNumberUpdated\n return Compose.saveRecord(settings).then(mySavedSettings => {\n\n console.log('Record saved, new ID', mySavedSettings.recordID)\n\n }).then(() => {\n\n // Notify current user\n ComposeUI.success(`The new contract record has been created.`)\n\n }).then(() => {\n\n // Go to the record\n ComposeUI.gotoRecordEditor(mySavedContract)\n\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n async: false\n runInUA: true\n critical: true\n enabled: true\n timeout: 0\n triggers:\n - event: manual\n module: Account\n resource: compose:record\n CaseSetStatusToWorking:\n source: |-\n // Update the status\n $record.values.Status = 'Working'\n let caseRecord = $record\n\n // Save the case\n return Compose.makeRecord({\n 'CaseId' : caseRecord.recordID,\n 'Description' : 'State set to \"Working\"',\n 'Type' : 'State change'\n }, 'CaseUpdate').then(myCaseUpdate => {\n\n return Compose.saveRecord(myCaseUpdate)\n\n }).then(myCaseUpdate => {\n\n return Compose.saveRecord(caseRecord)\n\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n async: false\n runInUA: true\n critical: true\n enabled: true\n timeout: 0\n triggers:\n - event: manual\n module: Case\n resource: compose:record\n CaseSetStatusToClosed:\n source: |-\n // Check if the case is already closed\n if ($record.values.Status === 'Closed') {\n // Case is closed already. Exit\n ComposeUI.success(`This case is already closed.`)\n return true\n }\n\n // Check if there is a solution\n let SolutionName = $record.values.SolutionName\n let solutionRecord = $record.values.SolutionId\n\n // If there is no solution, show that it's not possible to close the case\n if ((!SolutionName) && (!solutionRecord)) {\n ComposeUI.warning(`Unable to close the case. Please add a solution name or select an existing solution before closing the case.`)\n return true\n }\n\n // Update the status\n $record.values.IsClosed = true\n var m = new Date()\n var dateString = m.getUTCFullYear() + \"/\" + (m.getUTCMonth() + 1) + \"/\" + m.getUTCDate() + \" \" + m.getUTCHours() + \":\" + m.getUTCMinutes() + \":\" + m.getUTCSeconds()\n $record.values.ClosedDate = dateString\n $record.values.Status = 'Closed'\n\n return Compose.saveRecord($record)\n .then(mySavedRecord => {\n\n // Create the CaseUpdate record\n return Compose.makeRecord({\n 'Description': 'State set to \"Closed',\n 'Type': 'State change',\n 'CaseId': $record.recordID\n }, 'CaseUpdate')\n\n .then(myCaseUpdate => {\n\n return Compose.saveRecord(myCaseUpdate)\n\n }).then(mySavedCaseUpdate => {\n\n // Check if a solution record has been selected\n if (solutionRecord) {\n\n // If there is a solution record, map the values in the case\n return Compose.findRecordByID(solutionRecord, 'Solution').then(solution => {\n $record.values.SolutionName = solution.values.SolutionName\n $record.values.SolutionNote = solution.values.SolutionNote\n $record.values.SolutionFile = solution.values.File\n\n return Compose.saveRecord($record)\n }).catch(err => {\n\n // solve the problem\n console.error(err)\n })\n } else {\n\n // If there is no solution record, check if the value \"SubmitAsSolution\" is checked. If so, save the solution as a Solution record\n if ($record.values.SubmitAsSolution) {\n\n //Get the default settings\n return Compose.findLastRecord('Settings').then(settings => {\n\n // Map the solution number\n let nextSolutionNumber = settings.values.SolutionNextNumber\n if (typeof nextSolutionNumber == \"undefined\" || nextSolutionNumber === '' || isNaN(nextSolutionNumber)) {\n nextSolutionNumber = 0\n }\n\n // Create the Solution record\n return Compose.makeRecord({\n 'SolutionName': $record.values.SolutionName,\n 'SolutionNote': $record.values.SolutionNote,\n 'File': $record.values.SolutionFile,\n 'Status': 'New',\n 'IsPublished': '1',\n 'CaseId': $record.recordID,\n 'SolutionNumber': nextSolutionNumber,\n 'ProductId': $record.values.ProductId\n }, 'Solution')\n\n .then(mySolution => {\n\n return Compose.saveRecord(mySolution)\n\n }).then(mySavedSolution => {\n\n // Save the solution record in the case record\n $record.values.SolutionId = mySavedSolution.recordID\n return Compose.saveRecord($record)\n\n }).then(mySavedSolution => {\n\n let nextSolutionNumberUpdated = parseInt(nextSolutionNumber, 10) + 1\n\n // Update the config\n settings.values.SolutionNextNumber = nextSolutionNumberUpdated\n return Compose.saveRecord(settings).then(mySavedSettings => {\n\n console.log('Record saved, ID', mySavedSettings.recordID)\n\n\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n }\n }\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n async: false\n runInUA: true\n critical: true\n enabled: true\n timeout: 0\n triggers:\n - event: manual\n module: Case\n resource: compose:record\n AccountCreateNewCase:\n source: |-\n //Get the default settings\n return Compose.findLastRecord('Settings').then(settings => {\n\n // Map the case number\n let nextCaseNumber = settings.values.CaseNextNumber\n if (typeof nextCaseNumber == \"undefined\" || nextCaseNumber === '' || isNaN(nextCaseNumber)) {\n nextCaseNumber = 0\n }\n\n // Find the contact we want to link the new case to (by default, the primary contact)\n return Compose.findRecords(`AccountId = ${$record.recordID}`, 'Contact').then(({ set, filter }) => {\n\n let ContactId, SuppliedName, SuppliedEmail, SuppliedPhone\n\n // Loop through the contacts of the account, to save the primary contact\n set.forEach(r => {\n\n //Check if it's the primary contact\n let contactIsPrimary = r.values.IsPrimary\n console.log(contactIsPrimary)\n if (contactIsPrimary === '1') {\n\n //Add the contact\n ContactId = r.recordID\n SuppliedName = r.values.FirstName + ' ' + r.values.LastName\n SuppliedEmail = r.values.Email\n SuppliedPhone = r.values.Phone\n }\n })\n\n return Compose.makeRecord({\n 'OwnerId' : $record.values.OwnerId,\n 'Subject' : '(no subject)',\n 'ContactId' : ContactId,\n 'AccountId' : $record.recordID,\n 'Status' : 'New',\n 'Priority' : 'Low',\n 'SuppliedName' : SuppliedName,\n 'SuppliedEmail' : SuppliedEmail,\n 'SuppliedPhone' : SuppliedPhone,\n 'CaseNumber' : nextCaseNumber\n }, 'Case')\n .then(myCase => Compose.saveRecord(myCase))\n .then(mySavedCase => {\n\n let nextCaseNumberUpdated = parseInt(nextCaseNumber,10) + 1\n\n // Update the config\n settings.values.CaseNextNumber = nextCaseNumberUpdated\n return Compose.saveRecord(settings).then(mySavedSettings => {\n\n console.log('Record saved, new ID', mySavedSettings.recordID)\n\n }).then(() => {\n\n // Notify current user\n ComposeUI.success(`The new case has been created.`)\n\n\n }).then(() => {\n\n // Go to the record\n ComposeUI.gotoRecordEditor(mySavedCase)\n\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n async: false\n runInUA: true\n critical: true\n enabled: true\n timeout: 0\n triggers:\n - event: manual\n module: Account\n resource: compose:record\n ContactCreateNewCase:\n source: |-\n //Get the default settings\n return Compose.findLastRecord('Settings').then(settings => {\n\n // Map the case number\n let nextCaseNumber = settings.values.CaseNextNumber\n if (typeof nextCaseNumber == \"undefined\" || nextCaseNumber === '' || isNaN(nextCaseNumber)) {\n nextCaseNumber = 0\n }\n\n return Compose.makeRecord({\n 'OwnerId' : $record.values.OwnerId,\n 'Subject' : '(no subject)',\n 'ContactId' : $record.recordID,\n 'AccountId' : $record.values.AccountId,\n 'Status' : 'New',\n 'Priority' : 'Low',\n 'SuppliedName' : $record.values.FirstName + ' ' + $record.values.LastName,\n 'SuppliedEmail' : $record.values.Email,\n 'SuppliedPhone' : $record.values.Phone,\n 'CaseNumber' : nextCaseNumber\n }, 'Case').then(myCase => {\n\n // return was missing here. Set tjhe mySavedCase below\n return Compose.saveRecord(myCase)\n\n }).then(mySavedCase => {\n let nextCaseNumberUpdated = parseInt(nextCaseNumber, 10) + 1\n\n // Update the config\n settings.values.CaseNextNumber = nextCaseNumberUpdated\n return Compose.saveRecord(settings).then(mySavedSettings => {\n\n console.log('Record saved, new ID', mySavedSettings.recordID)\n // then(({ mySavedCase }) wasn't needed, since it is already defined\n // for the entire block, starting at line 27\n }).then(() => {\n\n // Notify current user\n ComposeUI.success(`The new case has been created.`)\n\n }).then(() => {\n\n // Go to the record\n ComposeUI.gotoRecordEditor(mySavedCase)\n\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n async: false\n runInUA: true\n critical: true\n enabled: true\n timeout: 0\n triggers:\n - event: manual\n module: Contact\n resource: compose:record\n LeadConvertLeadIntoAccount:\n source: |-\n if ($record.values.Status === 'Converted') {\n // Lead already converted. Inform user and exit\n ComposeUI.warning('This lead is already converted.')\n return true\n }\n\n // create new record of type/module Account and copy all values\n return Compose.makeRecord({\n 'BillingStreet' : $record.values.Street,\n 'BillingCity' : $record.values.City,\n 'BillingState' : $record.values.State,\n 'BillingPostalCode' : $record.values.PostalCode,\n 'BillingCountry' : $record.values.Country,\n 'AnnualRevenue' : $record.values.AnnualRevenue,\n 'AccountName' : $record.values.Company,\n 'Description' : $record.values.Description,\n 'Fax' : $record.values.Fax,\n 'Industry' : $record.values.Industry,\n 'OwnerId' : $record.values.OwnerId,\n 'AccountSource' : $record.values.LeadSource,\n 'Phone' : $record.values.Phone,\n 'NumberOfEmployees' : $record.values.NumberOfEmployees,\n 'Rating' : $record.values.Rating,\n 'Website' : $record.values.Website,\n 'Twitter' : $record.values.Twitter,\n 'Facebook' : $record.values.Facebook,\n 'LinkedIn' : $record.values.LinkedIn\n }, 'Account').then(myAccount => {\n\n return Compose.saveRecord(myAccount)\n\n }).then(mySavedAccount => {\n\n // Create the related contact\n return Compose.makeRecord({\n 'MailingStreet' : $record.values.Street,\n 'MailingCity' : $record.values.City,\n 'MailingState' : $record.values.State,\n 'MailingPostalCode' : $record.values.PostalCode,\n 'MailingCountry' : $record.values.Country,\n 'Description' : $record.values.Description,\n 'DoNotCall' : $record.values.DoNotCall,\n 'Email' : $record.values.Email,\n 'HasOptedOutOfEmail' : $record.values.HasOptedOutOfEmail,\n 'Fax' : $record.values.Fax,\n 'HasOptedOutOfFax' : $record.values.HasOptedOutOfFax,\n 'OwnerId' : $record.values.OwnerId,\n 'LeadSource' : $record.values.LeadSource,\n 'Website' : $record.values.Website,\n 'Twitter' : $record.values.Twitter,\n 'Facebook' : $record.values.Facebook,\n 'LinkedIn' : $record.values.LinkedIn,\n 'Salutation' : $record.values.Salutation,\n 'FirstName' : $record.values.FirstName,\n 'LastName' : $record.values.LastName,\n 'MobilePhone' : $record.values.MobilePhone,\n 'Phone' : $record.values.Phone,\n 'Title' : $record.values.Title,\n 'IsPrimary' : '1',\n 'AccountId' : mySavedAccount.recordID\n }, 'Contact').then(myContact => {\n\n return Compose.saveRecord(myContact)\n\n }).then(updatedAccount => {\n\n //Update the lead record\n $record.values.Status = 'Converted'\n $record.values.IsConverted = 'Yes'\n $record.values.ConvertedAccountId = mySavedAccount.recordID\n $record.values.ConvertedContactId = mySavedAccount.recordID\n $record.values.ConvertedDate = mySavedAccount.createdAt\n\n return Compose.saveRecord($record)\n\n }).then(leadUser => {\n\n return System.findUserByID($record.values.OwnerId).then(user => {\n\n // Notifies the owner that a new account was created and assigned to him\n Compose.sendRecordToMail(\n user.email,\n 'Lead ' + $record.values.FirstName + ' ' + $record.values.LastName + ' from ' + $record.values.Company + ' has been converted',\n {\n header: '

The following lead has been converted:

'\n },\n mySavedAccount\n )\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n\n }).then(({ mySavedAccount }) => {\n\n // Notify current user\n ComposeUI.success(`The lead has been converted.`)\n\n\n }).then(({ mySavedAccount }) => {\n\n // Go to the record\n ComposeUI.gotoRecordEditor(mySavedAccount)\n\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n async: false\n runInUA: true\n critical: true\n enabled: true\n timeout: 0\n triggers:\n - event: manual\n module: Lead\n resource: compose:record\n LeadConvertLeadToAccountAndOpportunity:\n source: |-\n if ($record.values.Status === 'Converted') {\n // Lead already converted. Inform user and exit\n ComposeUI.warning('This lead is already converted.')\n return true\n }\n\n // create new record of type/module Account and copy all values\n return Compose.makeRecord({\n 'BillingStreet' : $record.values.Street,\n 'BillingCity' : $record.values.City,\n 'BillingState' : $record.values.State,\n 'BillingPostalCode' : $record.values.PostalCode,\n 'BillingCountry' : $record.values.Country,\n 'AnnualRevenue' : $record.values.AnnualRevenue,\n 'AccountName' : $record.values.Company,\n 'Description' : $record.values.Description,\n 'Fax' : $record.values.Fax,\n 'Industry' : $record.values.Industry,\n 'OwnerId' : $record.values.OwnerId,\n 'AccountSource' : $record.values.LeadSource,\n 'Phone' : $record.values.Phone,\n 'NumberOfEmployees' : $record.values.NumberOfEmployees,\n 'Rating' : $record.values.Rating,\n 'Website' : $record.values.Website,\n 'Twitter' : $record.values.Twitter,\n 'Facebook' : $record.values.Facebook,\n 'LinkedIn' : $record.values.LinkedIn\n }, 'Account').then(myAccount => {\n\n return Compose.saveRecord(myAccount)\n\n }).then(mySavedAccount => {\n\n // Create the related contact\n return Compose.makeRecord({\n 'MailingStreet' : $record.values.Street,\n 'MailingCity' : $record.values.City,\n 'MailingState' : $record.values.State,\n 'MailingPostalCode' : $record.values.PostalCode,\n 'MailingCountry' : $record.values.Country,\n 'Description' : $record.values.Description,\n 'DoNotCall' : $record.values.DoNotCall,\n 'Email' : $record.values.Email,\n 'HasOptedOutOfEmail' : $record.values.HasOptedOutOfEmail,\n 'Fax' : $record.values.Fax,\n 'HasOptedOutOfFax' : $record.values.HasOptedOutOfFax,\n 'OwnerId' : $record.values.OwnerId,\n 'LeadSource' : $record.values.LeadSource,\n 'Website' : $record.values.Website,\n 'Twitter' : $record.values.Twitter,\n 'Facebook' : $record.values.Facebook,\n 'LinkedIn' : $record.values.LinkedIn,\n 'Salutation' : $record.values.Salutation,\n 'FirstName' : $record.values.FirstName,\n 'LastName' : $record.values.LastName,\n 'MobilePhone' : $record.values.MobilePhone,\n 'Phone' : $record.values.Phone,\n 'Title' : $record.values.Title,\n 'IsPrimary' : '1',\n 'AccountId' : mySavedAccount.recordID\n }, 'Contact').then(mySavedContact => {\n\n return Compose.saveRecord(mySavedContact).then(mySavedContact => {\n\n // First get the default values\n //Get the default settings\n return Compose.findLastRecord('Settings').then(settings => {\n\n let opportunityCloseDays = settings.values.OpportunityCloseDateDays\n let opportunityProbability = settings.values.OpportunityProbability\n let opportunityForecaseCategory = settings.values.OpportunityForecaseCategory\n let opportunityStagename = settings.values.OpportunityStagename\n\n //Calculate the expiration date\n let m = new Date()\n m.setDate(m.getDate() + parseInt(opportunityCloseDays,10))\n let closeDate = m.getUTCFullYear() +\"/\"+ (m.getUTCMonth()+1) +\"/\"+ m.getUTCDate() + \" \" + m.getUTCHours() + \":\" + m.getUTCMinutes() + \":\" + m.getUTCSeconds()\n\n // Create the related opportunity\n return Compose.makeRecord({\n 'Description' : $record.values.Description,\n 'OwnerId' : $record.values.OwnerId,\n 'LeadSource' : $record.values.LeadSource,\n 'Name' : '(unnamed)',\n 'AccountId' : mySavedAccount.recordID,\n 'IsClosed' : 'No',\n 'IsWon' : 'No',\n 'CloseDate' : closeDate,\n 'Probability' : opportunityProbability,\n 'ForecastCategory' : opportunityForecaseCategory,\n 'StageName' : opportunityStagename\n }, 'Opportunity').then(myOpportunity => {\n return Compose.saveRecord(myOpportunity)\n\n }).then(mySavedOpportunity => {\n\n //Create a new contact linked to the opportunity\n return Compose.makeRecord({\n 'ContactId' : mySavedContact.recordID,\n 'OpportunityId' : mySavedOpportunity.recordID,\n 'IsPrimary' : '1'\n }, 'OpportunityContactRole').then(myOpportunityContactRole => {\n return Compose.saveRecord(myOpportunityContactRole)\n\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n\n\n }).then(updatedAccount => {\n\n //Update the lead record\n $record.values.Status = 'Converted'\n $record.values.IsConverted = 'Yes'\n $record.values.ConvertedAccountId = mySavedAccount.recordID\n $record.values.ConvertedContactId = mySavedAccount.recordID\n $record.values.ConvertedDate = mySavedAccount.createdAt\n\n return Compose.saveRecord($record)\n\n }).then(leadUser => {\n\n return System.findUserByID($record.values.OwnerId).then(user => {\n\n // Notifies the owner that a new account was created and assigned to him\n Compose.sendRecordToMail(\n user.email,\n 'Lead ' + $record.values.FirstName + ' ' + $record.values.LastName + ' from ' + $record.values.Company + ' has been converted',\n {\n header: '

The following lead has been converted:

'\n },\n mySavedAccount\n )\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n\n }).then(({ mySavedAccount }) => {\n\n // Notify current user\n ComposeUI.success(`The lead has been converted.`)\n\n\n }).then(({ mySavedAccount }) => {\n\n // Go to the record\n ComposeUI.gotoRecordEditor(mySavedAccount)\n\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n\n async: false\n runInUA: true\n critical: true\n enabled: true\n timeout: 0\n triggers:\n - event: manual\n module: Lead\n resource: compose:record\n QuoteSendQuoteToCustomEmail:\n source: |-\n // Get the to address\n let to = prompt(\"Please enter an email to send this quote to:\")\n if (to === null || to === \"\") {\n ComposeUI.warning(`Please enter an email to send this quote to .`)\n return\n }\n\n let lineitems = ''\n Compose.findRecords(`QuoteId = ${$record.recordID}`, 'QuoteLineItem')\n\n .then(({ set, filter }) => {\n\n set.forEach(lineitem => {\n\n lineitems = lineitems + \"Price: \" + lineitem.values.UnitPrice + \"
\"\n lineitems = lineitems + \"Quantity: \" + lineitem.values.Quantity + \"
\"\n lineitems = lineitems + \"Subtotal: \" + lineitem.values.Subtotal + \"
\"\n lineitems = lineitems + \"Discount: \" + lineitem.values.Discount + \"
\"\n lineitems = lineitems + \"Total Price: \" + lineitem.values.TotalPrice + \"
\"\n lineitems = lineitems + \"-------------------------
\"\n })\n return lineitems\n }).then(lineitems => {\n\n\n // Get email body\n let html = \"

Details of Quote: \" + $record.values.QuoteNumber + \" - \" + $record.values.Name + \"

\"\n html = html + \"
\"\n html = html + \"\"\n html = html + \"\"\n html = html + \"\"\n html = html + \"\"\n html = html + \"\"\n html = html + \"\"\n html = html + \"\"\n html = html + \"\"\n html = html + \"\"\n html = html + \"\"\n html = html + \"\"\n html = html + \"\"\n html = html + \"\"\n html = html + \"\"\n html = html + \"
\"\n html = html + \"Quote Information
\"\n html = html + \"
\"\n html = html + \"Quote Number: \" + $record.values.QuoteNumber + \"
\"\n html = html + \"Quote Name: \" + $record.values.Name + \"
\"\n html = html + \"Expiration Date: \" + $record.values.ExpirationDate + \"
\"\n html = html + \"Description: \" + $record.values.Description\n html = html + \"
\"\n html = html + \"Primary contact data
\"\n html = html + \"
\"\n html = html + \"Contact Name: \" + $record.values.ContactId + \"
\"\n html = html + \"Email: \" + $record.values.Email + \"
\"\n html = html + \"Phone: \" + $record.values.Phone\n html = html + \"
\"\n html = html + \"Totals
\"\n html = html + \"
\"\n html = html + \"Subtotal: \" + $record.values.Subtotal + \"
\"\n html = html + \"Additional Discount: \" + $record.values.Discount + \"
\"\n html = html + \"Shipping and Handling: \" + $record.values.ShippingHandling + \"
\"\n html = html + \"Total Price: \" + $record.values.TotalPrice + \"
\"\n html = html + \"Tax: \" + $record.values.Tax + \"
\"\n html = html + \"Grand Total: \" + $record.values.GrandTotal\n html = html + \"
\"\n html = html + \"Products
\"\n html = html + \"
\"\n html = html + lineitems\n html = html + \"
\"\n html = html + \"Bill To
\"\n html = html + \"
\"\n html = html + \"Bill to Name: \" + $record.values.BillingName + \"
\"\n html = html + \"Bill to Street: \" + $record.values.BillingStreet + \"
\"\n html = html + \"Bill to City: \" + $record.values.BillingCity + \"
\"\n html = html + \"Bill to State: \" + $record.values.BillingState + \"
\"\n html = html + \"Bill to Postal Code: \" + $record.values.BillingPostalCode + \"
\"\n html = html + \"Bill to Country: \" + $record.values.BillingCountry\n html = html + \"
\"\n html = html + \"Quote To
\"\n html = html + \"
\"\n html = html + \"Quote to Name: \" + $record.values.QuoteToName + \"
\"\n html = html + \"Quote to Street: \" + $record.values.QuoteToStreet + \"
\"\n html = html + \"Quote to City: \" + $record.values.QuoteToCity + \"
\"\n html = html + \"Quote to State: \" + $record.values.QuoteToState + \"
\"\n html = html + \"Quote to Postal Code: \" + $record.values.QuoteToPostalCode + \"
\"\n html = html + \"Quote to Country: \" + $record.values.QuoteToCountry\n html = html + \"
\"\n html = html + \"Ship To
\"\n html = html + \"
\"\n html = html + \"Ship to Name: \" + $record.values.ShippingName + \"
\"\n html = html + \"Ship to Street: \" + $record.values.ShippingStreet + \"
\"\n html = html + \"Ship to City: \" + $record.values.ShippingCity + \"
\"\n html = html + \"Ship to State: \" + $record.values.ShippingState + \"
\"\n html = html + \"Ship to Postal Code: \" + $record.values.ShippingPostalCode + \"
\"\n html = html + \"Ship to Country: \" + $record.values.ShippingCountry\n html = html + \"
\"\n\n // Send the email\n return Compose.sendMail(to, `Corteza - Quote: ${$record.values.QuoteNumber} - ${$record.values.Name}`, { html: html }).then(() => {\n ComposeUI.success(`The quote has been sent via email.`)\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n async: false\n runInUA: true\n critical: true\n enabled: true\n timeout: 0\n triggers:\n - event: manual\n module: Quote\n resource: compose:record\n QuoteSendQuoteToPrimaryContact:\n source: |-\n // Get the to address\n let to = $record.values.Email\n if (!to) {\n ComposeUI.warning(`There is no email linked to the quote. Please fill in an email address in the \"Primary contact data\" block.`)\n return\n }\n\n let lineitems = ''\n Compose.findRecords(`QuoteId = ${$record.recordID}`, 'QuoteLineItem')\n\n .then(({ set, filter }) => {\n\n set.forEach(lineitem => {\n\n lineitems = lineitems + \"Price: \" + lineitem.values.UnitPrice + \"
\"\n lineitems = lineitems + \"Quantity: \" + lineitem.values.Quantity + \"
\"\n lineitems = lineitems + \"Subtotal: \" + lineitem.values.Subtotal + \"
\"\n lineitems = lineitems + \"Discount: \" + lineitem.values.Discount + \"
\"\n lineitems = lineitems + \"Total Price: \" + lineitem.values.TotalPrice + \"
\"\n lineitems = lineitems + \"-------------------------
\"\n })\n return lineitems\n }).then(lineitems => {\n\n\n // Get email body\n let html = \"

Details of Quote: \" + $record.values.QuoteNumber + \" - \" + $record.values.Name + \"

\"\n html = html + \"
\"\n html = html + \"\"\n html = html + \"\"\n html = html + \"\"\n html = html + \"\"\n html = html + \"\"\n html = html + \"\"\n html = html + \"\"\n html = html + \"\"\n html = html + \"\"\n html = html + \"\"\n html = html + \"\"\n html = html + \"\"\n html = html + \"\"\n html = html + \"\"\n html = html + \"
\"\n html = html + \"Quote Information
\"\n html = html + \"
\"\n html = html + \"Quote Number: \" + $record.values.QuoteNumber + \"
\"\n html = html + \"Quote Name: \" + $record.values.Name + \"
\"\n html = html + \"Expiration Date: \" + $record.values.ExpirationDate + \"
\"\n html = html + \"Description: \" + $record.values.Description\n html = html + \"
\"\n html = html + \"Primary contact data
\"\n html = html + \"
\"\n html = html + \"Contact Name: \" + $record.values.ContactId + \"
\"\n html = html + \"Email: \" + $record.values.Email + \"
\"\n html = html + \"Phone: \" + $record.values.Phone\n html = html + \"
\"\n html = html + \"Totals
\"\n html = html + \"
\"\n html = html + \"Subtotal: \" + $record.values.Subtotal + \"
\"\n html = html + \"Additional Discount: \" + $record.values.Discount + \"
\"\n html = html + \"Shipping and Handling: \" + $record.values.ShippingHandling + \"
\"\n html = html + \"Total Price: \" + $record.values.TotalPrice + \"
\"\n html = html + \"Tax: \" + $record.values.Tax + \"
\"\n html = html + \"Grand Total: \" + $record.values.GrandTotal\n html = html + \"
\"\n html = html + \"Products
\"\n html = html + \"
\"\n html = html + lineitems\n html = html + \"
\"\n html = html + \"Bill To
\"\n html = html + \"
\"\n html = html + \"Bill to Name: \" + $record.values.BillingName + \"
\"\n html = html + \"Bill to Street: \" + $record.values.BillingStreet + \"
\"\n html = html + \"Bill to City: \" + $record.values.BillingCity + \"
\"\n html = html + \"Bill to State: \" + $record.values.BillingState + \"
\"\n html = html + \"Bill to Postal Code: \" + $record.values.BillingPostalCode + \"
\"\n html = html + \"Bill to Country: \" + $record.values.BillingCountry\n html = html + \"
\"\n html = html + \"Quote To
\"\n html = html + \"
\"\n html = html + \"Quote to Name: \" + $record.values.QuoteToName + \"
\"\n html = html + \"Quote to Street: \" + $record.values.QuoteToStreet + \"
\"\n html = html + \"Quote to City: \" + $record.values.QuoteToCity + \"
\"\n html = html + \"Quote to State: \" + $record.values.QuoteToState + \"
\"\n html = html + \"Quote to Postal Code: \" + $record.values.QuoteToPostalCode + \"
\"\n html = html + \"Quote to Country: \" + $record.values.QuoteToCountry\n html = html + \"
\"\n html = html + \"Ship To
\"\n html = html + \"
\"\n html = html + \"Ship to Name: \" + $record.values.ShippingName + \"
\"\n html = html + \"Ship to Street: \" + $record.values.ShippingStreet + \"
\"\n html = html + \"Ship to City: \" + $record.values.ShippingCity + \"
\"\n html = html + \"Ship to State: \" + $record.values.ShippingState + \"
\"\n html = html + \"Ship to Postal Code: \" + $record.values.ShippingPostalCode + \"
\"\n html = html + \"Ship to Country: \" + $record.values.ShippingCountry\n html = html + \"
\"\n\n // Send the email\n return Compose.sendMail(to, `Corteza - Quote: ${$record.values.QuoteNumber} - ${$record.values.Name}`, { html: html }).then(() => {\n ComposeUI.success(`The quote has been sent via email.`)\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n async: false\n runInUA: true\n critical: true\n enabled: true\n timeout: 0\n triggers:\n - event: manual\n module: Quote\n resource: compose:record\n QuoteSubmitQuoteForApproval:\n source: |-\n // Check if it can be reviewed\n if ($record.values.Status !== 'Draft' && $record.values.Status !== 'Needs Review') {\n crust.notify.ui.alert.warning('A quote needs to have the status Draft or Needs Review in order to be sent for approval')\n return true\n }\n\n // Set the status\n $record.values.Status = 'In Review'\n\n // Saves the quote and inform\n return Compose.saveRecord($record)\n .then(mySavedRecord => {\n\n // Get the email of the owner\n return System.findUserByID($record.createdBy).then(user => {\n\n // Send the mail\n return Compose.sendMail(\n user.email, //Change this to the email address of the person that needs to approve the quotes\n `Quote \"${$record.values.Name}\" needs approval`,\n { html: `The following quote needs approval:

${$record.values.Name}` }\n )\n }).then(() => {\n\n // Notify current user\n ComposeUI.success(`The quote has been sent for approval.`)\n\n })\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n async: false\n runInUA: true\n critical: true\n enabled: true\n timeout: 0\n triggers:\n - event: manual\n module: Quote\n resource: compose:record\n OpportunityGenerateNewQuote:\n source: |-\n // Check if there is a related account, to map the fields of the account\n if (!$record.values.AccountId) {\n\n // Exit when there is no account related to the opportunity.\n ComposeUI.warning('Please link the opportunity to an account before generating a quote')\n return\n }\n\n let quoteContactId\n let quoteEmail\n let quotePhone\n let quoteFax\n let quoteAccountId\n let quoteBillingStreet\n let quoteBillingCity\n let quoteBillingState\n let quoteBillingPostalCode\n let quoteBillingCountry\n let quoteBillingName\n let quoteToStreet\n let quoteToCity\n let quoteToState\n let quoteToPostalCode\n let quoteToCountry\n let quoteToName\n let quoteShippingStreet\n let quoteShippingCity\n let quoteShippingState\n let quoteShippingPostalCode\n let quoteShippingCountry\n let quoteShippingName\n let quoteExpirationDate\n let quoteNumber\n\n // Get the primary contact for the quote\n return Compose.findRecords(`OpportunityId = ${$record.recordID}`, 'OpportunityContactRole')\n\n .then(({ set, filter }) => {\n\n let primary_contact\n\n if (set.length === 1) {\n\n // Get the contact\n primary_contact = set[0]\n\n } else {\n\n // Loop through the contacts of the account, to save the primary contact\n set.forEach(r => {\n\n // Check if it's the primary contact\n let contactIsPrimary = r.values.IsPrimary\n if (contactIsPrimary === '1') {\n\n // Add the contact\n primary_contact = r\n }\n })\n }\n return primary_contact\n\n }).then(primary_contact => {\n\n // If we have the primary contact, continue to add it to the quote. Else, skip this block\n if (primary_contact) {\n\n // Get the contact data\n return Compose.findRecordByID(primary_contact.values.ContactId, 'Contact').then(contact => {\n\n quoteContactId = contact.recordID\n quoteEmail = contact.values.Email\n quotePhone = contact.values.Phone\n quoteFax = contact.values.Fax\n\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n }\n\n }).then(mySavedQuote => {\n\n // Get the related account\n return Compose.findRecordByID($record.values.AccountId, 'Account').then(account => {\n\n quoteAccountId = account.recordID,\n quoteBillingStreet = account.values.BillingStreet,\n quoteBillingCity = account.values.BillingCity,\n quoteBillingState = account.values.BillingState,\n quoteBillingPostalCode = account.values.BillingPostalCode,\n quoteBillingCountry = account.values.BillingCountry,\n quoteBillingName = account.values.AccountName,\n quoteToStreet = account.values.BillingStreet,\n quoteToCity = account.values.BillingCity,\n quoteToState = account.values.BillingState,\n quoteToPostalCode = account.values.BillingPostalCode,\n quoteToCountry = account.values.BillingCountry,\n quoteToName = account.values.AccountName,\n quoteShippingStreet = account.values.BillingStreet,\n quoteShippingCity = account.values.BillingCity,\n quoteShippingState = account.values.BillingState,\n quoteShippingPostalCode = account.values.BillingPostalCode,\n quoteShippingCountry = account.values.BillingCountry,\n quoteShippingName = account.values.AccountName\n\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n\n }).then(mySavedQuote => {\n\n // Get the default settings\n return Compose.findLastRecord('Settings').then(settings => {\n\n // Get the expiration date\n let quoteExpirationDays = settings.values.QuoteExpirationDays\n\n // Calculate the expiration date\n let m = new Date()\n m.setDate(m.getDate() + parseInt(quoteExpirationDays, 10))\n let expirationDate = m.getUTCFullYear() + \"/\" + (m.getUTCMonth() + 1) + \"/\" + m.getUTCDate() + \" \" + m.getUTCHours() + \":\" + m.getUTCMinutes() + \":\" + m.getUTCSeconds()\n\n // Save the date\n quoteExpirationDate = expirationDate\n\n // Map the quote number\n let nextQuoteNumber = settings.values.QuoteNextNumber\n if (typeof nextQuoteNumber == \"undefined\" || nextQuoteNumber === '' || isNaN(nextQuoteNumber)) {\n nextQuoteNumber = 0\n }\n quoteNumber = nextQuoteNumber\n let nextQuoteNumberUpdated = parseInt(nextQuoteNumber, 10) + 1\n\n // Update the config\n settings.values.QuoteNextNumber = nextQuoteNumberUpdated\n return Compose.saveRecord(settings).then(mySavedSettings => {\n\n console.log('Record saved, ID', mySavedSettings.recordID)\n\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n\n }).then(mySavedQuote => {\n\n // Create a new quote record for the opportunity\n return Compose.makeRecord({\n 'ShippingHandling': 0,\n 'Status': 'Draft',\n 'Discount': 0,\n 'Tax': 0,\n 'OpportunityId': $record.recordID,\n 'GrandTotal': $record.values.Amount,\n 'PricebookId': $record.values.PricebookId,\n 'Name': $record.values.Name,\n 'Subtotal': $record.values.Amount,\n 'TotalPrice': $record.values.Amount,\n 'ContactId': quoteContactId,\n 'Email': quoteEmail,\n 'Phone': quotePhone,\n 'Fax': quoteFax,\n 'AccountId': quoteAccountId,\n 'BillingStreet': quoteBillingStreet,\n 'BillingCity': quoteBillingCity,\n 'BillingState': quoteBillingState,\n 'BillingPostalCode': quoteBillingPostalCode,\n 'BillingCountry': quoteBillingCountry,\n 'BillingName': quoteBillingName,\n 'QuoteToStreet': quoteToStreet,\n 'QuoteToCity': quoteToCity,\n 'QuoteToState': quoteToState,\n 'QuoteToPostalCode': quoteToPostalCode,\n 'QuoteToCountry': quoteToCountry,\n 'QuoteToName': quoteToName,\n 'ShippingStreet': quoteShippingStreet,\n 'ShippingCity': quoteShippingCity,\n 'ShippingState': quoteShippingState,\n 'ShippingPostalCode': quoteShippingPostalCode,\n 'ShippingCountry': quoteShippingCountry,\n 'ShippingName': quoteShippingName,\n 'ExpirationDate': quoteExpirationDate,\n 'QuoteNumber': quoteNumber\n }, 'Quote')\n\n .then(myQuote => {\n\n return Compose.saveRecord(myQuote)\n\n .then(mySavedQuote => {\n\n // Get the list of products from the opportunity to the quote\n return Compose.findRecords(`OpportunityId = ${$record.recordID}`, 'OpportunityLineItem')\n\n .then(({ set, filter }) => {\n\n // Loop through the lineitems related to the opportunity\n set.forEach(r => {\n\n // Create a new contact linked to the opportunity\n return Compose.makeRecord({\n 'Discount': r.values.Discount,\n 'Description': r.values.Description,\n 'ListPrice': r.values.ListPrice,\n 'PricebookEntryId': r.values.PricebookEntryId,\n 'ProductId': r.values.ProductId,\n 'ProductCode': r.values.ProductCode,\n 'Quantity': r.values.Quantity,\n 'UnitPrice': r.values.UnitPrice,\n 'Subtotal': r.values.Subtotal,\n 'TotalPrice': r.values.TotalPrice,\n 'QuoteId': mySavedQuote.recordID\n }, 'QuoteLineItem')\n\n .then(myQuoteLineItem => {\n\n return Compose.saveRecord(myQuoteLineItem)\n\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n })\n })\n\n }).then(() => {\n\n // Notify current user\n ComposeUI.success(`The new quote has been created.`)\n\n\n }).then(() => {\n\n // Go to the record\n ComposeUI.gotoRecordEditor(mySavedQuote)\n\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n async: false\n runInUA: true\n critical: true\n enabled: true\n timeout: 0\n triggers:\n - event: manual\n module: Opportunity\n resource: compose:record\n QuoteUpdateTotalPrice:\n source: |-\n // Get the subtotal\n let subtotal = parseFloat($record.values.Subtotal)\n\n // Apply additional quote discount\n let discount = $record.values.Discount\n if (!discount || discount === '' || isNaN(discount)) {\n discount = 0\n }\n let totalPrice = subtotal - parseFloat(discount)\n\n // Calculate if it's not below 0\n if (totalPrice < 0) {\n totalPrice = 0\n }\n\n // Apply shipping\n let shippingHandling = $record.values.ShippingHandling\n if (!shippingHandling || shippingHandling === '' || isNaN(shippingHandling)) {\n shippingHandling = 0\n }\n totalPrice = totalPrice + parseFloat(shippingHandling)\n\n // Add totalPrice to the record\n $record.values.TotalPrice = totalPrice\n\n // Apply taxes\n let tax = $record.values.Tax\n if (!shippingHandling || shippingHandling === '' || isNaN(shippingHandling)) {\n // No tax, so don't do anything\n $record.values.GrandTotal = totalPrice\n } else {\n if (tax > 0) {\n // Apply tax\n let taxpercent = parseFloat(tax / 100);\n $record.values.GrandTotal = totalPrice * (1 + taxpercent)\n }\n }\n async: false\n runInUA: false\n critical: true\n enabled: true\n timeout: 0\n triggers:\n - event: beforeUpdate\n module: Quote\n resource: compose:record\n OpportunityApplyPriceBook:\n source: |-\n // Get the current price book\n let pricebookId = $record.values.PricebookId\n\n // Check if there is a price book. If there isn't one, find the standard one\n if (!pricebookId) {\n\n //If there is no price book selected, get the default price book.\n return Compose.findRecords('IsActive = 1', 'Pricebook')\n\n .then(({ set, filter }) => {\n\n if (set.length === 0) {\n\n // return that there are no Price books in the CRM\n ComposeUI.warning(`There are no active price books configured in the CRM. Please insert an active price book in the Price book module.`)\n\n } else {\n\n // Loop through the price books, to find the standard one\n set.forEach(r => {\n\n //Check if the price book is the standard one\n if (r.values.IsStandard === '1') {\n\n //Get the price book id\n pricebookId = r.recordID\n }\n })\n\n if (pricebookId) {\n\n //Save the price book in the opportunity\n $record.values.PricebookId = pricebookId\n\n // Save the price book in the opportunity\n return Compose.saveRecord($record)\n }\n }\n\n\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n }\n\n // Check if a price book is selected or if a standard price book has been found. If not, exit.\n if (!pricebookId) {\n ComposeUI.warning(`Please select a Price book for this opportunity first.`)\n return\n }\n\n //Set the total amount of the opportunity\n let amount = 0\n\n // Find all opportunity lineitems\n return Compose.findRecords(`OpportunityId = ${$record.recordID}`, 'OpportunityLineItem')\n\n .then(({ set, filter }) => {\n\n set.forEach(lineitem => {\n\n //Set the default values\n let quantity = lineitem.values.Quantity\n let discount = lineitem.values.Discount\n let listprice = 0\n let unitprice = 0\n let subtotal = 0\n let totalprice = 0\n\n // Get the product\n return Compose.findRecordByID(lineitem.values.ProductId, 'Product').then(product => {\n\n // Set the product name and code\n lineitem.values.Name = product.values.Name\n lineitem.values.ProductCode = product.values.ProductCode\n\n }).then(product => {\n\n // Get the right price from the selected price book\n return Compose.findRecords(`PricebookId = ${pricebookId} AND ProductId = ${lineitem.values.ProductId}`, 'PricebookEntry')\n\n .then(({ set, filter }) => {\n\n if (set.length > 0) {\n\n let pricebookEntry = set[0]\n\n // Get the list price\n listprice = pricebookEntry.values.UnitPrice\n\n // Update unitprice only when the value is empty\n unitprice = lineitem.values.UnitPrice\n if (!unitprice || unitprice === '' || isNaN(unitprice)) {\n unitprice = listprice\n }\n\n // Calculate the totals\n if (!quantity || quantity === '' || isNaN(quantity)) {\n quantity = 0\n }\n subtotal = unitprice * quantity\n\n // Calculate the total\n if (!discount || discount === '' || isNaN(discount)) {\n totalprice = subtotal\n } else {\n totalprice = subtotal - discount\n }\n\n // Update it in the listitem record\n lineitem.values.ListPrice = listprice\n lineitem.values.UnitPrice = unitprice\n lineitem.values.Subtotal = subtotal\n lineitem.values.TotalPrice = totalprice\n\n //Add the total price to the amount of the opportunity\n amount = amount + totalprice\n\n // Save the lineitem\n return Compose.saveRecord(lineitem)\n }\n }).then(mySolution => {\n\n //Save the opportunity record\n $record.values.Amount = amount\n return Compose.saveRecord($record)\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n async: false\n runInUA: true\n critical: true\n enabled: true\n timeout: 0\n triggers:\n - event: manual\n module: Opportunity\n resource: compose:record\nPK\x07\x08Zl\xb7X\xf0\x05\x01\x00\xf0\x05\x01\x00PK\x03\x04\x14\x00\x08\x00\x00\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x00 \x001300_scripts_service_cloud.yamlUT\x05\x00\x01\x80Cm8namespace: service-cloud\nscripts:\n AccountSetValues:\n source: |-\n $record.values.AccountSelect = $record.values.AccountName\n async: false\n runInUA: false\n critical: true\n enabled: true\n timeout: 0\n triggers:\n - event: beforeCreate\n module: Account\n resource: compose:record\n - event: beforeUpdate\n module: Account\n resource: compose:record\n CaseAddUpdate:\n source: |-\n const { toJSON, ...values } = $record.values\n $record = new Record($record.module, { ...$record, values })\n\n //Get the default settings\n return Compose.findLastRecord('Settings').then(settings => {\n\n let department = settings.values.DefaultDepartment\n let timeSpend = settings.values.DefaultTimeUpdate\n let defaultCostPerHour = settings.values.DefaultCostPerHour\n let updateCost = 0\n if (timeSpend) {\n updateCost = parseFloat(defaultCostPerHour) * parseFloat(timeSpend)\n }\n\n // Create the related update\n return Compose.makeRecord({\n 'CaseId': $record.recordID,\n 'AccountId': $record.values.AccountId,\n 'ContactId': $record.values.ContactId,\n 'Department': settings.values.DefaultDepartment,\n 'Cost': updateCost,\n 'TimeSpend': timeSpend\n }, 'Update')\n\n .then(myUpdate => {\n\n return Compose.saveRecord(myUpdate)\n\n }).then(mySavedUpdate => {\n\n ComposeUI.gotoRecordEditor(mySavedUpdate)\n\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n async: false\n runInUA: true\n critical: true\n enabled: true\n timeout: 0\n triggers:\n - event: manual\n module: Case\n resource: compose:record\n CaseInsertCaseNumber:\n source: |-\n let d = new Date()\n let y = d.getFullYear()\n let m = d.getMonth() + 1\n if (m < 10) {\n m = '0' + m\n }\n let day = d.getDate()\n if (day < 10) {\n day = '0' + day\n }\n let h = d.getHours()\n if (h < 10) {\n h = '0' + h\n }\n let min = d.getMinutes()\n if (min < 10) {\n min = '0' + min\n }\n let sec = d.getSeconds()\n if (sec < 10) {\n sec = '0' + sec\n }\n let mil = d.getMilliseconds()\n if (mil < 10) {\n mil = '00' + mil\n } else if (mil < 100) {\n mil = '0' + mil\n }\n\n let caseNumber = 'Ticket#' + y + m + day + h + min + sec + mil\n\n $record.values.Number = caseNumber\n $record.values.Status = 'New'\n $record.values.PreviousStatus = 'New'\n async: false\n runInUA: false\n critical: true\n enabled: true\n timeout: 0\n triggers:\n - event: beforeCreate\n module: Case\n resource: compose:record\n - enabled: false\n event: beforeUpdate\n module: Case\n resource: compose:record\n CaseSendEmail:\n source: |-\n const { toJSON, ...values } = $record.values\n $record = new Record($record.module, { ...$record, values })\n\n function procTemplate(tpl, pairs = {}) {\n return tpl.replace(/{{\\s*(.+?)\\s*}}/g, (match) => {\n // remove {{, }} and extra spaces\n const token = match.substr(2, match.length - 4).trim().split('.', 2)\n\n // return the placeholder if we do not find the value\n const miss = '{{' + token.join('.') + '}}'\n\n if (token.length === 1) {\n // handle simpe key-value pairs\n return pairs[token] || miss\n } else {\n // handle complex key-key-value (ie: modulename: recordvalues)\n const [key, field] = token\n return pairs[key] && pairs[key][field] ? pairs[key][field] : miss\n }\n })\n }\n\n // Get the default template from the settings.\n return Compose.findLastRecord('Settings').then(settings => {\n let templateId = settings.values.DefaultCaseEmailTemplate\n\n if (templateId) {\n\n // Get the template\n Compose.findRecordByID(templateId, 'EmailTemplate').then(templateRecord => {\n\n let subject = templateRecord.values.Subject\n let body = templateRecord.values.Body\n\n subject = procTemplate(subject, { \"Case\": $record.values })\n body = procTemplate(body, { \"Case\": $record.values })\n\n // Find the contact (there will always be a contact)\n Compose.findRecordByID($record.values.ContactId, 'Contact').then(contactRecord => {\n\n subject = procTemplate(subject, { \"Contact\": contactRecord.values })\n body = procTemplate(body, { \"Contact\": contactRecord.values })\n return\n\n }).then(() => {\n\n // Create the email\n return Compose.makeRecord({\n 'HtmlBody': body,\n 'Subject': subject,\n 'Status': 'Draft',\n 'EmailTemplateId': templateId,\n 'CaseId': $record.recordID,\n 'ContactId': $record.values.ContactId\n }, 'EmailMessage')\n .then(myEmailMessage => {\n\n return Compose.saveRecord(myEmailMessage)\n\n }).then(mySavedEmailMessage => {\n\n // Redirect to the email record\n ComposeUI.gotoRecordEditor(mySavedEmailMessage)\n\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n }\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n async: false\n runInUA: true\n critical: true\n enabled: true\n timeout: 0\n triggers:\n - event: manual\n module: Case\n resource: compose:record\n CaseStatusChange:\n source: |-\n // Get the current status of the case\n let currentStatus = $record.values.Status\n let previousStatus = $record.values.PreviousStatus\n\n // Check if there is no status. If so, the case is new and set it as new.\n if (!currentStatus) {\n currentStatus = 'New'\n }\n if (!previousStatus) {\n previousStatus = 'None'\n }\n\n // Check if we need to insert a status change update\n if (currentStatus != previousStatus) {\n \n // Insert the status update\n // First, get the default settings\n return Compose.findLastRecord('Settings').then(settings => {\n \n let defaultTimeSpend = settings.values.DefaultTimeUpdate\n let defaultCost = settings.values.DefaultCostPerHour\n let defaultDepartment = settings.values.DefaultDepartment\n\n // Get the record from the department\n return Compose.findRecordByID(defaultDepartment, 'Department').then(departmentRecord => {\n\n // Get the cost associated to the department\n if (departmentRecord.values.HourCost) {\n defaultCost = departmentRecord.values.HourCost\n }\n return departmentRecord\n \n }).then(departmentRecord => {\n \n // calculat the total cost\n let totalCost = parseFloat(defaultCost) * parseFloat(defaultTimeSpend)\n \n // Make the update record\n return Compose.makeRecord({\n 'CaseId': $record.recordID,\n 'Type': 'Status change',\n 'Subject': 'Status changed from ' + previousStatus + ' to ' + currentStatus,\n 'AccountId': $record.values.AccountId,\n 'From': 'Automatic message',\n 'Department': defaultDepartment,\n 'TimeSpend': defaultTimeSpend,\n 'Cost': totalCost\n }, 'Update')\n \n .then(myUpdate => {\n \n return Compose.saveRecord(myUpdate)\n \n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n \n }).then(departmentRecord => {\n\n // Calculate and store the total price of the ticket\n let totalCost = $record.values.TotalCost\n if (!totalCost || totalCost === '' || isNaN(totalCost)) {\n totalCost = 0\n }\n \n let totalTime = $record.values.TotalTime\n if (!totalTime || totalTime === '' || isNaN(totalTime)) {\n totalTime = 0\n }\n \n // Update the total time and cost in the ticket\n $record.values.TotalCost = parseFloat(totalCost) + (parseFloat(defaultCost) * parseFloat(defaultTimeSpend))\n $record.values.TotalTime = parseFloat(totalTime) + parseFloat(defaultTimeSpend)\n \n // Store the new state in the previous state field\n $record.values.PreviousStatus = currentStatus\n \n return\n \n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n \n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n\n }\n async: false\n runInUA: false\n critical: true\n enabled: true\n timeout: 0\n triggers:\n - event: beforeUpdate\n module: Case\n resource: compose:record\n ContactSetRecordLabel:\n source: |-\n // Set the record label string\n let recordLabel = ''\n\n // Get the first name\n let firstName = $record.values.FirstName\n if (!firstName) {\n firstName = ''\n }\n\n // Get the last name\n let lastName = $record.values.LastName\n if (!lastName) {\n lastName = ''\n }\n\n // Create the full name\n let fullName = ''\n if ((firstName !== '') && (lastName === '')) {\n recordLabel = firstName\n }\n\n if ((firstName === '') && (lastName !== '')) {\n recordLabel = lastName\n }\n\n if ((firstName !== '') && (lastName !== '')) {\n recordLabel = firstName + ' ' + lastName\n }\n\n // Get the company name from the account\n // Check if there is a related account, to map the fields of the account\n let accountId = $record.values.AccountId\n if (accountId) {\n return Compose.findRecordByID(accountId, 'Account').then(accountRecord => {\n \n // Add to the record label \n recordLabel = recordLabel + ' (' + accountRecord.values.AccountName + ')'\n $record.values.RecordLabel = recordLabel\n\n }).catch(err => {\n // solve the problem\n $record.values.RecordLabel = recordLabel\n\n console.error(err)\n })\n \n }\n async: false\n runInUA: false\n critical: true\n enabled: true\n timeout: 0\n triggers:\n - event: beforeCreate\n module: Contact\n resource: compose:record\n - event: beforeUpdate\n module: Contact\n resource: compose:record\n DepartmentSetValues:\n source: |-\n $record.values.DepartmentSelect = $record.values.Name\n async: false\n runInUA: false\n critical: true\n enabled: true\n timeout: 0\n triggers:\n - event: beforeCreate\n module: Department\n resource: compose:record\n - event: beforeUpdate\n module: Department\n resource: compose:record \n EmailSend:\n source: |-\n const { toJSON, ...values } = $record.values\n $record = new Record($record.module, { ...$record, values })\n\n Compose.findRecordByID($record.values.ContactId, 'Contact').then(contactRecord => {\n\n return Compose.sendMail(contactRecord.values.Email, $record.values.Subject, { html: $record.values.HtmlBody }).then(() => {\n\n ComposeUI.success(`The email \"${$record.values.Subject}\" has been sent to \"${contactRecord.values.RecordLabel}: ${contactRecord.values.Email}\".`)\n\n $record.values.Status = \"Sent\"\n $record.values.ToAddress = contactRecord.values.Email\n\n var m = new Date()\n var dateString = m.getUTCFullYear() + \"/\" + (m.getUTCMonth() + 1) + \"/\" + m.getUTCDate() + \" \" + m.getUTCHours() + \":\" + m.getUTCMinutes() + \":\" + m.getUTCSeconds()\n $record.values.MessageDate = dateString\n Compose.saveRecord($record).then(mySavedRecord => {\n ComposeUI.gotoRecordViewer(mySavedRecord)\n return\n }).then(mySavedRecord => {\n\n // Add the email as an update\n if ($record.values.CaseId) {\n\n\n // First, get the default settings\n return Compose.findLastRecord('Settings').then(settings => {\n\n let defaultTimeSpend = settings.values.DefaultTimeUpdate\n let defaultCost = settings.values.DefaultCostPerHour\n let defaultDepartment = settings.values.DefaultDepartment\n\n // Get the record from the department\n return Compose.findRecordByID(defaultDepartment, 'Department').then(departmentRecord => {\n\n // Get the cost associated to the department\n if (departmentRecord.values.HourCost) {\n defaultCost = departmentRecord.values.HourCost\n }\n return departmentRecord\n\n }).then(departmentRecord => {\n\n // calculat the total cost\n let totalCost = parseFloat(defaultCost) * parseFloat(defaultTimeSpend)\n\n // Make the update record\n return Compose.makeRecord({\n 'CaseId': $record.values.CaseId,\n 'Type': 'Outgoing email',\n 'Subject': 'Email: ' + $record.values.Subject,\n 'ContactId': $record.values.ContactId,\n 'From': 'Service Cloud',\n 'To': contactRecord.values.Email,\n 'Content': $record.values.HtmlBody,\n 'Department': defaultDepartment,\n 'TimeSpend': defaultTimeSpend,\n 'Cost': totalCost\n }, 'Update')\n\n .then(myUpdate => {\n\n return Compose.saveRecord(myUpdate)\n\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n }\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n async: false\n runInUA: true\n critical: true\n enabled: true\n timeout: 0\n triggers:\n - event: manual\n module: EmailMessage\n resource: compose:record\n EmailTemplateLoad:\n source: |-\n const { toJSON, ...values } = $record.values\n $record = new Record($record.module, { ...$record, values })\n\n function procTemplate(tpl, pairs = {}) {\n return tpl.replace(/{{\\s*(.+?)\\s*}}/g, (match) => {\n // remove {{, }} and extra spaces\n const token = match.substr(2,match.length-4).trim().split('.', 2)\n\n // return the placeholder if we do not find the value\n const miss = '{{' + token.join('.') + '}}'\n\n if (token.length === 1) {\n // handle simpe key-value pairs\n return pairs[token] || miss \n } else {\n // handle complex key-key-value (ie: modulename: recordvalues)\n const [key, field] = token\n return pairs[key] && pairs[key][field] ? pairs[key][field] : miss\n }\n })\n }\n\n if (!$record.recordID) {\n ComposeUI.success(`Please save the record before loading the template`)\n return\n }\n\n // Check if there is a template\n let templateId = $record.values.EmailTemplateId\n\n if (templateId) {\n\n // Get the template\n Compose.findRecordByID(templateId, 'EmailTemplate').then(templateRecord => {\n\n let subject = templateRecord.values.Subject\n let body = templateRecord.values.Body\n\n // Find the contact (there will always be a contact)\n Compose.findRecordByID($record.values.ContactId, 'Contact').then(contactRecord => {\n\n subject = procTemplate(subject, {\"Contact\": contactRecord.values})\n body = procTemplate(body, {\"Contact\": contactRecord.values})\n return\n\n }).then(() => {\n // Get all the possible placeholders for the case, if there is a case selected\n if ($record.values.CaseId) {\n return Compose.findRecordByID($record.values.CaseId, 'Case').then(caseRecord => {\n \n subject = procTemplate(subject, {\"Case\": caseRecord.values})\n body = procTemplate(body, {\"Case\": caseRecord.values})\n \n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n }\n \n }).then(() => {\n \n $record.values.Subject = subject\n $record.values.HtmlBody = body\n \n //Save the record\n return Compose.saveRecord($record)\n .then(mySavedRecord => {\n\n ComposeUI.success(`The template has been loaded in to the email.`)\n ComposeUI.gotoRecordEditor(mySavedRecord)\n\n }).catch(err => {\n // solve the problem\n ComposeUI.warning(`The template could not be loaded.`)\n console.error(err)\n })\n\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n\n }\n async: false\n runInUA: true\n critical: true\n enabled: true\n timeout: 0\n triggers:\n - event: manual\n module: EmailMessage\n resource: compose:record\n KnowledgeBaseInsertKBNumber:\n source: |-\n //Get the default settings\n return Compose.findLastRecord('Settings').then(settings => {\n \n // Map the case number\n let KBNextNumber = settings.values.KBNextNumber\n if (typeof KBNextNumber == \"undefined\" || KBNextNumber === '' || isNaN(KBNextNumber)) {\n KBNextNumber = 0\n }\n console.log(KBNextNumber)\n $record.values.Number = KBNextNumber\n let KBNextNumberUpdated = parseInt(KBNextNumber,10) + 1\n \n // Update the config\n settings.values.KBNextNumber = KBNextNumberUpdated\n return Compose.saveRecord(settings).then(mySavedSettings => {\n \n console.log('Record saved, new ID', mySavedSettings.recordID)\n\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n async: false\n runInUA: false\n critical: true\n enabled: true\n timeout: 0\n triggers:\n - enabled: false\n event: beforeUpdate\n module: KnowledgeBase\n resource: compose:record\n - event: beforeCreate\n module: KnowledgeBase\n resource: compose:record\n UpdateSendNotificationsAndCalculateTimeAndCost:\n source: |-\n // Check if the type is NOT an incoming email. If it's not, handle it as an internal update and send notifications\n if ($record.values.Type !== 'Incoming email') {\n\n //Get the cost related to the department that updated the case\n return Compose.findRecordByID($record.values.Department, 'Department').then(departmentRecord => {\n let hourCost = 0\n if (departmentRecord.values.HourCost) {\n hourCost = parseFloat(departmentRecord.values.HourCost)\n }\n return hourCost\n }).catch(err => {\n // solve the problem\n let hourCost = 0\n return hourCost\n })\n\n .then((hourCost) => {\n // Calculate the cost of the update\n let updateTime = $record.values.TimeSpend\n let UpdateCost = 0\n if (updateTime) {\n UpdateCost = parseFloat(hourCost) * parseFloat(updateTime)\n }\n\n // Add the cost to the update\n $record.values.Cost = UpdateCost\n\n // Set the notifications values to \"1\" (sent)\n if ($record.values.SendToMailingList) {\n $record.values.NotificationCaseMailingList = 1\n }\n $record.values.NotificationCaseCreator = 1\n\n // Find the related case\n Compose.findRecordByID($record.values.CaseId, 'Case').then(caseRecord => {\n\n // Create the update text to send out via email.\n // Only when the Update record has a subject or type.\n if (($record.values.Subject) || ($record.values.Type)) {\n let html = 'Hi,'\n html += '
'\n html += '
'\n html += 'The following case has been updated:'\n html += '
'\n html += ''\n html += '
'\n html += 'Update:'\n html += '
'\n html += ''\n html += '
'\n html += 'Kind regards,'\n html += '
'\n html += '
'\n html += 'Service Cloud'\n html += '
'\n html += '
'\n html += '--'\n html += '
'\n html += 'Ticket Summary:'\n html += '
'\n html += caseRecord.values.Description\n\n return Compose.findLastRecord('Settings').then(settings => {\n let defaultChannel = settings.values.DefaultSupportChannel\n let defaultCaseRecordLink = settings.values.DefaultCaseRecordLink\n\n // Get default settings to find if there is a channel to inform \n if (defaultChannel && defaultCaseRecordLink) {\n return Messaging.sendMessage('Automatic update. \"' + caseRecord.values.Number + '\" has been updated: ' + $record.values.Subject + ' (type: ' + $record.values.Type + '). Direct link: ' + defaultCaseRecordLink + $record.recordID, defaultChannel)\n }\n }).then(() => {\n // Get the contact of the case record to infor via email\n if (caseRecord.values.ContactId) {\n Compose.findRecordByID(caseRecord.values.ContactId, 'Contact').then(contactRecord => {\n\n // Check if the contact has an email address\n if (contactRecord.values.Email) {\n\n // Send the update text\n return Compose.sendMail(contactRecord.values.Email, '[' + caseRecord.values.Number + '] Update: ' + caseRecord.values.Subject, { html: html })\n }\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n }\n\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n }\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n }\n async: false\n runInUA: false\n critical: true\n enabled: true\n timeout: 0\n triggers:\n - event: beforeUpdate\n module: Update\n resource: compose:record\n UpdateSetCaseTimeAndCost:\n source: |-\n // Find the related case\n Compose.findRecordByID($record.values.CaseId, 'Case').then(caseRecord => {\n\n // Find all updates in the case\n return Compose.findRecords(`CaseId = ${$record.values.CaseId}`, 'Update')\n .then(({ set, filter }) => {\n\n // Start the time and cost with the values of the current update, because the update \n // is not saved until after the complete script has run\n let caseTime = 0\n let caseCost = 0\n\n // Loop through the updates of the case, to sum the totals\n set.forEach(r => {\n\n // Get the time\n let caseUpdateTime = r.values.TimeSpend\n if (typeof caseUpdateTime == \"undefined\" || caseUpdateTime === '' || isNaN(caseUpdateTime)) {\n caseUpdateTime = 0\n }\n caseTime = parseFloat(caseTime) + parseFloat(caseUpdateTime)\n\n // Get the cost\n let caseUpdateCost = r.values.Cost\n if (typeof caseUpdateCost == \"undefined\" || caseUpdateCost === '' || isNaN(caseUpdateCost)) {\n caseUpdateCost = 0\n }\n caseCost = parseFloat(caseCost) + parseFloat(caseUpdateCost)\n })\n\n // Set the values in the case\n caseRecord.values.TotalTime = caseTime\n caseRecord.values.TotalCost = caseCost\n\n // Save the case\n return Compose.saveRecord(caseRecord).then(mySavedCase => {\n console.log('Record saved, ID', mySavedCase.recordID)\n }).then(mySavedCase => {\n \n // After saving the case, update the total for the account\n // Find the related case\n if (caseRecord.values.AccountId) {\n Compose.findRecordByID(caseRecord.values.AccountId, 'Account').then(accountRecord => {\n\n // Find all updates in the case\n return Compose.findRecords(`AccountId = ${accountRecord.recordID}`, 'Case')\n .then(({ set, filter }) => {\n \n // Start the time and cost with the values of the current update, because the update \n // is not saved until after the complete script has run\n caseTime = 0\n caseCost = 0\n \n // Loop through the updates of the case, to sum the totals\n set.forEach(r => {\n \n // Get the time\n let caseUpdateTime = r.values.TotalTime\n if (typeof caseUpdateTime == \"undefined\" || caseUpdateTime === '' || isNaN(caseUpdateTime)) {\n caseUpdateTime = 0\n }\n caseTime = parseFloat(caseTime) + parseFloat(caseUpdateTime)\n \n // Get the cost\n let caseUpdateCost = r.values.TotalCost\n if (typeof caseUpdateCost == \"undefined\" || caseUpdateCost === '' || isNaN(caseUpdateCost)) {\n caseUpdateCost = 0\n }\n caseCost = parseFloat(caseCost) + parseFloat(caseUpdateCost)\n })\n \n // Set the values in the case\n accountRecord.values.TotalTime = caseTime\n accountRecord.values.TotalCost = caseCost\n \n // Save the case\n return Compose.saveRecord(accountRecord).then(mySavedAccount => {\n console.log('Record saved, ID', mySavedAccount.recordID)\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n \n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n }\n\n // Add the totals for the related product\n }).then(mySavedCase => {\n \n // After saving the case, update the total for the account\n // Find the related case\n if (caseRecord.values.ProductId) {\n Compose.findRecordByID(caseRecord.values.ProductId, 'Product').then(productRecord => {\n\n // Find all updates in the case\n return Compose.findRecords(`ProductId = ${productRecord.recordID}`, 'Case')\n .then(({ set, filter }) => {\n \n // Start the time and cost with the values of the current update, because the update \n // is not saved until after the complete script has run\n caseTime = 0\n caseCost = 0\n \n // Loop through the updates of the case, to sum the totals\n set.forEach(r => {\n \n // Get the time\n let caseUpdateTime = r.values.TotalTime\n if (typeof caseUpdateTime == \"undefined\" || caseUpdateTime === '' || isNaN(caseUpdateTime)) {\n caseUpdateTime = 0\n }\n caseTime = parseFloat(caseTime) + parseFloat(caseUpdateTime)\n \n // Get the cost\n let caseUpdateCost = r.values.TotalCost\n if (typeof caseUpdateCost == \"undefined\" || caseUpdateCost === '' || isNaN(caseUpdateCost)) {\n caseUpdateCost = 0\n }\n caseCost = parseFloat(caseCost) + parseFloat(caseUpdateCost)\n })\n \n // Set the values in the case\n productRecord.values.TotalTime = caseTime\n productRecord.values.TotalCost = caseCost\n \n // Save the case\n return Compose.saveRecord(productRecord).then(mySavedProduct => {\n console.log('Record saved, ID', mySavedProduct.recordID)\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n \n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n }\n\n // Add the totals for the department\n }).then(mySavedCase => {\n \n // If there is an department, update the total for that department\n if ($record.values.Department) {\n Compose.findRecordByID($record.values.Department, 'Department').then(departmentRecord => {\n\n // Find all updates of the department (to run through them and update the totals)\n return Compose.findRecords(`Department = ${$record.values.Department}`, 'Update')\n .then(({ set, filter }) => {\n\n let departmentTime = 0\n let departmentCost = 0\n\n // Loop through the updates of the department, to sum the totals\n set.forEach(r => {\n \n // Get the time\n let departmentUpdateTime = r.values.TimeSpend\n if (typeof departmentUpdateTime == \"undefined\" || departmentUpdateTime === '' || isNaN(departmentUpdateTime)) {\n departmentUpdateTime = 0\n }\n departmentTime = parseFloat(departmentTime) + parseFloat(departmentUpdateTime)\n\n // Get the cost\n let departmentUpdateCost = r.values.Cost\n if (typeof departmentUpdateCost == \"undefined\" || departmentUpdateCost === '' || isNaN(departmentUpdateCost)) {\n departmentUpdateCost = 0\n }\n departmentCost = parseFloat(departmentCost) + parseFloat(departmentUpdateCost)\n })\n\n // Set the values in the department\n departmentRecord.values.TotalTime = departmentTime\n departmentRecord.values.TotalCost = departmentCost\n\n // Save the department\n return Compose.saveRecord(departmentRecord).then(mySavedDepartment => {\n console.log('Record saved, ID', mySavedDepartment.recordID)\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n }\n \n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n }).catch(err => {\n // solve the problem\n console.error(err)\n })\n async: false\n runInUA: false\n critical: true\n enabled: true\n timeout: 0\n triggers:\n - event: afterCreate\n module: Update\n resource: compose:record\n - event: afterUpdate\n module: Update\n resource: compose:recordPK\x07\x08}\xef\xf6\xb0\xcf\x87\x00\x00\xcf\x87\x00\x00PK\x03\x04\x14\x00\x08\x00\x00\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00 \x001400_pages_crm.yamlUT\x05\x00\x01\x80Cm8namespace: crm\npages:\n - handle: Home\n title: Home\n blocks:\n - title: New Leads\n options:\n fields:\n - name: FirstName\n - name: LastName\n - name: Email\n - name: LeadSource\n - name: Status\n module: Lead\n page: RecordPageForModuleLead\n perPage: 5\n prefilter: Status = 'New'\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [0, 14, 6, 9]\n - title: Leads by Type\n options:\n chart: LeadsByType\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Chart\n xywh: [9, 0, 3, 7]\n - title: Open Opportunities\n options:\n fields:\n - name: Name\n - name: AccountId\n - name: Amount\n - name: StageName\n - name: NextStep\n module: Opportunity\n page: RecordPageForModuleOpportunity\n perPage: 3\n prefilter: StageName != 'Closed Won' AND StageName != 'Closed Lost'\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [6, 14, 6, 9]\n - title: Leads by Country\n options:\n chart: LeadsByCountry\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Chart\n xywh: [6, 0, 3, 7]\n - title: Leads per day\n options:\n chart: LeadsPerDay\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Chart\n xywh: [6, 7, 3, 7]\n - title: My Calendar\n options:\n feeds:\n - endField: EndDateTime\n module: Event\n startField: ActivityDate\n titleField: Subject\n - endField: null\n module: Task\n startField: ActivityDate\n titleField: Subject\n header:\n views:\n - agendaWeek\n - agendaMonth\n - agendaDay\n - month\n - listMonth\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Calendar\n xywh: [0, 0, 6, 14]\n - title: Opportunities\n options:\n chart: OpportunitiesByValue\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Chart\n xywh: [9, 7, 3, 7]\n visible: \n - handle: Leads\n title: Leads\n blocks:\n - title: List of leads\n options:\n fields:\n - name: FirstName\n - name: LastName\n - name: Email\n - name: Rating\n - name: Company\n - name: Country\n - name: Status\n - name: OwnerId\n module: Lead\n page: RecordPageForModuleLead\n perPage: 20\n prefilter: \"\"\n presort: createdAt DESC\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [0, 0, 9, 21]\n - title: Leads by type\n options:\n chart: LeadsByType\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Chart\n xywh: [9, 0, 3, 7]\n - title: Leads by country\n options:\n chart: LeadsByCountry\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Chart\n xywh: [9, 7, 3, 7]\n - title: Leads by source\n options:\n chart: LeadsBySource\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Chart\n xywh: [9, 14, 3, 7]\n pages:\n - handle: RecordPageForModuleLead\n module: Lead\n title: Record page for module \"Lead\"\n blocks:\n - title: Personal Data\n options:\n fields:\n - name: FirstName\n - name: LastName\n - name: Salutation\n - name: Title\n - name: Phone\n - name: MobilePhone\n - name: Email\n - name: Website\n - name: Twitter\n - name: LinkedIn\n - name: Facebook\n kind: Record\n xywh: [0, 0, 3, 15]\n - title: Twitter feed\n options:\n fields: []\n profileSourceField: Twitter\n kind: SocialFeed\n xywh: [9, 0, 3, 31]\n - title: Company Data\n options:\n fields:\n - name: Company\n - name: Industry\n - name: AnnualRevenue\n - name: NumberOfEmployees\n - name: NumberOfEmployeesRange\n - name: Country\n - name: City\n - name: Street\n - name: State\n - name: PostalCode\n kind: Record\n xywh: [3, 0, 3, 15]\n - title: Other Information\n options:\n fields:\n - name: Rating\n - name: Status\n - name: LeadSource\n - name: OwnerId\n - name: Description\n - name: ConvertedAccountId\n - name: ConvertedContactId\n - name: ConvertedOpportunityId\n - name: ConvertedDate\n kind: Record\n xywh: [6, 0, 3, 15]\n - title: Notes\n options:\n fields:\n - name: Title\n - name: Body\n - name: createdAt\n module: Note\n page: RecordPageForModuleNote\n perPage: 5\n prefilter: LeadId = ${recordID}\n presort: createdAt DESC\n kind: RecordList\n xywh: [0, 15, 6, 8]\n - title: Events\n options:\n fields:\n - name: Type\n - name: Subject\n - name: ActivityDate\n module: Event\n page: RecordPageForModuleEvent\n perPage: 5\n prefilter: LeadId = ${recordID}\n presort: ActivityDate DESC\n kind: RecordList\n xywh: [0, 23, 4, 8]\n - title: Tasks\n options:\n fields:\n - name: Type\n - name: Subject\n - name: Status\n - name: ActivityDate\n module: Task\n page: RecordPageForModuleTask\n perPage: 5\n prefilter: LeadId = ${recordID}\n presort: ActivityDate DESC\n kind: RecordList\n xywh: [4, 23, 5, 8]\n - title: Lead Actions\n options:\n buttons:\n - label: Convert this Lead in to an Account\n script: LeadConvertLeadIntoAccount\n variant: primary\n - label: 'Lead: Convert a lead into an account and opportunity'\n script: LeadConvertLeadToAccountAndOpportunity\n variant: primary\n kind: Automation\n xywh: [6, 15, 3, 8]\n visible: true\n - handle: AllNewLeads\n title: All New Leads\n blocks:\n - title: New Leads\n options:\n fields:\n - name: FirstName\n - name: LastName\n - name: Email\n - name: Rating\n - name: Company\n - name: Country\n - name: LeadSource\n - name: Status\n - name: OwnerId\n module: Lead\n page: RecordPageForModuleLead\n perPage: 20\n prefilter: Status = 'New' OR Status = 'Assigned'\n presort: createdAt DESC\n kind: RecordList\n xywh: [0, 0, 12, 20]\n visible: true\n - handle: MyLeads\n title: My Leads\n blocks:\n - title: My Leads\n options:\n fields:\n - name: FirstName\n - name: LastName\n - name: Email\n - name: Rating\n - name: Company\n - name: Country\n - name: LeadSource\n - name: Status\n - name: OwnerId\n module: Lead\n page: RecordPageForModuleLead\n perPage: 20\n prefilter: OwnerId = ${userID}\n presort: createdAt DESC\n kind: RecordList\n xywh: [0, 0, 12, 21]\n visible: true\n visible: true\n - handle: Accounts\n title: Accounts\n blocks:\n - title: All accounts\n options:\n fields:\n - name: AccountName\n - name: Type\n - name: Rating\n - name: Industry\n - name: AccountSource\n - name: OwnerId\n - name: createdAt\n module: Account\n page: RecordPageForModuleAccount\n perPage: 20\n presort: createdAt DESC\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [0, 0, 12, 19]\n pages:\n - handle: RecordPageForModuleAccount\n module: Account\n title: Record page for module \"Account\"\n blocks:\n - title: Account Detail\n options:\n fields:\n - name: AccountName\n - name: Type\n - name: Industry\n - name: NumberOfEmployees\n - name: AnnualRevenue\n - name: Twitter\n - name: LinkedIn\n - name: Facebook\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [0, 0, 3, 12]\n - title: Account Address\n options:\n fields:\n - name: BillingStreet\n - name: BillingCity\n - name: BillingState\n - name: BillingPostalCode\n - name: BillingCountry\n - name: Phone\n - name: Website\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [3, 0, 3, 12]\n - title: Other Information\n options:\n fields:\n - name: Rating\n - name: ParentId\n - name: AccountSource\n - name: OwnerId\n - name: Description\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [6, 0, 3, 12]\n - title: Company Twitter Feed\n options:\n fields: []\n profileSourceField: Twitter\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: SocialFeed\n xywh: [9, 0, 3, 20]\n - title: Opportunities\n options:\n fields:\n - name: Name\n - name: StageName\n - name: Amount\n - name: CloseDate\n hideAddButton: true\n module: Opportunity\n page: RecordPageForModuleOpportunity\n perPage: 5\n prefilter: AccountId = ${recordID}\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [0, 12, 6, 8]\n - title: Contacts\n options:\n fields:\n - name: FirstName\n - name: LastName\n - name: Title\n hidePaging: true\n module: Contact\n page: RecordPageForModuleContact\n perPage: 5\n prefilter: AccountId = ${recordID}\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [0, 20, 4, 8]\n - title: Notes\n options:\n fields:\n - name: Title\n - name: Body\n - name: createdAt\n module: Note\n page: RecordPageForModuleNote\n perPage: 5\n prefilter: AccountId = ${recordID}\n presort: createdAt DESC\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [0, 28, 4, 8]\n - title: Cases\n options:\n fields:\n - name: CaseNumber\n - name: Subject\n - name: Status\n hideAddButton: true\n module: Case\n page: RecordPageForModuleCase\n perPage: 5\n prefilter: AccountId = ${recordID}\n presort: createdAt DESC\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [8, 20, 4, 8]\n - title: Events\n options:\n fields:\n - name: Type\n - name: Subject\n - name: ActivityDate\n module: Event\n page: RecordPageForModuleEvent\n perPage: 5\n prefilter: AccountId = ${recordID}\n presort: ActivityDate DESC\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [4, 28, 4, 8]\n - title: Tasks\n options:\n fields:\n - name: Type\n - name: Subject\n - name: Status\n - name: ActivityDate\n module: Task\n page: RecordPageForModuleTask\n perPage: 5\n prefilter: AccountId = ${recordID}\n presort: ActivityDate DESC\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [8, 28, 4, 8]\n - title: Contracts\n options:\n fields:\n - name: Name\n - name: StartDate\n - name: EndDate\n - name: Status\n hideAddButton: true\n module: Contract\n page: RecordPageForModuleContract\n perPage: 5\n prefilter: AccountId = ${recordID}\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [4, 20, 4, 8]\n - title: Account Actions\n options:\n buttons:\n - label: Generate a new Opportunity for this Account\n script: AccountCreateNewOpportunity\n variant: primary\n - label: Generate a new Contract for this Account\n script: AccountCreateNewContract\n variant: primary\n - label: Generate a new Case for this Account\n script: AccountCreateNewCase\n variant: primary\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Automation\n xywh: [6, 12, 3, 8]\n pages:\n - handle: RecordPageForModuleAccountContactRole\n module: AccountContactRole\n title: Record page for module \"AccountContactRole\"\n blocks:\n - title: Account Contact Role Details\n options:\n fields:\n - name: AccountId\n - name: ContactId\n - name: Role\n - name: IsPrimary\n kind: Record\n xywh: [0, 0, 5, 15]\n visible: false\n visible: true\n - handle: MyAccounts\n title: My Accounts\n blocks:\n - title: My Accounts\n options: \n fields:\n - name: AccountName\n - name: Type\n - name: Rating\n - name: Industry\n - name: AccountSource\n - name: OwnerId\n - name: createdAt\n module: Account\n page: RecordPageForModuleAccount\n perPage: 20\n prefilter: OwnerId = ${userID}\n presort: createdAt DESC\n kind: RecordList\n xywh: [0, 0, 12, 21]\n visible: true\n visible: true\n - handle: Opportunities\n title: Opportunities\n blocks:\n - title: List of Opportunities\n options:\n fields:\n - name: Name\n - name: Amount\n - name: AccountId\n - name: StageName\n - name: CloseDate\n - name: OwnerId\n - name: createdAt\n module: Opportunity\n page: RecordPageForModuleOpportunity\n perPage: 20\n presort: createdAt DESC\n kind: RecordList\n xywh: [0, 0, 12, 20]\n pages:\n - handle: RecordPageForModuleOpportunity\n module: Opportunity\n title: Record page for module \"Opportunity\"\n blocks:\n - title: Opportunity Detail\n options:\n fields:\n - name: Name\n - name: AccountId\n - name: Type\n - name: CloseDate\n - name: Probability\n - name: PricebookId\n - name: Amount\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [0, 0, 4, 11]\n - title: Additional Information\n options:\n fields:\n - name: OwnerId\n - name: NextStep\n - name: LeadSource\n - name: CampaignId\n - name: ForecastCategory\n - name: Description\n - name: createdAt\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [8, 0, 4, 11]\n - title: Contact Roles\n options:\n fields:\n - name: ContactId\n - name: IsPrimary\n - name: Role\n module: OpportunityContactRole\n page: RecordPageForModuleOpportunityContactRole\n perPage: 5\n prefilter: OpportunityId = ${recordID}\n presort: IsPrimary DESC\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [6, 19, 6, 8]\n - title: Opportunity Qualification\n options:\n fields:\n - name: StageName\n - name: Budget\n - name: Authority\n - name: Need\n - name: Timeline\n - name: Competition\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [4, 0, 4, 11]\n - title: Products\n options:\n fields:\n - name: ProductId\n - name: ProductCode\n - name: ListPrice\n - name: UnitPrice\n - name: Quantity\n - name: Subtotal\n - name: Discount\n - name: TotalPrice\n module: OpportunityLineItem\n page: RecordPageForModuleOpportunityLineItem\n perPage: 5\n prefilter: OpportunityId = ${recordID}\n presort: ProductId ASC\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [0, 11, 8, 8]\n - title: Notes\n options:\n fields:\n - name: Title\n - name: Body\n - name: createdAt\n module: Note\n page: RecordPageForModuleNote\n perPage: 5\n prefilter: OpportunityId = ${recordID}\n presort: createdAt DESC\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [0, 27, 4, 8]\n - title: Events\n options:\n fields:\n - name: Type\n - name: Subject\n - name: ActivityDate\n module: Event\n page: RecordPageForModuleEvent\n perPage: 5\n prefilter: OpportunityId = ${recordID}\n presort: ActivityDate DESC\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [4, 27, 4, 8]\n - title: Tasks\n options:\n fields:\n - name: Type\n - name: Subject\n - name: Status\n - name: ActivityDate\n module: Task\n page: RecordPageForModuleTask\n perPage: 5\n prefilter: OpportunityId = ${recordID}\n presort: ActivityDate DESC\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [8, 27, 4, 8]\n - title: Quotes\n options:\n fields:\n - name: QuoteNumber\n - name: Name\n - name: ExpirationDate\n - name: Subtotal\n - name: TotalPrice\n hideAddButton: true\n module: Quote\n page: RecordPageForModuleQuote\n perPage: 5\n prefilter: OpportunityId = ${recordID}\n presort: createdAt DESC\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [0, 19, 6, 8]\n - title: Opportunity Actions\n options:\n buttons:\n - label: Update prices of Products by applying the selected Price Book\n and inserted discounts\n script: OpportunityApplyPriceBook\n variant: primary\n - label: Generate a new Quote for this Opportunity\n script: OpportunityGenerateNewQuote\n variant: primary\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Automation\n xywh: [8, 11, 4, 8]\n pages:\n - handle: RecordPageForModuleOpportunityLineItem\n module: OpportunityLineItem\n title: Record page for module \"OpportunityLineItem\"\n blocks:\n - title: Opportunity Line Item Details\n options:\n fields:\n - name: OpportunityId\n - name: ProductId\n - name: Description\n - name: UnitPrice\n - name: Quantity\n - name: Discount\n kind: Record\n xywh: [0, 0, 4, 13]\n - title: Automatically inserted values\n options:\n fields:\n - name: ProductCode\n - name: ListPrice\n - name: Subtotal\n - name: TotalPrice\n kind: Record\n xywh: [4, 0, 4, 13]\n visible: false\n - handle: RecordPageForModuleOpportunityCompetitor\n module: OpportunityCompetitor\n title: Record page for module \"OpportunityCompetitor\"\n blocks:\n - title: Opportunity Competitor Details\n options:\n fields:\n - name: OpportunityId\n - name: CompetitorName\n - name: Strengths\n - name: Weaknesses\n kind: Record\n xywh: [0, 0, 5, 17]\n visible: false\n - handle: RecordPageForModuleOpportunityContactRole\n module: OpportunityContactRole\n title: Record page for module \"OpportunityContactRole\"\n blocks:\n - title: Opportunity Contact Role Details\n options:\n fields:\n - name: OpportunityId\n - name: ContactId\n - name: Role\n - name: IsPrimary\n kind: Record\n xywh: [0, 0, 4, 16]\n pages:\n - handle: RecordPageForModulePricebookEntry\n module: PricebookEntry\n title: Record page for module \"PricebookEntry\"\n blocks:\n - title: Details\n options:\n fields:\n - name: PricebookId\n - name: ProductId\n - name: UnitPrice\n kind: Record\n xywh: [0, 0, 4, 15]\n visible: false\n visible: false\n visible: false\n - handle: MyOpportunities\n title: My Opportunities\n blocks:\n - title: My Opportunities\n options:\n fields:\n - name: Name\n - name: Amount\n - name: AccountId\n - name: StageName\n - name: CloseDate\n - name: OwnerId\n - name: createdAt\n module: Opportunity\n page: RecordPageForModuleOpportunity\n perPage: 20\n prefilter: OwnerId = ${userID}\n presort: createdAt DESC\n kind: RecordList\n xywh: [0, 0, 12, 20]\n visible: true\n visible: true\n - handle: Contacts\n title: Contacts\n blocks:\n - title: List of Contacts\n options:\n fields:\n - name: FirstName\n - name: LastName\n - name: AccountId\n - name: Phone\n - name: Email\n - name: OwnerId\n module: Contact\n page: RecordPageForModuleContact\n perPage: 20\n presort: createdAt DESC\n kind: RecordList\n xywh: [0, 0, 12, 20]\n pages:\n - handle: RecordPageForModuleContact\n module: Contact\n title: Record page for module \"Contact\"\n blocks:\n - title: Personal Data\n options:\n fields:\n - name: FirstName\n - name: LastName\n - name: Salutation\n - name: Title\n - name: Phone\n - name: Email\n - name: Twitter\n - name: Facebook\n - name: LinkedIn\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [0, 0, 3, 13]\n - title: Contact Address\n options:\n fields:\n - name: AccountId\n - name: IsPrimary\n - name: MailingStreet\n - name: MailingCity\n - name: MailingState\n - name: MailingPostalCode\n - name: MailingCountry\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [3, 0, 3, 13]\n - title: Other Information\n options:\n fields:\n - name: OwnerId\n - name: DoNotCall\n - name: HasOptedOutOfEmail\n - name: ContactSource\n - name: Description\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [6, 0, 3, 13]\n - title: Contact Twitter Feed\n options:\n fields: []\n profileSourceField: Twitter\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: SocialFeed\n xywh: [9, 0, 3, 20]\n - title: Notes\n options:\n fields:\n - name: Title\n - name: Body\n - name: LastModifiedDate\n - name: CreatedById\n module: Note\n page: RecordPageForModuleNote\n perPage: 5\n prefilter: ContactId = ${recordID}\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [0, 21, 4, 8]\n - title: Events\n options:\n fields:\n - name: Type\n - name: Subject\n - name: ActivityDate\n module: Event\n page: RecordPageForModuleEvent\n perPage: 5\n prefilter: ContactId = ${recordID}\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [4, 21, 4, 8]\n - title: Tasks\n options:\n fields:\n - name: Type\n - name: Subject\n - name: Status\n - name: ActivityDate\n module: Task\n page: RecordPageForModuleTask\n perPage: 5\n prefilter: ContactId = ${recordID}\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [8, 21, 4, 8]\n - title: Cases related with this Contact\n options:\n fields:\n - name: CaseNumber\n - name: Status\n - name: Subject\n - name: createdAt\n hideAddButton: true\n module: Case\n page: RecordPageForModuleCase\n perPage: 5\n prefilter: ContactId = ${recordID}\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [0, 13, 6, 8]\n - title: Contact Actions\n options:\n buttons:\n - label: Create a new Case for this Contact\n script: ContactCreateNewCase\n variant: primary\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Automation\n xywh: [6, 13, 3, 8]\n visible: false\n visible: true\n - handle: Quotes\n title: Quotes\n blocks:\n - title: List of Quotes\n options:\n fields:\n - name: QuoteNumber\n - name: Name\n - name: OpportunityId\n - name: Discount\n - name: TotalPrice\n - name: Tax\n - name: GrandTotal\n - name: createdAt\n - name: ExpirationDate\n module: Quote\n page: RecordPageForModuleQuote\n perPage: 20\n presort: createdAt DESC\n kind: RecordList\n xywh: [0, 0, 12, 20]\n pages:\n - handle: RecordPageForModuleQuote\n module: Quote\n title: Record page for module \"Quote\"\n blocks:\n - title: Quote Information\n options:\n fields:\n - name: QuoteNumber\n - name: Name\n - name: OpportunityId\n - name: ExpirationDate\n - name: Status\n - name: Description\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [0, 0, 4, 12]\n - title: Totals\n options:\n fields:\n - name: PricebookId\n - name: Subtotal\n - name: Discount\n - name: ShippingHandling\n - name: TotalPrice\n - name: Tax\n - name: GrandTotal\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [8, 0, 4, 12]\n - title: Primary contact data\n options:\n fields:\n - name: AccountId\n - name: ContactId\n - name: Email\n - name: Phone\n - name: createdBy\n - name: createdAt\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [4, 0, 4, 12]\n - title: Bill To\n options:\n fields:\n - name: BillingName\n - name: BillingStreet\n - name: BillingCity\n - name: BillingState\n - name: BillingPostalCode\n - name: BillingCountry\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [0, 20, 4, 9]\n - title: Quote To\n options:\n fields:\n - name: QuoteToName\n - name: QuoteToStreet\n - name: QuoteToCity\n - name: QuoteToState\n - name: QuoteToPostalCode\n - name: QuoteToCountry\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [4, 20, 4, 9]\n - title: Ship To\n options:\n fields:\n - name: ShippingName\n - name: ShippingStreet\n - name: ShippingCity\n - name: ShippingState\n - name: ShippingPostalCode\n - name: ShippingCountry\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [8, 20, 4, 9]\n - title: Quote Line Items\n options:\n fields:\n - name: ProductId\n - name: UnitPrice\n - name: Quantity\n - name: Subtotal\n - name: Discount\n - name: TotalPrice\n - name: ListPrice\n module: QuoteLineItem\n page: RecordPageForModuleQuoteLineItem\n perPage: 5\n prefilter: QuoteId = ${recordID}\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [0, 12, 8, 8]\n - title: Notes\n options:\n fields:\n - name: Title\n - name: Body\n - name: createdAt\n module: Note\n page: RecordPageForModuleNote\n perPage: 5\n prefilter: QuoteId = ${recordID}\n presort: createdAt DESC\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [0, 29, 4, 8]\n - title: Events\n options:\n fields:\n - name: Type\n - name: Subject\n - name: ActivityDate\n module: Event\n page: RecordPageForModuleEvent\n perPage: 5\n prefilter: QuoteId = ${recordID}\n presort: ActivityDate DESC\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [4, 29, 4, 8]\n - title: Tasks\n options:\n fields:\n - name: Type\n - name: Subject\n - name: Status\n - name: ActivityDate\n module: Task\n page: RecordPageForModuleTask\n perPage: 5\n prefilter: QuoteId = ${recordID}\n presort: ActivityDate DESC\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [8, 29, 4, 8]\n - title: Quote Actions\n options:\n buttons:\n - label: Submit this Quote for approval\n script: QuoteSubmitQuoteForApproval\n variant: primary\n - label: Approve this Quote\n script: QuoteApproveQuote\n variant: primary\n - label: Send this Quote via email to the primary contact\n script: QuoteSendQuoteToPrimaryContact\n variant: primary\n - label: Send this Quote to a custom email\n script: QuoteSendQuoteToCustomEmail\n variant: primary\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Automation\n xywh: [8, 12, 4, 8]\n pages:\n - handle: RecordPageForModuleQuoteLineItem\n module: QuoteLineItem\n title: Record page for module \"QuoteLineItem\"\n blocks:\n - title: Quote Line Item Information\n options:\n fields:\n - name: QuoteId\n - name: LineItemNumber\n - name: LineItemDescription\n - name: ProductId\n - name: ListPrice\n - name: UnitPrice\n - name: Quantity\n - name: Subtotal\n - name: Discount\n - name: TotalPrice\n kind: Record\n xywh: [0, 0, 4, 19]\n visible: false\n visible: false\n visible: true\n - handle: Products\n title: Products\n blocks:\n - title: List of Products\n options:\n fields:\n - name: Name\n - name: ProductCode\n - name: Description\n - name: Family\n module: Product\n page: RecordPageForModuleProduct\n perPage: 20\n presort: Name ASC\n kind: RecordList\n xywh: [0, 0, 12, 20]\n pages:\n - handle: RecordPageForModuleProduct\n module: Product\n title: Record page for module \"Product\"\n blocks:\n - title: Product Details\n options:\n fields:\n - name: Name\n - name: ProductCode\n - name: Family\n - name: Description\n - name: IsActive\n kind: Record\n xywh: [0, 0, 6, 10]\n - title: Appears in the following Price Books\n options:\n fields:\n - name: PricebookId\n - name: UnitPrice\n hideAddButton: true\n module: PricebookEntry\n page: RecordPageForModulePricebookEntry\n perPage: 5\n prefilter: ProductId = ${recordID}\n kind: RecordList\n xywh: [6, 0, 6, 10]\n - title: Related Cases\n options:\n fields:\n - name: CaseNumber\n - name: Subject\n - name: Status\n hideAddButton: true\n module: Case\n page: RecordPageForModuleCase\n perPage: 5\n prefilter: ProductId = ${recordID}\n presort: CaseNumber DESC\n kind: RecordList\n xywh: [0, 10, 6, 8]\n - title: Notes\n options:\n fields:\n - name: Title\n - name: Body\n - name: createdAt\n module: Note\n page: RecordPageForModuleNote\n perPage: 5\n prefilter: ProductId = ${recordID}\n presort: createdAt DESC\n kind: RecordList\n xywh: [6, 10, 6, 8]\n visible: false\n - handle: PriceBook\n title: Price book\n blocks:\n - title: Price books\n options:\n fields:\n - name: Name\n - name: Description\n - name: IsStandard\n - name: IsActive\n module: Pricebook\n page: RecordPageForModulePricebook\n perPage: 20\n kind: RecordList\n xywh: [0, 0, 12, 20]\n pages:\n - handle: RecordPageForModuleCaseContactRole\n module: CaseContactRole\n title: Record page for module \"CaseContactRole\"\n blocks:\n - title: Case Contact Role Details\n options:\n fields:\n - name: CasesId\n - name: ContactId\n - name: Role\n - name: IsPrimary\n kind: Record\n xywh: [0, 0, 5, 16]\n visible: false\n - handle: RecordPageForModulePricebook\n module: Pricebook\n title: Record page for module \"Pricebook\"\n blocks:\n - title: Price Book Details\n options:\n fields:\n - name: Name\n - name: Description\n - name: IsStandard\n - name: IsActive\n kind: Record\n xywh: [0, 0, 6, 14]\n - title: Price Book Entries\n options:\n fields:\n - name: ProductId\n - name: UnitPrice\n module: PricebookEntry\n page: RecordPageForModulePricebookEntry\n perPage: 12\n prefilter: PricebookId = ${recordID}\n kind: RecordList\n xywh: [6, 0, 6, 14]\n - title: Notes\n options:\n fields:\n - name: Title\n - name: Body\n - name: createdAt\n module: Note\n page: RecordPageForModuleNote\n perPage: 5\n prefilter: PricebookId = ${recordID}\n presort: createdAt DESC\n kind: RecordList\n xywh: [0, 14, 12, 8]\n visible: false\n visible: true\n visible: true\n - handle: Contracts\n title: Contracts\n blocks:\n - title: List of Contracts\n options:\n fields:\n - name: ContractNumber\n - name: AccountId\n - name: Status\n - name: StartDate\n - name: EndDate\n - name: ContractTerm\n module: Contract\n page: RecordPageForModuleContract\n perPage: 20\n presort: createdAt DESC\n kind: RecordList\n xywh: [0, 0, 12, 20]\n pages:\n - handle: RecordPageForModuleContract\n module: Contract\n title: Record page for module \"Contract\"\n blocks:\n - title: Contract Details\n options:\n fields:\n - name: AccountId\n - name: ContractNumber\n - name: Status\n - name: StartDate\n - name: EndDate\n - name: ContractTerm\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [0, 0, 4, 12]\n - title: Contract Billing Address\n options:\n fields:\n - name: BillingStreet\n - name: BillingCity\n - name: BillingState\n - name: BillingPostalCode\n - name: BillingCountry\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [0, 12, 4, 9]\n - title: Contract Description and Special Terms\n options:\n fields:\n - name: OwnerId\n - name: Description\n - name: SpecialTerms\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [4, 0, 4, 12]\n - title: Contract Files\n options:\n fields:\n - name: File1\n - name: File2\n - name: File3\n - name: File4\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [8, 0, 4, 12]\n - title: Contract Shipping Address\n options:\n fields:\n - name: ShippingStreet\n - name: ShippingCity\n - name: ShippingState\n - name: ShippingPostalCode\n - name: ShippingCountry\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [4, 12, 4, 9]\n - title: Notes\n options:\n fields:\n - name: Title\n - name: Body\n - name: createdAt\n module: Note\n page: RecordPageForModuleNote\n perPage: 5\n prefilter: ContractId = ${recordID}\n presort: createdAt DESC\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [0, 21, 4, 8]\n - title: Events\n options:\n fields:\n - name: Type\n - name: Subject\n - name: ActivityDate\n module: Event\n page: RecordPageForModuleEvent\n perPage: 5\n prefilter: ContractId = ${recordID}\n presort: ActivityDate DESC\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [4, 21, 4, 8]\n - title: Tasks\n options:\n fields:\n - name: Type\n - name: Subject\n - name: Status\n - name: ActivityDate\n module: Task\n page: RecordPageForModuleTask\n perPage: 5\n prefilter: ContractId = ${recordID}\n presort: ActivityDate DESC\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [8, 21, 4, 8]\n pages:\n - handle: RecordPageForModuleContractLineItem\n module: ContractLineItem\n title: Record page for module \"ContractLineItem\"\n blocks:\n - title: Contract Line Item Details\n options:\n fields:\n - name: LineItemNumber\n - name: Description\n - name: StartDate\n - name: EndDate\n - name: Status\n kind: Record\n xywh: [0, 0, 4, 11]\n - title: Contract Line Item Pricing\n options:\n fields:\n - name: UnitPrice\n - name: Quantity\n - name: Subtotal\n - name: Discount\n - name: TotalPrice\n kind: Record\n xywh: [4, 0, 4, 11]\n - title: Notes\n options:\n fields:\n - name: Title\n - name: Body\n - name: createdAt\n module: Note\n page: RecordPageForModuleNote\n perPage: 5\n prefilter: ContractLineItemId = ${recordID}\n kind: RecordList\n xywh: [8, 0, 4, 11]\n visible: false\n - handle: RecordPageForModuleEntitlement\n module: Entitlement\n title: Record page for module \"Entitlement\"\n blocks:\n - title: Entitlement Details\n options:\n fields:\n - name: Name\n - name: Entitlement Process\n - name: CasesPerEntitlement\n - name: Type\n - name: RemainingCases\n - name: IsPerIncident\n - name: StartDate\n - name: EndDate\n - name: Status\n kind: Record\n xywh: [0, 0, 4, 13]\n - title: Other Information\n options:\n fields:\n - name: AccountId\n - name: ContractLineItemId\n - name: CreatedById\n - name: CreatedDate\n - name: LastModifiedById\n - name: LastModifiedDate\n kind: Record\n xywh: [4, 0, 4, 13]\n - title: Notes\n options:\n fields:\n - name: Title\n - name: Body\n module: Note\n page: RecordPageForModuleNote\n perPage: 5\n prefilter: EntitlementId = ${recordID}\n kind: RecordList\n xywh: [6, 13, 6, 7]\n - title: Entitlement Templates\n options:\n fields:\n - name: Name\n - name: Type\n - name: CasesPerEntitlement\n - name: IsPerIncident\n - name: Term\n module: EntitlementTemplate\n page: RecordPageForModuleEntitlementTemplate\n perPage: 5\n prefilter: EntitlementId = ${recordID}\n kind: RecordList\n xywh: [0, 13, 6, 7]\n - title: Entitlement Contacts\n options:\n fields:\n - name: ContactId\n - name: Name\n module: EntitlementContact\n page: RecordPageForModuleEntitlementContact\n perPage: 8\n prefilter: EntitlementId = ${recordID}\n kind: RecordList\n xywh: [8, 0, 4, 13]\n pages:\n - handle: RecordPageForModuleEntitlementTemplate\n module: EntitlementTemplate\n title: Record page for module \"EntitlementTemplate\"\n blocks:\n - title: Entitlement Template Details\n options:\n fields:\n - name: Name\n - name: Type\n - name: CasesPerEntitlement\n - name: IsPerIncident\n - name: Term\n - name: BusinessHours\n kind: Record\n xywh: [0, 0, 4, 14]\n visible: false\n - handle: RecordPageForModuleEntitlementContact\n module: EntitlementContact\n title: Record page for module \"EntitlementContact\"\n blocks:\n - title: Entitlement Contact Details\n options:\n fields:\n - name: EntitlementId\n - name: ContactId\n - name: Name\n kind: Record\n xywh: [0, 0, 4, 14]\n visible: false\n visible: false\n - handle: RecordPageForModuleContractContactRole\n module: ContractContactRole\n title: Record page for module \"ContractContactRole\"\n blocks:\n - title: Contract Contact Role Details\n options:\n fields:\n - name: ContractId\n - name: ContactId\n - name: Role\n - name: IsPrimary\n kind: Record\n xywh: [0, 0, 4, 16]\n visible: false\n visible: false\n visible: true\n - handle: Cases\n title: Cases\n blocks:\n - title: List of Cases\n options:\n fields:\n - name: CaseNumber\n - name: Subject\n - name: Status\n - name: CreatedDate\n - name: OwnerId\n - name: createdAt\n module: Case\n page: RecordPageForModuleCase\n perPage: 20\n presort: createdAt DESC\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [0, 0, 12, 20]\n pages:\n - handle: RecordPageForModuleCase\n module: Case\n title: Record page for module \"Case\"\n blocks:\n - title: Case Main Information\n options:\n fields:\n - name: CaseNumber\n - name: Subject\n - name: AccountId\n - name: ContactId\n - name: SuppliedName\n - name: SuppliedEmail\n - name: SuppliedPhone\n kind: Record\n xywh: [0, 0, 3, 14]\n - title: Case Details\n options:\n fields:\n - name: Type\n - name: Description\n - name: File\n - name: Origin\n - name: ProductId\n kind: Record\n xywh: [3, 0, 3, 14]\n - title: Case Status\n options:\n fields:\n - name: Status\n - name: OwnerId\n - name: CreatedDate\n - name: Priority\n - name: IsEscalated\n - name: IsClosed\n - name: ClosedDate\n - name: Reason\n kind: Record\n xywh: [9, 0, 3, 14]\n - title: Notes\n options:\n fields:\n - name: Title\n - name: Body\n - name: createdAt\n module: Note\n page: RecordPageForModuleNote\n perPage: 5\n prefilter: CaseId = ${recordID}\n presort: createdAt DESC\n kind: RecordList\n xywh: [0, 22, 4, 8]\n - title: Events\n options:\n fields:\n - name: Type\n - name: Subject\n - name: ActivityDate\n module: Event\n page: RecordPageForModuleEvent\n perPage: 5\n prefilter: CaseId = ${recordID}\n presort: ActivityDate DESC\n kind: RecordList\n xywh: [4, 22, 5, 8]\n - title: Tasks\n options:\n fields:\n - name: Type\n - name: Subject\n - name: Status\n - name: ActivityDate\n module: Task\n page: RecordPageForModuleTask\n perPage: 5\n prefilter: CaseId = ${recordID}\n presort: ActivityDate DESC\n kind: RecordList\n xywh: [9, 22, 3, 8]\n - title: Case Updates\n options:\n fields:\n - name: Type\n - name: Description\n - name: File\n - name: createdBy\n - name: createdAt\n module: CaseUpdate\n page: RecordPageForModuleCaseUpdate\n perPage: 5\n prefilter: CaseId = ${recordID}\n presort: createdAt DESC\n kind: RecordList\n xywh: [0, 14, 9, 8]\n - title: Case Actions\n options:\n buttons:\n - label: Set Case status to Working\n script: CaseSetStatusToWorking\n variant: primary\n - label: Set Case status to Closed\n script: CaseSetStatusToClosed\n variant: primary\n - label: Inform the contact via email of the Case's solution\n script: CaseInformContactOfSolution\n variant: primary\n kind: Automation\n xywh: [9, 14, 3, 8]\n - title: Case Solution\n options:\n fields:\n - name: SolutionName\n - name: SolutionNote\n - name: SolutionFile\n - name: SolutionId\n - name: SubmitAsSolution\n kind: Record\n xywh: [6, 0, 3, 14]\n pages:\n - handle: RecordPageForModuleCaseUpdate\n module: CaseUpdate\n title: Record page for module \"CaseUpdate\"\n blocks:\n - title: Case Update\n options:\n fields:\n - name: CaseId\n - name: Description\n - name: Type\n - name: File\n - name: IsSolution\n - name: createdBy\n - name: createdAt\n kind: Record\n xywh: [0, 0, 4, 20]\n visible: false\n - handle: RecordPageForModuleCaseMilestone\n module: CaseMilestone\n title: Record page for module \"CaseMilestone\"\n blocks:\n - title: Case Milestone Details\n options:\n fields:\n - name: CaseId\n - name: TargetDate\n - name: TargetResponseInDays\n - name: TargetResponseInHrs\n - name: TargetResponseInMins\n - name: StartDate\n - name: CompletionDate\n - name: IsViolated\n - name: IsCompleted\n kind: Record\n xywh: [0, 0, 5, 19]\n pages:\n - handle: RecordPageForModuleMilestoneType\n module: MilestoneType\n title: Record page for module \"MilestoneType\"\n blocks:\n - title: Case Milestone Type Details\n options:\n fields:\n - name: Name\n - name: Description\n - name: RecurrenceType\n kind: Record\n xywh: [0, 0, 4, 15]\n visible: false\n visible: false\n visible: false\n - handle: Solutions\n title: Solutions\n blocks:\n - title: List of Solutions\n options:\n fields:\n - name: SolutionNumber\n - name: SolutionName\n - name: SolutionNote\n - name: CaseId\n - name: ProductId\n module: Solution\n page: RecordPageForModuleSolution\n perPage: 20\n presort: createdAt DESC\n kind: RecordList\n xywh: [0, 0, 12, 20]\n pages:\n - handle: RecordPageForModuleSolution\n module: Solution\n title: Record page for module \"Solution\"\n blocks:\n - title: Solution Details\n options:\n fields:\n - name: SolutionNumber\n - name: SolutionName\n - name: SolutionNote\n - name: File\n - name: CaseId\n - name: ProductId\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [0, 0, 5, 17]\n visible: false\n visible: true\n visible: true\n - handle: Campaigns\n title: Campaigns\n blocks:\n - title: List of Campaigns\n options:\n fields:\n - name: Name\n - name: ParentId\n - name: Type\n - name: Status\n - name: StartDate\n - name: EndDate\n module: Campaigns\n page: RecordPageForModuleCampaign\n perPage: 20\n prefilter: \"\"\n presort: createdAt DESC\n kind: RecordList\n xywh: [0, 0, 12, 20]\n pages:\n - handle: RecordPageForModuleCampaign\n module: Campaigns\n title: Record page for module \"Campaign\"\n blocks:\n - title: Campaign Details\n options:\n fields:\n - name: Name\n - name: IsActive\n - name: ParentId\n - name: Type\n - name: OwnerId\n - name: Status\n - name: StartDate\n - name: EndDate\n kind: Record\n xywh: [0, 0, 4, 13]\n - title: Campaign Planning\n options:\n fields:\n - name: BudgetedCost\n - name: ActualCost\n - name: ExpectedRevenue\n - name: CreatedById\n - name: CreatedDate\n - name: Description\n kind: Record\n xywh: [4, 0, 4, 13]\n - title: Campaign Statistics\n options:\n fields:\n - name: NumberOfLeads\n - name: NumberOfConvertedLeads\n - name: NumberOfContacts\n - name: NumberOfOpportunities\n - name: NumberOfWonOpportunities\n - name: AmountAllOpportunities\n - name: AmountWonOpportunities\n kind: Record\n xywh: [8, 0, 4, 13]\n - title: Campaign Members\n options:\n fields:\n - name: LeadId\n - name: ContactId\n - name: Status\n module: CampaignMember\n page: RecordPageForModuleCampaignMember\n perPage: 5\n prefilter: CampaignId = ${recordID}\n kind: RecordList\n xywh: [0, 13, 8, 8]\n - title: Generated Opportunities\n options:\n fields:\n - name: Name\n - name: StageName\n - name: Amount\n - name: CloseDate\n module: Opportunity\n page: RecordPageForModuleOpportunity\n perPage: 5\n prefilter: CampaignId = ${recordID}\n kind: RecordList\n xywh: [0, 21, 8, 8]\n - title: Notes\n options:\n fields:\n - name: Title\n - name: Body\n - name: createdAt\n module: Note\n page: RecordPageForModuleNote\n perPage: 5\n prefilter: CampaignId = ${recordID}\n presort: createdAt DESC\n kind: RecordList\n xywh: [8, 21, 4, 8]\n pages:\n - handle: RecordPageForModuleCampaignMember\n module: CampaignMember\n title: Record page for module \"CampaignMember\"\n blocks:\n - title: Campaign Member Details\n options:\n fields:\n - name: CampaignId\n - name: LeadId\n - name: ContactId\n - name: HasResponded\n - name: FirstRespondedDate\n - name: Status\n kind: Record\n xywh: [0, 0, 5, 13]\n visible: false\n visible: false\n visible: true\n - handle: Tasks\n title: Tasks\n blocks:\n - title: List of Tasks\n options:\n fields:\n - name: Subject\n - name: Status\n - name: LeadId\n - name: AccountId\n - name: ContactId\n - name: OpportunityId\n - name: QuoteId\n - name: ContractId\n - name: CaseId\n - name: ActivityDate\n module: Task\n page: RecordPageForModuleTask\n perPage: 20\n prefilter: \"\"\n presort: ActivityDate DESC\n kind: RecordList\n xywh: [0, 0, 12, 20]\n pages:\n - handle: RecordPageForModuleTask\n module: Task\n title: Record page for module \"Task\"\n blocks:\n - title: Task Details\n options:\n fields:\n - name: Subject\n - name: Description\n - name: Type\n kind: Record\n xywh: [0, 0, 4, 20]\n - title: Related To\n options:\n fields:\n - name: LeadId\n - name: AccountId\n - name: ContactId\n - name: OpportunityId\n - name: QuoteId\n - name: ContractId\n kind: Record\n xywh: [8, 0, 4, 20]\n - title: Task Status\n options:\n fields:\n - name: Status\n - name: ActivityDate\n - name: Priority\n - name: createdBy\n - name: createdAt\n kind: Record\n xywh: [4, 0, 4, 20]\n visible: false\n visible: true\n - handle: Events\n title: Events\n blocks:\n - title: List of Events\n options:\n fields:\n - name: WhoId\n - name: Subject\n - name: ActivityDate\n - name: StartDateTime\n - name: EndDateTime\n - name: LeadId\n - name: AccountId\n - name: OpportunityId\n - name: createdBy\n module: Event\n page: RecordPageForModuleEvent\n perPage: 20\n kind: RecordList\n xywh: [0, 0, 12, 20]\n pages:\n - handle: RecordPageForModuleEvent\n module: Event\n title: Record page for module \"Event\"\n blocks:\n - title: Event Data\n options:\n fields:\n - name: Subject\n - name: Description\n - name: Location\n - name: createdAt\n - name: createdBy\n kind: Record\n xywh: [0, 0, 4, 20]\n - title: Related Objects\n options:\n fields:\n - name: LeadId\n - name: AccountId\n - name: ContactId\n - name: OpportunityId\n - name: QuoteId\n - name: ContractId\n - name: CaseId\n kind: Record\n xywh: [8, 0, 4, 20]\n - title: Event Date and Time\n options:\n fields:\n - name: ActivityDate\n - name: DurationInMinutes\n - name: EndDateTime\n - name: IsAllDayEvent\n kind: Record\n xywh: [4, 0, 4, 20]\n visible: false\n visible: true\n - handle: Notes\n title: Notes\n blocks:\n - title: List of Notes\n options:\n fields:\n - name: Title\n - name: LeadId\n - name: AccountId\n - name: ContactId\n - name: OpportunityId\n - name: QuoteId\n - name: ContractId\n - name: CaseId\n - name: createdAt\n - name: createdBy\n module: Note\n page: RecordPageForModuleNote\n perPage: 20\n presort: createdAt DESC\n kind: RecordList\n xywh: [0, 0, 12, 20]\n pages:\n - handle: RecordPageForModuleNote\n module: Note\n title: Record page for module \"Note\"\n blocks:\n - title: Note\n options:\n fields:\n - name: Title\n - name: Body\n - name: createdAt\n - name: createdBy\n kind: Record\n xywh: [0, 0, 4, 20]\n - title: Files\n options:\n fields:\n - name: FileAdd1\n - name: FileAdd2\n - name: FileAdd3\n - name: FileAdd4\n kind: Record\n xywh: [4, 0, 4, 20]\n - title: Related Objects\n options:\n fields:\n - name: LeadId\n - name: AccountId\n - name: ContactId\n - name: OpportunityId\n - name: QuoteId\n - name: ContractId\n - name: CaseId\n kind: Record\n xywh: [8, 0, 4, 20]\n visible: false\n visible: true\n - handle: Dashboards\n title: Dashboards\n blocks:\n - title: Content\n options:\n body:

Each page in Corteza can be a dashboard. You can add text blocks,\n record lists or charts to make a Sales Activities Dashboard, an executive\n dashboard, or any other dashboard you may need, and set the access\n permissions to define who can view or edit the dashboard.

\n kind: Content\n xywh: [0, 0, 5, 16]\n - title: Leads per day\n options:\n chart: LeadsPerDay\n kind: Chart\n xywh: [5, 0, 3, 16]\n pages:\n - handle: Settings\n title: Settings\n description: A list of default values which are called upon in automation\n processes.\n blocks:\n - title: Settings\n options:\n fields:\n - name: createdAt\n - name: updatedAt\n hidePaging: true\n module: Settings\n page: RecordPageForModuleSettings\n perPage: 1\n kind: RecordList\n xywh: [0, 0, 12, 7]\n pages:\n - handle: RecordPageForModuleSettings\n module: Settings\n title: Record page for module \"Settings\"\n blocks:\n - title: Quote Settings\n options:\n fields:\n - name: QuoteNextNumber\n - name: QuoteExpirationDays\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [3, 0, 3, 12]\n - title: Opportunity Settings\n options:\n fields:\n - name: OpportunityCloseDateDays\n - name: OpportunityProbability\n - name: OpportunityForecaseCategory\n - name: OpportunityStagename\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [0, 0, 3, 12]\n - title: Contract Settings\n options:\n fields:\n - name: ContractNextNumber\n - name: ContractDefaultTime\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [6, 0, 3, 12]\n - title: Case Settings\n options:\n fields:\n - name: CaseNextNumber\n - name: SolutionNextNumber\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [9, 0, 3, 12]\n visible: false\n visible: true\n visible: true\n - handle: UnpublishedModules\n title: Unpublished modules\n pages:\n - handle: Questions\n title: Questions\n visible: false\n blocks:\n - title: List of Questions\n options:\n fields:\n - name: Title\n - name: CreatedDate\n - name: NumReplies\n module: Question\n page: RecordPageForModuleQuestion\n perPage: 20\n presort: createdAt DESC\n kind: RecordList\n xywh: [0, 0, 12, 20]\n pages:\n - handle: RecordPageForModuleQuestion\n module: Question\n title: Record page for module \"Question\"\n blocks:\n - title: Question Details\n options:\n fields:\n - name: Title\n - name: Body\n - name: NumReplies\n - name: BestReplyId\n - name: UpVotes\n - name: VoteScore\n kind: Record\n xywh: [0, 0, 4, 13]\n - title: Replies\n options:\n fields:\n - name: Body\n - name: Name\n - name: UpVotes\n - name: DownVotes\n - name: VoteTotal\n module: Reply\n page: RecordPageForModuleReply\n perPage: 5\n prefilter: QuestionId = ${recordID}\n kind: RecordList\n xywh: [0, 13, 12, 7]\n - title: Votes\n options:\n fields:\n - name: Score\n module: Vote\n page: RecordPageForModuleVote\n perPage: 8\n prefilter: QuestionId = ${recordID}\n kind: RecordList\n xywh: [4, 0, 8, 13]\n pages:\n - handle: RecordPageForModuleVote\n module: Vote\n title: Record page for module \"Vote\"\n blocks:\n - title: Vote Score\n options:\n fields:\n - name: Score\n - name: CreatedById\n - name: CreatedDate\n kind: Record\n xywh: [0, 0, 4, 13]\n - title: Related Object\n options:\n fields:\n - name: IdeaId\n - name: ReplyId\n - name: QuestionId\n kind: Record\n xywh: [4, 0, 4, 13]\n visible: false\n - handle: RecordPageForModuleReply\n module: Reply\n title: Record page for module \"Reply\"\n blocks:\n - title: Reply Details\n options:\n fields:\n - name: QuestionId\n - name: IdeaId\n - name: Body\n - name: Name\n - name: UpVotes\n - name: DownVotes\n - name: VoteTotal\n kind: Record\n xywh: [0, 0, 6, 20]\n - title: Votes\n options:\n fields:\n - name: Score\n - name: CreatedById\n - name: CreatedDate\n module: Vote\n page: RecordPageForModuleVote\n perPage: 20\n prefilter: ReplyId = ${recordID}\n kind: RecordList\n xywh: [6, 0, 6, 20]\n visible: false\n visible: false\n - handle: Ideas\n title: Ideas\n blocks:\n - title: List of Ideas\n options:\n fields:\n - name: Title\n - name: Categories\n - name: ParentIdeaId\n - name: VoteScore\n - name: Status\n module: Idea\n page: RecordPageForModuleIdea\n perPage: 20\n presort: createdAt DESC\n kind: RecordList\n xywh: [0, 0, 12, 20]\n pages:\n - handle: RecordPageForModuleIdea\n module: Idea\n title: Record page for module \"Idea\"\n blocks:\n - title: Idea Details\n options:\n fields:\n - name: Title\n - name: Body\n - name: Categories\n - name: ParentIdeaId\n - name: CreatorName\n - name: Status\n - name: VoteScore\n - name: VoteTotal\n kind: Record\n xywh: [0, 0, 4, 20]\n - title: Votes\n options:\n fields:\n - name: Score\n - name: CreatedById\n - name: CreatedDate\n module: Vote\n page: RecordPageForModuleVote\n perPage: 20\n prefilter: IdeaId = ${recordID}\n kind: RecordList\n xywh: [8, 0, 4, 20]\n - title: Replies\n options:\n fields:\n - name: Body\n - name: Name\n - name: UpVotes\n - name: DownVotes\n - name: VoteTotal\n module: Reply\n page: RecordPageForModuleReply\n perPage: 20\n prefilter: IdeaId = ${recordID}\n kind: RecordList\n xywh: [4, 0, 4, 20]\n visible: false\n visible: false\n - handle: Emails\n title: Emails\n blocks:\n - title: List of Email Templates\n options:\n fields:\n - name: Name\n - name: IsActive\n - name: createdBy\n module: EmailTemplate\n page: RecordPageForModuleEmailTemplate\n perPage: 20\n presort: createdAt DESC\n kind: RecordList\n xywh: [0, 0, 12, 20]\n pages:\n - handle: RecordPageForModuleEmailTemplate\n module: EmailTemplate\n title: Record page for module \"EmailTemplate\"\n blocks:\n - title: Email Template Details\n options:\n fields:\n - name: Name\n - name: Subject\n - name: Description\n - name: Body\n - name: IsActive\n kind: Record\n xywh: [0, 0, 6, 19]\n visible: false\n visible: false\n visible: false\nPK\x07\x08\xa7\xd8\xefxm \x01\x00m \x01\x00PK\x03\x04\x14\x00\x08\x00\x00\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1d\x00 \x001400_pages_service_cloud.yamlUT\x05\x00\x01\x80Cm8namespace: service-cloud\npages:\n Home:\n title: Home\n blocks:\n - title: My Cases\n options:\n fields:\n - name: Number\n - name: Subject\n - name: Status\n - name: Priority\n module: Case\n page: RecordPageForModuleCase\n perPage: 20\n prefilter: CaseOwner = ${userID}\n presort: createdAt DESC\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [0, 0, 6, 16]\n - title: New cases per month\n options:\n chart: NewCasesByMonth\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Chart\n xywh: [6, 0, 3, 6]\n - title: Cases by priority\n options:\n chart: CasesByPriority\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Chart\n xywh: [6, 6, 3, 5]\n - title: Cases by category\n options:\n chart: CasesByCategory\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Chart\n xywh: [6, 11, 3, 5]\n - title: Closed cases per month\n options:\n chart: ClosedCasesPerMonth\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Chart\n xywh: [9, 0, 3, 6]\n - title: Cases by status\n options:\n chart: CasesByStatus\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Chart\n xywh: [9, 6, 3, 5]\n - title: Total cost per case category (in $)\n options:\n chart: CostPerCategory\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Chart\n xywh: [9, 11, 3, 5]\n visible: true\n Cases:\n title: Cases\n blocks:\n - title: All cases\n options:\n allowExport: true\n fields:\n - name: Number\n - name: Subject\n - name: ProductId\n - name: Category\n - name: Status\n - name: Priority\n - name: CaseOwner\n - name: createdAt\n module: Case\n page: RecordPageForModuleCase\n perPage: 20\n presort: createdAt DESC\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [0, 0, 9, 16]\n - title: Cases by priority\n options:\n chart: CasesByPriority\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Chart\n xywh: [9, 0, 3, 8]\n - title: Cases by category\n options:\n chart: CasesByCategory\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Chart\n xywh: [9, 8, 3, 8]\n pages:\n RecordPageForModuleCase:\n module: Case\n title: Record page for module \"Case\"\n blocks:\n - title: Case Description\n options:\n fields:\n - name: Number\n - name: Status\n - name: Category\n - name: Description\n - name: Priority\n - name: ProductId\n - name: Solution\n - name: CloseDate\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [0, 0, 3, 11]\n - title: Case Details\n options:\n fields:\n - name: CaseOwner\n - name: Escalated\n - name: AccountId\n - name: ContactId\n - name: MailingList\n - name: TotalTime\n - name: TotalCost\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [9, 0, 3, 11]\n - title: Case Subject\n options:\n fields:\n - name: Subject\n style:\n variants: {bodyBg: white, border: success, headerBg: white, headerText: success}\n kind: Record\n xywh: [3, 0, 6, 3]\n - title: Updates\n options:\n fields:\n - name: Type\n - name: Subject\n - name: Content\n - name: From\n - name: createdAt\n hideAddButton: true\n module: Update\n page: RecordPageForModuleUpdate\n perPage: 20\n prefilter: CaseId = ${recordID}\n presort: createdAt DESC\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [3, 5, 6, 13]\n - title: Related Attachments\n options:\n fields:\n - name: File\n module: Attachement\n page: RecordPageForModuleAttachement\n perPage: 20\n prefilter: CaseId = ${recordID}\n presort: \"\"\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [0, 11, 3, 7]\n - title: Search the Knowledge Base\n options:\n fields:\n - name: Number\n - name: Title\n hideAddButton: true\n module: KnowledgeBase\n page: RecordPageForModuleKnowledgeBase\n perPage: 20\n prefilter: \"\"\n presort: Number ASC\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [9, 11, 3, 7]\n - options:\n buttons:\n - label: Add Update to this Case\n script: CaseAddUpdate\n variant: primary\n - label: Send Email to Case Contact\n script: CaseSendEmail\n variant: primary\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Automation\n xywh: [3, 3, 6, 2]\n pages:\n RecordPageForModuleAttachement:\n module: Attachement\n title: Record page for module \"Attachement\"\n blocks:\n - title: Attachment Details\n options:\n fields:\n - name: Name\n - name: CaseId\n - name: File\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [0, 0, 5, 18]\n visible: false\n RecordPageForModuleUpdate:\n module: Update\n title: Record page for module \"Update\"\n blocks:\n - title: Content\n options:\n fields:\n - name: CaseId\n - name: Subject\n - name: Content\n - name: Type\n - name: From\n - name: To\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [0, 0, 8, 18]\n - title: Notifications\n options:\n fields:\n - name: ContactId\n - name: NotificationCaseCreator\n - name: NotificationCaseOwner\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [8, 0, 4, 7]\n - title: Other Information\n options:\n fields:\n - name: AccountId\n - name: Department\n - name: TimeSpend\n - name: Cost\n - name: createdAt\n - name: createdBy\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [8, 7, 4, 11]\n visible: false\n visible: false\n AllMyCases:\n title: All my cases\n blocks:\n - title: All my cases\n options:\n allowExport: true\n fields:\n - name: Number\n - name: Subject\n - name: Status\n - name: Priority\n - name: CaseOwner\n - name: createdAt\n module: Case\n page: RecordPageForModuleCase\n perPage: 20\n prefilter: ${userID} = CaseOwner\n presort: createdAt DESC\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [0, 0, 12, 16]\n visible: true\n MyNewCases:\n title: My new cases\n blocks:\n - title: My new cases\n options:\n allowExport: true\n fields:\n - name: Number\n - name: Subject\n - name: Status\n - name: Priority\n - name: CaseOwner\n - name: createdAt\n module: Case\n page: RecordPageForModuleCase\n perPage: 20\n prefilter: ${userID} = CaseOwner AND Status = 'New'\n presort: createdAt DESC\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [0, 0, 12, 16]\n visible: true\n visible: true\n Accounts:\n title: Accounts\n blocks:\n - title: Accounts\n options:\n allowExport: true\n fields:\n - name: AccountName\n - name: BillingCountry\n - name: OwnerId\n - name: Rating\n module: Account\n page: RecordPageForModuleAccount\n perPage: 20\n presort: AccountName ASC\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [0, 0, 9, 16]\n - title: Total time spent on cases per account (in hours)\n options:\n chart: TimePerAccount\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Chart\n xywh: [9, 0, 3, 8]\n - title: Total costs of cases per account (in $)\n options:\n chart: CostsPerAccount\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Chart\n xywh: [9, 8, 3, 8]\n pages:\n RecordPageForModuleAccount:\n module: Account\n title: Record page for module \"Account\"\n blocks:\n - title: Account Detail\n options:\n fields:\n - name: AccountName\n - name: Type\n - name: Industry\n - name: NumberOfEmployees\n - name: AnnualRevenue\n - name: Twitter\n - name: LinkedIn\n - name: Facebook\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [0, 0, 3, 12]\n - title: Account Address\n options:\n fields:\n - name: BillingStreet\n - name: BillingCity\n - name: BillingState\n - name: BillingPostalCode\n - name: BillingCountry\n - name: Phone\n - name: Website\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [3, 0, 3, 12]\n - title: Other Information\n options:\n fields:\n - name: TotalTime\n - name: TotalCost\n - name: Rating\n - name: ParentId\n - name: AccountSource\n - name: OwnerId\n - name: Description\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [6, 0, 3, 12]\n - title: Twitter Feed\n options:\n fields: []\n profileSourceField: Twitter\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: SocialFeed\n xywh: [9, 0, 3, 30]\n - title: Cases\n options:\n allowExport: true\n fields:\n - name: Number\n - name: Subject\n - name: Category\n - name: Priority\n - name: Status\n - name: TotalTime\n - name: TotalCost\n - name: createdAt\n module: Case\n page: RecordPageForModuleCase\n perPage: 20\n prefilter: ${recordID} = AccountId\n presort: createdAt DESC\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [0, 12, 9, 9]\n - title: Contacts\n options:\n allowExport: true\n fields:\n - name: RecordLabel\n module: Contact\n page: RecordPageForModuleContact\n perPage: 20\n prefilter: ${recordID} = AccountId\n presort: RecordLabel ASC\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [6, 21, 3, 9]\n - title: Entitlements\n options:\n allowExport: true\n fields:\n - name: ProductId\n - name: Name\n - name: StartDate\n - name: EndDate\n - name: Status\n - name: Type\n module: Entitlement\n page: RecordPageForModuleEntitlement\n perPage: 20\n prefilter: AccountId = ${recordID}\n presort: EndDate ASC\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [0, 21, 6, 9]\n visible: false\n Contacts:\n title: Contacts\n blocks:\n - title: Contacts\n options:\n allowExport: true\n fields:\n - name: FirstName\n - name: LastName\n - name: Email\n - name: Phone\n - name: AccountId\n - name: OwnerId\n - name: createdAt\n module: Contact\n page: RecordPageForModuleContact\n perPage: 20\n prefilter: \"\"\n presort: RecordLabel ASC\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [0, 0, 12, 16]\n pages:\n RecordPageForModuleContact:\n module: Contact\n title: Record page for module \"Contact\"\n blocks:\n - title: Personal Data\n options:\n fields:\n - name: FirstName\n - name: LastName\n - name: Title\n - name: Phone\n - name: Email\n - name: Twitter\n - name: Facebook\n - name: LinkedIn\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [0, 0, 3, 11]\n - title: Contact Address\n options:\n fields:\n - name: AccountId\n - name: IsPrimary\n - name: MailingStreet\n - name: MailingCity\n - name: MailingState\n - name: MailingPostalCode\n - name: MailingCountry\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [3, 0, 3, 11]\n - title: Other Information\n options:\n fields:\n - name: OwnerId\n - name: DoNotCall\n - name: HasOptedOutOfEmail\n - name: Description\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [6, 0, 3, 11]\n - title: Contact Twitter Feed\n options:\n fields: []\n profileSourceField: Twitter\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: SocialFeed\n xywh: [9, 0, 3, 30]\n - title: Cases related to this Contact\n options:\n allowExport: true\n fields:\n - name: Number\n - name: Status\n - name: Priority\n - name: Subject\n - name: TotalTime\n - name: TotalCost\n - name: createdAt\n module: Case\n page: RecordPageForModuleCase\n perPage: 20\n prefilter: ContactId = ${recordID}\n presort: createdAt DESC\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [0, 11, 9, 9]\n - title: Emails\n options:\n allowExport: true\n fields:\n - name: ToAddress\n - name: Subject\n - name: HtmlBody\n - name: EmailTemplateId\n - name: Status\n - name: MessageDate\n - name: createdAt\n module: EmailMessage\n page: RecordPageForModuleEmailMessage\n perPage: 20\n prefilter: ContactId = ${recordID}\n presort: createdAt DESC\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [0, 20, 9, 9]\n pages:\n RecordPageForModuleEmailMessage:\n module: EmailMessage\n title: Record page for module \"Email Message\"\n blocks:\n - title: Message\n options:\n fields:\n - name: Subject\n - name: HtmlBody\n style:\n variants: {bodyBg: white, border: primary, headerBg: white,\n headerText: primary}\n kind: Record\n xywh: [0, 0, 6, 16]\n - title: To\n options:\n fields:\n - name: ContactId\n - name: CaseId\n style:\n variants: {bodyBg: white, border: primary, headerBg: white,\n headerText: primary}\n kind: Record\n xywh: [6, 0, 3, 8]\n - title: Template\n options:\n fields:\n - name: EmailTemplateId\n style:\n variants: {bodyBg: white, border: primary, headerBg: white,\n headerText: primary}\n kind: Record\n xywh: [6, 8, 3, 8]\n - title: Status\n options:\n fields:\n - name: Status\n - name: MessageDate\n - name: createdBy\n - name: createdAt\n style:\n variants: {bodyBg: white, border: primary, headerBg: white,\n headerText: primary}\n kind: Record\n xywh: [9, 0, 3, 8]\n - title: Actions\n options:\n buttons:\n - label: Load selected tempate in to email message\n script: EmailTemplateLoad\n variant: primary\n - label: Send email to the contact\n script: EmailSend\n variant: success\n style:\n variants: {bodyBg: white, border: primary, headerBg: white,\n headerText: primary}\n kind: Automation\n xywh: [9, 8, 3, 8]\n visible: false\n visible: false\n visible: true\n Entitlements:\n title: Entitlements\n blocks:\n - title: Entitlements\n options:\n allowExport: true\n fields:\n - name: AccountId\n - name: ProductId\n - name: Name\n - name: Type\n - name: StartDate\n - name: EndDate\n - name: Status\n module: Entitlement\n page: RecordPageForModuleEntitlement\n perPage: 20\n presort: EndDate DESC\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [0, 0, 12, 16]\n pages:\n RecordPageForModuleEntitlement:\n module: Entitlement\n title: Record page for module \"Entitlement\"\n blocks:\n - title: Product Entitlement\n options:\n fields:\n - name: AccountId\n - name: ProductId\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [0, 0, 4, 15]\n - title: Entitlement Status\n options:\n fields:\n - name: Status\n - name: StartDate\n - name: EndDate\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [8, 0, 4, 15]\n - title: Entitlement Data\n options:\n fields:\n - name: Name\n - name: Type\n - name: Term\n - name: TermType\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [4, 0, 4, 15]\n visible: false\n visible: true\n visible: true\n Products:\n title: Products\n blocks:\n - title: Products\n options:\n allowExport: true\n fields:\n - name: ProductCode\n - name: Name\n - name: Family\n - name: Photo\n - name: IsActive\n - name: EntitlementTemplateId\n module: Product\n page: RecordPageForModuleProduct\n perPage: 20\n presort: ProductCode ASC\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [0, 0, 9, 16]\n - title: Time spent per product family (in hours)\n options:\n chart: TimeSpentPerProductFamily\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Chart\n xywh: [9, 0, 3, 8]\n - title: Cost per product family (in $)\n options:\n chart: CostPerProductFamily\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Chart\n xywh: [9, 8, 3, 8]\n pages:\n RecordPageForModuleProduct:\n module: Product\n title: Record page for module \"Product\"\n blocks:\n - title: Product Description\n options:\n fields:\n - name: ProductCode\n - name: Name\n - name: Family\n - name: EntitlementTemplateId\n - name: Description\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [0, 0, 3, 10]\n - title: Other Information\n options:\n fields:\n - name: IsActive\n - name: createdAt\n - name: createdBy\n - name: updatedAt\n - name: updatedBy\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [9, 0, 3, 10]\n - title: Entitlements for this product\n options:\n allowExport: true\n fields:\n - name: AccountId\n - name: ProductId\n - name: Name\n - name: Type\n - name: StartDate\n - name: EndDate\n - name: Status\n module: Entitlement\n page: RecordPageForModuleEntitlement\n perPage: 20\n prefilter: ProductId = ${recordID}\n presort: EndDate ASC\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [0, 10, 12, 8]\n - title: Cases related to this product\n options:\n fields:\n - name: Number\n - name: Subject\n - name: Status\n - name: Priority\n module: Case\n page: RecordPageForModuleCase\n perPage: 20\n prefilter: ProductId = ${recordID}\n presort: createdAt DESC\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [0, 18, 6, 7]\n - title: Knowledge Base items related to this product\n options:\n fields:\n - name: Number\n - name: Title\n - name: IsPublished\n module: KnowledgeBase\n page: RecordPageForModuleKnowledgeBase\n perPage: 20\n prefilter: ProductId = ${recordID}\n presort: Title ASC\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [6, 18, 6, 7]\n - title: Files\n options:\n fields:\n - name: Photo\n - name: Manual\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [6, 0, 3, 10]\n - title: Cases totals\n options:\n fields:\n - name: TotalTime\n - name: TotalCost\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [3, 0, 3, 10]\n visible: false\n EntitlementTemplates:\n title: Entitlement Templates\n blocks:\n - title: Entitlement Templates\n options:\n fields:\n - name: Name\n - name: Type\n - name: Term\n - name: TermType\n module: EntitlementTemplate\n page: RecordPageForModuleEntitlementTemplate\n perPage: 20\n presort: Name ASC\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [0, 0, 12, 16]\n pages:\n RecordPageForModuleEntitlementTemplate:\n module: EntitlementTemplate\n title: Record page for module \"EntitlementTemplate\"\n blocks:\n - title: Entitlement Template\n options:\n fields:\n - name: Name\n - name: Term\n - name: TermType\n - name: Type\n - name: createdAt\n - name: createdBy\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [0, 0, 6, 16]\n - title: Products that use this entitlements template\n options:\n allowExport: true\n fields:\n - name: ProductCode\n - name: Name\n - name: Family\n - name: Photo\n - name: IsActive\n module: Product\n page: RecordPageForModuleProduct\n perPage: 20\n prefilter: EntitlementTemplateId = ${recordID}\n presort: ProductCode ASC\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [6, 0, 6, 16]\n visible: false\n visible: true\n visible: true\n KnowledgeBase:\n title: Knowledge Base\n blocks:\n - title: Knowledge Base\n options:\n allowExport: true\n fields:\n - name: Number\n - name: Title\n - name: IsPublished\n - name: IsReviewed\n - name: Status\n module: KnowledgeBase\n page: RecordPageForModuleKnowledgeBase\n perPage: 20\n prefilter: \"\"\n presort: Number ASC\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [0, 0, 9, 16]\n - title: KB articles per type\n options:\n chart: KnowledgeBaseArticlesPerType\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Chart\n xywh: [9, 0, 3, 8]\n - title: KB articles created per day\n options:\n chart: KnowledgeBaseItemsCreatedPerDay\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Chart\n xywh: [9, 8, 3, 8]\n pages:\n RecordPageForModuleKnowledgeBase:\n module: KnowledgeBase\n title: Record page for module \"Knowledge Base\"\n blocks:\n - title: Details\n options:\n fields:\n - name: Content\n - name: File\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [3, 5, 6, 15]\n - title: Cases with this KB Item as Solution\n options:\n fields:\n - name: Number\n - name: Subject\n - name: createdAt\n module: Case\n page: RecordPageForModuleCase\n perPage: 20\n prefilter: Solution = ${recordID}\n presort: createdAt DESC\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [9, 0, 3, 20]\n - title: Title\n options:\n fields:\n - name: Title\n - name: Number\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: success}\n kind: Record\n xywh: [3, 0, 6, 5]\n - title: Details\n options:\n fields:\n - name: Type\n - name: Category\n - name: ProductId\n - name: Status\n - name: IsReviewed\n - name: IsPublished\n - name: createdAt\n - name: createdBy\n - name: updatedAt\n - name: updatedBy\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [0, 0, 3, 20]\n visible: false\n visible: true\n Departments:\n title: Departments\n blocks:\n - title: Departments\n options:\n allowExport: true\n fields:\n - name: Name\n - name: Employees\n - name: HourCost\n - name: TotalTime\n - name: TotalCost\n module: Department\n page: RecordPageForModuleDepartment\n perPage: 20\n presort: Name ASC\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [0, 0, 9, 16]\n - title: Total time spent per department (in hours)\n options:\n chart: TotalTimeSpentPerDepartment\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Chart\n xywh: [9, 0, 3, 8]\n - title: Total case costs per department (in $)\n options:\n chart: TotalCostPerDepartment\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Chart\n xywh: [9, 8, 3, 8]\n pages:\n RecordPageForModuleDepartment:\n module: Department\n title: Record page for module \"Department\"\n blocks:\n - title: Department details\n options:\n fields:\n - name: Name\n - name: Employees\n - name: HourCost\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [0, 0, 6, 6]\n - title: Total time and cost of department related to work on cases\n options:\n fields:\n - name: TotalTime\n - name: TotalCost\n - name: DepartmentSelect\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [6, 0, 6, 6]\n - title: Case updates related to the department\n options:\n allowExport: true\n fields:\n - name: CaseId\n - name: AccountId\n - name: ContactId\n - name: Type\n - name: Subject\n - name: TimeSpend\n - name: Cost\n - name: createdAt\n module: Update\n page: RecordPageForModuleUpdate\n perPage: 20\n prefilter: Department = ${recordID}\n presort: createdAt DESC\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [0, 6, 12, 10]\n visible: false\n visible: true\n Settings:\n title: Settings\n blocks:\n - title: Settings\n options:\n fields:\n - name: KBNextNumber\n - name: DefaultCostPerHour\n - name: DefaultDepartment\n - name: DefaultTimeUpdate\n - name: DefaultSupportChannel\n - name: DefaultCaseRecordLink\n - name: DefaultCaseEmailTemplate\n hideAddButton: true\n hidePaging: true\n hideSearch: true\n hideSorting: true\n module: Settings\n page: RecordPageForModuleSettings\n perPage: 20\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [0, 0, 12, 5]\n pages:\n RecordPageForModuleSettings:\n module: Settings\n title: Record page for module \"Settings\"\n blocks:\n - title: Settings\n options:\n fields:\n - name: KBNextNumber\n - name: DefaultCostPerHour\n - name: DefaultDepartment\n - name: DefaultTimeUpdate\n - name: DefaultSupportChannel\n - name: DefaultCaseRecordLink\n - name: DefaultCaseEmailTemplate\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [0, 0, 6, 17]\n visible: false\n EmailTemplates:\n title: Email Templates\n blocks:\n - title: Email Templates\n options:\n allowExport: true\n fields:\n - name: Name\n - name: Subject\n - name: Description\n - name: createdAt\n module: EmailTemplate\n page: RecordPageForModuleEmailTemplate\n perPage: 20\n presort: Name ASC\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [0, 0, 12, 16]\n pages:\n RecordPageForModuleEmailTemplate:\n module: EmailTemplate\n title: Record page for module \"Email Template\"\n blocks:\n - title: Template\n options:\n fields:\n - name: Name\n - name: Description\n - name: Subject\n - name: Body\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [0, 0, 8, 12]\n - title: Other Information\n options:\n fields:\n - name: createdBy\n - name: createdAt\n - name: updatedBy\n - name: updatedAt\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Record\n xywh: [8, 0, 4, 12]\n - title: Template is used in following emails\n options:\n allowExport: true\n fields:\n - name: Subject\n - name: CaseId\n - name: ContactId\n - name: ToAddress\n - name: Status\n - name: MessageDate\n module: EmailMessage\n page: RecordPageForModuleEmailMessage\n perPage: 20\n prefilter: EmailTemplateId = ${recordID}\n presort: createdAt DESC\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: RecordList\n xywh: [0, 12, 12, 10]\n visible: false\n visible: true\n visible: true\n Dashboard:\n title: Dashboard\n blocks:\n - title: Cases by category\n options:\n chart: CasesByCategory\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Chart\n xywh: [3, 18, 3, 6]\n - title: Cases by priority\n options:\n chart: CasesByPriority\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Chart\n xywh: [0, 18, 3, 6]\n - title: New cases per month\n options:\n chart: NewCasesByMonth\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Chart\n xywh: [0, 0, 3, 6]\n - title: Number of active entitlements\n options:\n chart: ActiveEntitlements\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Chart\n xywh: [9, 18, 3, 6]\n - title: Knowledge base articles per type\n options:\n chart: KnowledgeBaseArticlesPerType\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Chart\n xywh: [6, 24, 3, 6]\n - title: Closed cases per month\n options:\n chart: ClosedCasesPerMonth\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Chart\n xywh: [3, 0, 3, 6]\n - title: Average time spent per case (in hours)\n options:\n chart: AverageTimeSpentPerCase\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Chart\n xywh: [6, 18, 3, 6]\n - title: Total time spent per month (in hours)\n options:\n chart: TotalTimeSpentPerMonth\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Chart\n xywh: [6, 0, 3, 6]\n - title: Total cost per case category (in $)\n options:\n chart: CostPerCategory\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Chart\n xywh: [9, 6, 3, 6]\n - title: Total cost per month (in $)\n options:\n chart: TotalCostPerMonth\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Chart\n xywh: [9, 0, 3, 6]\n - title: Case updates per type\n options:\n chart: CaseUpdatesPerType\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Chart\n xywh: [3, 24, 3, 6]\n - title: Total time spent per category (in hours)\n options:\n chart: TotalTimeSpentPerCategory\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Chart\n xywh: [6, 6, 3, 6]\n - title: Cases by status\n options:\n chart: CasesByStatus\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Chart\n xywh: [0, 24, 3, 6]\n - title: Total time spent per account (in hours)\n options:\n chart: TimePerAccount\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Chart\n xywh: [6, 12, 3, 6]\n - title: Total costs per account (in $)\n options:\n chart: CostsPerAccount\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Chart\n xywh: [9, 12, 3, 6]\n - title: Time spent per product family (in hours)\n options:\n chart: TimeSpentPerProductFamily\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Chart\n xywh: [0, 12, 3, 6]\n - title: Total costs per product family (in $)\n options:\n chart: CostPerProductFamily\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Chart\n xywh: [3, 12, 3, 6]\n - title: Total time spent per department (in hours)\n options:\n chart: TotalTimeSpentPerDepartment\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Chart\n xywh: [0, 6, 3, 6]\n - title: Total cost per department (in $)\n options:\n chart: TotalCostPerDepartment\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Chart\n xywh: [3, 6, 3, 6]\n - title: KB articles created per day\n options:\n chart: KnowledgeBaseItemsCreatedPerDay\n style:\n variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}\n kind: Chart\n xywh: [9, 24, 3, 6]\n visible: truePK\x07\x08I\x90\\\\\xd6\xa7\x00\x00\xd6\xa7\x00\x00PK\x03\x04\x14\x00\x08\x00\x00\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1d\x00 \x001500_record_settings_crm.yamlUT\x05\x00\x01\x80Cm8namespace: crm\nrecords:\n Settings:\n - values:\n QuoteExpirationDays: \"30\"\n QuoteNextNumber: \"1\"\n OpportunityCloseDateDays: \"30\"\n OpportunityProbability: \"10\"\n OpportunityForecaseCategory: \"Pipeline\"\n OpportunityStagename: \"Qualification\"\n ContractNextNumber: \"1\"\n ContractDefaultTime: \"12\"\n CaseNextNumber: \"1\"\n SolutionNextNumber: \"1\"\nPK\x07\x08+t\xf5;\x83\x01\x00\x00\x83\x01\x00\x00PK\x03\x04\x14\x00\x08\x00\x00\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\x00 \x001500_record_settings_service_cloud.yamlUT\x05\x00\x01\x80Cm8namespace: service-cloud\nrecords:\n Department:\n - values:\n Name: \"Service\"\n HourCost: \"50\"\n EmailTemplate:\n - values:\n Name: \"Case Update\"\n Description: \"This is the default case update template\"\n Subject: \"Case: [{{Case.Number}}] {{Case.Subject}}\"\n Body: |-\n

Dear {{Contact.FirstName}},

We are contacting you with regard to the case \"{{Case.Subject}}\".

ADD_REASON_FOR_CONTACT_HERE

You can reply directly to this email. When replying, please make sure the ticket ID is kept in the subject so we can track your replies.

Kind regards,

The service team

\n Settings:\n - values:\n KBNextNumber: \"1\"\n DefaultCostPerHour: \"50\"\n DefaultTimeUpdate: \"0.25\"\nPK\x07\x08M|s\x8fQ\x17\x00\x00Q\x17\x00\x00PK\x01\x02\x14\x03\x14\x00\x08\x00\x00\x00\x00\x00!(\x83\"\xb2>\xdd\x02\x00\x00\xdd\x02\x00\x00\x18\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x00\x00\x00\x000000_access_control.yamlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x00\x00\x00\x00!(\x12\xb2K=\xb9\x00\x00\x00\xb9\x00\x00\x00\x12\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81,\x03\x00\x000100_settings.yamlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x00\x00\x00\x00!(\xe8\x0c\x08\xf3\x88\x00\x00\x00\x88\x00\x00\x00\x17\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81.\x04\x00\x001000_namespace_crm.yamlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x00\x00\x00\x00!(\x8c~U\x925\x00\x00\x005\x00\x00\x00!\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x04\x05\x00\x001000_namespace_service_cloud.yamlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x00\x00\x00\x00!(r<\x06\xf9\xc9-\x02\x00\xc9-\x02\x00\x15\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x91\x05\x00\x001100_modules_crm.yamlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x00\x00\x00\x00!(\xbb\xc3\xd7\xdc\xd6\xbe\x00\x00\xd6\xbe\x00\x00\x1f\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\xa63\x02\x001100_modules_service_cloud.yamlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x00\x00\x00\x00!(\x18\x18\xf1\xc2\xb0 \x00\x00\xb0 \x00\x00\x14\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\xd2\xf2\x02\x001200_charts_crm.yamlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x00\x00\x00\x00!(0\x96w\xbe\xc9#\x00\x00\xc9#\x00\x00\x1e\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\xcd\xfc\x02\x001200_charts_service_cloud.yamlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x00\x00\x00\x00!(Zl\xb7X\xf0\x05\x01\x00\xf0\x05\x01\x00\x15\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\xeb \x03\x001300_scripts_crm.yamlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x00\x00\x00\x00!(}\xef\xf6\xb0\xcf\x87\x00\x00\xcf\x87\x00\x00\x1f\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81''\x04\x001300_scripts_service_cloud.yamlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x00\x00\x00\x00!(\xa7\xd8\xefxm \x01\x00m \x01\x00\x13\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81L\xaf\x04\x001400_pages_crm.yamlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x00\x00\x00\x00!(I\x90\\\\\xd6\xa7\x00\x00\xd6\xa7\x00\x00\x1d\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x03\xd0\x05\x001400_pages_service_cloud.yamlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x00\x00\x00\x00!(+t\xf5;\x83\x01\x00\x00\x83\x01\x00\x00\x1d\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81-x\x06\x001500_record_settings_crm.yamlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x00\x00\x00\x00!(M|s\x8fQ\x17\x00\x00Q\x17\x00\x00'\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x04z\x06\x001500_record_settings_service_cloud.yamlUT\x05\x00\x01\x80Cm8PK\x05\x06\x00\x00\x00\x00\x0e\x00\x0e\x00r\x04\x00\x00\xb3\x91\x06\x00\x00\x00" diff --git a/provision/update.sh b/provision/update.sh index dd0c10fe6..f9c41228d 100755 --- a/provision/update.sh +++ b/provision/update.sh @@ -3,20 +3,34 @@ cd "$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" function download { - SRC="https://raw.githubusercontent.com/cortezaproject/corteza-configs/master/${1}" + SRC="https://raw.githubusercontent.com/cortezaproject/corteza-configs/${1}" DST=${2} echo -ne "\033[32m${DST}\033[39m (${SRC}) ..." curl -s $SRC > ${DST} echo "done" } +# ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ + function getCrmConfig { NAMES="1000_namespace 1100_modules 1200_charts 1300_scripts 1400_pages 1500_record_settings" for NAME in $NAMES; do - download "crm/${NAME}.yaml" "./compose/src/${NAME}.yaml" + download "master/crm/${NAME}.yaml" "./compose/src/${NAME}_crm.yaml" done } getCrmConfig +# ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ + +function getServiceCloudConfig { + NAMES="1000_namespace 1100_modules 1200_charts 1300_scripts 1400_pages 1500_record_settings" + + for NAME in $NAMES; do + download "master/service-cloud/${NAME}.yaml" "./compose/src/${NAME}_service_cloud.yaml" + done +} + +getServiceCloudConfig +