Skip to main content
Group

Architects

This groups is for salesforce enthusiasts who like to question the approaches,and want to find best way.This groups is also for people who dream to be architects, and are planning for certifications

Hello All,

 

We know that Salesforce creates share objects when we set the OWD to Private or Public Read Only. When there is a huge volume of records, does the system perform faster when a user tries to search for a record or try to run a report if the OWD of the object is Public Read Only and slower when it is Private?

 

If the OWD were Private and I create one sharing rule to provide ReadWrite access to a group, there will be two entries in the share table - one for the record owner and one for the group with ReadWrite access. 

If the OWD were Public Read Only and I create one sharing rule to provide ReadWrite access to a group, there will still be only two entries in the share table -  one for the record owner and one for the group with ReadWrite access. 

 

So, does it mean the performance will be same for Private OWD & Public Read Only and the it makes a difference only when we switch to Public Read Write OWD? 

 

This is the reference documentation on record sharing under the hood and it only gives the example of Private OWD but does not talk about performance - https://developer.salesforce.com/docs/atlas.en-us.salesforce_record_access_under_the_hood.meta/salesforce_record_access_under_the_hood/uth_entity.htm

 

@Architects  @Data Architects  @* Salesforce Platform *

 

Thank you in advance and apologies for the long question.

10 answers
  1. Sep 2, 2023, 12:15 AM
    But what about the users who should only read the records? If you do a private share and need to share for some users as read-only then you need those records in the sharing table. If you do read-only in OWD, then those records are not required. That’s where I see the difference.
0/9000

As we know that  maximum response time for Salesforce REST API is 10 minutes(Refer doc -https://developer.salesforce.com/docs/atlas.en-us.salesforce_app_limits_cheatsheet.meta/salesforce_app_limits_cheatsheet/salesforce_app_limits_platform_api.htm), which is quite high. If we explicitly set the maximum response time to 30 seconds at the middle layer and send a response back to the customer as we can not wait long from customer perspective, we also need to consider the scenario where a record is created in SFSC after this explicit expiration and determine how to handle it.

 

This situation requires careful planning to ensure that data integrity and system performance are maintained effectively by possibly adjusting the middle layer's response time dynamically based on workload and system conditions. It's essential to thoroughly evaluate these options and choose the most suitable approach to ensure smooth system operation and minimize potential disruptions. 

2 answers
0/9000

Some example:

To access the data for all accounts from external system, that match would be:

https://cxz.my.salesforce.com/services/data/v59.0/query/q?=SELECT +Company_Mailing_City__c+ Name + FROM +Account

By directly passing an SoQL query into the url.

 

whenever the internal salesforce API would changes(specially the version number) then it would be dependent from the SF internal data model.

 

The alternative would be to directly implement this query into the SF instance and offer an extra endpoint that can be used to query it.

 

We would need a more specific endpoint in the ''/Account' API that provides us with the following Data in a JSON Format.

The bold values in brackets represent the Salesforce internal field naming, while the first represents the naming we would like to have them mapped to.

 

Company:**Account** {

string name (**Name**)

string city (**Company_Mailing_City__c**)

string country (**Company_Mailing_Country__c**)

 

}

 

Can anyone help like how can we  directly implement the above mentioned query into the SF instance and offer an extra endpoint that can be used to query it.

0/9000
0/9000
0/9000

I'm somewhat new to the Salesforce space having switched architectural roles for a financial services company.  I'm currently working on a piece of work looking into the design principles that we should use when designing our solutions.  

 

My thinking is that there maybe design principles per cloud for example we have Core CRM, FSC, Marketing Cloud, CDP, Datarama and Experience Cloud to name a few.  I think the principles could span Technology, Application, Customisation, Data, Integration, Security, Mobile etc.

 

I've found and used the following links that have started to form the basis of design principles.  I've attached a rough copy of the principles.  I think they will require consolidation and rework to fit our organisational structure. 

 

http://ivanesalmeida.blogspot.com/2018/08/architecture-principles-for-salesforce.html

https://www.salesforce.com/video/7810553/

 

Are there other considerations or resources you would recommend?

 

At a lower level, I' have already defined and agreed AppExchange design principles.  

 

Thanks in advance

 

#Salesforce #AwesomeAdmins #Trailblazers #Salesforce Architect #Architect #Architects

2 answers
  1. Apr 28, 2022, 8:29 AM

    Hi @Juha Lassila - I came to the conclusion that my draft principles crossed into development guidelines so I tried to keep them more high level.  These top level principles then had detail that defined the principles guardrails.

     

    1. Reuse - Buy - Configure - Build
    2. Common view of client and account data with single consistent view across channels
    3. Adopt appropriate Cyber security standards at design
    4. Design for the long term and design for change
    5. Use a network of APIs to underpin SJP's digital transformation
    6. Design quality updates to data that are complaint with business requirements
    7. Minimise but log architectural, complexity and technical debt
    8. Design with geolocation in mind
    9. Open standards over proprietary technology

     

    We are looking at incorporating a Centre of Excellence and I agree that it ought to architecture first and not Salesforce.  There was a call in our business to have a principle that said Salesforce first which I felt was wrong.  I didn't think the Technology should be a principle which is why I have the Reuse principle.

0/9000

I know that if we create cross object formulas on an object, we can use that result in triggers without having to query the object manually.  Is there any downside to this in terms of efficiency?  Would the automatic cross-object query essentially happen every record save, or would it only happen if we actually use the formula field in the trigger logic itself? #Salesforce Architect

1 answer
  1. Tom Bassett (Vera Solutions) Forum Ambassador
    Apr 17, 2022, 4:36 PM

    Hello,

     

    I've had issues before with this type of thing and roll up summaries.

     

    As far as I am aware the formulas will only run when the record is loaded and so if it's not loaded then it won't trigger.

     

    I'd suggest testing this out throughly during UAT and if there are issues moving the formula to a Apex Trigger or something like Roll up Helper instead.

     

    Thanks, Tom

0/9000
0/9000