Modifying Product Fields Share Share via LinkedIn Reddit Email Copy Link Print On This Page This content applies solely to Connected Servicing, which must be purchased separately from the Appian base platform. This content was written for Appian 23.2 and may not reflect the interfaces or functionality of other Appian versions. Introduction When a user adds a product to an Service Request, the user is required to fill out specific product-related details. Each product may have its own unique fields that the user is required to complete. For example, the product type of Committed Line of Credit will allow the user to enter the fields for Collateral and Cover Required (%). Whereas, the product type Equities will allow the user to enter the Strategy and Entity type. This page outlines how to set up the fields you want to show and require for each product type. Product field sections There can be several fields the user might need to fill out for a single product. Therefore, in order to make it easier to add details for a product, Connected Servicing has grouped the product fields into six sections. The default product sections are: Details Collateral Terms Accounts Fees Thresholds Adding a new product section To add a new product section: Create a new SECTION_KEY constant named AS_FS_ENUM_PRODUCT_SECTION_KEY_<SECTION_NAME>. Set the value of the constant equal to the new section name. Note: Use all caps when setting the constant value. Create a new expression rule named AS_FS_REF_PRODUCT_FIELDS_<SECTION_NAME> to hold all of the fields that will show up in this section. Add the following rule inputs: product (AS_FS_Product) - this will be used to save the data when it appears on the form. i18nData (Any Type) - this will properly show the user the correct language for the corresponding label when the solution is internationalized. adminSetupI18nData (Any Type) - this holds the internationalization data for that when the solution is internationalized. isInternationalizedForAdminSetup (boolean) - this is a true or false value that defines if this field is internationalized. Add the field definitions to this rule that you want to be associated with this section. The field definitions are dictionary structures with the following keys. fieldKey - the product field key constant. sectionKey - the section key constant that you created earlier. cdtField - the field on the Product CDT that will save the data. isValid - any validations that are relevant for the field being saved. EXAMPLE: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 /* Interest field */ { fieldKey: `cons!AS_FS_ENUM_PRODUCT_FIELD_KEY_DETAILS_INTEREST`, sectionKey: `cons!AS_FS_ENUM_PRODUCT_SECTION_KEY_DETAILS`, cdtField: { "interest" }, isValid: if( rule!AS_CO_UT_isBlank(ri!product), null, or( isnull(ri!product.interest), ri!product.interest >= 0 ) ) } Repeat the expression rule, AS_FS_REF_PRODUCT_FIELDS_<SECTION_NAME>, creation for a new field for as many fields that you would like to add. Add AS_FS_REF_PRODUCT_FIELDS_<SECTION_NAME> rule that you created to the parent rule AS_FS_REF_ALL_PRODUCT_FIELDS, which holds all of the sections and fields. Pass in the proper rule inputs. Create a new display interface named AS_FS_CPS_OnboardingRequestProducts_<SectionName>Section. Add the following rule inputs: fieldData (Any Type) - shows the information used from the expression rule AS_FS_REF_PRODUCT_FIELDS_<SECTION_NAME>. i18nData (Any Type) - show the user the correct language for the corresponding label when the solution is internationalized. product (AS_FS_Product) - saves the data when it appears on the form. refData (List of AS__R_Data) - passes in the reference data. Note: You do not need to include this if your field does not require reference data. - readOnly (boolean) - determines if the field should be read only or not. - funds (Array of AS_FS_Fund) - references funds if fund data is needed. Add the local variable local!visible<SectionName>Fields and set the value to 1 2 3 4 5 local!visible<SectionName>Fields: rule!AS_CO_UT_filterCdtByField( cdt: ri!fieldData, field: "fieldKey", value: `rule!AS_FS_REF_PRODUCT_FIELDS_<SECTION_NAME>(isInternationalizedForAdminSetup: false).fieldKey` ) If local!visible<SectionName>Fields is not blank then you will call rule for the display header and a rule to display the appropriate fields. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 if( rule!AS_CO_UT_isBlank(local!visible<SectionName>Fields), {}, { rule!AS_CO_SBS_StampHeader( ! icon: "list-alt", label: rule!AS_CO_I18N_UT_displayLabel( i18nData: ri!i18nData, ! bundleKey: "ProductField.lbl_<section_name>Section" ), size: "SMALL" ), rule!AS_CO_CPS_dynamicTwoOrFourColumnDisplay( numberOfColumns: if(ri!readOnly, 4, 2), ! allFields: { } ) } ) Change the highlighted values for icon and label for what icon and name you want to show for the new section. Create a local variable named local!<FIELD_KEY>FieldData to determine the correct field data and a dictionary structure with the following key-value pairs: span - Either 1 or 2, which determines the number of columns this field will take up. components - the field type(s) to be displayed for the data field being collected. Fill in the highlighted allFields structure with each of the associated fields for the new section with the new local variable. EXAMPLE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 a!localVariables( local!interestFieldData: rule!AS_CO_UT_filterCdtByField( cdt: local!visibleDetailsFields, field: "fieldKey", value: `cons!AS_FS_ENUM_PRODUCT_FIELD_KEY_DETAILS_INTEREST` ), { span: 2, components: rule!AS_CO_INP_paragraphField( showWhen: rule!AS_CO_UT_isNotBlank(local!descriptionFieldData), required: local!descriptionFieldData.required, label: rule!AS_CO_I18N_UT_displayLabel( i18nData: ri!i18nData, bundleKey: "Product.lbl_Description" ), readOnly: ri!readOnly, value: ri!product.description, maxLength: cons!AS_CO_ENUM_PARAGRAPH_LENGTH_MEDIUM, saveInto: ri!product.description, height: "SHORT", placeholder: rule!AS_CO_I18N_UT_displayLabel( i18nData: ri!i18nData, bundleKey: "ProductField.plc_EnterProductDescription" ) ) } ) Note: the order that the fields are listed in the section display interface rule is the order they will be shown to the end user. In the AS_FS_R_PRODUCT_TYPE_FIELD_MAPPING table, add the fields into the FIELD_DATA column using the following JSON format {"fieldKey":"FIELD_KEY>","required":}, for the products that you want to display. Removing a product section To remove a product section: Delete the section field rule AS_FS_REF_PRODUCT_FIELDS_<SECTION_NAME> you would like to remove from the expression rule AS_FS_REF_ALL_PRODUCT_FIELDS. Delete the corresponding display rule AS_FS_CPS_OnboardingRequestProducts_<SectionName>Section. Product fields Connected Servicing comes with 35 data fields that are available for users to enter additional product information. The fields that are available by default can be found by searching the objects for any constant with the prefix AS_FS_ENUM_PRODUCT_FIELD_KEY. Adding a new product field To add a new product field: Create a new constant for the field called AS_FS_ENUM_PRODUCT_FIELD_KEY_[SECTION_NAME]_[FIELD_NAME]. Set the value to SECTION_NAME_FIELD_NAME. SECTION_NAME - the section that the product field will show up in. FIELD_NAME - the name of the product field. Open the AS_FS_REF_PRODUCT_FIELDS_<SECTION_NAME> expression rule. Add a new array to the rule that will display the new field with the following key-value pairs. fieldKey - the product field key constant. sectionKey - the section key constant. cdtField - the field on the Product CDT that will save the data. isValid - any validations that are relevant for the field being saved. EXAMPLE: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 /* Interest field */ { fieldKey: `cons!AS_FS_ENUM_PRODUCT_FIELD_KEY_DETAILS_INTEREST`, sectionKey: `cons!AS_FS_ENUM_PRODUCT_SECTION_KEY_DETAILS`, cdtField: { "interest" }, isValid: if( rule!AS_CO_UT_isBlank(ri!product), null, or( isnull(ri!product.interest), ri!product.interest >= 0 ) ) } Open the AS_FS_CPS_OnboardingRequestProducts_<SectionName>Section expression rule. Add a new array for new local variable named local!<FIELD_KEY>FieldData to filter the data to the proper field. Note: Add this new array in the same order you would like the field to appear in the section. Add the dictionary with the following key-value pairs in the same array: span - Determines the number of columns this field will take up. Valid values 1 or 2. components - the field type(s) to be displayed for the collected data field. EXAMPLE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 a!localVariables( local!interestFieldData: rule!AS_CO_UT_filterCdtByField( cdt: local!visibleDetailsFields, field: "fieldKey", value: `cons!AS_FS_ENUM_PRODUCT_FIELD_KEY_DETAILS_INTEREST` ), { span: 2, components: rule!AS_CO_INP_paragraphField( showWhen: rule!AS_CO_UT_isNotBlank(local!descriptionFieldData), required: local!descriptionFieldData.required, label: rule!AS_CO_I18N_UT_displayLabel( i18nData: ri!i18nData, bundleKey: "Product.lbl_Description" ), readOnly: ri!readOnly, value: ri!product.description, maxLength: cons!AS_CO_ENUM_PARAGRAPH_LENGTH_MEDIUM, saveInto: ri!product.description, height: "SHORT", placeholder: rule!AS_CO_I18N_UT_displayLabel( i18nData: ri!i18nData, bundleKey: "ProductField.plc_EnterProductDescription" ) ) } ) In the AS_FS_R_PRODUCT_TYPE_FIELD_MAPPING table, use the following JSON format {"fieldKey":"<FIELD_KEY>","required":} to add the fields into the FIELD_DATA column for the products that you want to display. Removing a product field To remove a product field: From the AS_FS_R_PRODUCT_TYPE_FIELD_MAPPING table, remove any JSON structures with the corresponding fieldKey that you want to remove from the FIELD_DATA column. Open the AS_FS_CPS_OnboardingRequestProducts_<SectionName>Section interface. Remove all code with a reference to the fieldKey of the field you want to remove. Open the AS_FS_REF_PRODUCT_FIELDS_<SECTION_NAME> expression rule. Remove the dictionary structure containing the fieldKey of the field you want to remove. Mapping product fields to a specific product Product fields are mapped to products in the AS_FS_R_PRODUCT_TYPE_FIELD_MAPPING reference table. When a product type is added by the user, a new row is added to this table to manage which fields will show up when that product type is added to an onboarding. Updating product type mappings If a product type does not have the right fields by default, a user can modify which product fields show up by modifying the FIELD_DATA column in the AS_FS_R_PRODUCT_TYPE_FIELD_MAPPING table. The FIELD_DATA column is used to determine which fields show up for each product and also which fields will be required. For each product, the FIELD_DATA column holds a JSON mapping of a field, section, and if the field is required. **EXAMPLE OF JSON IN FIELD_DATA FOR PRODUCT TYPE COMMODITIES ** 1 2 3 4 5 6 7 {{"fieldKey":"DETAILS_AMOUNT","required":false}, ! {"fieldKey":"DETAILS_ENTITY","required":true}, {"fieldKey":"DETAILS_STRATEGY","required":false}, {"fieldKey":"DETAILS_DURATION","required":true}, {"fieldKey":"DETAILS_UPFRONT_FEE","required":false}, {"fieldKey":"DETAILS_RESTRICTED_COUNTRIES","required":false}, {"fieldKey":"DETAILS_PERMISSIBLE_COUNTRIES","required":false}} For each product, The FIELD_KEY determines the section and the field, and REQUIRED determines if the field will be required on the page. For example, for the highlighted row above, the ENTITY field will show up in the DETAILS section and it will be required when a commodities product is added to an onboarding. Add a field mapping for an existing field to a product type If a new field is needed for a product type, you will need to edit the JSON in the FIELD_DATA column of the AS_FS_R_PRODUCT_TYPE_FIELD_MAPPING table. For the product type you want to update, add a new JSON dictionary structure for the field that you want to add and update the FIELD_DATA column in the database. Remove a field mapping from a product type If a field is no longer needed for a product type, you will need to edit the JSON in the FIELD_DATA column of the AS_FS_R_PRODUCT_TYPE_FIELD_MAPPING table. Change requiredness of a field mapping To change requiredness of a specific field, edit the JSON in the FIELD_DATA column. Update the REQUIRED structure of the FIELD_KEY that you want to change then update the FIELD_DATA column. Valid values: true or false. Default product fields for a new product type Because the user can create a new product type from the Connected Servicing settings page, when the new product is added to the AS_FS_R_PRODUCT_TYPE_FIELD_MAPPING table, it will have all product fields associated with the new product by default. These fields are not required. To update the default product type fields: Open the AS_FS_constructProductTypeFieldMapping expression rule. Update the local variable local!refData to filter out the fields you do not want to be part of a product by default. Default product fields and sections The default sections and their corresponding fields are listed in the table below. Section Default Fields Details Amount Commitment fee rate Description Duration Entity Fund Interest Permissible countries Restricted countries Strategy Upfront fee Collateral Collateral Collateral value Cover provided Cover required Terms Committed margin Other Performance return term Performance start date Rate lock Short lock Accounts Account Number Name Type Fees Ad valorem Market Minimum Minimum currency Period Transaction charge Transaction charge currency Thresholds Amount Currency Number of Authorizations Operator Feedback Was this page helpful? SHARE FEEDBACK Loading...