I am creating an managed application for salesforce appexchange listing.
On certain update events a trigger will send a few non-critical information to a external server application which will process the information. The external server will be hosted in a domain let's say www.mysite.com. All the organizations which will install the managed application (let's say that number is 25 for this example) will communicate with this server.
- According to Salesforce governor limits, maximum number of concurrent callouts to a domain is limited to 20 across all orgs. So if in all the 25 orgs, an event is triggered simultaneously (at the same instant) that will make a callout to our server, we will get an CalloutException. So I would like to know how to handle it gracefully? Also I would want to send those failed callouts to our server (be it later), so what would be preferred way to achieve that?
- Second query is about the custom objects of our managed application. From what I have read, I have understood that if the objects are protected, the objects will not be visible from outside the managed application (please correct me if I am wrong). However, my understanding on this is hazy so if you could provide me with more information regarding hiding the custom application objects from the system administrator or the users of the org who will install the application, it will be very much helpful.
Also, if I make the object protected, and if I want my server application to access the objects via the RESTFul webservices that salesforce provides for all custom objects, will my server application be able to access the protected objects?
Example: The custom objects is lets say CustomObject__c. If I make a request to Salesforce with proper access token for the object at endpoint
I can access the data.What if I make the object protected? Can I access the data from my server using this endpoint?
Please provide some information regarding object visibility .