Skip to main content

#Integration66 人がディスカッション中

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

1 件の回答
  1. 10月4日 5:44

    We did a very similar Salesforce to NetSuite sync with Celigo a couple of years back and it worked well for us. Setup is honestly pretty approachable, lots of prebuilt templates for the common flows like invoice and payment sync, and their support team is solid when you hit a weird NetSuite mapping issue. MuleSoft is more powerful and flexible but in my experience it is overkill unless you have a dedicated integration person, the learning curve is steep and the cost is in a different league. For a straightforward flow like yours, I would start with Celigo and only look at MuleSoft if you outgrow it.

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 件の回答
  1. 10月2日 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 件の回答
  1. 9月30日 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 件の回答
  1. 9月25日 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

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

1 件の回答
  1. 9月25日 8:27

    I’d avoid doing the production login inside SandboxPostCopy if possible. A sandbox refresh replaces exactly the auth/config you’re depending on, so it gets fragile fast. We ended up putting the production data we needed into the sandbox after refresh through a separate deployment/script, then letting SandboxPostCopy handle only the sandbox-side setup.

0/9000
Hi,

I have a couple of jobs using REST API and every couple of days I get:

requests.exceptions.ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response')).

According to library documentation this indicated that Salesforce closed the connection without giving a (complete) response. This baffles me because this does not contain an error message (such as going over any of the limits).

So far I have not been able to reproduce this error with a set of deliberate steps, it just happens once in a while and I see it in my application logs. I get it mostly with various SOQL queries but I've also seen a bulk update failing so it's not related to a single query. Most of the time it fail when running from Google Cloud but I've also seen it failing running on my laptop (which would indicate it's not a proxy issue).

I use "simple-salesforce" python library and this error comes from an underlying "requests" module.

I apologise for the vagueness of my description but this is how much sense I've been able to make out of this so far.

Today I set up a finer Debug Log for Platform Integration and I'll see if it comes up with anything valuable.
2 件の回答
0/9000
Suraj Demgunde が「#Sales Cloud」で質問

How can we cover attached method. can some help me in this.

 

test method cover

 

#Sales Cloud  #Marketing Cloud  #Analytics  #Nonprofit  #Trailhead  #Automation  #New Releases  #Integration  #AppExchange

1 件の回答
  1. 9月21日 20:47

    Hi Suraj,

    To write a unit test for a @future (callout=true) method, you need to mock the HTTP callout (using HttpCalloutMock) and enclose the execution between Test.startTest() and Test.stopTest(). Salesforce runs all asynchronous methods (like future methods) called within startTest() and stopTest() synchronously right when Test.stopTest() executes. 

     

    Here is an example test class structure to cover your method:

    1.Create a Mock Callout Class:

    Mock Implementation. 

    Create a mock class that implements HttpCalloutMock to return a fake JSON response simulating your patchCall output (ensuring it contains 'state' => 'Success' and a valid JSON structure with an id field).

    2.Prepare Test Data and Context:

    Test Setup. 

    In your test method, insert a test Bid_Review_Request__c record so that the update brUpdate; statement can successfully find and update a record in the database.

    3.Wrap in Start/Stop Test:

    Execution and Assertion. 

    Assign your mock, wrap the future method call inside Test.startTest() and Test.stopTest(), and assert that the record was updated successfully.

    Apex 

     

    @isTest

    private class NewProjectHandlerTopUpTest {

    // 1. Mock class for HTTP callouts

    public class MockHttpResponseGenerator implements HttpCalloutMock {

    public HTTPResponse respond(HTTPRequest req) {

    HttpResponse res = new HttpResponse();

    res.setHeader('Content-Type', 'application/json');

    res.setStatusCode(200);

    // Construct JSON response matching the parser requirements

    res.setBody('{"state": "Success", "resBody": "{\\"id\\": \\"12345\\"}"}');

    return res;

    }

    }

    @isTest

    static void testNewProjectHandlerTopUp() {

    // Create test record to satisfy update operation

    Bid_Review_Request__c testReq = new Bid_Review_Request__c(

    Name = 'Test Project'

    // Add required fields for Bid_Review_Request__c here

    );

    insert testReq;

    Map<String, String> recordMap = new Map<String, String>{

    'ID' => testReq.Id,

    'Name' => 'Test Project'

    };

    // Set mock callout

    Test.setMock(HttpCalloutMock.class, new MockHttpResponseGenerator());

    Test.startTest();

    // Calling the future method

    YourClassName.newProjectHandlerTopUp(recordMap, '{"test":"json"}', 'destination', 'WBS123');

    Test.stopTest(); // Future method executes here

    // Assertions to verify the record was updated

    Bid_Review_Request__c updatedReq = [SELECT WBS_Project__c FROM Bid_Review_Request__c WHERE Id = :testReq.Id];

    System.assertEquals('12345', updatedReq.WBS_Project__c, 'The WBS Project code should be updated successfully.');

    }

    }

    (Note: Replace YourClassName with the actual name of the Apex class containing your future method).

0/9000

i have new values i put in a picklist i added them to the record types yet the values still don't appear 

 

#New Releases  #Integration

1 件の回答
  1. 9月20日 13:36

    Hi Branden, if the new picklist values are already added to the relevant Record Types but still aren’t showing, I’d also check the field-level configuration and confirm the values are Active.

    Also verify that you’re testing with the expected Record Type and that the picklist field isn’t being restricted by a dependent picklist or another configuration. 

     

    If it still doesn’t appear, could you share the picklist field, Record Type, and a screenshot of the Picklist Values and Record Type settings? That would help narrow it down. 

0/9000

I am trying to disable by using autocomplete="Off" but its now working can anyone help with this i am using this under lightning record edit form

 

#Sales Cloud  #Service Cloud  #Marketing Cloud  #Analytics  #Nonprofit  #Trailhead  #New Releases  #Integration  #AppExchange

1 件の回答
  1. 9月20日 6:57

    Hi Vikrant, autocomplete="off" isn't supported directly by lightning-input-field because it doesn't expose the underlying <input> element's autocomplete attribute. 

    If you need to control autocomplete, you can use lightning-input instead of lightning-input-field and set: 

    <lightning-input

    type="text"

    autocomplete="off"

    name="myField">

    </lightning-input>

      

    If you need to keep lightning-record-edit-form and lightning-input-field, you generally can't reliably disable the browser's autocomplete through the component attribute. 

      

    If you can share which field you're trying to disable autocomplete for and what browser you're testing in, I can suggest a more specific workaround. 

     

0/9000

Hi every one,

I need to create an interface to integrate a serie of Account’ data and Product’s data between Salesforce CRM and one management system.

I would predict 2 bidirectional flow that allow me to align the information from one system to another. For example: I could create a new Account in my management system and replicate a sub set of its data in the Salesforce CRM and viceversa, all in real time.

I think the use of WSs are as indicated.  

Do someone developed such integration? It could give me some useful tip to approach correctly the topic?

Thanks

Daniela
5 件の回答
  1. 2016年9月26日 10:58
    @Daniela Rinaldo: I have implemented an Integration between salesforce and SAP system. For one of our objects named Orders we had bi-directional flow for which we did the following using SOAP API:

    1. To send data from SFDC to SAP:

    -Import the WSDL received from SAP. This generates apex classes automatically

    -Use these auto generated classes to invoke the web services of the external system

    2. To send data from SAP to SFDC

    - The only task needed here is click Setup- APIs- Enterprise WSDL- right click and save in XML format

    -provide this WSDL to SAP team for them to import this in their system.

    If this clarifies then please mark it as best answer

    Regards,

    SFDC Coder
0/9000