<?xml version="1.0" encoding="UTF-8" ?><!-- generator=Zoho Sites --><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><atom:link href="https://www.blungo.com/blogs/tag/tutorial/feed" rel="self" type="application/rss+xml"/><title>blungo - Blog #tutorial</title><description>blungo - Blog #tutorial</description><link>https://www.blungo.com/blogs/tag/tutorial</link><lastBuildDate>Wed, 08 Oct 2025 18:02:21 -0700</lastBuildDate><generator>http://zoho.com/sites/</generator><item><title><![CDATA[Function: Create a Subfolders in WorkDrive from Zoho CRM]]></title><link>https://www.blungo.com/blogs/post/function-create-a-subfolders-in-workdrive-from-zoho-crm</link><description><![CDATA[<img align="left" hspace="5" src="https://www.blungo.com/Blogpost/Thumbnails/Function create folders and subfolders.png"/>We are going to create a workflow that will trigger a function that creates a set of subfolders inside a Team folder in Zoho WorkDrive. You can use th ]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_8IviC7roTWy1pB8T5m2pag" data-element-type="section" class="zpsection "><style type="text/css"> [data-element-id="elm_8IviC7roTWy1pB8T5m2pag"].zpsection{ border-radius:1px; } </style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_QTBrCAUDSOyFRlCdpLN1GQ" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"> [data-element-id="elm_QTBrCAUDSOyFRlCdpLN1GQ"].zprow{ border-radius:1px; } </style><div data-element-id="elm_VoIP_gLFRbaPD-J1OwS1cA" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"> [data-element-id="elm_VoIP_gLFRbaPD-J1OwS1cA"].zpelem-col{ border-radius:1px; } </style><div data-element-id="elm_Sb5SNDSydE7qemcHPeDkYA" data-element-type="iframe" class="zpelement zpelem-iframe "><style type="text/css"> [data-element-id="elm_Sb5SNDSydE7qemcHPeDkYA"].zpelem-iframe{ border-radius:1px; } </style><div class="zpiframe-container zpiframe-align-center"><iframe class="zpiframe " src="https://www.youtube.com/embed/7jRuCsR8iyY" width="560" height="315" align="center" allowfullscreen frameBorder="0"></iframe></div>
</div><div data-element-id="elm__bttFMMbQBeQgsOADxw2gg" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm__bttFMMbQBeQgsOADxw2gg"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-align-left " data-editor="true">What we are going to do</h2></div>
<div data-element-id="elm_FZnVjR5LTqSOKJv9JmBOGQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_FZnVjR5LTqSOKJv9JmBOGQ"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;"><span style="font-size:12pt;">We are going to create a workflow that will trigger a function that creates a set of subfolders inside a Team folder in Zoho WorkDrive. You can use the function to create folders or subfolders in your personal folder as well. This is continuation of the previous tutorial called &quot;Function: Create a WorkDrive Team Folder and Attach it to the CRM Record&quot;.</span></span><br></p></div>
</div><div data-element-id="elm_DiNwxandSxP56pZ4iGSklA" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_DiNwxandSxP56pZ4iGSklA"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-align-left " data-editor="true">Important notes</h2></div>
<div data-element-id="elm_hz8PZ4Xcqs0QNEQoK-bF4A" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_hz8PZ4Xcqs0QNEQoK-bF4A"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><ul><li><span style="color:inherit;"><span style="font-size:12pt;">We are going to create normal folders. If you want to create a Team Folder, check out this tutorial: <a href="https://www.blungo.com/blogs/post/function-create-a-workdrive-team-folder-and-attach-it-to-the-crm-record">https://www.blungo.com/blogs/post/function-create-a-workdrive-team-folder-and-attach-it-to-the-crm-record</a>.</span></span></li><li><span style="color:inherit;">This tutorial is Part 2 of the WorkDrive folder creation series. The code will work as long as you already have a WorkDrive Team Folder attached to the Deal. You can modify the code as needed if you are not going to use a Team Folder. The code below includes some examples of different ways to get the folder ID.&nbsp;</span><br></li><li>You have to have full access to Zoho CRM and WorkDrive.</li></ul></div>
</div><div data-element-id="elm_bH9HTWKeMYa0wBOHoFGR9Q" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_bH9HTWKeMYa0wBOHoFGR9Q"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-align-left " data-editor="true">Creating a connection</h2></div>
<div data-element-id="elm_dXzVsdkCiYi3-R5EpU9GEQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_dXzVsdkCiYi3-R5EpU9GEQ"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><ol><li>In the CRM, go to the Setup.</li><li>Under &quot;developer space&quot;, click on &quot;connections&quot;.</li><li>Click on &quot;create connection&quot;.</li><li>The service is &quot;Zoho OAuth&quot;.</li><li>Name the connection. We are going to use &quot;<span style="background-color:rgb(178, 234, 121);">crm_workdrive</span>&quot;.</li><li>Add the scopes. Use the magnifier to easily find the scopes.</li><ol><li>List of scopes:&nbsp;ZohoCRM.modules.ALL, zohosearch.securesearch.READ, WorkDrive.team.ALL, WorkDrive.workspace.ALL, WorkDrive.files.ALL, WorkDrive.organization.READ, WorkDrive.members.READ, WorkDrive.members.CREATE, WorkDrive.members.UPDATE, WorkDrive.members.DELETE, WorkDrive.teamfolders.CREATE, WorkDrive.teamfolders.READ, WorkDrive.teamfolders.UPDATE, WorkDrive.teamfolders.DELETE, WorkDrive.teamfolders.sharing.CREATE, WorkDrive.teamfolders.sharing.READ, WorkDrive.teamfolders.sharing.UPDATE, WorkDrive.teamfolders.sharing.DELETE, WorkDrive.teamfolders.admin.READ, WorkDrive.groups.CREATE, WorkDrive.groups.READ, WorkDrive.groups.UPDATE, WorkDrive.groups.DELETE, WorkDrive.DataTemplates.CREATE, WorkDrive.DataTemplates.DELETE, WorkDrive.DataTemplates.UPDATE, WorkDrive.links.ALL, WorkDrive.users.READ</li></ol><li>Click on &quot;create and connect&quot;.</li><li>Click on &quot;connect&quot; and allow any permissions you are requested.</li></ol></div>
</div><div data-element-id="elm_FaQu2poynxcvsxnK4vLvCQ" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_FaQu2poynxcvsxnK4vLvCQ"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-align-left " data-editor="true">Setting up the function</h2></div>
<div data-element-id="elm_IYa4I1DOPxWtTnCpxCUwRQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_IYa4I1DOPxWtTnCpxCUwRQ"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><ol><li>In the Zoho CRM settings, go to &quot;Functions&quot; under &quot;Developer Space&quot;.</li><li>Create a new function: Add a name and select &quot;Automation&quot; as the category.</li><li>Copy the function located below and paste it in the text editor in Zoho CRM.</li><li>Edit the arguments: add &quot;deal_id&quot; as a string.<br></li><li>Generate your folder structure:</li><ol><li>Rename the folders,</li><li>Add more folders,</li><li>Create subfolders if needed.</li></ol><ol></ol><li>Test the function with a Deal that has a WorkDrive Team Folder attached.</li><li>Save the function.</li></ol></div>
</div><div data-element-id="elm_H8fAKd_WczpG-aXn7TY2Ew" data-element-type="row" class="zprow zprow-container zpalign-items-flex-start zpjustify-content-flex-start zpdefault-section zpdefault-section-bg " data-equal-column=""><style type="text/css"> [data-element-id="elm_H8fAKd_WczpG-aXn7TY2Ew"].zprow{ border-radius:1px; padding:0px; margin:0px; } </style><div data-element-id="elm_vATwNvQtHt_Lb9UIsJ_ysw" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- zpdefault-section zpdefault-section-bg "><style type="text/css"> [data-element-id="elm_vATwNvQtHt_Lb9UIsJ_ysw"].zpelem-col{ border-radius:1px; padding:0px; margin:0px; } </style><div data-element-id="elm_wwXiouMai5DJkNfQwsy17w" data-element-type="box" class="zpelem-box zpelement zpbox-container zpdefault-section zpdefault-section-bg "><style type="text/css"> [data-element-id="elm_wwXiouMai5DJkNfQwsy17w"].zpelem-box{ background-color:#34495E; background-image:unset; border-style:solid; border-color:rgba(45,141,180,1) !important; border-width:1px; border-radius:5px; padding:0px; margin:0px; } </style><div data-element-id="elm_hW28a2NU066oD2gZzH_AKw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_hW28a2NU066oD2gZzH_AKw"].zpelem-text { border-radius:1px; padding:20px; margin:0px; } </style><div class="zptext zptext-align-left " data-editor="true"><div><div><div><span style="color:rgb(255, 255, 255);">folder_info = zoho.crm.getRelatedRecords(&quot;Attachments&quot;,&quot;Deals&quot;,deal_id);</span></div><div><span style="color:rgb(255, 255, 255);">//this section finds the link in the attachments section, then it creates a list of elements in the link, and then picks the 8th element, which is the folder ID</span></div><div><span style="color:rgb(255, 255, 255);">Parent_Folder_ID = folder_info.get(0).get(&quot;$link_url&quot;).toList(&quot;/&quot;).get(8);</span></div><div><span style="color:rgb(255, 255, 255);">info Parent_Folder_ID;</span></div><div><span style="color:rgb(255, 255, 255);">// Option 2 to find the folder ID</span></div><div><span style="color:rgb(255, 255, 255);">// count = 0;</span></div><div><span style="color:rgb(255, 255, 255);">// for each&nbsp; item in folder_info</span></div><div><span style="color:rgb(255, 255, 255);">// {</span></div><div><span style="color:rgb(255, 255, 255);">// owner_id = folder_info.get(count).get(&quot;Owner&quot;).get(&quot;id&quot;);</span></div><div><span style="color:rgb(255, 255, 255);">// if(owner_id == &quot;4038274000010997002&quot;)</span></div><div><span style="color:rgb(255, 255, 255);">// {</span></div><div><span style="color:rgb(255, 255, 255);">// Parent_Folder_ID = folder_info.get(count).get(&quot;$link_url&quot;).toList(&quot;/&quot;).get(8);</span></div><div><span style="color:rgb(255, 255, 255);">// info Parent_Folder_ID;</span></div><div><span style="color:rgb(255, 255, 255);">// }</span></div><div><span style="color:rgb(255, 255, 255);">// count = count + 1;</span></div><div><span style="color:rgb(255, 255, 255);">// }</span></div><div><span style="color:rgb(255, 255, 255);">// Option 3: manually add the team folder ID</span></div><div><span style="color:rgb(255, 255, 255);">// Parent_Folder_ID = &quot;replacewithyourteamfolder&quot;;</span></div><div><span style="color:rgb(255, 255, 255);">// creating folder 1 ------------------------------------------------</span></div><div><span style="color:rgb(255, 255, 255);">folder_1 = zoho.workdrive.createFolder(&quot;Folder 1 Name&quot;,Parent_Folder_ID,&quot;crm_workdrive&quot;);</span></div><div><span style="color:rgb(255, 255, 255);">folder_1_id = folder_1.get(&quot;data&quot;).get(&quot;id&quot;);</span></div><div><span style="color:rgb(255, 255, 255);">//creating sub folders</span></div><div><span style="color:rgb(255, 255, 255);">subfolder_1 = zoho.workdrive.createFolder(&quot;Subfolder 1 Name&quot;,folder_1_id,&quot;crm_workdrive&quot;);</span></div><div><span style="color:rgb(255, 255, 255);">subfolder_2 = zoho.workdrive.createFolder(&quot;Subfolder 2 Name&quot;,folder_1_id,&quot;crm_workdrive&quot;);</span></div><div><span style="color:rgb(255, 255, 255);">// creating folder 2 -----------------------------------------------</span></div><div><span style="color:rgb(255, 255, 255);">folder_2 = zoho.workdrive.createFolder(&quot;Folder 2 Name&quot;,Parent_Folder_ID,&quot;crm_workdrive&quot;);</span></div><div><span style="color:rgb(255, 255, 255);">folder_2_id = folder_2.get(&quot;data&quot;).get(&quot;id&quot;);</span></div><div><span style="color:rgb(255, 255, 255);">//creating subfolders from list</span></div><div><span style="color:rgb(255, 255, 255);">subfolders = {&quot;Subfolder 3 Name&quot;,&quot;Subfolder 4 Name&quot;,&quot;Subfolder 5 Name&quot;,&quot;Subfolder 6 Name&quot;};</span></div><div><span style="color:rgb(255, 255, 255);">for each&nbsp; rec in subfolders</span></div><div><span style="color:rgb(255, 255, 255);">{</span></div><div><span style="color:rgb(255, 255, 255);">zoho.workdrive.createFolder(rec,folder_2_id,&quot;crm_workdrive&quot;);</span></div><div><span style="color:rgb(255, 255, 255);">}</span></div></div></div>
</div></div></div></div></div><div data-element-id="elm_F7_PNwVPap_oNUNACZmkRw" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_F7_PNwVPap_oNUNACZmkRw"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-align-left " data-editor="true">Creating a workflow</h2></div>
<div data-element-id="elm_0pXVcsx7xtyb2sp-wX_Rdg" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_0pXVcsx7xtyb2sp-wX_Rdg"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><ol><li>In the setup page, click on workflow rules under automations</li><li>Create a new rule, select the Deals module, and name it (we are selecting the Deals instead of the contact because we need to trigger this automation when a Deal stage changes)</li><li>Configure your workflow trigger and conditions:</li><ol><li>When &gt; on a record action &gt; Edit &gt; &quot;Subfolders Needed&quot; is modified to the value of &quot;Yes&quot;</li><li>Condition: all Deals</li></ol><li>As the instant action, select &quot;function&quot;</li><li>Click on &quot;new function&quot; and then select &quot;functions&quot;</li><li>Find the function you just created, and click on &quot;configure&quot;</li><li>Map the argument &quot;deal_id&quot; as the deal ID, using the # key</li><li>Click on &quot;save and associate&quot; and save the workflow</li><li>Test the workflow<br></li></ol></div></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Thu, 08 Jun 2023 16:12:52 -0700</pubDate></item><item><title><![CDATA[Function: Create a WorkDrive Team Folder and attach it to the CRM record]]></title><link>https://www.blungo.com/blogs/post/function-create-a-workdrive-team-folder-and-attach-it-to-the-crm-record</link><description><![CDATA[<img align="left" hspace="5" src="https://www.blungo.com/Blogpost/Thumbnails/Funcion- create workdrive team folder.png"/>We are going to create a workflow that will trigger a function that creates a Team folder in Zoho WorkDrive, and the folder will be attached to the attachments section in the CRM record. We are going to create a connection, then work on the function, and finally create the workflow.]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_8IviC7roTWy1pB8T5m2pag" data-element-type="section" class="zpsection "><style type="text/css"> [data-element-id="elm_8IviC7roTWy1pB8T5m2pag"].zpsection{ border-radius:1px; } </style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_QTBrCAUDSOyFRlCdpLN1GQ" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"> [data-element-id="elm_QTBrCAUDSOyFRlCdpLN1GQ"].zprow{ border-radius:1px; } </style><div data-element-id="elm_VoIP_gLFRbaPD-J1OwS1cA" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"> [data-element-id="elm_VoIP_gLFRbaPD-J1OwS1cA"].zpelem-col{ border-radius:1px; } </style><div data-element-id="elm_LzB0GcByTVzOvXDnsiVWog" data-element-type="iframe" class="zpelement zpelem-iframe "><style type="text/css"> [data-element-id="elm_LzB0GcByTVzOvXDnsiVWog"].zpelem-iframe{ border-radius:1px; } </style><div class="zpiframe-container zpiframe-align-center"><iframe class="zpiframe " src="https://www.youtube.com/embed/14ivaEjK9Gg" width="560" height="315" align="center" allowfullscreen frameBorder="0"></iframe></div>
</div><div data-element-id="elm__bttFMMbQBeQgsOADxw2gg" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm__bttFMMbQBeQgsOADxw2gg"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-align-left " data-editor="true">What we are going to do</h2></div>
<div data-element-id="elm_FZnVjR5LTqSOKJv9JmBOGQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_FZnVjR5LTqSOKJv9JmBOGQ"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;"><span style="font-size:12pt;">We are going to create a workflow that will trigger a function that creates a Team folder in Zoho WorkDrive, and the folder will be attached to the attachments section in the CRM record. We are going to create a connection, then work on the function, and finally create the workflow.</span></span><br></p></div>
</div><div data-element-id="elm_DiNwxandSxP56pZ4iGSklA" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_DiNwxandSxP56pZ4iGSklA"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-align-left " data-editor="true">Important notes</h2></div>
<div data-element-id="elm_hz8PZ4Xcqs0QNEQoK-bF4A" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_hz8PZ4Xcqs0QNEQoK-bF4A"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><ul><li><span style="color:inherit;"><span style="font-size:12pt;">We are going to create a Team Folder. If you want to create a normal folder, check out the next tutorial.</span></span></li><li><span style="color:inherit;"><span style="font-size:12pt;">You have to have full access to Zoho CRM and WorkDrive.</span></span></li><li><span style="color:inherit;"><span style="font-size:12pt;">We are going to use the Deals module, but this works with any module, as long as the attachments section is enabled.</span></span></li></ul></div>
</div><div data-element-id="elm_bH9HTWKeMYa0wBOHoFGR9Q" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_bH9HTWKeMYa0wBOHoFGR9Q"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-align-left " data-editor="true">Creating a connection</h2></div>
<div data-element-id="elm_dXzVsdkCiYi3-R5EpU9GEQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_dXzVsdkCiYi3-R5EpU9GEQ"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><ol><li>In the CRM, go to the Setup.</li><li>Under &quot;developer space&quot;, click on &quot;connections&quot;.</li><li>Click on &quot;create connection&quot;.</li><li>The service is &quot;Zoho OAuth&quot;.</li><li>Name the connection. We are going to use &quot;<span style="background-color:rgb(178, 234, 121);">crm_workdrive</span>&quot;.</li><li>Add the scopes. Use the magnifier to easily find the scopes.</li><ol><li>List of scopes:&nbsp;ZohoCRM.modules.ALL, zohosearch.securesearch.READ, WorkDrive.team.ALL, WorkDrive.workspace.ALL, WorkDrive.files.ALL, WorkDrive.organization.READ, WorkDrive.members.READ, WorkDrive.members.CREATE, WorkDrive.members.UPDATE, WorkDrive.members.DELETE, WorkDrive.teamfolders.CREATE, WorkDrive.teamfolders.READ, WorkDrive.teamfolders.UPDATE, WorkDrive.teamfolders.DELETE, WorkDrive.teamfolders.sharing.CREATE, WorkDrive.teamfolders.sharing.READ, WorkDrive.teamfolders.sharing.UPDATE, WorkDrive.teamfolders.sharing.DELETE, WorkDrive.teamfolders.admin.READ, WorkDrive.groups.CREATE, WorkDrive.groups.READ, WorkDrive.groups.UPDATE, WorkDrive.groups.DELETE, WorkDrive.DataTemplates.CREATE, WorkDrive.DataTemplates.DELETE, WorkDrive.DataTemplates.UPDATE, WorkDrive.links.ALL, WorkDrive.users.READ</li></ol><li>Click on &quot;create and connect&quot;.</li><li>Click on &quot;connect&quot; and allow any permissions you are requested.</li></ol></div>
</div><div data-element-id="elm_FaQu2poynxcvsxnK4vLvCQ" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_FaQu2poynxcvsxnK4vLvCQ"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-align-left " data-editor="true">Setting up the function</h2></div>
<div data-element-id="elm_IYa4I1DOPxWtTnCpxCUwRQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_IYa4I1DOPxWtTnCpxCUwRQ"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><ol><li>In the Zoho CRM settings, go to &quot;Functions&quot; under &quot;Developer Space&quot;.</li><li>Create a new function: Add a name and select &quot;Automation&quot; as the category.</li><li>Copy the function located below and paste it in the text editor in Zoho CRM.</li><li>Edit the arguments: add &quot;deal_id&quot; as a string.<br></li><li>Get the parent folder ID from Zoho WorkDrive (on the URL).</li><ol><li>Replace &quot;yourparentfolderid&quot; with the id from the URL.</li></ol><ol></ol><li>Make changes to the createTeamFolder function's parameters if needed:</li><ol><li>Add a description or leave it empty (&quot;&quot;).</li><li>Select if it's a public folder (&quot;true&quot;) or private folder (&quot;false&quot;).</li><li>Make sure the connection name matches the connection you created in the previous step.</li></ol><ol></ol><li>Test the function with any deal.</li><li>Save the function.</li></ol></div>
</div><div data-element-id="elm_H8fAKd_WczpG-aXn7TY2Ew" data-element-type="row" class="zprow zprow-container zpalign-items-flex-start zpjustify-content-flex-start zpdefault-section zpdefault-section-bg " data-equal-column=""><style type="text/css"> [data-element-id="elm_H8fAKd_WczpG-aXn7TY2Ew"].zprow{ border-radius:1px; padding:0px; margin:0px; } </style><div data-element-id="elm_vATwNvQtHt_Lb9UIsJ_ysw" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- zpdefault-section zpdefault-section-bg "><style type="text/css"> [data-element-id="elm_vATwNvQtHt_Lb9UIsJ_ysw"].zpelem-col{ border-radius:1px; padding:0px; margin:0px; } </style><div data-element-id="elm_wwXiouMai5DJkNfQwsy17w" data-element-type="box" class="zpelem-box zpelement zpbox-container zpdefault-section zpdefault-section-bg "><style type="text/css"> [data-element-id="elm_wwXiouMai5DJkNfQwsy17w"].zpelem-box{ background-color:#34495E; background-image:unset; border-style:solid; border-color:rgba(45,141,180,1) !important; border-width:1px; border-radius:5px; padding:0px; margin:0px; } </style><div data-element-id="elm_hW28a2NU066oD2gZzH_AKw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_hW28a2NU066oD2gZzH_AKw"].zpelem-text { border-radius:1px; padding:20px; margin:0px; } </style><div class="zptext zptext-align-left " data-editor="true"><div><div><div><div><span style="color:rgb(255, 255, 255);">DealInfo = zoho.crm.getRecordById(&quot;Deals&quot;,deal_id);</span></div><div><span style="color:rgb(255, 255, 255);">DealName = DealInfo.get(&quot;Deal_Name&quot;);</span></div><div><span style="color:rgb(255, 255, 255);">ParentFolderID = &quot;yourparentfolderid&quot;;</span></div><div><span style="color:rgb(255, 255, 255);">// limiting the amount of characters because the Workdrive folder name has a limit</span></div><div><span style="color:rgb(255, 255, 255);">if(DealName.len() &gt;= 40)</span></div><div><span style="color:rgb(255, 255, 255);">{</span></div><div><span style="color:rgb(255, 255, 255);">DealName = DealName.subString(0,40);</span></div><div><span style="color:rgb(255, 255, 255);">}</span></div><div><span style="color:rgb(255, 255, 255);">FolderName = DealName + &quot; - Main Folder&quot;;</span></div><div><span style="color:rgb(255, 255, 255);">// folder name - parent folder id - description - public - connection</span></div><div><span style="color:rgb(255, 255, 255);">Create_Team_Folder = zoho.workdrive.createTeamFolder(FolderName,ParentFolderID,&quot;Description test&quot;,true,&quot;crm_workdrive&quot;);</span></div><div><span style="color:rgb(255, 255, 255);">info Create_Team_Folder;</span></div><div><span style="color:rgb(255, 255, 255);">Team_Folder_ID = Create_Team_Folder.get(&quot;data&quot;).get(&quot;id&quot;);</span></div><div><span style="color:rgb(255, 255, 255);">info Team_Folder_ID;</span></div><div><span style="color:rgb(255, 255, 255);">// adding users to the team drive folder ----------------------------------------------</span></div><div><span style="color:rgb(255, 255, 255);">// l = {&quot;email1@yourdomain.com&quot;,&quot;email2@yourdomain.com&quot;};</span></div><div><span style="color:rgb(255, 255, 255);">// for each email in l</span></div><div><span style="color:rgb(255, 255, 255);">// {</span></div><div><span style="color:rgb(255, 255, 255);">// header = Map();</span></div><div><span style="color:rgb(255, 255, 255);">// header.put(&quot;Accept&quot;,&quot;application/vnd.api+json&quot;);</span></div><div><span style="color:rgb(255, 255, 255);">// data = Map();</span></div><div><span style="color:rgb(255, 255, 255);">// data_param1 = Map();</span></div><div><span style="color:rgb(255, 255, 255);">// att_param1 = Map();</span></div><div><span style="color:rgb(255, 255, 255);">// att_param1.put(&quot;resource_id&quot;,Team_Folder_ID);</span></div><div><span style="color:rgb(255, 255, 255);">// att_param1.put(&quot;shared_type&quot;,&quot;workspace&quot;);</span></div><div><span style="color:rgb(255, 255, 255);">// att_param1.put(&quot;email_id&quot;,email);</span></div><div><span style="color:rgb(255, 255, 255);">// att_param1.put(&quot;role_id&quot;,&quot;1&quot;);</span></div><div><span style="color:rgb(255, 255, 255);">// data_param1.put(&quot;attributes&quot;,att_param1);</span></div><div><span style="color:rgb(255, 255, 255);">// data_param1.put(&quot;type&quot;,&quot;members&quot;);</span></div><div><span style="color:rgb(255, 255, 255);">// data.put(&quot;data&quot;,data_param1);</span></div><div><span style="color:rgb(255, 255, 255);">// response = invokeurl</span></div><div><span style="color:rgb(255, 255, 255);">// [</span></div><div><span style="color:rgb(255, 255, 255);">// url :&quot;https://www.zohoapis.com/workdrive/api/v1/members&quot;</span></div><div><span style="color:rgb(255, 255, 255);">// type :POST</span></div><div><span style="color:rgb(255, 255, 255);">// parameters:data.toString()</span></div><div><span style="color:rgb(255, 255, 255);">// headers:header</span></div><div><span style="color:rgb(255, 255, 255);">// connection:&quot;crm_workdrive&quot;</span></div><div><span style="color:rgb(255, 255, 255);">// ];</span></div><div><span style="color:rgb(255, 255, 255);">// info response;</span></div><div><span style="color:rgb(255, 255, 255);">// }</span></div><div><span style="color:rgb(255, 255, 255);">// // link folder as ATTACHMENT IN CRM ------------------------------------------------</span></div><div><span style="color:rgb(255, 255, 255);">dataList = List();</span></div><div><span style="color:rgb(255, 255, 255);">data = Map();</span></div><div><span style="color:rgb(255, 255, 255);">data.put(&quot;$link_url&quot;,&quot;https://workdrive.zoho.com/home/&quot; + ParentFolderID + &quot;/teams/&quot; + ParentFolderID + &quot;/ws/&quot; + Team_Folder_ID + &quot;/folders/files&quot;);</span></div><div><span style="color:rgb(255, 255, 255);">data.put(&quot;File_Name&quot;,FolderName);</span></div><div><span style="color:rgb(255, 255, 255);">data.put(&quot;$type&quot;,&quot;teamdrive&quot;);</span></div><div><span style="color:rgb(255, 255, 255);">dataList.add(data);</span></div><div><span style="color:rgb(255, 255, 255);">payload = &quot;attachments=&quot; + zoho.encryption.urlEncode({&quot;data&quot;:dataList});</span></div><div><span style="color:rgb(255, 255, 255);">response = invokeurl</span></div><div><span style="color:rgb(255, 255, 255);">[</span></div><div><span style="color:rgb(255, 255, 255);">url :&quot;https://www.zohoapis.com/crm/v3/Deals/&quot; + deal_id + &quot;/Attachments&quot;</span></div><div><span style="color:rgb(255, 255, 255);">type :POST</span></div><div><span style="color:rgb(255, 255, 255);">parameters:payload</span></div><div><span style="color:rgb(255, 255, 255);">connection:&quot;crm_workdrive&quot;</span></div><div><span style="color:rgb(255, 255, 255);">content-type:&quot;application/x-www-form-urlencoded&quot;</span></div><div><span style="color:rgb(255, 255, 255);">];</span></div></div></div>
</div></div></div></div></div></div><div data-element-id="elm_F7_PNwVPap_oNUNACZmkRw" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_F7_PNwVPap_oNUNACZmkRw"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-align-left " data-editor="true">Creating a workflow</h2></div>
<div data-element-id="elm_0pXVcsx7xtyb2sp-wX_Rdg" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_0pXVcsx7xtyb2sp-wX_Rdg"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><ol><li>In the setup page, click on workflow rules under automations</li><li>Create a new rule, select the Deals module, and name it (we are selecting the Deals instead of the contact because we need to trigger this automation when a Deal stage changes)</li><li>Configure your workflow trigger and conditions:</li><ol><li>When &gt; on a record action &gt; Edit &gt; Stage is modified to the value of Won</li><li>Condition: all Deals</li></ol><li>As the instant action, select &quot;function&quot;</li><li>Click on &quot;new function&quot; and then select &quot;functions&quot;</li><li>Find the function you just created, and click on &quot;configure&quot;</li><li>Map the argument &quot;deal_id&quot; as the deal ID, using the # key</li><li>Click on &quot;save and associate&quot; and save the workflow</li><li>Test the workflow<br></li></ol></div></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Fri, 26 May 2023 09:54:32 -0700</pubDate></item><item><title><![CDATA[How to Create a Related Record with a Function in Zoho CRM]]></title><link>https://www.blungo.com/blogs/post/How-to-Create-a-Related-Record-with-a-Function-in-Zoho-CRM</link><description><![CDATA[<img align="left" hspace="5" src="https://www.blungo.com/Blogpost/Thumbnails/How to create related records automatically Zoho CRM.png"/>In this tutorial you are going to code a Deluge function that will create a related record in Zoho CRM.]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_8IviC7roTWy1pB8T5m2pag" data-element-type="section" class="zpsection "><style type="text/css"> [data-element-id="elm_8IviC7roTWy1pB8T5m2pag"].zpsection{ border-radius:1px; } </style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_QTBrCAUDSOyFRlCdpLN1GQ" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"> [data-element-id="elm_QTBrCAUDSOyFRlCdpLN1GQ"].zprow{ border-radius:1px; } </style><div data-element-id="elm_VoIP_gLFRbaPD-J1OwS1cA" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"> [data-element-id="elm_VoIP_gLFRbaPD-J1OwS1cA"].zpelem-col{ border-radius:1px; } </style><div data-element-id="elm_SKIrkD5eWgU9a6bRiSTjeQ" data-element-type="iframe" class="zpelement zpelem-iframe "><style type="text/css"> [data-element-id="elm_SKIrkD5eWgU9a6bRiSTjeQ"].zpelem-iframe{ border-radius:1px; } </style><div class="zpiframe-container zpiframe-align-center"><iframe class="zpiframe " src="https://www.youtube.com/embed/9IkaJz26ZwM" width="560" height="315" align="center" allowfullscreen frameBorder="0"></iframe></div>
</div><div data-element-id="elm__bttFMMbQBeQgsOADxw2gg" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm__bttFMMbQBeQgsOADxw2gg"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-align-left " data-editor="true">What we are going to do</h2></div>
<div data-element-id="elm_FZnVjR5LTqSOKJv9JmBOGQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_FZnVjR5LTqSOKJv9JmBOGQ"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>In this tutorial you are going to code a Deluge function that will create a related record in Zoho CRM. Then, we are going to add the function to a workflow, so it creates the record automatically. For this example, we are going to use the Deals module, that will trigger the automation, and a Custom module called Jobs, where the related record is going to be created. Both records are going to be linked.</p></div>
</div><div data-element-id="elm_DiNwxandSxP56pZ4iGSklA" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_DiNwxandSxP56pZ4iGSklA"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-align-left " data-editor="true">Pre-requisites</h2></div>
<div data-element-id="elm_hz8PZ4Xcqs0QNEQoK-bF4A" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_hz8PZ4Xcqs0QNEQoK-bF4A"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><ul><li>The modules you want to use have to be already built. If you want to learn how to create a custom module, here's a tutorial:&nbsp;<a href="https://youtu.be/B-b_5qg1FpI">https://youtu.be/B-b_5qg1FpI</a></li><li><span style="color:inherit;">The child module must already contain the fields to receive information from the main module.</span><br></li></ul></div>
</div><div data-element-id="elm_bH9HTWKeMYa0wBOHoFGR9Q" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_bH9HTWKeMYa0wBOHoFGR9Q"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-align-left " data-editor="true">Adding a Lookup field</h2></div>
<div data-element-id="elm_dXzVsdkCiYi3-R5EpU9GEQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_dXzVsdkCiYi3-R5EpU9GEQ"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><ol><li>In the Zoho CRM settings, go to &quot;Modules and Fields&quot;, and open the &quot;child&quot; module that you are going to link to the main module. In this case, we are going to open the Jobs module, that will be linked to the Deals module.</li><li>Open the layout where you are going to add the lookup field.</li><li>Drag and drop the lookup field to the layout.</li><li>Configure the lookup field:</li><ol><li>Name the field.</li><li>Select the lookup module. In our case, it it's the Deals module.</li><li>Name the related list. This is going to be displayed on the main module. We are going to call it &quot;Jobs&quot;.</li></ol><li>Click on &quot;Done&quot;.</li><li>Save the layout and close it.</li></ol></div>
</div><div data-element-id="elm_FaQu2poynxcvsxnK4vLvCQ" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_FaQu2poynxcvsxnK4vLvCQ"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-align-left " data-editor="true">Setting up the function</h2></div>
<div data-element-id="elm_IYa4I1DOPxWtTnCpxCUwRQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_IYa4I1DOPxWtTnCpxCUwRQ"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><ol><li>In the Zoho CRM settings, go to &quot;Functions&quot; under &quot;Developer Space&quot;.</li><li>Create a new function: Add a name and select &quot;Automation&quot; as the category.</li><li>Copy the function located below and paste it in the text editor in Zoho CRM.</li><li>Edit the arguments: add &quot;deal_id&quot; as a string.<br></li><li>Get the Deal variables to pass to the Job:</li><ol><li>Find the API Names in the CRM settings.</li></ol><li>Map the variables using the Job module API Names.</li><ol><li>Make sure to include the &quot;deal_id&quot;, so the records link to each other.</li></ol><li>Test the function.</li><li>Save the function.</li></ol></div>
</div><div data-element-id="elm_H8fAKd_WczpG-aXn7TY2Ew" data-element-type="row" class="zprow zprow-container zpalign-items-flex-start zpjustify-content-flex-start zpdefault-section zpdefault-section-bg " data-equal-column=""><style type="text/css"> [data-element-id="elm_H8fAKd_WczpG-aXn7TY2Ew"].zprow{ border-radius:1px; padding:0px; margin:0px; } </style><div data-element-id="elm_vATwNvQtHt_Lb9UIsJ_ysw" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- zpdefault-section zpdefault-section-bg "><style type="text/css"> [data-element-id="elm_vATwNvQtHt_Lb9UIsJ_ysw"].zpelem-col{ border-radius:1px; padding:0px; margin:0px; } </style><div data-element-id="elm_wwXiouMai5DJkNfQwsy17w" data-element-type="box" class="zpelem-box zpelement zpbox-container zpdefault-section zpdefault-section-bg "><style type="text/css"> [data-element-id="elm_wwXiouMai5DJkNfQwsy17w"].zpelem-box{ background-color:#34495E; background-image:unset; border-style:solid; border-color:rgba(45,141,180,1) !important; border-width:1px; border-radius:5px; padding:0px; margin:0px; } </style><div data-element-id="elm_hW28a2NU066oD2gZzH_AKw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_hW28a2NU066oD2gZzH_AKw"].zpelem-text { border-radius:1px; padding:20px; margin:0px; } </style><div class="zptext zptext-align-left " data-editor="true"><div><div><span style="color:rgb(255, 255, 255);">deal_info = zoho.crm.getRecordById(&quot;Deals&quot;,deal_id);</span></div>
<div><span style="color:rgb(255, 255, 255);">//</span></div><div><span style="color:rgb(255, 255, 255);">// get information about the deal</span></div>
<div><span style="color:rgb(255, 255, 255);">deal_name = deal_info.get(&quot;Deal_Name&quot;);</span></div>
<div><span style="color:rgb(255, 255, 255);">deal_estimator = deal_info.get(&quot;Estimator&quot;).get(&quot;id&quot;);</span></div>
<div><span style="color:rgb(255, 255, 255);">deal_type = deal_info.get(&quot;Type&quot;);</span></div>
<div><span style="color:rgb(255, 255, 255);">closing_date = deal_info.get(&quot;Closing_Date&quot;);</span></div>
<div><span style="color:rgb(255, 255, 255);">//</span></div><div><span style="color:rgb(255, 255, 255);">//create the record name</span></div>
<div><span style="color:rgb(255, 255, 255);">job_name = &quot;Job: &quot; + deal_name;</span></div>
<div><span style="color:rgb(255, 255, 255);">//</span></div><div><span style="color:rgb(255, 255, 255);">//map fields from the deal to the job</span></div>
<div><span style="color:rgb(255, 255, 255);">mp = Map();</span></div><div><span style="color:rgb(255, 255, 255);">mp.put(&quot;Type&quot;,deal_type);</span></div>
<div><span style="color:rgb(255, 255, 255);">mp.put(&quot;Estimator&quot;,deal_estimator);</span></div>
<div><span style="color:rgb(255, 255, 255);">mp.put(&quot;Closing_Date&quot;,closing_date);</span></div>
<div><span style="color:rgb(255, 255, 255);">mp.put(&quot;Name&quot;,job_name);</span></div>
<div><span style="color:rgb(255, 255, 255);">mp.put(&quot;<span style="font-size:14px;">Deal_Related</span>&quot;,deal_id);</span></div>
<div><span style="color:rgb(255, 255, 255);">//</span></div><div><span style="color:rgb(255, 255, 255);">//create the job</span></div>
<div><span style="color:rgb(255, 255, 255);">create_job = zoho.crm.createRecord(&quot;Jobs&quot;,mp);</span></div>
<div><span style="color:rgb(255, 255, 255);">info create_job;</span></div></div></div>
</div></div></div></div><div data-element-id="elm_F7_PNwVPap_oNUNACZmkRw" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_F7_PNwVPap_oNUNACZmkRw"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-align-left " data-editor="true">Creating a workflow</h2></div>
<div data-element-id="elm_0pXVcsx7xtyb2sp-wX_Rdg" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_0pXVcsx7xtyb2sp-wX_Rdg"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><ol><li>In the setup page, click on workflow rules under automations</li><li>Create a new rule, select the Deals module, and name it (we are selecting the Deals instead of the contact because we need to trigger this automation when a Deal stage changes)</li><li>Configure your workflow trigger and conditions:</li><ol><li>When &gt; on a record action &gt; Edit &gt; Stage is modified to the value of Won</li><li>Condition: all Deals</li></ol><li>As the instant action, select &quot;function&quot;</li><li>Click on &quot;new function&quot; and then select &quot;functions&quot;</li><li>Find the function you just created, and click on &quot;configure&quot;</li><li>Map the argument &quot;deal_id&quot; as the deal ID, using the # key</li><li>Click on &quot;save and associate&quot; and save the workflow</li><li>Test the workflow<br></li></ol></div></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Fri, 31 Mar 2023 11:29:14 -0700</pubDate></item><item><title><![CDATA[Set Up Subdomains for Zoho Apps]]></title><link>https://www.blungo.com/blogs/post/set-up-subdomains-for-zoho-apps</link><description><![CDATA[<img align="left" hspace="5" src="https://www.blungo.com/Blogpost/Thumbnails/Create a subdomain for your Zoho Apps.png"/>In this article, you are going to find a series of tips that will help you with setting up subdomains for Zoho apps. Watch the video for the full tutorial.]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_8IviC7roTWy1pB8T5m2pag" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_QTBrCAUDSOyFRlCdpLN1GQ" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"> [data-element-id="elm_QTBrCAUDSOyFRlCdpLN1GQ"].zprow{ border-radius:1px; } </style><div data-element-id="elm_VoIP_gLFRbaPD-J1OwS1cA" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"> [data-element-id="elm_VoIP_gLFRbaPD-J1OwS1cA"].zpelem-col{ border-radius:1px; } </style><div data-element-id="elm_TssOjPsmxvJicbm2RWP6Aw" data-element-type="iframe" class="zpelement zpelem-iframe "><style type="text/css"> [data-element-id="elm_TssOjPsmxvJicbm2RWP6Aw"].zpelem-iframe{ border-radius:1px; } </style><div class="zpiframe-container zpiframe-align-center"><iframe class="zpiframe " src="https://www.youtube.com/embed/Si_zaep0VqM" width="560" height="315" align="center" allowfullscreen frameBorder="0"></iframe></div>
</div><div data-element-id="elm__bttFMMbQBeQgsOADxw2gg" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm__bttFMMbQBeQgsOADxw2gg"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-align-left " data-editor="true">What we are going to do</h2></div>
<div data-element-id="elm_FZnVjR5LTqSOKJv9JmBOGQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_FZnVjR5LTqSOKJv9JmBOGQ"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>In this article you are going to find a series of tips that will help you with setting up subdomains for Zoho apps. Watch the video for the full tutorial.</p></div>
</div><div data-element-id="elm_DiNwxandSxP56pZ4iGSklA" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_DiNwxandSxP56pZ4iGSklA"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-align-left " data-editor="true">Tips</h2></div>
<div data-element-id="elm_Xxk_NPeah5V5w4v05pp0BQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_Xxk_NPeah5V5w4v05pp0BQ"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><ul><li>On the example we are using Zoho Bookings, but the process is very similar on other Zoho Apps.</li><li>Some Zoho Apps require you to add a verification subdomain to your DNS, besides the actual subdomain you want to use. So, you will be adding 2 records.</li><li>After you add the DNS records, you might have to wait up to 48 hours until they are ready.</li><li>Once you are able to verify the domain, you have to wait until Zoho installs an SSL Certificate to ensure encryption.</li><li>You can use subdomains on these Zoho Apps: Bookings, LandingPage, Desk (Knowledge Database), Recruit (Portals) , Projects, Books, Cliq, Forms, Meetings, Workdrive, Sites, Connect, People, and a lot more.</li></ul></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Mon, 20 Mar 2023 02:14:37 -0700</pubDate></item><item><title><![CDATA[Working with Multi-Select Look Up fields in Zoho CRM]]></title><link>https://www.blungo.com/blogs/post/working-with-multi-select-look-up-fields-in-zoho-crm</link><description><![CDATA[<img align="left" hspace="5" src="https://www.blungo.com/Blogpost/Thumbnails/Working with multi select lookup fields Zoho CRM.png"/>In this tutorial, we are going to show you how two different ways to find the Linking Module API fields, and we are going to review an example of how to search for records in a Multi-Select Look Up field.]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_8IviC7roTWy1pB8T5m2pag" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_QTBrCAUDSOyFRlCdpLN1GQ" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"> [data-element-id="elm_QTBrCAUDSOyFRlCdpLN1GQ"].zprow{ border-radius:1px; } </style><div data-element-id="elm_VoIP_gLFRbaPD-J1OwS1cA" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"> [data-element-id="elm_VoIP_gLFRbaPD-J1OwS1cA"].zpelem-col{ border-radius:1px; } </style><div data-element-id="elm_eFvagBqz9_P8zVMGB-Q3bA" data-element-type="iframe" class="zpelement zpelem-iframe "><style type="text/css"> [data-element-id="elm_eFvagBqz9_P8zVMGB-Q3bA"].zpelem-iframe{ border-radius:1px; } </style><div class="zpiframe-container zpiframe-align-center"><iframe class="zpiframe " src="https://www.youtube.com/embed/MgBWS7KKC9k" width="560" height="315" align="center" allowfullscreen frameBorder="0"></iframe></div>
</div><div data-element-id="elm__bttFMMbQBeQgsOADxw2gg" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm__bttFMMbQBeQgsOADxw2gg"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-align-left " data-editor="true">What we are going to do</h2></div>
<div data-element-id="elm_FZnVjR5LTqSOKJv9JmBOGQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_FZnVjR5LTqSOKJv9JmBOGQ"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>In this tutorial&nbsp;<span style="color:inherit;">we are going to show you how two different ways to find the Linking Module API fields, and we are going to review an example of how to search for records in a Multi-Select Look Up field.</span></p><p><span style="color:inherit;"><br></span></p><p><span style="color:inherit;">When you create a Multi-Select Look Up fields (MSLU), a new module called &quot;Linking Module&quot; is created. This module holds some basic information about how the two records are related. The Linking Module has it's own API name, so if you want to use it in a function, you have to know the API name. There are 2 ways you can get the API Name: searching in the CRM settings, or using a custom function.</span></p></div>
</div><div data-element-id="elm_DiNwxandSxP56pZ4iGSklA" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_DiNwxandSxP56pZ4iGSklA"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-align-left " data-editor="true">Linking Module API Name</h2></div>
<div data-element-id="elm_0-bi_BpOoQy3M0_uVCAdkQ" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_0-bi_BpOoQy3M0_uVCAdkQ"].zpelem-heading { border-radius:1px; } </style><h4
 class="zpheading zpheading-align-left " data-editor="true">CRM Settings</h4></div>
<div data-element-id="elm_Xxk_NPeah5V5w4v05pp0BQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_Xxk_NPeah5V5w4v05pp0BQ"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div>This is seems like the easy way to do it, but it might be more complicated than using a custom function. The issue with this way is that you have to make some assumptions. Normally, your assumptions will be correct, but there's a small chance that the name of one of the modules linked by the Linking module was changed, and this could conflict with the setup.</div><div><br></div><div><span style="text-decoration-line:underline;">Here's how to do it:</span></div><div><ol><li>In the CRM, go to the setup.</li><li>On the search bar, look for &quot;CRM API&quot;, and open the first result.</li><li>Click on the &quot;API names&quot; sub-tab.</li><li>Open any of the modules listed here.</li><li>Now, on the &quot;filters by&quot; section, click on the modules field.</li><li>If you scroll all the way down, you will find the Linking Modules.</li></ol><div><br></div></div><div><span style="color:inherit;"><img src="/Sun%20Mar%2005%202023.png" alt=""></span><br></div><div><span style="color:inherit;"><br></span></div><div><span style="color:inherit;">The Linking Module API name is the module name &quot;Contacts X Properties&quot;, but you have to replace the spaces with underscores like this &quot;Contacts_X_Properties&quot;. Now, if any of the modules' names changed, this method might not work for you.</span></div><div><span style="color:inherit;"><br></span></div><div>If you open any Linking Module, you will see the fields related to the module. We are going to use some of the fields in the example that you can find at the end of this article.</div><div><br></div><div><img src="/Sun%20Mar%2005%202023-3.png" alt="" style="color:inherit;"><span style="color:inherit;"><img alt="" id="imageUriImported"></span><span style="color:inherit;"><br></span></div></div>
</div><div data-element-id="elm_EAQOwjjvCyAgzI82YSDjog" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_EAQOwjjvCyAgzI82YSDjog"].zpelem-heading { border-radius:1px; } </style><h4
 class="zpheading zpheading-align-left " data-editor="true">Custom function</h4></div>
<div data-element-id="elm_42GNThegWdwOaqwQW9cfrw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_42GNThegWdwOaqwQW9cfrw"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div>This method is more complicated, but always gives you the correct Linking Modules API Names.</div><div><br></div><div><span style="text-decoration-line:underline;">Add a connection:</span></div><div><ol><li>In the CRM, go to the Setup.</li><li>Under &quot;developer space&quot;, click on &quot;connections&quot;.</li><li>Click on &quot;create connection&quot;.</li><li>The service is &quot;Zoho OAuth&quot;.</li><li>Name the connection. We are going to use &quot;linking_module_API&quot;.</li><li>The scope is &quot;ZohoCRM.settings.modules.ALL&quot;. Use the magnifier to easily find it.</li><li>Click on &quot;create and connect&quot;.</li><li>Click on &quot;connect&quot; and allow any permissions you are requested.</li></ol></div><div><br></div><div><span style="text-decoration-line:underline;">Create the function:</span></div><div><div style="color:inherit;"><div><ol><li>In the CRM, go to the Setup.</li><li>Under &quot;developer space&quot;, click on &quot;functions&quot;.</li><li>Create a new function with the &quot;new function&quot; button.</li><li>Name the function.</li><li>The category is &quot;automation&quot;.</li><li>Click on &quot;create&quot;.</li><li>Copy the first code listed below (called &quot;Find Linking Modules API Names&quot;)</li><li>Paste the code in the function.</li><li>Replace the connection name with the name of the connection created in the previous step.</li><li>Click on &quot;Save &amp; Execute&quot;.</li></ol></div><div><br></div><div>The console will give you a list of the Linking Modules API names.</div></div></div></div>
</div><div data-element-id="elm_ciq0YZMJ43EG0UdZ9rjivg" data-element-type="box" class="zpelem-box zpelement zpbox-container zpdefault-section zpdefault-section-bg "><style type="text/css"> [data-element-id="elm_ciq0YZMJ43EG0UdZ9rjivg"].zpelem-box{ background-color:#C4E8A1; background-image:unset; border-style:solid; border-color:#1D90E2 !important; border-width:1px; border-radius:5px; padding:20px; } </style><div data-element-id="elm_KmFzfv5GP7K1sB8gq6TcFg" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_KmFzfv5GP7K1sB8gq6TcFg"].zpelem-text { border-radius:1px; padding:0px; margin:0px; } </style><div class="zptext zptext-align-left " data-editor="true"><span style="font-size:16px;">// Finding Linking Modules API Names</span><div style="color:inherit;"><div> get_linking_modules_api = invokeurl </div>
<div> [ </div><div> url :&quot;https://www.zohoapis.com/crm/v3/settings/modules&quot; </div>
<div> type :GET </div><div> connection:&quot;<span style="color:inherit;">linking_module_api</span>&quot; </div>
<div> ]; </div><div> modules_info = get_linking_modules_api.get(&quot;modules&quot;); </div>
<div> for each&nbsp; item in modules_info </div><div> { </div><div> module_type = item.get(&quot;generated_type&quot;); </div>
<div> if(module_type == &quot;linking&quot;) </div><div> { </div><div> module_api = item.get(&quot;api_name&quot;); </div>
<div> info module_api; </div><div> } </div><div> } </div></div></div></div></div>
<div data-element-id="elm_qQGrfB2Sl8Sn6lgzL7Je6w" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_qQGrfB2Sl8Sn6lgzL7Je6w"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-align-left " data-editor="true">Example: Contacts and Properties Multi-Look Up Field</h2></div>
<div data-element-id="elm_wdrQLI4Zx4Q1mAJZ5SqRng" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_wdrQLI4Zx4Q1mAJZ5SqRng"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div>Let's say we have a custom module called Properties, that is related to the Contacts module. In the Contacts layout, we have a MSLU field where you can select multiple Properties.</div><div><br></div><div>If you try to get information from the MSLU using the &quot;get&quot; function, the result will be a string of text with all the Property names combined. There's no JSON with the Properties IDs or names.</div><div><br></div><div>Below you will find the function that you can copy and paste. We are going to explain each section individually. Make sure to add &quot;contact_id&quot; as an string in the arguments.</div><div><br></div><div>1)&nbsp;<span style="color:inherit;">property_list = zoho.crm.searchRecords(&quot;Contacts_X_Properties&quot;,&quot;(Property_Contact:equals:&quot; + contact_id + &quot;)&quot;);</span></div><div><span style="color:inherit;">This line uses the &quot;contact_id&quot; to search for all the properties that are linked to the Contact via the Linking Module. The &quot;Property_Contact&quot; API name can found by following the steps on the first section of this article. This function will return one o multiple results in a JSON.</span></div><div><br></div><div>2)&nbsp;<span style="color:inherit;">for each&nbsp; item in property_list</span></div><div>Now we are going over each result, and we will use some functions to get data from the properties.</div><div><br></div><div>3)&nbsp;<span style="color:inherit;">Property_id = item.get(&quot;Related_Properties&quot;).get(&quot;id&quot;);</span></div><div><span style="color:inherit;">We are getting the property ID using the field &quot;Related_Properties&quot; from the Linking Module.</span></div><div><span style="color:inherit;"><br></span></div><div><span style="color:inherit;">4)&nbsp;</span><span style="color:inherit;">Propert_info = zoho.crm.getRecordById(&quot;Properties&quot;,Property_id);</span></div><div><span style="color:inherit;">Now that we have the property ID, we can search for that property and get all the information related to it.</span></div><div><span style="color:inherit;"><br></span></div><div><span style="color:inherit;">5)&nbsp;</span><span style="color:inherit;">Property_name = Propert_info.get(&quot;Name&quot;);</span></div><div>From line 4, we can get, for example, the property name.</div><div><br></div><div>6)&nbsp;<span style="color:inherit;">Propery_sq = Propert_info.get(&quot;Sq_Footage&quot;);</span></div><div><span style="color:inherit;">From line 4, we can also get any other information stored in the property. In this case, we are getting the Square Footage.</span></div></div>
</div><div data-element-id="elm_OkwzJJoROSyyuERDXa7sZw" data-element-type="box" class="zpelem-box zpelement zpbox-container zpdefault-section zpdefault-section-bg "><style type="text/css"> [data-element-id="elm_OkwzJJoROSyyuERDXa7sZw"].zpelem-box{ background-color:#C4E8A1; background-image:unset; border-style:solid; border-color:#1D90E2 !important; border-width:1px; border-radius:5px; padding:20px; } </style><div data-element-id="elm_N3c9HSSF7CJcos94xnoSDQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_N3c9HSSF7CJcos94xnoSDQ"].zpelem-text { border-radius:1px; padding:0px; margin:0px; } </style><div class="zptext zptext-align-left " data-editor="true"><span style="font-size:16px;">// Example</span><div><span style="font-size:16px;"><div style="color:inherit;"><div>property_list = zoho.crm.searchRecords(&quot;Contacts_X_Properties&quot;,&quot;(Property_Contact:equals:&quot; + contact_id + &quot;)&quot;);</div><div>for each&nbsp; item in property_list</div><div>{</div><div>Property_id = item.get(&quot;Related_Properties&quot;).get(&quot;id&quot;);</div><div>Propert_info = zoho.crm.getRecordById(&quot;Properties&quot;,Property_id);</div><div>Property_name = Propert_info.get(&quot;Name&quot;);</div><div>info Property_name;</div><div>Propery_sq = Propert_info.get(&quot;Sq_Footage&quot;);</div><div>info Propery_sq;</div><div>}</div></div></span></div></div>
</div></div></div></div></div></div></div> ]]></content:encoded><pubDate>Thu, 09 Mar 2023 12:24:34 -0800</pubDate></item><item><title><![CDATA[How to verify domains on Zoho apps]]></title><link>https://www.blungo.com/blogs/post/How-to-verify-domains-on-Zoho-apps</link><description><![CDATA[<img align="left" hspace="5" src="https://www.blungo.com/Blogpost/Thumbnails/How to verify your domain on Zoho CRM- Campaigns and Desk -SPF- DKIM-.png"/>In this tutorial, I'm going to show you how to verify your domain for 3 different Zoho Apps. We will start with the CRM, and then move to Campaigns and Desk. Tips included!]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_2GiZLtiMR9SfyM52fGAOmg" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_wXRcHkOwSZKBGcDPd68sdQ" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"></style><div data-element-id="elm_ghCkkObDTs-wM6W31VyX5w" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"> [data-element-id="elm_ghCkkObDTs-wM6W31VyX5w"].zpelem-col{ border-radius:1px; } </style><div data-element-id="elm_N_3Gkdq48FU5908AwL6o-w" data-element-type="iframe" class="zpelement zpelem-iframe "><style type="text/css"> [data-element-id="elm_N_3Gkdq48FU5908AwL6o-w"].zpelem-iframe{ border-radius:1px; } </style><div class="zpiframe-container zpiframe-align-center"><iframe class="zpiframe " src="https://www.youtube.com/embed/l3uzkWpp7Ds" width="560" height="315" align="center" allowfullscreen frameBorder="0"></iframe></div>
</div><div data-element-id="elm_ygymS9iES5q3NVEmvLQiEw" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_ygymS9iES5q3NVEmvLQiEw"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-align-left " data-editor="true">Before we start</h2></div>
<div data-element-id="elm_en6EJrJAwTw4xt_2FLJc4A" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_en6EJrJAwTw4xt_2FLJc4A"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><div><ul><li>You have to have Zoho admin priviledges</li><li>You have to have access to the Domain Settings, and be able to add records to it</li><li>You have to have an email address with the domain you are going to verify</li></ul></div><div><br></div><div><span style="color:inherit;">We are going to verify the domain on the CRM, Campaigns and Desk, but this applies to most of the other Zoho Apps.</span></div></div></div>
</div><div data-element-id="elm_D47c2wLln-d1gcBVHLp80Q" data-element-type="box" class="zpelem-box zpelement zpbox-container zpdefault-section zpdefault-section-bg "><style type="text/css"> [data-element-id="elm_D47c2wLln-d1gcBVHLp80Q"].zpelem-box{ background-color:#A1CBE8; background-image:unset; border-style:solid; border-color:#1D90E2 !important; border-width:1px; border-radius:5px; padding:20px; margin:20px; } </style><div data-element-id="elm_J01QoMJbL4nI_vm2IRHNkQ" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_J01QoMJbL4nI_vm2IRHNkQ"].zpelem-heading { border-radius:1px; margin:0px; } </style><h5
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true">The Process<br></h5></div>
<div data-element-id="elm_wDH8DFoO2gNW8IwvxSe7zw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_wDH8DFoO2gNW8IwvxSe7zw"].zpelem-text { border-radius:1px; padding:0px; margin:0px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;font-size:20px;">We are going to add two or more records (SPF and DKIM) to our domain DNS, and then verify from the Zoho app that the records have been added.</span></p></div>
</div></div><div data-element-id="elm_pVHbwZI7dtS4mTgSFMLTKQ" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_pVHbwZI7dtS4mTgSFMLTKQ"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-align-left " data-editor="true"><span style="color:inherit;">Zoho CRM Domain Verification (also known as Email Authentication)</span></h2></div>
<div data-element-id="elm_t7wcjoyUSPy3gMLe5oA91w" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_t7wcjoyUSPy3gMLe5oA91w"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-center " data-editor="true"><p style="text-align:left;"><span style="text-decoration-line:underline;">Adding the Domain to the CRM Settings:</span><br></p><ol><li style="text-align:left;">Go to the setup and, under &quot;Channels&quot;, click on &quot;Email&quot;</li><li style="text-align:left;">Click on the tab &quot;Email Deliverability&quot;, and then on &quot;Add domain&quot;</li><li style="text-align:left;">Enter a valid email address that you have access to and click on &quot;Add domain&quot;</li><li style="text-align:left;">A code will be sent to your inbox: copy it</li><li style="text-align:left;">In the CRM, click on &quot;Enter Code&quot;, paste the code, and click on &quot;Verify&quot;</li></ol><p style="text-align:left;"><br></p><p style="text-align:left;"><span style="text-decoration-line:underline;">The domain has been verified, now let's validate it:</span></p><ol><li style="text-align:left;">Click on &quot;Validate Records&quot;</li><li style="text-align:left;">Copy the SPF record</li><li style="text-align:left;">Open your domain DNS settings, and add a new TXT record (<span style="background-color:rgb(4, 234, 119);">See Note 1</span>)</li><ol><li style="text-align:left;">The name is @ and the value is what you just copied from the CRM</li></ol><li style="text-align:left;">Now copy the subdomain name, which normally is a number followed by your domain</li><li style="text-align:left;">In the DNS settings, add a new TXT record</li><li style="text-align:left;">Paste the subdomain into the name section</li><li style="text-align:left;">On the CRM, copy the value, and back in the DNS Settings, paste it on the &quot;value&quot; field</li><li style="text-align:left;">Once both records have been added to the DNS Settings, go back to the CRM and click on &quot;Validate Records&quot;</li><li style="text-align:left;">The records have been validated (<span style="background-color:rgb(4, 234, 119);">See Note 2</span>)</li></ol></div>
</div><div data-element-id="elm_KXn2Fr9o8BNsEHECIGzTtw" data-element-type="box" class="zpelem-box zpelement zpbox-container zpdefault-section zpdefault-section-bg "><style type="text/css"> [data-element-id="elm_KXn2Fr9o8BNsEHECIGzTtw"].zpelem-box{ background-color:#A1E8C4; background-image:unset; border-style:solid; border-color:#04EA77 !important; border-width:1px; border-radius:5px; padding:20px; margin:20px; } </style><div data-element-id="elm_-8r8Irgb6cgmVZ1udRd3Kw" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_-8r8Irgb6cgmVZ1udRd3Kw"].zpelem-heading { border-radius:1px; margin:0px; } </style><h5
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true">Note 1</h5></div>
<div data-element-id="elm_0kJxmlVdu3MLiS21iQriWw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_0kJxmlVdu3MLiS21iQriWw"].zpelem-text { border-radius:1px; padding:0px; margin:0px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="font-size:20px;">If you already verified other Zoho Apps before, instead of adding a new SPF record, you have to edit the one you already added. Add the section that is not in the TXT record.</span><br></p></div>
</div></div><div data-element-id="elm_1yBeoaW7vVf0BwQ1drCb4w" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_1yBeoaW7vVf0BwQ1drCb4w"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-align-left " data-editor="true"><span style="color:inherit;">Zoho Campaigns Domain Verification</span></h2></div>
<div data-element-id="elm_EKoG7dhFkcofNmzWjhW35A" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_EKoG7dhFkcofNmzWjhW35A"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-center " data-editor="true"><p style="text-align:left;">If you have setup an email address with Zoho Campaings, the domain has been added to Campaigns, so you only need to verify the DNS records.</p><p style="text-align:left;"><span style="text-decoration-line:underline;"><br></span></p><p style="text-align:left;"><span style="text-decoration-line:underline;">Authenticating the domain in Zoho Campaigns:</span><br></p><ol><li style="text-align:left;">Go to the setup and, under &quot;Deliverability&quot;, click on &quot;Domain Authentication&quot;</li><ol><li style="text-align:left;">If your domain is not listed in this tab, click on &quot;Add Sender&quot; on the top right corner<br><img src="/Sun%20Jan%2022%202023-1.png" alt="" style="width:294.64px !important;height:111px !important;max-width:100% !important;"><br></li></ol><li style="text-align:left;">Next to the domain, click on &quot;Setup&quot;</li><li style="text-align:left;">Copy the SPF record</li><li style="text-align:left;">Open your domain DNS settings, and add a new TXT record (<span style="background-color:rgb(4, 234, 119);">See Note 1</span>)</li><ol><li style="text-align:left;">The name is @ and the value is what you just copied from Campaigns</li></ol><li style="text-align:left;">Now copy the subdomain name from the DKIM section, which normally is a number followed by your domain</li><li style="text-align:left;">In the DNS settings, add a new TXT record</li><li style="text-align:left;">Paste the subdomain into the name section</li><li style="text-align:left;">On the CRM, copy the value, and back in the DNS Settings, paste it on the &quot;value&quot; field</li><li style="text-align:left;">Save the record</li><li style="text-align:left;">Once both records (SPF and DKIM) have been added to the DNS Settings, go back to Campaigns and click on &quot;Verify Domain&quot;</li><li style="text-align:left;">The records have been validated (<span style="background-color:rgb(4, 234, 119);">See Note 2</span>)</li></ol></div>
</div><div data-element-id="elm_cYEin31GwMTbqHDmeeUdkA" data-element-type="box" class="zpelem-box zpelement zpbox-container zpdefault-section zpdefault-section-bg "><style type="text/css"> [data-element-id="elm_cYEin31GwMTbqHDmeeUdkA"].zpelem-box{ background-color:#A1E8C4; background-image:unset; border-style:solid; border-color:#04EA77 !important; border-width:1px; border-radius:5px; padding:20px; margin:20px; } </style><div data-element-id="elm_SVhuEkfleGIfCdOrB9Gt-A" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_SVhuEkfleGIfCdOrB9Gt-A"].zpelem-heading { border-radius:1px; margin:0px; } </style><h5
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true">Note 2</h5></div>
<div data-element-id="elm_HhzWjW-24IguPdjV_E5uiA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_HhzWjW-24IguPdjV_E5uiA"].zpelem-text { border-radius:1px; padding:0px; margin:0px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="font-size:20px;">I</span><span style="font-size:20px;color:inherit;">f you are having issues with verifying the domain, try to add the DKIM in a different way. Normally, the error is on the name of the record. Here are some examples:</span><br></p><ul><li><span style="font-size:20px;">11111111._domainkey.blungo.co</span></li><li><span style="color:inherit;"><span style="font-size:20px;">11111111._domainkey.blungo.co.blungo.co</span></span><span style="font-size:20px;"><br></span></li><li><span style="color:inherit;"><span style="font-size:20px;">11111111._domainkey</span></span></li></ul></div>
</div></div><div data-element-id="elm_Rz3DBPHRPZqhmmdLVQJwbw" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_Rz3DBPHRPZqhmmdLVQJwbw"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-align-left " data-editor="true"><span style="color:inherit;">Zoho Desk Domain Verification</span></h2></div>
<div data-element-id="elm_hFxA1GZ7cDZZUGLObX0gWQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_hFxA1GZ7cDZZUGLObX0gWQ"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-center " data-editor="true"><p style="text-align:left;"><span style="text-decoration-line:underline;">Adding the Domain to the Desk Settings:</span><br></p><ol><li style="text-align:left;">Go to the setup and, under &quot;Channels&quot;, click on &quot;Email&quot;</li><li style="text-align:left;">Click on the tab &quot;From Address&quot;, and add a &quot;New From Address&quot;</li><li style="text-align:left;">Enter a valid email address that you have access, as well as a name</li><li style="text-align:left;">Click on &quot;Save&quot;</li><li style="text-align:left;">A verification link has been sent to your email: click on it</li><li style="text-align:left;">The email has been verified</li></ol><p style="text-align:left;"><br></p><p style="text-align:left;"><span style="text-decoration-line:underline;">Domain authentication:</span></p><ol><li style="text-align:left;">Click on the &quot;DKIM Authentication&quot; tab</li><li style="text-align:left;">Click on &quot;Verify&quot; next to the domain</li><ol><li style="text-align:left;">If you don't see the domain listed here, first you have to add a &quot;From Address&quot; with the domain you want to verify</li></ol><li style="text-align:left;">On the new window, copy the SPF record</li><li style="text-align:left;">Open your domain DNS settings, and add a new TXT record (<span style="background-color:rgb(4, 234, 119);">See Note 1</span>)</li><ol><li style="text-align:left;">The name is @ and the value is what you just copied from Desk</li></ol><li style="text-align:left;">Now let's add the 2 DKIM records:</li><ol><li style="text-align:left;">&nbsp;Copy the first subdomain name</li><li style="text-align:left;">In the DNS settings, add a new TXT record</li><li style="text-align:left;">Paste the first subdomain into the name section</li><li style="text-align:left;">On Desk, copy the first value, and back in the DNS Settings, paste it on the &quot;value&quot; field</li><li style="text-align:left;">Save it</li><li style="text-align:left;">Follow the same steps to add the second DKIM record (<span style="background-color:rgb(4, 234, 119);">See Note 3</span>)</li></ol><li style="text-align:left;">Once all the records have been added to the DNS Settings, go back to Desk and click on &quot;Verify&quot;</li><li style="text-align:left;">The records have been validated</li></ol></div>
</div><div data-element-id="elm_gzig0Gm7TCXMvyK80m0C9g" data-element-type="box" class="zpelem-box zpelement zpbox-container zpdefault-section zpdefault-section-bg "><style type="text/css"> [data-element-id="elm_gzig0Gm7TCXMvyK80m0C9g"].zpelem-box{ background-color:#A1E8C4; background-image:unset; border-style:solid; border-color:#04EA77 !important; border-width:1px; border-radius:5px; padding:20px; margin:20px; } </style><div data-element-id="elm_CykjG2fZvlauioOJ7r7gtw" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_CykjG2fZvlauioOJ7r7gtw"].zpelem-heading { border-radius:1px; margin:0px; } </style><h5
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true">Note 3</h5></div>
<div data-element-id="elm_Os7vD0QQYtD4uK_EeOMCaw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_Os7vD0QQYtD4uK_EeOMCaw"].zpelem-text { border-radius:1px; padding:0px; margin:0px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="font-size:20px;">Some DKIM records will work for multiple Zoho apps, so if you already added the record, you don't have to add it again. The DNS Settings will let you know if you are trying to add a duplicate record.</span></p></div>
</div></div></div></div></div></div></div> ]]></content:encoded><pubDate>Sun, 22 Jan 2023 12:57:34 -0800</pubDate></item><item><title><![CDATA[Zoho CRM: Execute Function with a Button]]></title><link>https://www.blungo.com/blogs/post/zoho-crm-execute-function-with-a-button</link><description><![CDATA[In this tutorial we are going to create a button that will trigger a function after we select some records. You can trigger any function you want, but ]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_TtU0TENxTeG-8VJMZKTgPw" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_08smufW4TguER_xF20H4jA" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"> [data-element-id="elm_08smufW4TguER_xF20H4jA"].zprow{ border-radius:1px; } </style><div data-element-id="elm_aDRteiiQQcifmwXpcREWNg" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"> [data-element-id="elm_aDRteiiQQcifmwXpcREWNg"].zpelem-col{ border-radius:1px; } </style><div data-element-id="elm_oK-C9QwaTtHI7jdSOYeqSA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_oK-C9QwaTtHI7jdSOYeqSA"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>In this tutorial we are going to create a button that will trigger a function after we select some records. You can trigger any function you want, but for this example we are going to keep things simple. The button will trigger a function that updates a field.<br></p></div>
</div><div data-element-id="elm_B-UuhmLNPQchcpQVaFx2uQ" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_B-UuhmLNPQchcpQVaFx2uQ"].zpelem-heading { border-radius:1px; } </style><h3
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true">Part 1: Creating the function</h3></div>
<div data-element-id="elm_CUhldDoto_pJXOkxeijcfg" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_CUhldDoto_pJXOkxeijcfg"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><ol><li>In the set up page, click on &quot;functions&quot; under &quot;developer space&quot;</li><li>Click on the &quot;new function&quot; button</li><li>Name the function and select <span style="text-decoration-line:underline;">Button</span> as the category</li><li>Copy the code down below and paste it in the function's body</li><li>Highlighted in <span style="background-color:rgb(244, 244, 78);">yellow</span> you will find the part of the function you can replace with your own function.</li><li>Now click on &quot;Edit Arguments&quot; and map the argument &quot;<span style="background-color:rgb(161, 203, 232);">id</span>&quot; as a &quot;string&quot;</li><ol><li>If you added your own function that has variables, map them in the arguments section as well</li></ol><li>Finally save the arguments and save the function</li></ol></div>
</div><div data-element-id="elm_zba70tKP6baRtVIXWv5QtQ" data-element-type="box" class="zpelem-box zpelement zpbox-container zpdefault-section zpdefault-section-bg "><style type="text/css"> [data-element-id="elm_zba70tKP6baRtVIXWv5QtQ"].zpelem-box{ background-color:#A1E8C4; background-image:unset; border-style:solid; border-color:#04EA77 !important; border-width:2px; border-radius:15px; margin:20px; } </style><div data-element-id="elm_blWso7AeVA4bx8FAKD_mbg" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_blWso7AeVA4bx8FAKD_mbg"].zpelem-text { border-radius:1px; margin:20px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><div style="color:inherit;"><div>idList = <span style="background-color:rgb(161, 203, 232);">id</span>.toList(&quot;|||&quot;);</div><div>for each id in idList</div><div>{</div><div><div style="color:inherit;"><div><span style="background-color:rgb(244, 244, 78);">currentDate = today;</span></div><div><span style="background-color:rgb(244, 244, 78);">update = zoho.crm.updateRecord(&quot;Deals&quot;,id,{&quot;Contract_signed&quot;:currentDate});</span></div></div></div><div>}</div><div>return &quot;Contract signed date updated&quot;;</div></div></div></div>
</div></div><div data-element-id="elm_F04y-09OZllB9eFE3uMz3w" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_F04y-09OZllB9eFE3uMz3w"].zpelem-heading { border-radius:1px; } </style><h3
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true">Part 2: Creating the button</h3></div>
<div data-element-id="elm_A83fbC-Czpy9FvVPRANHbQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_A83fbC-Czpy9FvVPRANHbQ"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><ol><li>In the setup page, go to &quot;Modules and fields&quot; under &quot;Customization&quot;</li><li>Open the module that you are creating the function for. In my case it's the Deals module</li><li>On the top, click on &quot;Links and Buttons&quot;</li><li>Click on &quot;New Button&quot;</li><li>Name the button and add a description if you would like to</li><li>Select &quot;List View - Mass Action Menu&quot; as the place were the button is going to be located</li><li>The action to perform is &quot;From Existing Actions&quot; under &quot;Functions&quot;</li><li>Now click on &quot;Configure&quot; next to the function you just created</li><li>Map the &quot;id&quot; parameter to the Deal Id field, pressing #</li><li>Save everything and test the button</li></ol></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Thu, 25 Nov 2021 10:07:04 -0800</pubDate></item><item><title><![CDATA[Function: Count Related Records in Zoho CRM]]></title><link>https://www.blungo.com/blogs/post/function-count-related-records-in-zoho-crm</link><description><![CDATA[In this tutorial we are going to create a function that will count the related record of a record, and will add the total count to a field that you ca ]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_TtU0TENxTeG-8VJMZKTgPw" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_08smufW4TguER_xF20H4jA" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"> [data-element-id="elm_08smufW4TguER_xF20H4jA"].zprow{ border-radius:1px; } </style><div data-element-id="elm_aDRteiiQQcifmwXpcREWNg" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"> [data-element-id="elm_aDRteiiQQcifmwXpcREWNg"].zpelem-col{ border-radius:1px; } </style><div data-element-id="elm_oK-C9QwaTtHI7jdSOYeqSA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_oK-C9QwaTtHI7jdSOYeqSA"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>In this tutorial we are going to create a function that will count the related record of a record, and will add the total count to a field that you can use to filter your records or trigger other automations. For this example, we will count how many Deals are related to a Contact, but you can replace the variables to count other related records, even if they are part of a custom module.<br></p><p><br>This function will trigger when a new Deal is created. So when you create a new Deal, it will find the contact related to that Deal, and it will count how many Deals the Contact has, and then it will place the total number in a field in the Contact.</p><p><br></p><p>If you would like to run this function on all the records you currently have, without having to wait for a related record to be created, you will have to create a different function that will update all the records at once. This tutorial doesn't show how to do that.</p></div>
</div><div data-element-id="elm_N91jtSW8b7btidnA7vJ3EA" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_N91jtSW8b7btidnA7vJ3EA"].zpelem-heading { border-radius:1px; } </style><h3
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><span style="color:inherit;"><p>Part 1: Add a field to the Contacts layout</p></span></h3></div>
<div data-element-id="elm_eD65lYRAak449YcvKkgoVA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_eD65lYRAak449YcvKkgoVA"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><ol><li>In CRM, open the set up page, then go to modules and fields under customization</li><li>Open your deals module, in my case it's called opportunities</li><li>Open the layout you want to edit</li><li>Add a user field and name it</li><li>Save and close the module</li><li>Then, on the setup, go to developer space and click on APIs</li><li>On the top, go to APIs names and open &quot;Deals&quot;</li><li>On the list, find the field you just created, and take note of the API name</li></ol><p><br></p></div>
</div><div data-element-id="elm_B-UuhmLNPQchcpQVaFx2uQ" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_B-UuhmLNPQchcpQVaFx2uQ"].zpelem-heading { border-radius:1px; } </style><h3
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true">Part 2: Creating the function</h3></div>
<div data-element-id="elm_CUhldDoto_pJXOkxeijcfg" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_CUhldDoto_pJXOkxeijcfg"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><ol><li>In the set up, click on &quot;functions&quot; under &quot;developer space&quot;</li><li>Click on the &quot;new function&quot; button</li><li>Name the function and select automation as the category</li><li>Copy the code down below and paste it in the function's body</li><li>Replace &quot;<span style="background-color:rgb(178, 234, 121);">API_name_field</span>&quot; for the API name that you found on step one (where you want to place the total count number)</li><li>Find the API name of the module that you would like to count, in my case it's Deals</li><li>Replace &quot;<span style="background-color:rgb(234, 234, 4);">API_name_to_count</span>&quot; with the API name found (Deals)</li><li><div style="color:inherit;"><div>Find the API name of the main module, in my case it's Contacts</div></div></li><li><div><span style="color:inherit;">Replace &quot;<span style="background-color:rgb(243, 156, 18);">API_name_record</span>&quot; with the API name found (Contacts)</span></div></li><li>Now click on &quot;Edit Arguments&quot; and map the argument &quot;<span style="background-color:rgb(161, 203, 232);">contactId</span>&quot; as a &quot;string&quot; (you can change the name of this argument if the main module is different; ie: if you are counting products related to a deal, the main module will be Deal, so you can call this field &quot;DEALID&quot;)</li><li>Finally save the arguments and save the function</li></ol></div>
</div><div data-element-id="elm_zba70tKP6baRtVIXWv5QtQ" data-element-type="box" class="zpelem-box zpelement zpbox-container zpdefault-section zpdefault-section-bg "><style type="text/css"> [data-element-id="elm_zba70tKP6baRtVIXWv5QtQ"].zpelem-box{ background-color:#A1E8C4; background-image:unset; border-style:solid; border-color:#04EA77 !important; border-width:2px; border-radius:15px; margin:20px; } </style><div data-element-id="elm_blWso7AeVA4bx8FAKD_mbg" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_blWso7AeVA4bx8FAKD_mbg"].zpelem-text { border-radius:1px; margin:20px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><div>relRecords = zoho.crm.getRelatedRecords(&quot;<span style="background-color:rgb(234, 234, 4);">API_name_to_count</span>&quot;,&quot;<span style="background-color:rgb(243, 156, 18);">API_name_record</span>&quot;,<span style="background-color:rgb(161, 203, 232);">contactId</span>.toLong());</div><div>mp = Map();</div><div>mp.put(&quot;<span style="background-color:rgb(178, 234, 121);">API_name_field</span>&quot;,relRecords.size().toString());</div><div>updateResp = zoho.crm.updateRecord(&quot;<span style="color:inherit;background-color:rgb(243, 156, 18);">API_name_record</span>&quot;,<span style="background-color:rgb(161, 203, 232);">contactId</span>.toLong(),mp);</div><div>info updateResp;</div></div></div>
</div></div><div data-element-id="elm_F04y-09OZllB9eFE3uMz3w" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_F04y-09OZllB9eFE3uMz3w"].zpelem-heading { border-radius:1px; } </style><h3
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true">Part 3: Creating the workflow</h3></div>
<div data-element-id="elm_A83fbC-Czpy9FvVPRANHbQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_A83fbC-Czpy9FvVPRANHbQ"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><ol><li>In the setup page, click on workflow rules under automations</li><li>Create a new rule, select the Deals module, and name it (we are selecting the Deals instead of the contact because we need to trigger this automation when a Deal is created; you have to select the module that you are counting)</li><li>Configure your workflow trigger and conditions:</li><ol><li>When &gt; on a record action &gt; at creation</li><li>Condition: all Deals</li></ol><li>As the instant action, select &quot;function&quot;</li><li>Click on &quot;new function&quot; and then select &quot;functions&quot;</li><li>Find the function you just created, and click on &quot;configure&quot;</li><li>Map the argument &quot;potId&quot; as the deal ID, using the # key</li><li>Click on &quot;save and associate&quot; and save the workflow</li><li>Test the workflow</li></ol></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Thu, 18 Nov 2021 11:34:13 -0800</pubDate></item><item><title><![CDATA[Automatically create a project when deal is won (Zoho Projects and CRM)]]></title><link>https://www.blungo.com/blogs/post/Automatically-create-a-Zoho-Project-when-deal-is-won-in-Zoho-CRM</link><description><![CDATA[In this tutorial we are going to set up a workflow and a function that will create a project in Zoho Project, after a deal was modified in Zoho CRM. W ]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_TtU0TENxTeG-8VJMZKTgPw" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_08smufW4TguER_xF20H4jA" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"> [data-element-id="elm_08smufW4TguER_xF20H4jA"].zprow{ border-radius:1px; } </style><div data-element-id="elm_aDRteiiQQcifmwXpcREWNg" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"> [data-element-id="elm_aDRteiiQQcifmwXpcREWNg"].zpelem-col{ border-radius:1px; } </style><div data-element-id="elm_KuXYhVEqjljoEFMIckCChA" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_KuXYhVEqjljoEFMIckCChA"].zpelem-heading { border-radius:1px; } </style><h3
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true">How it works</h3></div>
<div data-element-id="elm_keZ0bLXAQqWCZIR6M9LlDA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_keZ0bLXAQqWCZIR6M9LlDA"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p style="text-align:left;">In this tutorial we are going to set up a workflow and a function that will create a project in Zoho Project, after a deal was modified in Zoho CRM. When a user makes specific changes in Zoho CRM, like updating the deal stage, this will trigger a workflow that will call a function, and this function will create the project, as well as transferring information from the deal.</p></div>
</div><div data-element-id="elm_koFmoffNMMiOR7lfT4qupw" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_koFmoffNMMiOR7lfT4qupw"].zpelem-heading { border-radius:1px; } </style><h3
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true">Pre-requisites</h3></div>
<div data-element-id="elm_H-ryoygftDyZ8H9mU0rPtA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_H-ryoygftDyZ8H9mU0rPtA"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><ul><li style="text-align:left;">The deals layout has to be ready, with all fields matching the ones in Zoho Projects. Video:&nbsp;<a href="https://youtu.be/UK_MpUnYWvg">https://youtu.be/UK_MpUnYWvg</a></li><li style="text-align:left;">The project layout has to be ready as well, matching Zoho CRM fields. Video:&nbsp;<a href="https://youtu.be/Dy6K_fwARGw?t=14">https://youtu.be/Dy6K_fwARGw?t=14</a></li><li style="text-align:left;">A template in Zoho Projects has to be created. Video:&nbsp;<a href="https://youtu.be/Dy6K_fwARGw?t=126">https://youtu.be/Dy6K_fwARGw?t=126</a></li></ul></div>
</div><div data-element-id="elm_8pEZ4tCbomOsRT_x7dgTQA" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_8pEZ4tCbomOsRT_x7dgTQA"].zpelem-heading { border-radius:1px; } </style><h3
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true">Optional</h3></div>
<div data-element-id="elm_7iSy70Puoc8nCTzt8Hnamw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_7iSy70Puoc8nCTzt8Hnamw"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>This automation will <span style="font-weight:700;">NOT</span> work if the account field on the Deal is empty. You can manually assign an Account, before wining the Deal, or you can create a workflow to do it. If you choose to create a workflow, here are the steps:&nbsp;<a href="https://www.blungo.com/blogs/post/workflow-assign-account-to-a-deal-automatically-zoho-crm">https://www.blungo.com/blogs/post/workflow-assign-account-to-a-deal-automatically-zoho-crm</a><br></p></div>
</div><div data-element-id="elm_fY9G8YpKEL6qdrpxUBSiuQ" data-element-type="divider" class="zpelement zpelem-divider "><style type="text/css"> [data-element-id="elm_fY9G8YpKEL6qdrpxUBSiuQ"].zpelem-divider{ border-radius:1px; } </style><style></style><div class="zpdivider-container zpdivider-line zpdivider-align-center zpdivider-width100 zpdivider-line-style-solid "><div class="zpdivider-common"></div>
</div></div><div data-element-id="elm_N91jtSW8b7btidnA7vJ3EA" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_N91jtSW8b7btidnA7vJ3EA"].zpelem-heading { border-radius:1px; } </style><h1
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true">Creating the automation</h1></div>
<div data-element-id="elm_R9X6qYm0Syg1cX7j_kHJdQ" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_R9X6qYm0Syg1cX7j_kHJdQ"].zpelem-heading { border-radius:1px; } </style><h3
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><span style="text-decoration-line:underline;">Part 1</span>: Adding a new connection</h3></div>
<div data-element-id="elm_eD65lYRAak449YcvKkgoVA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_eD65lYRAak449YcvKkgoVA"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><ol><li>In CRM, go to developer space and the to connections</li><li>Click on Add new connection, and select ZohoOAuth</li><li>Connection name: relateproject</li><li>Connection Link name: relateproject</li><li>Scope: choose these two variables: ZohoCRM.modules.ALL, ZohoProjects.projects.ALL, and ZohoProjects.projects.CREATE</li><li>Click on &quot;create and connect&quot;, and when a new window pops up, click on &quot;accept&quot;</li></ol></div>
</div><div data-element-id="elm_K6YbHvj5Ji0BZyBBbJzIEw" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_K6YbHvj5Ji0BZyBBbJzIEw"].zpelem-heading { border-radius:1px; } </style><h3
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><span style="text-decoration-line:underline;">Part 2</span>: Adding a new function</h3></div>
<div data-element-id="elm_AnwD2u1czuApupRLez7ogA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_AnwD2u1czuApupRLez7ogA"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><ol><li>In the CRM, go to developers and then functions, and add a new function</li><li>Name it &quot;Create Project&quot; and select automation as the category</li><li>Copy the function listed below and paste in the function window</li><li>Click on &quot;edit arguments&quot;, and map the the arguments as shown in the image below the function</li><ul><li>You need to map: <span style="font-weight:700;">ProjName</span>, <span style="font-weight:700;">Description</span>, <span style="font-weight:700;">TemplateID</span>, <span style="font-weight:700;">PortalName</span>&nbsp;as <span style="font-style:italic;">string</span>&nbsp;and <span style="font-weight:700;">id</span> as <span style="font-style:italic;">int</span><br></li></ul></ol></div>
</div><div data-element-id="elm_0cpLipvMHrJS6XRBiyu66Q" data-element-type="box" class="zpelem-box zpelement zpbox-container zpdefault-section zpdefault-section-bg "><style type="text/css"> [data-element-id="elm_0cpLipvMHrJS6XRBiyu66Q"].zpelem-box{ background-color:#A1E8C4; background-image:unset; border-style:solid; border-color:#04EA77 !important; border-width:2px; border-radius:15px; margin:20px; } </style><div data-element-id="elm_KC6bEj1E5cl9KFRHmFexOA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_KC6bEj1E5cl9KFRHmFexOA"].zpelem-text { border-radius:1px; margin:20px; } </style><div class="zptext zptext-align-left " data-editor="true"><span style="color:inherit;"><div>createMap = Map();</div><div>createMap.put(&quot;name&quot;,ProjName);</div><div>createMap.put(&quot;description&quot;,Description);</div><div>createMap.put(&quot;template_id&quot;,TemplateID);</div><div>//custom fields</div><div>//end of custom fields</div><div>response = zoho.projects.createProject(PortalName,createMap,&quot;relateproject&quot;);</div><div>info response;</div><div>mp = Map();</div><div>mp.put(&quot;name&quot;,ProjName);</div><div>datalist = List();</div><div>datalist.add(mp);</div><div>datamp = Map();</div><div>datamp.put(&quot;data&quot;,datalist);</div><div>resp2 = invokeurl</div><div>[</div><div>url :&quot;https://www.zohoapis.com/crm/v2/Deals/&quot; + id + &quot;/Zoho_Projects/&quot; + response.getJSON(&quot;projects&quot;).getJSON(&quot;id&quot;)</div><div>type :POST</div><div>parameters:datamp.toString()</div><div>connection:&quot;relateproject&quot;</div><div>];</div><div>info resp2;</div></span></div>
</div></div><div data-element-id="elm_b5VpCfBYOzkq-a5Zv5SoZQ" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_b5VpCfBYOzkq-a5Zv5SoZQ"].zpelem-heading { border-radius:1px; } </style><h3
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><span style="text-decoration-line:underline;">Part 3</span>: Testing the function</h3></div>
<div data-element-id="elm_-2l-5tpvRh69vNeFcPNB1w" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_-2l-5tpvRh69vNeFcPNB1w"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><ol><li>Click on &quot;save and execute&quot;</li><li>In the new dialog, add your parameters:</li><ol><li><span style="font-weight:700;">ProjName</span>: Any name you want for the project<br></li><li><span style="font-weight:700;">Description</span>: Any description<br></li><li><span style="font-weight:700;">TemplateID</span>: Open the Zoho Projects template and copy the ID from the URL (ie:&nbsp;https://projects.zoho.com/portal/blungo#todomilestones/<span style="background-color:rgb(244, 244, 78);">1600615000000748888</span>/)<br></li><li><span style="font-weight:700;">PortalName</span>: Open Zoho Projects and find it in the URL (ie:&nbsp;https://projects.zoho.com/portal/<span style="background-color:rgb(244, 244, 78);">blungo</span>#todomilestones/1600615000000748888/)<br></li><li><span style="font-weight:700;">id</span>: Open a Deal in CRM and copy the Deal ID from the URL<br></li></ol><li>Click on save</li></ol></div>
</div><div data-element-id="elm_8lmihYZMt7RJLZf8R4Xr4w" data-element-type="box" class="zpelem-box zpelement zpbox-container zpdefault-section zpdefault-section-bg "><style type="text/css"> [data-element-id="elm_8lmihYZMt7RJLZf8R4Xr4w"].zpelem-box{ background-color:#CEE4F3; background-image:unset; border-style:solid; border-color:#A1CBE8 !important; border-width:2px; border-radius:15px; margin:20px; } </style><div data-element-id="elm_uX0iGrYMwIp8Sx6tpsQ85g" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_uX0iGrYMwIp8Sx6tpsQ85g"].zpelem-text { border-radius:1px; margin:20px; } </style><div class="zptext zptext-align-left " data-editor="true"><span style="color:inherit;"><div>If everything went well, you will get a long dialog box on the right, and at the end it will say that the function was successfully executed. If you get any errors, even if the function was successfully executed, you must have missed a step. Please remember that the Deal you are using to test this out has to have an Account related.</div></span></div>
</div></div><div data-element-id="elm_iu0r3x862lUUpoXvu400Gg" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_iu0r3x862lUUpoXvu400Gg"].zpelem-heading { border-radius:1px; } </style><h3
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><span style="text-decoration-line:underline;">Part 4</span>: Adding custom fields</h3></div>
<div data-element-id="elm_eiJNgUxXu9ojRTvxHBzBSg" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_eiJNgUxXu9ojRTvxHBzBSg"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>To find custom fields API names from Zoho Projects, please follow this tutorial: LINK</p><p>You can reuse the connection you already created earlier on, or you can create a new connection.</p></div>
</div><div data-element-id="elm_riaA2G-g52Kq8XCZBar0Bw" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_riaA2G-g52Kq8XCZBar0Bw"].zpelem-heading { border-radius:1px; } </style><h4
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><span style="color:inherit;">A) Once you have the custom field API names:</span></h4></div>
<div data-element-id="elm_FhxWkSgUWX6PwmozxF0nSg" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_FhxWkSgUWX6PwmozxF0nSg"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><ol><li>Right after &quot;//custom fields&quot;, paste the following function:<br></li><ul><li><span style="color:inherit;background-color:rgb(161, 232, 196);">createMap.put(&quot;ZOHO_PROJECT_FIELD_API&quot;,CRM_FIELD_API);</span></li></ul><li>Replace &quot;<span style="color:inherit;"><span style="font-weight:700;">ZOHO_PROJECT_FIELD_API</span>&quot; with the Zoho Project Field API name of the field you want to map</span><br></li><li><span style="color:inherit;">In the CRM setup, go to &quot;developer space&quot; and the to &quot;APIs&quot;</span></li><ol><li><span style="color:inherit;">Click on &quot;APIs names&quot;, and then click on Deals</span></li><li><span style="color:inherit;">Find the field that you want to map, and copy the API name</span></li></ol><li>Go back to the function, and replace &quot;<span style="font-weight:700;">CRM_FIELD_API</span>&quot; with the API name you just found<br></li><li>Repeat the same steps for as many fields as you want to map</li></ol></div>
</div><div data-element-id="elm_9r9iQx5E9UbVCZlN3gRKhQ" data-element-type="box" class="zpelem-box zpelement zpbox-container zpdefault-section zpdefault-section-bg "><style type="text/css"> [data-element-id="elm_9r9iQx5E9UbVCZlN3gRKhQ"].zpelem-box{ background-color:#CEE4F3; background-image:unset; border-style:solid; border-color:#A1CBE8 !important; border-width:2px; border-radius:15px; margin:20px; } </style><div data-element-id="elm_wefZqpL98pQcUjUBPK9Mqw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_wefZqpL98pQcUjUBPK9Mqw"].zpelem-text { border-radius:1px; margin:20px; } </style><div class="zptext zptext-align-left " data-editor="true"><span style="color:inherit;"><div>Note: to map a date field, you have to use the following function:</div><div><ul><li><span style="color:inherit;background-color:rgb(161, 232, 196);">createMap.put(&quot;ZOHO_PROJECT_FIELD_API&quot;,CRM_FIELD_API.toString(&quot;MM-dd-yyyy&quot;));</span></li></ul></div></span></div>
</div></div><div data-element-id="elm_RN--6DK1oAYvEywiabGUDg" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_RN--6DK1oAYvEywiabGUDg"].zpelem-heading { border-radius:1px; } </style><h4
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><span style="color:inherit;">B) Map the arguments</span></h4></div>
<div data-element-id="elm_LZDtXnQJZ96hfyMs5TBfHQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_LZDtXnQJZ96hfyMs5TBfHQ"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><ol><li>Click on &quot;edit arguments&quot;</li><li>For each field you want to map, add one argument line</li><li>Copy the &quot;CRM API names&quot; and paste them on the lines you added</li><ol><li>ie: createMap.put(&quot;UDF_CHAR1&quot;,<span style="background-color:rgb(244, 244, 78);">Zoho_Drive_Folder</span>);</li></ol><li>Select &quot;string&quot; as type, for all of them</li><li>Click on &quot;save&quot;</li></ol><p><br></p><p>Finally, save the function by clicking on &quot;Save&quot; on the top right corner.</p></div>
</div><div data-element-id="elm_nAwrYUFbPAh0pZZuRMfq8Q" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_nAwrYUFbPAh0pZZuRMfq8Q"].zpelem-heading { border-radius:1px; } </style><h3
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><span style="text-decoration-line:underline;">Part 5</span>: Creating the workflow</h3></div>
<div data-element-id="elm_Nh8X_s2qqOwJE1UWpumzPw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_Nh8X_s2qqOwJE1UWpumzPw"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><ol><li>Go to the workflows section and create a new one</li><li>Name it and relate it to the deals module</li><li>When: stage is modified</li><li>Condition: stage is Signed (select any stage you want to trigger this workflow)</li><li>Instant Action: Function</li><li>Click on &quot;functions&quot; and select the function &quot;create project&quot;</li><li>Now click on &quot;configure&quot;, and map all the fields (press # for merge field)</li><ol><li><span style="font-weight:700;">PortalName</span>: find it in the ZohoProjects URL (ie:&nbsp;https://projects.zoho.com/portal/<span style="background-color:rgb(244, 244, 78);">blungo</span>#todomilestones/1600615000000748888/)<br></li><li><span style="font-weight:700;">TemplateID</span>: find it in the template URL (ie:&nbsp;https://projects.zoho.com/portal/blungo#todomilestones/<span style="background-color:rgb(244, 244, 78);">160061500000008888</span>/)<br></li><li>The rest of the fields are merge fields from the CRM, including <span style="font-weight:700;">id</span>, which is the Deal ID<br></li></ol><li>Click on &quot;save and associate&quot;</li><li>Finally click on Save</li></ol><div><br></div>
<div><div><span style="font-weight:700;">Now refresh the deal you want to test this automation on and move it to the signed stage. The new project should be created automatically in Zoho Projects, and all the fields from the CRM should be copied to the fields in Projects. Also the project should be linked to the CRM in the projects section.</span></div>
</div><p><br></p></div></div></div></div></div></div></div> ]]></content:encoded><pubDate>Mon, 05 Jul 2021 15:51:00 -0700</pubDate></item><item><title><![CDATA[Workflow: assign Account to a Deal automatically (Zoho CRM)]]></title><link>https://www.blungo.com/blogs/post/workflow-assign-account-to-a-deal-automatically-zoho-crm</link><description><![CDATA[First, create a generic account that can be used for multiple projects (ie: Won Deals) Open the account you just created and copy the account ID (ie: ]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_TtU0TENxTeG-8VJMZKTgPw" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_08smufW4TguER_xF20H4jA" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"> [data-element-id="elm_08smufW4TguER_xF20H4jA"].zprow{ border-radius:1px; } </style><div data-element-id="elm_aDRteiiQQcifmwXpcREWNg" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"> [data-element-id="elm_aDRteiiQQcifmwXpcREWNg"].zpelem-col{ border-radius:1px; } </style><div data-element-id="elm_nWD3Uii-miQ3oxIfFkJCpQ" data-element-type="video" class="zpelement zpelem-video "><style type="text/css"> [data-element-id="elm_nWD3Uii-miQ3oxIfFkJCpQ"].zpelem-video{ border-radius:1px; } </style><div class="zpvideo-container zpiframe-align-center zpiframe-mobile-align- zpiframe-tablet-align-"><iframe class="zpvideo " width="560" height="315" src="https://www.youtube.com/embed/dqyCDc_KmJs" frameborder="0" allowfullscreen></iframe></div>
</div><div data-element-id="elm_N91jtSW8b7btidnA7vJ3EA" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_N91jtSW8b7btidnA7vJ3EA"].zpelem-heading { border-radius:1px; } </style><h3
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true">Part 1: Creating a function</h3></div>
<div data-element-id="elm_P3GdjazMij2G5isvI5cFeA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_P3GdjazMij2G5isvI5cFeA"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><ol><li>First, create a generic account that can be used for multiple projects (ie: Won Deals)</li><li>Open the account you just created and copy the account ID (ie:&nbsp;<span style="background-color:rgb(244, 244, 78);">44341800000037248888</span>)</li><li>In CRM, go to settings, developer space, functions, and add a new function</li><li>Name the function (ie: Update_account_in_deal), and select &quot;automation&quot; as the category</li><li>Paste the following code in the new window, and make sure to replace the account ID number:</li><ul><li><span style="color:inherit;background-color:rgb(161, 232, 196);">update = zoho.crm.updateRecord(&quot;Deals&quot;,potid,{&quot;Account_Name&quot;:</span><span style="color:inherit;background-color:rgb(244, 244, 78);">4434180000003728888</span><span style="color:inherit;background-color:rgb(161, 232, 196);">});</span></li></ul><li>Click on &quot;edit arguments&quot;, and add &quot;potid&quot; as an &quot;int&quot;</li><li>Save everything</li></ol></div>
</div><div data-element-id="elm_G-CNsIoheP0Cmfdca8zp0g" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_G-CNsIoheP0Cmfdca8zp0g"].zpelem-heading { border-radius:1px; } </style><h3
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true">Part 2: Creating the workflow</h3></div>
<div data-element-id="elm_67vUDfoXwvdvyJqgyddLFw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_67vUDfoXwvdvyJqgyddLFw"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><ol><li><span style="color:inherit;">Go to Workflow rules and create a new rule related to the Deals module</span></li><li><span style="color:inherit;">Edit the rule:&nbsp;</span></li><ol><li>When stage is modified to any value</li><li><span style="color:inherit;">Condition: Stage is Won</span></li><li><span style="color:inherit;">Action: function, and select the function you just created</span></li><li><span style="color:inherit;">Then map the field &quot;potid&quot; to the Deal ID using the # key</span></li></ol><li><span style="color:inherit;">Save everything</span></li></ol></div>
</div><div data-element-id="elm_zba70tKP6baRtVIXWv5QtQ" data-element-type="box" class="zpelem-box zpelement zpbox-container zpdefault-section zpdefault-section-bg "><style type="text/css"> [data-element-id="elm_zba70tKP6baRtVIXWv5QtQ"].zpelem-box{ background-color:#CEE4F3; background-image:unset; border-style:solid; border-color:#A1CBE8 !important; border-width:2px; border-radius:15px; margin:20px; } </style><div data-element-id="elm_blWso7AeVA4bx8FAKD_mbg" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_blWso7AeVA4bx8FAKD_mbg"].zpelem-text { border-radius:1px; margin:20px; } </style><div class="zptext zptext-align-left " data-editor="true"><div>Note: edit the rule settings (When, Condition) to match your preferences. In this case we are using the Stage as the trigger, but it can be any field in the Deals module.</div></div>
</div></div></div></div></div></div></div> ]]></content:encoded><pubDate>Mon, 05 Jul 2021 12:00:16 -0700</pubDate></item></channel></rss>