When you try to update a contact, account or deal with PUT method, it will error out if you are missing any required fields. For example, I’m trying to add country to deals, accounts and contacts for which it is missing. I wrote a script to find the same in related contacts/deals/accounts. I’ll be able to fix 1000s of records this way. But there are other required fields that cannot easily be predicted w/o a human involved.
Here is the rub: We have 1000s of records that do not have required fields because of Freshworks behavior that allows contacts and accounts to be created w/o required fields. So the problem is the result of freshworks and I can’t fix it because of this rule which they apparently allow themselves to break. There are at least two cases that cause this issue: 1) creating contacts and accounts thru email sync and 2) creating accounts while adding contact.
The problem got worse because we added required fields. This should normally be fine - if anyone goes back and tries to edit one of those records, they are forced to fix it. In fact, I really like this feature where when a person edits a record, they are forced to fill in all req’d fields. That’s exactly where this logic belongs.
I totally get if REST APIs prevent creating an object w/o required fields. But this is not what I"m trying to do - I want to FIX broken records and I can’t do so because there are other required fields that I can’t fix in bulk.
Here is specific situation:
I attempt to update a deal with this:
{
"deal": {
"territory_id": 16000000260,
"owner_id": 16000057550,
"custom_field": {
"cf_region": "LATAM",
"cf_technical_owner_id": 16000031281
}
}
}
But I get this error:
{
"errors": {
"code": 400,
"message": [
"What needs to happen to move to next sales stage? can't be empty",
"Expected deal close date can't be empty",
"Primary use case can't be empty",
"License activation and revenue recognition details can't be empty",
"Expected license activation date for revenue recognition can't be empty"
]
}
}
I realize the workaround is to just make the fields not required while I run my batch but this should not have to be.
MORE IMPORTANTLY, what really is a problem with this behavior is custom apps we have to perform certain actions. For example, we have a custom app to enroll contacts in training. It updates the training fields on the contact but if the contact does not have ALL required fields, the app breaks. But the missing required fields have nothing to do with training.
I’ve asked Freshworks about this for over a year now. I have even tried to find out why they don’t allow this but I have never gotten an answer.
ANYONE who writes an app that updates contacts, accounts or deals will be impacted by this issue. Your app will NOT work on contacts, account or deals that are missing required fields even if your app does not require those fields. So for example, if your users add a required field and don’t update all the previous records (instead choosing to allow a “lazy” approach to the updates), your app will break 100% if it needs to operate on those older records.
Please like this if you want Freshworks to allow updating a contact, account or deal even if req’d fields are missing.