Customize Freedom UI page for Mobile Creatio
This functionality is available for Creatio 8.0.10 and later.
Use the Mobile Application Wizard to customize Freedom UI page.
Mobile Application Wizard lets you execute the following actions:
- Configure the Freedom UI page. Read more >>>
- Use a Freedom UI component that does not have a Classic UI counterpart. Read more >>>
Configure the Freedom UI page
-
Convert existing page to Freedom UI.
- Open the Mobile Application Wizard. To do this, click → System setup → Mobile Application Wizard.
- Create a new or open an existing workplace. Instructions: Add new workplaces (user documentation).
- Set up the mobile app section page. Instructions: Set up mobile application section page (user documentation).
- Select the Freedom UI checkbox.
- Save the changes.
-
Open the Freedom UI page schema. To do this, open the Configuration section → select the converted Freedom UI page schema. For example,
MobileFUIUsrSectionRecordPageSettingsDefaultWorkplace
. Instructions: Open the Configuration section. -
Configure the Freedom UI page using the
viewConfigDiff
,viewModelConfigDiff
, andmodelConfigDiff
schema sections.View the example that configures the Freedom UI page below.
Example that configures the Freedom UI page[
{
"operation": "insert",
"name": "settings",
"values": {
"entitySchemaName": "UsrSection",
"settingsType": "RecordPage",
"localizableStrings": {},
"columnSets": [],
"operation": "insert",
"details": [],
"viewConfigDiff": "[{\"operation\":\"merge\",\"name\":\"ViewConfig\",\"values\":{...}}]",
"viewModelConfigDiff": "[{\"operation\":\"merge\",\"name\":\"Attribute_Items_ModelConfig\",\"values\":{...}}]",
"modelConfigDiff": "[{\"operation\":\"merge\",\"name\":\"PDS_Attribute_Title\",\"values\":{...}}]"
}
}
] -
Save the changes.
As a result, the Freedom UI page will be configured.
Creatio merges all schemas and converts them into a resulting JSON object. View the example that demonstrates the resulting JSON object for the Contact
Freedom UI page below.
{
"viewConfig": {
"type": "crt.EditScreen",
"body": {
"type": "crt.Tabs",
"items": [
{
"body": {
"type": "crt.AdaptiveLayout",
"items": [
{
"type": "crt.Area",
"visible": true,
"items": [
{
"value": "$Account",
"type": "crt.EditField",
"name": "Contact_PrimaryTab_Body_profileColumnSet_Account"
},
{
"value": "$JobTitle",
"type": "crt.EditField",
"name": "Contact_PrimaryTab_Body_profileColumnSet_JobTitle"
},
{
"type": "crt.CommunicationOptions",
"items": "ContactCommunicationDetailEmbeddedDetail",
"title": "Communication options",
"itemLayout": {
"type": "crt.DetailItem",
"name": "ContactCommunicationDetailEmbeddedDetail_ItemLayout",
"fields": []
},
"editColumns": [],
"name": "ContactCommunicationDetailEmbeddedDetail"
}
],
"title": "Primary column set",
"name": "Contact_PrimaryTab_Body_primaryColumnSet"
},
{
"type": "crt.Area",
"visible": true,
"items": [
{"value": "$Type", "type": "crt.EditField", "name": "Contact_PrimaryTab_Body_infoColumnSet_Type"},
{"value": "$Owner", "type": "crt.EditField", "name": "Contact_PrimaryTab_Body_infoColumnSet_Owner"},
{"value": "$Dear", "type": "crt.EditField", "name": "Contact_PrimaryTab_Body_infoColumnSet_Dear"},
{"value": "$Gender", "type": "crt.EditField", "name": "Contact_PrimaryTab_Body_infoColumnSet_Gender"},
{"value": "$SalutationType", "type": "crt.EditField", "name": "Contact_PrimaryTab_Body_infoColumnSet_SalutationType"},
{"value": "$Language", "type": "crt.EditField", "name": "Contact_PrimaryTab_Body_infoColumnSet_Language"}
],
"title": "Contact info",
"name": "Contact_PrimaryTab_Body_infoColumnSet"
},
{
"type": "crt.Detail",
"items": "ContactAddressDetailV2EmbeddedDetail",
"title": "Addresses",
"itemLayout": {
"type": "AddressPreview",
"name": "ContactAddressDetailV2EmbeddedDetail_ItemLayout",
"fields": []
},
"editColumns": [
{"columnName": "AddressType", "name": "ContactAddressDetailV2EmbeddedDetail_EditPageColumn_AddressType"},
{"columnName": "Address", "name": "ContactAddressDetailV2EmbeddedDetail_EditPageColumn_Address"},
{"columnName": "City", "name": "ContactAddressDetailV2EmbeddedDetail_EditPageColumn_City"},
{"columnName": "Region", "name": "ContactAddressDetailV2EmbeddedDetail_EditPageColumn_Region"},
{"columnName": "Country", "name": "ContactAddressDetailV2EmbeddedDetail_EditPageColumn_Country"},
{"columnName": "Zip", "name": "ContactAddressDetailV2EmbeddedDetail_EditPageColumn_Zip"}
],
"name": "ContactAddressDetailV2EmbeddedDetail",
"useSeparator": false
},
{
"type": "crt.Detail",
"items": "ContactCareerDetailV2EmbeddedDetail",
"title": "Job experience",
"itemLayout": {
"type": "crt.DetailItem",
"name": "ContactCareerDetailV2EmbeddedDetail_ItemLayout",
"fields": [
{"value": "$Account", "type": "crt.ListItemBodyField", "name": "ContactCareerDetailV2EmbeddedDetail_ItemLayout_Account"},
{"value": "$Job", "type": "crt.ListItemBodyField", "name": "ContactCareerDetailV2EmbeddedDetail_ItemLayout_Job"},
{"value": "$Department", "type": "crt.ListItemBodyField", "name": "ContactCareerDetailV2EmbeddedDetail_ItemLayout_Department"},
{"value": "$Primary", "type": "crt.ListItemBodyField", "name": "ContactCareerDetailV2EmbeddedDetail_ItemLayout_Primary"},
{"value": "$StartDate", "type": "crt.ListItemBodyField", "name": "ContactCareerDetailV2EmbeddedDetail_ItemLayout_StartDate"}
]
},
"editColumns": [
{"columnName": "Account", "name": "ContactCareerDetailV2EmbeddedDetail_EditPageColumn_Account"},
{"columnName": "Job", "name": "ContactCareerDetailV2EmbeddedDetail_EditPageColumn_Job"},
{"columnName": "Department", "name": "ContactCareerDetailV2EmbeddedDetail_EditPageColumn_Department"},
{"columnName": "Primary", "name": "ContactCareerDetailV2EmbeddedDetail_EditPageColumn_Primary"},
{"columnName": "StartDate", "name": "ContactCareerDetailV2EmbeddedDetail_EditPageColumn_StartDate"}
],
"name": "ContactCareerDetailV2EmbeddedDetail"
}
],
"scrollable": true,
"columns": {"tabletLandscape": [3, 7]},
"padding": {"bottom": "floatingActionBottomPadding"},
"name": "Contact_PrimaryTab_Body"
},
"position": 0,
"text": "#ResourceSystemString(Screen.DefaultTab)",
"isTransparent": true,
"name": "Contact_PrimaryTab"
}
],
"name": "Contact_Tabs"
},
"actions": [],
"floatActions": [
{"title": "#ResourceSystemString(Button.Copy)", "clicked": {"request": "crt.CopyRecordRequest"}, "name": "Contact_FloatAction_Copy"},
{"title": "#ResourceSystemString(Button.Delete)", "clicked": {"request": "crt.DeleteRecordRequest"}, "name": "Contact_FloatAction_Delete"}
],
"name": "ViewConfig"
},
"viewModelConfig": {
"attributes": {
"Id": {"name": "Attribute_Id", "modelConfig": {"path": "PDS.Id"}},
"Account": {"name": "Attribute_Account", "modelConfig": {"path": "PDS.Account"}},
"JobTitle": {"name": "Attribute_JobTitle", "modelConfig": {"path": "PDS.JobTitle"}},
"ContactCommunicationDetailEmbeddedDetail": {
"modelConfig": {
"path": "ContactCommunicationDetailEmbeddedDetailDS",
"cacheConfig": {},
"sortingConfig": {
"default": [{"columnName": "CreatedOn", "direction": "asc"}],
"name": "Attribute_ContactCommunicationDetailEmbeddedDetail_SortingConfig"
},
"name": "Attribute_ContactCommunicationDetailEmbeddedDetail_ModelConfig"
},
"name": "Attribute_ContactCommunicationDetailEmbeddedDetail"
},
"Type": {"name": "Attribute_Type", "modelConfig": {"path": "PDS.Type"}},
"Owner": {"name": "Attribute_Owner", "modelConfig": {"path": "PDS.Owner"}},
"Dear": {"name": "Attribute_Dear", "modelConfig": {"path": "PDS.Dear"}},
"Gender": {"name": "Attribute_Gender", "modelConfig": {"path": "PDS.Gender"}},
"SalutationType": {"name": "Attribute_SalutationType", "modelConfig": {"path": "PDS.SalutationType"}},
"Language": {"name": "Attribute_Language", "modelConfig": {"path": "PDS.Language"}},
"ContactAddressDetailV2EmbeddedDetail": {
"modelConfig": {
"path": "ContactAddressDetailV2EmbeddedDetailDS",
"cacheConfig": {},
"sortingConfig": {
"default": [{"columnName": "CreatedOn", "direction": "asc"}],
"name": "Attribute_ContactAddressDetailV2EmbeddedDetail_SortingConfig"
},
"name": "Attribute_ContactAddressDetailV2EmbeddedDetail_ModelConfig"
},
"name": "Attribute_ContactAddressDetailV2EmbeddedDetail"
},
"ContactCareerDetailV2EmbeddedDetail": {
"modelConfig": {
"path": "ContactCareerDetailV2EmbeddedDetailDS",
"cacheConfig": {},
"sortingConfig": {
"default": [{"columnName": "CreatedOn", "direction": "asc"}],
"name": "Attribute_ContactCareerDetailV2EmbeddedDetail_SortingConfig"
},
"name": "Attribute_ContactCareerDetailV2EmbeddedDetail_ModelConfig"
},
"name": "Attribute_ContactCareerDetailV2EmbeddedDetail"
},
"name": "Attributes",
"Name": {"modelConfig": {"path": "PDS.Name"}, "name": "Attribute_Name"},
"City.TimeZone": {"modelConfig": {"path": "PDS.City.TimeZone"}, "name": "Attribute_City.TimeZone"},
"Country": {"modelConfig": {"path": "PDS.Country"}, "name": "Attribute_Country"},
"BirthDate": {"modelConfig": {"path": "PDS.BirthDate"}, "name": "Attribute_BirthDate"},
"ContactFeed": {"name": "Attribute_ContactFeed"}
},
"name": "ViewModelConfig"
},
"modelConfig": {
"primaryDataSourceName": "PDS",
"dataSources": {
"PDS": {"config": {"entitySchemaName": "Contact"}, "name": "PDS"},
"ContactCommunicationDetailEmbeddedDetailDS": {
"config": {
"entitySchemaName": "ContactCommunication",
"attributes": {
"CreatedOn": {"path": "CreatedOn", "name": "ContactCommunicationDetailEmbeddedDetailDS_Attribute_CreatedOn"},
"name": "ContactCommunicationDetailEmbeddedDetailDS_Attributes"
},
"name": "ContactCommunicationDetailEmbeddedDetailDS_Config"
},
"name": "ContactCommunicationDetailEmbeddedDetailDS"
},
"ContactAddressDetailV2EmbeddedDetailDS": {
"config": {
"entitySchemaName": "ContactAddress",
"attributes": {
"CreatedOn": {"path": "CreatedOn", "name": "ContactAddressDetailV2EmbeddedDetailDS_Attribute_CreatedOn"},
"AddressType": {"path": "AddressType", "name": "ContactAddressDetailV2EmbeddedDetailDS_Attribute_AddressType"},
"Address": {"path": "Address", "name": "ContactAddressDetailV2EmbeddedDetailDS_Attribute_Address"},
"City": {"path": "City", "name": "ContactAddressDetailV2EmbeddedDetailDS_Attribute_City"},
"Region": {"path": "Region", "name": "ContactAddressDetailV2EmbeddedDetailDS_Attribute_Region"},
"Country": {"path": "Country", "name": "ContactAddressDetailV2EmbeddedDetailDS_Attribute_Country"},
"Zip": {"path": "Zip", "name": "ContactAddressDetailV2EmbeddedDetailDS_Attribute_Zip"},
"name": "ContactAddressDetailV2EmbeddedDetailDS_Attributes"
},
"name": "ContactAddressDetailV2EmbeddedDetailDS_Config"
},
"name": "ContactAddressDetailV2EmbeddedDetailDS"
},
"ContactCareerDetailV2EmbeddedDetailDS": {
"config": {
"entitySchemaName": "ContactCareer",
"attributes": {
"CreatedOn": {"path": "CreatedOn", "name": "ContactCareerDetailV2EmbeddedDetailDS_Attribute_CreatedOn"},
"Account": {"path": "Account", "name": "ContactCareerDetailV2EmbeddedDetailDS_Attribute_Account"},
"Job": {"path": "Job", "name": "ContactCareerDetailV2EmbeddedDetailDS_Attribute_Job"},
"Department": {"path": "Department", "name": "ContactCareerDetailV2EmbeddedDetailDS_Attribute_Department"},
"Primary": {"path": "Primary", "name": "ContactCareerDetailV2EmbeddedDetailDS_Attribute_Primary"},
"StartDate": {"path": "StartDate", "name": "ContactCareerDetailV2EmbeddedDetailDS_Attribute_StartDate"},
"name": "ContactCareerDetailV2EmbeddedDetailDS_Attributes"
},
"name": "ContactCareerDetailV2EmbeddedDetailDS_Config"
},
"name": "ContactCareerDetailV2EmbeddedDetailDS"
},
"name": "DataSources"
},
"dependencies": {
"ContactCommunicationDetailEmbeddedDetailDS": [{"attributePath": "Contact", "relationPath": "PDS.Id", "name": "ContactCommunicationDetailEmbeddedDetailDS_Dependencies"}],
"ContactAddressDetailV2EmbeddedDetailDS": [{"attributePath": "Contact", "relationPath": "PDS.Id", "name": "ContactAddressDetailV2EmbeddedDetailDS_Dependencies"}],
"ContactCareerDetailV2EmbeddedDetailDS": [{"attributePath": "Contact", "relationPath": "PDS.Id", "name": "ContactCareerDetailV2EmbeddedDetailDS_Dependencies"}],
"name": "Dependencies"
},
"name": "ModelConfig"
}
}
Use a Freedom UI component that does not have a Classic UI counterpart
Freedom UI page lets you use a Freedom UI component that does not have a Classic UI counterpart. For example, Contact compact profile. To do this:
-
Open the Freedom UI page schema.
-
Go to the component whose
name
property is set tosettings
. -
Configure the component. Requirements for source code are as follows:
- Use the
merge
type operation in theviewConfigDiff
,viewModelConfigDiff
, andmodelConfigDiff
schema sections. - Add configuration object as string.
- Use escaped characters.
View the example that configures the Freedom UI component below.
Example that configures the Freedom UI component[
{
"operation": "insert",
"name": "settings",
"values": {
"entitySchemaName": "UsrSection",
"settingsType": "RecordPage",
"localizableStrings": {},
"columnSets": [],
"operation": "insert",
"details": [],
"viewConfigDiff": "[{\"operation\":\"merge\",\"name\":\"ViewConfig\",\"values\":{\"header\":{\"name\":\"Contact_Header\",\"type\":\"ContactCompactProfile\"}}}]",
}
}
] - Use the
-
Save the changes.
As a result, the Freedom UI page will use the Contact compact profile Freedom UI component that does not have a Classic UI counterpart.
See also
Set up mobile app workplaces (user documentation)
Set up mobile application section page (user documentation)