API Method for Changed Attributes in a Record

API Method for Changed Attributes in a Record

goal: select records that have been updated in Zoho which require updating in a linked system via a single API call

our next major challenge for integrating with ZohoCRM is to enable two-way updates. currently we are passing data from our db into Zoho. in order to maintain data integrity, we do not allow our end-users to update data in Zoho. clearly, this is not best-practice. we need to allow sales reps to update customer contact information in ZohoCRM and then pass that back to our system as an update.

as a result of the new API changes, i am not sure the best way to proceed. Zoho made it clear that wildcard searches are abusing its bandwidth (hence the deprecation of getAllSearchRecords and subsequent "throttling" of the number of calls to 250/day).

what we really need, in order to make an efficient use of Zoho bandwidth as well as minimizing wildcard calls, is a new API method. we need to return, per module, the [Module]Id and any/all changed fields.

for example:
http://crm.zoho.com/crm/private/xml/Contacts/getChangedRecords?apikey=APIKEY&ticket=TICKET

<Contacts>
   <row no="1">
        <fieldlabel value="ContactId">111111000000011111</fieldlabel>
        <fieldlabel value="Email">new_email@new.com</fieldlabel>

   </row>
   <row no="2">

        <fieldlabel value="
ContactId">111111000000011112</fieldlabel>

        <fieldlabel value="Home Phone">(954) 555-1212</fieldlabel>
        <fieldlabel value="Mailing City">Anytown</fieldlabel>

        <fieldlabel value="Other City">Anytown</fieldlabel>

   </row>
   <row no="3">

        <fieldlabel value="
ContactId">111111000000011113</fieldlabel>

        <fieldlabel value="First Name">Newbie</fieldlabel>

        <fieldlabel value="Last Name">Newsome</fieldlabel>

        <fieldlabel value="Contact Owner">MyNewRep@test.com</fieldlabel>

   </row>

</Contacts>



in the example above:
- row 1 contains a contact with a changed email
- row 2 contains a contact with a changed phone and city
- row 3 contains a contact with a changed first name, last name, and the contact owner


a couple of problems/challenges:
- Zoho would need to maintain flags on their end to ensure that only the changed data is flagged for inclusion in this method
- b/c of the restriction in the number of records that Zoho will return via an API call, we cannot rely on the calling-app to maintain a timestamp or a pointer (eg. a time-parameter that communicated "give me all records that have changed in the last 60 minutes" would not work if the resultset included more than 250 rows, so when this call was repeated 60m later, there would be data missing)

i look forward to any other ideas/problems/solutions from the community and to a response from the Zoho team on feasibility.





thanks & happy holidays,
-e