// TODO: Please create a connection for the Zoho Projects service with the scopes "ZohoProjects.tasks.READ, ZohoProjects.projects.READ, ZohoProjects.tasks.UPDATE". Replace 'xxxxxxxxx' with the connection name. Click this link below to learn how to create the connection.
// Link -
// TODO: Replace the param value with the status name
statusNameTobeChanged = "Reopen";
projectsAPIEndPoint = "
isPredecessorOpen = false;
taskDetails = zoho.projects.getRecordById(portalId,projectId,"tasks",taskId,"xxxxxxxxx");
info taskDetails;
info "-------------------------------------";
if(taskDetails != null && taskDetails.get("tasks") != null)
{
taskInfo = taskDetails.get("tasks").get(0);
if(taskInfo != null && taskInfo.contains("dependency") && taskInfo.get("dependency").contains("predecessor"))
{
taskpredecessor = taskInfo.get("dependency").get("predecessor");
info taskpredecessor;
info "-------------------------------------";
if(taskpredecessor.size() > 0)
{
taskLayoutDetails = invokeurl
[
url :projectsAPIEndPoint + "/portal/" + portalId + "/projects/" + projectId + "/tasklayouts"
type :GET
connection:"proj"
];
info taskLayoutDetails;
info "-------------------------------------";
statusNamevsIdMap = Map();
if(taskLayoutDetails != null && taskLayoutDetails.get("status_details") != null)
{
statusDetails = taskLayoutDetails.get("status_details");
for each status in statusDetails
{
statusNamevsIdMap.put(status.get("name"),status.get("id"));
}
}
}
info "Status NamevsId Map: " + statusNamevsIdMap;
if(taskpredecessor.size() > 0)
{
nextPredecessorIds = taskpredecessor;
maxIterations = [1,2,3,4,5,6,7,8,9,10];
for each currIndex in maxIterations{
info "----------------(level:"+currIndex+")---------------------";
if(nextPredecessorIds.size() == 0){
info "Predecessor not found";
break;
}
info "Level:"+currIndex+", Next Predecessor Ids:"+nextPredecessorIds;
taskpredecessor = nextPredecessorIds;
nextPredecessorIds = [];
for each predecessorId in taskpredecessor
{
updateTaskParameter = Map();
updateTaskParameter.put("custom_status",statusNamevsIdMap.get(statusNameTobeChanged));
info "updateTaskParameter: " + updateTaskParameter;
taskDetails = zoho.projects.update(portalId,projectId,"Tasks",predecessorId,updateTaskParameter,"xxxxxxxxx");
if(taskDetails != null && taskDetails.contains("tasks")){
taskInfo = taskDetails.get("tasks").get(0);
info taskInfo.get("name") +" has updated";
if(taskInfo != null && taskInfo.contains("dependency") && taskInfo.get("dependency").contains("predecessor"))
{
nextPredecessorIds.addAll(taskInfo.get("dependency").get("predecessor"));
}
}
}
}
}
}
}
return "success";
// TODO: Please create a connection for the Zoho Projects service with the scopes "ZohoProjects.tasks.READ, ZohoProjects.projects.READ, ZohoProjects.tasks.UPDATE". Replace 'xxxxxxxxx' with the connection name. Click this link below to learn how to create the connection.
// Link -