Zoho FSM | Functions

Functions

‌Custom functions are used for defining custom business logic, formulating processes, and automating repetitive tasks. They are used for manipulating details of one or more FSM modules through record creation, updation or deletion. They are also used for implementing functionalities with the use of third-party applications. Custom functions are used by associating them with workflows. They are written using Deluge Scripting Language.

Custom functions can be used primarily in two ways:
  1. For automating basic actions like sending emails
  2. For accessing data from Zoho or third-party services


 Available in Editions: Standard, Professional, Premium


Info
Permission RequiredManage Automation
- Find out the Edition-specific limits for Custom Functions.

‌Create a Custom Function

You can use functions for automating routine activities.  For example, the sendmail task enables you to send notifications. 

To create a function that will notify the customer by email when a new request is created for them:
  1. Navigate to Setup > Automation > Functions.
    Only users with the profile Administrator will have this option.
  2. Click Create Function.



  3. ‌In the Create Function overlay, do the following:
    1. Enter the Function Name as SendNotification.
    2. Select Requests as the Module for which you want to trigger the custom function.
    3. In the Deluge Script Editor, write the below script for the custom function.


        void SendUpdate(Map request , Map organization , Map user){
        
        //Get customer name
        customer = request.get("Contact");
        custName = customer.get("name");
        //Get customer email
        email = request.get("Email");
        //Get request name
        reqName = request.get("Name");
        //Send notification
        sendmail
        [
      from :zoho.loginuserid
      to :email
      subject :"New Request"
      message :"Hi " + custName + "," + "<br>" + "A new Request " + reqName + " has been created for you." + "<br>" + "Thanks," + "<br>" + "Support Team"
        ]

        }
       


    4. Click Save.

To test the function, do the following:
  1. In the Deluge Script Editor, click Save & Execute.
  2. In the Execute Function pop-up, enter a Request record ID or click Click here to get the list to obtain the list of available Request IDs.
  3. Select a Request ID and click Execute.



    The results of the function will be displayed in the console. You can use this to test and debug your custom functions.


To use this function, you need to associate this function with a workflow.

Data Manipulation using Custom Functions

You can use custom functions for accessing data from Zoho or third-party services. You can use the Deluge tasks for data manipulation to do so. For example, the task for creating records (zoho.fsm.createRecord) in FSM.

There are two ways in which these tasks can be used:
  1. Using a System Connection. E.g. zoho.fsm.createRecord(<module>, <KEY-VALUE>);
  2. Using a Connection of a Service (Default/Custom). E.g. zoho.fsm.createRecord(<module>, <dataMap>, <optionalDataMap>, <connection>);
What is a Connection?
There are some services that cannot be integrated directly with Zoho FSM. In these cases, you can use a connection to expand FSM's third-party support. Connection uses OAuth 2.0 protocol to facilitate this integration.

There are three types of connections:
  1. System Connection: The connection used by the built-in integration task, for accessing the data from FSM and other Zoho services (CRM, Projects, Books, etc). Individual internal connections will be created for individual Zoho integration tasks.
  2. Connection using Default Services: You can choose from the already available list of services, provide your credentials, and establish a connection.
  3. Connection using Custom Services: If the desired service is not available in the default services list, you can configure it on your own and connect to it.

Create a Function using the System Connection

The system connection used for the FSM data manipulation tasks is listed under System Connections at Setup > Automation > Connections. Ensure that the status of the connection is Connected. The green dot [] indicates that the connection is Connected.



To write the function that inserts a new record in the Requests module, do the following:

  1. Navigate to Setup > Automation > Functions.
  2. Click Create Function.



  3. In the Create Function overlay, do the following:
    1. Enter the Function Name as CreateRequests.
    2. Select Requests as the Module for which you want to trigger the custom function.
    3. From the tasks tray on the left in the Deluge Script Editor, drag and drop the Deluge task you want to use. In our case it is create record.
    4. Write the below script for the custom function.


        void CreateRequests(Map request , Map organization , Map user){

        newRecordInfo = Map();
        newRecordInfo.put("Summary","Sample");
        newRecordInfo.put("Status","New");
        newRecordInfo.put("Contact","1011000000141106");
        newRecordInfo.put("Territory","1011000000139148");

        serviceAddress = Map();
        serviceAddress.put("id", "1011000000141109");
        serviceAddress.put("Service_Street_1", "10 Oak St");
        serviceAddress.put("Service_Street_2", null);
        serviceAddress.put("Service_City", "Oconee");
        serviceAddress.put("Service_State", "Illinois");
        serviceAddress.put("Service_Country", "United States");
        serviceAddress.put("Service_Zip_Code", "62553");
        serviceAddress.put("Service_Latitude", "39.287425");
        serviceAddress.put("Service_Longitude", "-89.108759");
        serviceAddress.put("Service_Address_Name", "Service Address");

        billingAddress = Map();
        billingAddress.put("id", "1011000000141108");
        billingAddress.put("Billing_Street_1", "Locust St");
        billingAddress.put("Billing_Street_2", null);
        billingAddress.put("Billing_City", "Oconee");
        billingAddress.put("Billing_State", "Illinois");
        billingAddress.put("Billing_Country", "United States");
        billingAddress.put("Billing_Zip_Code", "62553");
        billingAddress.put("Billing_Latitude", "39.286597");
        billingAddress.put("Billing_Longitude", "-89.107787");
        billingAddress.put("Billing_Address_Name", "Billing Address");

        newRecordInfo.put("Service_Address", serviceAddress);
        newRecordInfo.put("Billing_Address", billingAddress);
        resp = zoho.fsm.createRecord("Requests", newRecordInfo);
        info resp;

        }

    5. Click Save
To test the function, do the following:
  1. In the Deluge Script Editor, click Save & Execute.
  2. In the Execute Function pop-up, enter a Request record ID or click Click here to get the list to obtain the list of available Request IDs.
  3. Select a Request ID and click Execute.



    A new Request record has been created and you can view the details of the record in the console.


To use this function, you need to associate this function with a workflow.

Create a Function using the Connection of a Default Service

Following are the steps to create a function that inserts a new record in the Requests module.
  1. Create a Connection for a Default Service (Zoho FSM)
  2. Write the function
Create a Connection for a Default Service (Zoho FSM)
  1. Navigate to Setup > Automation > Connections > My Connections.
    Only users with the profile Administrator will have this option.
  2. Click Create Connection.
  3. Select the Default Services tab and click on the service to which you want to connect your Zoho Service. In our case, we need to select Zoho FSM.



  4. Enter a Connection Name.
  5. Choose Scopes.
    The following scopes are available for FSM. Select the appropriate scopes as per your requirements.

     Scope
    Description
    ZohoFSM.modules.custom.READ

    ZohoFSM.modules.contacts.READ

    ZohoFSM.modules.accounts.READ

    ZohoFSM.modules.Requests.READ

    ZohoFSM.modules.Estimates.READ

    ZohoFSM.modules.WorkOrders.READ
    Used to retrieve records. Will be used in the following tasks:

    zoho.fsm.getRecords(<module>, <page>, <perPage>, <optionalDataMap>, <connection>);

    zoho.fsm.getRecordById(<module>, <id>, <optionalDataMap>, <connection>);

    zoho.fsm.getRelatedRecords(<relationName>, <parentModuleName>, <id>, <page>, <perPage>, <optionalDataMap>, <connection>);
    ZohoFSM.modules.custom.CREATE

    ZohoFSM.modules.contacts.CREATE

    ZohoFSM.modules.accounts.CREATE

    ZohoFSM.modules.Requests.CREATE

    ZohoFSM.modules.Estimates.CREATE

    ZohoFSM.modules.WorkOrders.CREATE
    Used to create records. Will be used in the following tasks:

    zoho.fsm.createRecord(<module>, <dataMap>, <optionalDataMap>, <connection>);





    ZohoFSM.modules.custom.UPDATE

    ZohoFSM.modules.contacts.UPDATE

    ZohoFSM.modules.accounts.UPDATE

    ZohoFSM.modules.Requests.UPDATE

    ZohoFSM.modules.Estimates.UPDATE

    ZohoFSM.modules.WorkOrders.UPDATE
    Used to edit records. Will be used in the following tasks:

    zoho.fsm.updateRecord(<module>, <id>, <dataMap>, <optionalDataMap>, <connection>);







  6. Click Create and Connect.
  7. Click Accept in the permissions page.
    The connection is created. The Link Name will be used as an argument in the task zoho.fsm.createRecord.


Write the function
  1. Navigate to Setup > Automation > Functions.
  2. Click Create Function.



  3. In the Create Function overlay, do the following:
    1. Enter the Function Name as CreateRequests.
    2. Select Requests as the Module for which you want to trigger the custom function.
    3. Write the below script for the custom function:


        void CreateRequests(Map request , Map organization , Map user){

        newRecordInfo = Map();
        newRecordInfo.put("Summary","Sample");
        newRecordInfo.put("Status","New");
        newRecordInfo.put("Contact","1011000000141106");
        newRecordInfo.put("Territory","1011000000139148");
       
        serviceAddress = Map();
        serviceAddress.put("id","1011000000141109");
        serviceAddress.put("Service_Street_1","10 Oak St");
        serviceAddress.put("Service_Street_2",null);
        serviceAddress.put("Service_City","Oconee");
        serviceAddress.put("Service_State","Illinois");
        serviceAddress.put("Service_Country","United States");
        serviceAddress.put("Service_Zip_Code","62553");
        serviceAddress.put("Service_Latitude","39.287425");
        serviceAddress.put("Service_Longitude","-89.108759");
        serviceAddress.put("Service_Address_Name","Service Address");

        billingAddress = Map();
        billingAddress.put("id","1011000000141108");
        billingAddress.put("Billing_Street_1","Locust St");
        billingAddress.put("Billing_Street_2",null);
        billingAddress.put("Billing_City","Oconee");
        billingAddress.put("Billing_State","Illinois");
        billingAddress.put("Billing_Country","United States");
        billingAddress.put("Billing_Zip_Code","62553");
        billingAddress.put("Billing_Latitude","39.286597");
        billingAddress.put("Billing_Longitude","-89.107787");
        billingAddress.put("Billing_Address_Name","Billing Address");

        newRecordInfo.put("Service_Address",serviceAddress);
        newRecordInfo.put("Billing_Address",billingAddress);
        resp = zoho.fsm.createRecord("Requests", newRecordInfo, Map(), "fsmconnection");
        info resp;

        }


    4. Click Save.
To test the function, do the following:
  1. In the Deluge Script Editor, click Save & Execute.
  2. In the Execute Function pop-up, enter a Request record ID or click Click here to get the list to obtain the list of available Request IDs.
  3. Select a Request ID and click Execute.



    A new Request record has been created and you can view the details of the record in the console.


To use this function, you need to associate this function with a workflow.

Understanding the CreateRecord Task

Let's look at how the zoho.fsm.createRecord is used. The syntax for the task is given below.

Method Used
Syntax
 Using the Internal Connection
 <Response> = zoho.fsm.createRecord(<module>, <KEY-VALUE>); 
 Using the Connection of a Service (Default/Custom)
 <Response> = zoho.fsm.createRecord(<module>, <KEY-VALUE>, <optionalDataMap>, <connection>);

where,
<Response> is the task response returned as a Map.
<module> specify the API name of the module from which you want to fetch records
<KEY-VALUE> is a map with details of the record that needs to be inserted into the module.
<optionalDataMap> is a map parameter to pass any additional values
<connection> is the connection created for Zoho FSM
 
The <module> argument
 The API name of the module, i.e. Requests needs to be used.
 
The <KEY-VALUE> argument
 The details of the fields and its values required for constructing the <KEY-VALUE> map can be viewed by clicking the Map argument (request) of the module.



The <optionalDataMap> argument
In case you need to pass any additional data you can use this argument else pass an empty map, Map().
 
The <connection> argument
The value to be used for the <connection> argument is the Link Name of the connection created for FSM. To view this detail, click the connection.


Associate with Workflow Rules

You can either associate an existing function to the workflow or create a new function and associate it to the workflow. The module for which the workflow and function is created should be the same. If you create a workflow for the Requests module, then the new function that you create or the existing function you can associate should also be of the Requests module.


Manage Custom Functions

You can edit, delete, or clone a function.


Function Failures

When a workflow is triggered, its associated function gets executed. The function might fail when executed on some records. The details of such errors and the records that caused it can be viewed under the Function Failures tab at Setup > Automation > Functions.