Prefill "field_data" on Zoho Sign not populating

Prefill "field_data" on Zoho Sign not populating

I'm trying to prefill some information from CRM Plus into a template using the zoho sign deluge task but for some reason, the data passed into the "field_data" object doesn't prefill the form.

A few notes
  1. I've confirmed that the function is successfully getting the info from CRM and applying it to the object
  2. Some of the returned fields from the CRM are null as they hadn't been entered yet (which is a possible use case, we'd like to prefill the info we have leaving anything we don't have blank)
  3. The field_data object is using field_text_data, field_date_data, field_boolean_data, and field_radio_data to hold the field data
  4. I've confirmed that the field labels provided in the field_data object match the field labels in the template
Code:
  1. PacketID is a function argument which is a zoho record
  2. A wrapper function is used for the zoho crm GetRecordById task which returns null to the parent function upon an error
  3. The standard State field in CRM was replaced with a dropdown for both Accounts and Contacts
  1. //Structure Variable Declarations
  2. response = Map();
  3. params = Map();
  4. data = Map();
  5. templates = Map();
  6. actions = List();
  7. field_data = Map();
  8. field_date_data = Map();
  9. field_boolean_data = Map();
  10. field_text_data = Map();
  11. field_radio_data = Map();

  12. //Get Records from CRM
  13. Packet = standalone.GetRecordById("Application_Packets",PacketID);
  14. if(Packet.isNull())
  15. {
  16. info "Error getting Application Packet";
  17. return null;
  18. }
  19. Participant = standalone.GetRecordById("Client_Company_Relations",Packet.get("Application_Participant").get("id"));
  20. if(Participant.isNull())
  21. {
  22. info "Error getting Application Participant";
  23. return null;
  24. }
  25. Contact = standalone.GetRecordById("Contacts",Packet.get("Client_Contact_Record").get("id"));
  26. if(Contact.isNull())
  27. {
  28. info "Error getting Contact";
  29. return null;
  30. }
  31. Account = standalone.GetRecordById("Accounts",Packet.get("Company_Account_Record").get("id"));
  32. if(Account.isNull())
  33. {
  34. info "Error getting Account";
  35. return null;
  36. }

  37. //Apply TemplateID to response structure
  38. response.put("templateID",<template id>); //template id redacted

  39. //Apply field data to field_data child objects
  40. field_text_data.put("Business Legal Name",Account.get("Account_Name"));
  41. field_text_data.put("Business DBA Name",Account.get("DBA_Name"));
  42. field_date_data.put("Start Date",Account.get("Business_Start_Date").toString("dd MMMM yyyy"));
  43. field_text_data.put("Business Website",Account.get("Website"));
  44. field_text_data.put("Business Address 1",Account.get("Street"));
  45. field_text_data.put("Business Address 2",Account.get("Street_2"));
  46. field_text_data.put("Business City",Account.get("City"));
  47. field_radio_data.put("Business State",Account.get("State"));
  48. field_text_data.put("Business Zip",Account.get("Zip_Code"));
  49. field_text_data.put("Business Phone 1",Account.get("Phone"));
  50. field_text_data.put("Business Phone 2",Account.get("Secondary Phone"));
  51. field_text_data.put("Business Fax",Account.get("Fax"));
  52. field_text_data.put("First Name",Contact.get("First_Name"));
  53. field_text_data.put("Last Name",Contact.get("Last_Name"));
  54. field_radio_data.put("Salutaion",Contact.get("Salutation"));
  55. field_text_data.put("Business Title",Participant.get("Company_Title"));
  56. field_text_data.put("Owner Percent",Participant.get("Ownership_Percent"));
  57. field_date_data.put("DOB",Contact.get("Date_of_Birth").toString("dd MMMM yyyy"));
  58. field_boolean_data.put("Is US Citizen",Contact.get("Is_US_Citizen"));
  59. field_radio_data.put("Preferred Contact Method",Contact.get("Preferred_Contact_Method"));
  60. field_text_data.put("Address 1",Contact.get("Mailing_Street"));
  61. field_text_data.put("Address 2",Contact.get("Mailing_Street_2"));
  62. field_text_data.put("City",Contact.get("Mailing_City"));
  63. field_radio_data.put("State",Contact.get("State"));
  64. field_text_data.put("Zip",Contact.get("Mailing_Zip"));
  65. field_text_data.put("Primary Phone",Contact.get("Primary_Phone"));
  66. field_text_data.put("Secondary Phone",Contact.get("Secondary_Phone"));
  67. field_text_data.put("Fax",Contact.get("Fax"));
  68. field_text_data.put("Client Email",Contact.get("Email"));

  69. //Apply child objects to field_data
  70. field_data.put("field_text_data", field_text_data);
  71. field_data.put("field_boolean_data", field_boolean_data);
  72. field_data.put("field_date_data", field_date_data);
  73. field_data.put("field_radio_data", field_radio_data);

  74. //Create Applicant Signer Action
  75. signerObj1 = Map();
  76. signerObj1.put("recipient_name",Contact.get("First_Name") + " " + Contact.get("Last_Name"));
  77. signerObj1.put("recipient_email",Contact.get("Email"));
  78. signerObj1.put("action_id","383560000000030044");
  79. signerObj1.put("action_type","SIGN");
  80. signerObj1.put("signing_order",1);
  81. signerObj1.put("role","Applicant");
  82. signerObj1.put("verify_recipient",false);
  83. signerObj1.put("private_notes","Kindly confirm and complete all the details in the funding application and accept it by signing.");
  84. actions.add(signerObj1);

  85. //Create Representative Signer Action
  86. signerObj2 = Map();
  87. signerObj2.put("recipient_name",Packet.get("Owner").get("name"));
  88. signerObj2.put("recipient_email",Packet.get("Owner").get("email"));
  89. signerObj2.put("action_id","383560000000030046");
  90. signerObj2.put("action_type","VIEW");
  91. signerObj2.put("signing_order",2);
  92. signerObj2.put("role","Representative");
  93. signerObj2.put("verify_recipient",false);
  94. actions.add(signerObj2);

  95. //Build and return completed Sign Args
  96. templates.put("field_data", field_data);
  97. templates.put("actions",actions);

  98. data.put("templates", templates);

  99. params.put("data",data);
  100. params.put("is_quicksend", true);

  101. response.put("params", params);

  102. return response;
                                                                                                                                                                                                                    These generated parameters are then passed to another deluge function that sends the Sign request (also using PacketID as a function parameter and a wrapper function for zoho's toMap function).
                                                                                                                                                                                                                    1. args = standalone.ToMap(standalone.GetAppOptions(PacketId));
                                                                                                                                                                                                                    2. signResponse = zoho.sign.createUsingTemplate(args.get("templateID"), args.get("params"), "zohosign");

                                                                                                                                                                                                                    3. return signResponse;
                                                                                                                                                                                                                    This successfully sends the sign request to the specified record but it doesn't prefill the data.  Any help would be greatly appreciated!

                                                                                                                                                                                                                        • Sticky Posts

                                                                                                                                                                                                                        • Free webinar: The critical role of electronic signatures in HR

                                                                                                                                                                                                                          Hello everyone, Businesses and organizations have started implementing electronic signatures across departments, and human resources is no exception. Employee and employer signatures are crucial in HR processes, as they serve as an acknowledgment of critical
                                                                                                                                                                                                                        • Zoho Sign: Product updates - Mid - 2024

                                                                                                                                                                                                                          Hello, everyone! We've crossed the halfway point in 2024, and here's what Zoho Sign has been up to lately. We've been part of several Zoho User Groups, and we've started creating video content for our developers. Along with this, we have once again been