Skip to main content

#Integration68 discutindo

Hi Everyone, 

 

I'm a Salesforce Administrator currently learning about SharePoint and Salesforce integration for document management, and I'd love to learn from your experience. 

 

I'm interested in understanding how organizations use SharePoint with Salesforce to manage documents, folders, security, and document access efficiently. I'm also curious about best practices for folder structures, metadata synchronization, version control, and providing a smooth user experience. 

 

As I'm still exploring this area, I would greatly appreciate any insights, recommendations, or lessons learned from real-world implementations. 

 

Looking forward to hearing your ideas and experiences. Thank you! 

 

#Trailhead Challenges #Salesforce Developer #Salesforce Admin #Salesforce #Sales Cloud #Trailhead

 

#Sales Cloud #Flow #Integration 

2 respostas
  1. 15 de out., 06:27

    @Roopa Sharma, This is a good area to learn early. Many orgs end up with documents in both systems, and the friction shows up exactly where you listed. Here is how each one tends to play out once a setup is live.  

     

    1. Where the documents live - 
      • SharePoint as the home, with Salesforce records pointing to it. The usual choice when the company already runs on Microsoft 365.
      • Salesforce Files, when volumes are small and only CRM users need the documents. The Files related list is flat, with no folders per record.
    2. Ways to connect the two
      • Files Connect (native): lets users browse, search and attach SharePoint files from Salesforce, but it does not create a folder per record.
      • Power Automate: a good fit if your team already builds on the Microsoft side. The trade-off is that the logic lives outside Salesforce, on a premium connector. 
      • AppExchange apps: compare them on four things. Does Flow create a folder when a record is created? Do uploads from the record go straight to SharePoint? Do SharePoint's own permissions still apply? Can you trial it in a sandbox first? 
    3. Your questions, in practice - 
      • Folder structure: mirror your data model (Account, then Opportunities, then each opportunity), with the same subfolders on every record. Add the record ID to folder names so a rename never breaks a link. 
      • Metadata: tag files with SharePoint columns such as document type, status and record ID, instead of relying on folder names.
      •  Version control: let SharePoint's version history handle it, and avoid saving copies back into Salesforce. 
      • Security: SharePoint decides who can open a file. Salesforce sharing does not carry over to SharePoint on its own, so plan who updates access when an account changes owner.
      • User experience: users should reach a record's folder from the record page, without searching SharePoint.

    If you go the AppExchange route, CloudFiles is one app that works this way with SharePoint. With its flow actions, each record gets a folder when it's created, and files are tagged as they arrive. Users open that folder from the record page, and SharePoint's permissions decide what each person can see. https://appexchange.salesforce.com/appxListingDetail?listingId=a0N4V00000Gh9uFUAR

      

    Disclosure: I work at CloudFiles.

0/9000

Hi, 

 

I am making callout to external system to get records out of 100 2 failed i want to retry those failed records till 3 time. Can someone help with code? 

 

#Integration  #Salesforce Developer

1 resposta
  1. 15 de out., 02:48

    To handle retry logic in Apex for callouts (like retrying 2 failed records up to 3 times), you can use Queueable Apex with the Database.AllowsCallouts interface combined with custom exception handling or tracking failed record IDs. Try the following.

    public class IntegrationRetryQueueable implements Queueable, Database.AllowsCallouts {

    private List<Id> recordIds;

    private Integer retryCount;

    public IntegrationRetryQueueable(List<Id> recordIds, Integer retryCount) {

    this.recordIds = recordIds;

    this.retryCount = retryCount;

    }

    public void execute(QueueableContext context) {

    List<Id> failedRecords = new List<Id>();

    for (Id recId : recordIds) {

    try {

    // Perform your external callout logic here for recId

    HttpResponse response = makeCallout(recId);

    if (response.getStatusCode() != 200) {

    failedRecords.add(recId);

    }

    } catch (Exception e) {

    // Catch connection timeouts or callout exceptions

    failedRecords.add(recId);

    }

    }

    // If there are failures and we haven't hit the 3-attempt limit, chain the job

    if (!failedRecords.isEmpty() && retryCount < 3) {

    if (!Test.isRunningTest()) {

    System.enqueueJob(new IntegrationRetryQueueable(failedRecords, retryCount + 1));

    }

    }

    }

    private HttpResponse makeCallout(Id recId) {

    // Implement your HttpRequest and Http send logic here

    Http h = new Http();

    HttpRequest req = new HttpRequest();

    req.setEndpoint('https://api.yourtargetsystem.com/endpoint');

    req.setMethod('POST');

    // Set body based on recId...

    return h.send(req);

    }

    }

0/9000

There is a use case which I try to implement where the sandboxpostcopy interface is supposed to login to production and get some information, then insert the same back to sandbox. 

 

As of now I have tried below modes of authentication : 

1. External Cred + Named Cred + Username/Pwd - Not preferred 

2. External Cred + Named Cred + Oauth 2.0 - Browser flow --- As I try to authenticate using this it requires an auth provider and Auth provider has callback URL based on sandbox. Thus the authentication fails. 

3. External cred + Named Cred + Oauth 2.0 - Client Cred - Authentication works perfectly, but upon refresh client credentials are cleared and this prevents successful execution of sandboxpostcopy interface. 

 

Any one tried something similar? Authenticating to salesforce production, retrieving the data and act on it? 

 

Thanks 

 

#Salesforce Developer  #Integration

3 respostas
  1. 13 de out., 10:13
    I had a chat with Salesforce and they suggested that this is not going to work. They suggested an option with Auth provider in apex, but doesn't guarantee the success. It still stays open 😅
0/9000

When I try to create a record by sending a request, I get an error:

{

        "errorCode": "NOT_FOUND",

        "message": "The requested resource does not exist"

    }

 

Here's an example of the request I am making: 

url: https://myDomain.my.salesforce.com/services/data/v60.0/sobjects/Account

method: POST

authentication header: Bearer <token>

 

I am using JWT Bearer flow.

 

If I make a GET request to: https://myDomain.my.salesforce.com/services/data/v60.0/sobjects/

I get a response. But, if I make a GET request to https://myDomain.my.salesforce.com/services/data/v60.0/sobjects/Account

I get the same "he requested resource does not exist" response.

 

Not sure if that's related

 

#Integration  #RestAPI  #Error Message  #Salesforce

3 respostas
  1. 8 de out., 17:49

     One thing I would add is to treat credential rotation as a dependency-mapping exercise, not just a secret update. If several systems consume the same API credentials, documenting each integration, authentication method, owner, scopes, and last known usage can make future rotations much safer. This is especially important when APIs are being used across multiple workflows. For example, a nonprofit may have a verification service such as the Nonprofit Check Plus API connected to other systems, so keeping track of where credentials are used can prevent an unexpected integration failure after rotation. It’s also worth checking application and middleware logs for recent authentication calls before making the change. That can help identify less obvious consumers that may not be documented in Salesforce or Marketing Cloud. Once the new credentials are deployed, monitoring for authentication failures provides another layer of confirmation that no integration was missed. 

0/9000

Showing feature request status in Salesforce when product uses JPD and engineering uses Azure DevOps

 

 

I recently wrote up how teams connect Jira Product Discovery to Salesforce on one side and Azure DevOps on the other. The part that stuck with me is how far a simple sales question has to travel. 

 

An AE wants to know if the feature their customer asked for has shipped. The request was logged in Salesforce. Product prioritized it in Jira Product Discovery (JPD), and engineering built it in Azure DevOps.  

 

What usually happens

 

 

Product copies the approved idea into Azure DevOps by hand: title, description, maybe acceptance criteria. From then on, the two drift apart. Engineers update status, add comments, and link work in their own tool, and it doesn't get reflected in JPD.  

 

So product opens Azure DevOps to check, sales pings product, and the roadmap stops matching what's shipping. 

 

What's already there natively

 

JPD has a built-in Salesforce integration. Your team can paste a Salesforce record link into an idea and show fields from that record, such as account or opportunity details. That covers context flowing into product. It works one link at a time; it's read-only, and nothing flows back to Salesforce. 

 

Getting status back to Salesforce takes a build. That could be Flow or Apex calling Jira, Jira Automation calling Salesforce, MuleSoft, or a third-party connector. Whichever route you pick, the same decisions come up. 

 

Decisions worth making before anyone builds

 

 

Decide where each piece of data starts. Customer context starts in Salesforce, priority starts in JPD, and delivery status starts in Azure DevOps. Give every field one owner, so two systems never edit the same value. 

 

Check which JPD fields can actually move. Standard fields and custom scores like impact or effort are usually fine. Insights, views, and formula fields are harder, and formula fields don't come through the Jira API at all. If product prioritizes a formula field, find that out before anyone promises sales a view built on it. 

 

Keep it to one idea per epic. JPD doesn't carry the epic, feature, and story breakdown, so that split happens in Azure DevOps after the handoff. Mirroring the full hierarchy back into JPD or Salesforce adds a lot of work for very little that sales would use. 

 

Translate statuses for sales. "Ready for QA" means nothing to an AE. Agree on a short list they understand, such as requested, approved, in development, and released, and map everything else to it. 

 

Sort out access early. Product and engineering rarely hold admin rights in each other's tools, and some security policies block one system from signing into another directly. This comes up often enough that it belongs in the first planning conversation, before anyone has picked a tool. 

 

For anyone who's closed this loop: where does your sales team see feature request status today? On the Account, on the Opportunity, or somewhere else entirely? 

 

#Integration

0/9000

Hello! We are exploring an integration between our Salesforce (NPSP) and NetSuite systems. We do not have in house skill capacity to do this and have been speaking with implementation partners. We've been pitched Celigo and MuleSoft as potential tools.  

 

The basic process we are hoping for would be:

  1. Sales team enters invoicing information into Salesforce
  2. When TBD trigger is activated, Salesforce sends the info to Netsuite, booking the revenue and generating an invoice
  3. Human reviews invoice, approves, and then ideally system sends it off (though open to a Human sending it :))
  4. Payment information is input into Netsuite
  5. When TBD trigger is activated, Netsuite sends payment info to Salesforce, recording payment details and marking opportunities as paid

If you have experience with Celigo, MuleSoft, or another tool, would love to hear any pros or cons! Feedback on implementation partners also welcome.  

 

Thanks! 

Marie 

 

#Integration

2 respostas
  1. 7 de out., 16:05

    Would Customers and Products have to be synced between SFDC and NetSuite before this could work? 

    We're adding various sync recipes in our Sync Hub (in the Yoxel Sync app) and we're considering this one for sure.

0/9000

Hello,

 

I am looking for a solution to one way sync events from a Public Salesforce calendar to a Shared Outlook or Individual Outlook account. So team would manage new event creation in Salesforce shared calendar and user would only SEE (View only) events in his Outlook Calendar.

Any ideas on how I could accomplish this?

3 respostas
0/9000

so currently I'm making my own chatbot app, I'm training my own AI using machine learning and NLP for that app but how am I supposed to implement that AI model into Salesforce.. basically I want to make a UI and provide a database for that app, so what kind of salesforce technologies can help me to make a UI and to provide an overall backend + any additional tips?

#Sales Cloud #Salesforce Developer #Service Cloud #Experience Cloud #Integration #CRM Configuration #Automation 

2 respostas
  1. 2 de out., 10:54

    For a chatbot interface, I would keep the first screen very simple. Give users a few clear options and an obvious place to type their question. A visible route to human support is important too. Then test the interface with ordinary users. Their confusion will quickly reveal what needs changing.

0/9000
2 respostas
  1. 30 de set., 10:21

    @sainath reddy In general, a scheduled flow runs as a single scheduled job. Having multiple users with access to the flow doesn't cause multiple executions. The flow runs once according to its schedule unless the configuration itself creates separate records or jobs to process.

0/9000

Hi everyone,

We recently built a custom Sales Force application in a sandbox environment that handles data sharing with a third-party API. The solution involves custom screens, automations, and data sync back and forth with the external system. 

 

Now, our client wants us to do the exact same thing for another third-party API integration, using the same overall structure and business workflow.

What is the best way to approach this?

  1. Should we replicate/clone the existing application inside the same sandbox/org and adapt it for the second API?
  2. Or is it better practice to package and deploy the build into a fresh, separate environment for the new integration?

If you have done something similar, what would you recommend, and what are the key things or common challenges we should keep in mind before starting?

Thanks in advance! 

 

#Salesforce Developer  #Salesforce  #Integration  #Trailhead

1 resposta
  1. 25 de set., 10:21

    Hi Cloud Crafter, 

     

    Short answer: don't clone the app — generalize it. Build the integration logic once as a reusable, config-driven layer, then add the second API as a new configuration, not a new copy of the app. 

     

    Why cloning is the wrong move: 

    - Two copies of the same objects/flows/Apex means every future bug fix, security patch, or workflow change has to be done twice, and they will drift out of sync within months. 

    - It roughly doubles your metadata footprint in the same org for no real functional benefit, since both integrations share the same overall structure anyway. 

    - It makes testing, permissions, and reporting messier — you'll end up needing to explain to users/admins why there are two near-identical apps doing conceptually the same thing. 

     

    Recommended approach: 

     

    1. Extract what's actually integration-specific into configuration, not code/metadata. Things like endpoint URLs, auth credentials, field mappings, and payload structure should live in Custom Metadata Types or Named Credentials/External Credentials — not hardcoded per-integration Apex classes or per-integration Flows. 

     

    2. Keep one set of core objects, screens, and automations, parameterized by an "Integration Type" or "Source System" field/record, so the same Flow/Apex logic branches or reads config rather than being duplicated. 

     

    3. Use Named Credentials (or External Credentials with Named Principals) per third-party API. This is the standard Salesforce pattern for "same integration pattern, multiple external systems" — one generic Apex HTTP callout class, driven by whichever Named Credential/config record applies. 

     

    4. If the two integrations genuinely have very different data models or business logic (not just a different endpoint), that's the signal to build a second app rather than force everything into one config-driven framework — don't over-engineer for reuse that doesn't fit. 

     

    On sandbox vs. new org: stay in the same org/sandbox unless there's a hard business reason to separate (e.g., different client legal entities, data residency requirements, or genuinely unrelated user bases). A second full org means duplicating users, licenses, security model, and ongoing maintenance — that's a much bigger cost than it sounds, and it's rarely justified just because it's "a new integration." 

     

    Common pitfalls to watch for: 

    - Hardcoded field mappings buried in Apex instead of Custom Metadata — this is the #1 thing that makes the "just clone it" temptation so strong, and the #1 thing that makes maintenance painful later 

    - Bulkification/governor limits — if the second integration runs concurrently with the first, make sure shared triggers/flows are bulk-safe, since now two integrations' worth of volume can hit the same automation 

    - Error handling and retry logic tied to one specific API's response format — generalize this early, or you'll end up with API-specific error handling scattered everywhere

0/9000