Power of Automation :: Streamline notification on Zoho Cliq channel on project creation.

Power of Automation :: Streamline notification on Zoho Cliq channel on project creation.

Hello Everyone,

A Custom function is a user-written set of code to achieve a specific requirement. Set the required conditions needed as when to trigger using the Workflow rules (be it Tasks / Project) and associate the custom function to it.

One of our customers would like to get notified in the Cliq channel once the project is created along with the project owner, creator and project prefix id details. We already have a Gallery custom function available with the name - Send message to Cliq channel. Minor changes have been implemented to incorporate the project owner's information into the Gallery code, fulfilling the customer's requirement.

Below custom function should be associated with the Project workflow rule along with the trigger condition as "on creation" so that once the project is created, notification would be triggered in the mapped Cliq channel.

Custom function code:-

projectCreateContent = "[user] has created a new project [projId] [projectName] and assigned [projectOwner] as the owner of the Project";
projectUpdateContent = "*[user]* has updated the [action] of the project [projId] from *[pre-value]* to *[post-value]*";
projectBulkUpdateContent = "*[user]* has updated project [projId]";
projectBulkUpdateSubContent = "[action] from *[pre-value]* to *[post-value]*";
projectDeleteContent = "*[user]* has deleted the project *[projectName]*";
projectsDomainURL = "https://projectsapi.zoho.com/restapi";
messageContent = "";
if(!projectAffectedFields.isNull() && projectAffectedFields.contains("edits"))
{
action = projectAffectedFields.get("action");
user = projectAffectedFields.get("user");
projectDetailResp = invokeurl
[
url :"https://projects.zoho.com/restapi/portal/" + portalId + "/projects/" + projectId + "/"
type :GET
connection:"xxxxxxxxx"
];
projectInfo = projectDetailResp.get("projects").get(0);
if(action == "Creation")
{
url = "[" + projectInfo.get("key") + "]";
projectCreateContent = projectCreateContent.replaceAll("[user]",user.get("name"),true);
projectCreateContent = projectCreateContent.replaceAll("[projId]",url,true);
projectCreateContent = projectCreateContent.replaceAll("[projectName]",projectName,true);
messageContent = projectCreateContent.replaceAll("[projectOwner]",owner,true);
}
else if(action == "Update")
{
if(projectAffectedFields.get("edits").size() == 1)
{
url = "[" + projectInfo.get("key") + "]";
projectBulkUpdateContent = projectBulkUpdateContent.replaceAll("[taskId]",url,true);
projectBulkUpdateContent = projectBulkUpdateContent.replaceAll("[user]",user.get("name"),true);
for each fields in projectAffectedFields.get('edits')
{
subcontent = projectBulkUpdateSubContent;
projectBulkUpdateSubContent=projectBulkUpdateSubContent.replaceAll("[action]",fields.get("field_name"),true);
projectBulkUpdateSubContent=projectBulkUpdateSubContent.replaceAll("[pre-value]",fields.get("old_value"),true);
projectBulkUpdateSubContent=projectBulkUpdateSubContent.replaceAll("[post-value]",fields.get("new_value"),true);
projectBulkUpdateContent=projectBulkUpdateContent + " " + projectBulkUpdateSubContent;
}
messageContent = projectBulkUpdateContent;
}
else
{
fields = projectAffectedFields.get("edits").get(0);
projectUpdateContent = projectUpdateContent.replaceAll("[user]",user.get("name"),true);
projectUpdateContent = projectUpdateContent.replaceAll("[action]",fields.get("field_name"),true);
projectUpdateContent = projectUpdateContent.replaceAll("[pre-value]",fields.get("old_value"),true);
projectUpdateContent = projectUpdateContent.replaceAll("[post-value]",fields.get("new_value"),true);
messageContent = projectUpdateContent;
}
}
else if(action == "Deletion")
{
projectDeleteContent = projectDeleteContent.replaceAll("[user]",user.get("name"),true);
messageContent = projectDeleteContent.replaceAll("[projectName]",projectName,true);
}
}
info "message:" + messageContent;
chat = zoho.cliq.postToChannel("channel name",messageContent,"yyyyyyyyy");
info chat;
return "success";

Make sure to replace xxxxxxxxx with Zoho Projects connection name and yyyyyyyyy with Zoho Cliq connection name in the above code. Also, update "channel name" with the Zoho Cliq channel name. Screenshot of the list of parameters to be mapped is attached for reference.

With the custom function code provided above, allowed our customer to efficiently utilize Project custom functions within Zoho Projects. This facilitated the monitoring of project creation in the Zoho Cliq channel, ultimately boosting their business productivity.

We hope you found this post useful. If you have any questions or wondering if your requirement could be met using custom functions, feel free to share them in the comments section below.

      • Sticky Posts

      • Time Log Reminder

        Tracking the time spent on tasks and issues is one of the most important functions of a timesheet. However, users may forget to update the time logs because they have their own goals to achieve. But, time logs must be updated at regular intervals to keep
      • Enhanced Collaboration and Global Web Tabs

        Hello Users, We are rolling out two key enhancements in Zoho Projects that will be part of our November release. Here’s what to expect: 1. Collaboration Section in the Left Navigation Panel What’s new? All communication and interactive tools will be grouped
      • Tip 37: Time Log Restriction in Zoho Projects

        Timesheet in Zoho Projects helps you big time in entering log hours for the tasks and issues and approving them. Now, with the new Time Log Restriction option, you can set daily and weekly log hour limits. You can restrict users from entering extra log hours than the permissible limit. The limits are restricted to 24 hours per day and 168 hours per week by default based on business hours. To customize, navigate to Task & Timesheet settings under Portal Configuration in Zoho Projects setup and enable
      • Rename Task Module To Suit Your Project

        Task Module in Zoho Projects gives a comprehensive view of all the action items, known as Tasks, across all projects. However, different industries may use alternative terminology for similar processes, which might not always be recognised when labelled
      • Project Billing with the Staff Hours Method in Zoho Projects

        The Staff Hours Billing Method in Zoho Projects allows you to bill your clients based on the actual time spent by each team member on a project, at the rate set for each user. This is useful for projects where different skill sets are needed and service