0

We are thinking to do reporting in snowflakes while the data creation will happen inside salesforce. To do that, we need to send data to snowflakes on record creation, update and delete.

I have gone through a few approaches like:

  1. Platform event (But how we can use 1 platform event object for multiple objects related to case)
  2. Salesforce middleware which will be polling salesforce (Required dollars)
  3. Change data capture (Can only have 5 objects, cant increase the limit)
  4. Rest API (If too many records are created in 1 day then in future it may can cause issue by hitting the daily limit)

We are searching for the best solution, without spending much dollars. As of now for case we are using CDC to send data and subscribe to events outside salesforce which works for us and we are happy with that. Although as we can have only 5 objects for CDC I can't add more objects and fill this limit. I want to send related objects data of case to third party (Selected related objects).

1 Answer 1

1

What you're looking for is the Replication and Retrieve APIs. The Get Updated resource gives you up to 600,000 records that were created/updated up to 30 days ago, specified by a time window you choose. For example, you can set the time to every five minutes, every day, or even every week. Similarly, the Get Deleted returns deleted records. This API is a bit more sensitive for performance reasons, but you should be able to rely on small replication windows. That said, read the guidelines in the getDeleted SOAP API call. Finally, once you have a list of updated record Ids, you then call retrieve to get up to 2,000 records per API call.

There may be solutions out there that already use this method, but it'd also be pretty trivial to develop an internal solution that could be hosted for a few dollars a month on most cloud computing platforms, or on an internal server that could run the process periodically. At any rate, it should be pretty obvious that the solution doesn't need to be expensive, though it may take a bit of work if you can't find a solution that already exists.

7
  • Thanks @sfdcbox for replying, it there is any possibility that in retrieve sObject collection call, I can get all fields OR only the field which are updated? Because right now in link its mentioned its mandatory to specify fields + only 800 records can be fetched. Mentioned as "You can specify approximately 800 IDs before the URL length causes the HTTP 414 error URI too long."
    – Sukruti
    Jun 23, 2023 at 12:03
  • 1
    @Rabb I get that you're concerned about the limits, but they're really quite generous. Even just doing 500 records per API call should be plenty.
    – sfdcfox
    Jun 23, 2023 at 16:52
  • Hello Sfdcfox, I have selected your answer as the best one but I know you are well aware of GraphQL. Do you think for my purpose, GraphQL can also be one of the way to go forward?
    – Sukruti
    Jun 26, 2023 at 10:56
  • 1
    @Rabb Possibly. Keep in mind that GraphQL uses different limits than the main governor limits, so you may find it too restricted from that direction. No matter which direction you choose, you're going to get about the same performance/limitations. As long as you're being efficient enough, it should be fine.
    – sfdcfox
    Jun 26, 2023 at 11:10
  • Sorry, one last question, if I implement this : Get Update API to know case created and update within specific time frame and then used the batch class to send that data to third party, while both the update api and batch will run every in every 5 minutes window...I feel that would be ok...but if the same framework i need to implement for case comments and case related custom objects then this framework has to be reused so multiple classes needs to be created which will increase the API callout happening from salesforce...
    – Sukruti
    Jun 26, 2023 at 12:01

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .