Flow Connect Help
Roadmap
  • â„šī¸This is Flow Connect
    • Overview
    • Technical overview
      • System requirements
    • What's new?
      • Change log
  • â–ļī¸quick start
    • Create an application
    • Create an admin access group
  • 🔁working with Connect
    • Connect to systems
      • Connector agents
        • Add agent group
        • Install agent manager
        • Add agent
        • Manage agent
      • Connectors
        • IFS Applications 10
        • Oracle
        • Microsoft SQL Server
        • Send Email
        • REST
          • Microsoft Graph API
          • Infor M3 REST
            • Obtaining Infor ION API file
            • Configure REST Connector with ION API file
          • IFS Cloud
            • IAM Client Registration
            • Obtaining end-point info from IFS Cloud
            • Configure REST Connector for IFS Cloud
      • Redirect URIs
    • Create and design
      • Application packages
      • Applications
        • Create
        • Design
        • Test
        • Commit
      • Portal Pages
        • Create Portal Page
        • Design Portal Page
        • Commit Portal Page
      • Components
        • Create component
        • Manage component
      • Modules
        • Create module
        • Manage module
      • Automations
        • Functionality
        • Create Automation
        • Manage Automation
        • Creating Access Key
        • Executing Automations Externally
          • IFS Cloud
          • Salesforce Apex Trigger Example
    • Deploy
      • Environments
      • Deploy
    • Use
      • On mobile devices
      • In web browser - Web client
      • In web browser - Portal
    • Share
      • Share Applications
    • User administration
      • Users
        • Invite a new user
        • Manage users
      • User groups
        • Create user groups
        • Manage user groups
      • Access
        • Manage access
  • â¸ī¸Reference
    • How-to guides
      • Create User Step controls
        • Header
        • Static text
        • Labelled static text
        • Link
        • Image viewer
        • Text input
        • Numeric input
        • Date input
        • Time input
        • Check box input
        • Binary option input
        • List selection input
        • List multi-selection input
        • Menu selection input
        • Data grid
        • Calendar control
        • Image selection input
        • List presentation
        • Camera Input
      • Dependent controls in User step
        • Variable source
        • Expression source
        • Control visibility (condition to hide)
      • Configure SSO for Microsoft Entra
    • Reference
      • Clients
        • Settings
        • My data
      • Designer
        • Controls
          • Header
          • Static text
          • Labeled static text
          • Link
          • External app launcher
          • Image viewer
          • Text input
          • Numeric input
          • Date input
          • Time input
          • Check box input
          • Binary option input
          • List selection input
          • List multi-selection input
          • Menu selection input
          • Data grid
          • Calendar
          • Image selection input
          • List presentation
          • Camera input
          • File gallery
          • GPS location input
          • Signature capture input
          • Item creation sub task
          • Check list sub task
          • Verb sub task
        • Steps
          • Start
          • User interaction
          • External system
          • Decision
          • Assertion
          • HTTP requests
          • Assignment
          • Table
          • Event listener
          • Checkpoint
          • Script
          • Annotation
          • End
          • Local data resource
      • Portal
        • Design items
          • Portlets
            • Accumulation chart
            • Base chart
            • Circular gauge
            • Custom content
            • Data tree
            • Document viewer
            • Filter
            • Kanban
            • KPI card
            • Link
            • My apps
            • Record
            • Rich text
            • Table
          • Container
          • Common portlet configuration
            • General
            • Events
            • Data
            • Custom buttons
            • Style
        • Portal settings
          • Branding
          • Page
          • Navigation
        • Profile
        • Portlet actions
        • Cache
        • Input to Start Step
      • Diagnostic mode
      • FlowScript
        • Walkthrough
          • Introduction
          • Expressions and programs
          • Anatomy of a program
          • Variables
          • Simple types
          • Nullable types
          • Records
          • Sequences
          • Other types
          • Arithmetic
          • Other expressions
          • Queries
          • Conditionals and loops
          • Function definitions
          • Built-in functions
          • DateTime module
          • Seq module
          • HTTP module
          • CSV module
          • JSON module
          • Trace module
          • Record module
          • XML Module
          • Custom modules
          • Custom Types
          • Appendix: Subtyping rules
          • Appendix: Escape sequences
          • Appendix: Type checking errors
      • Flowscript Copilot
      • Glossary
    • Flow Connect Downloads
      • Install Flow Connect Designer
    • Migrate from Flow Classic
      • Portal - migrate from Flow Classic
      • Classic vs. Connect Comparison Guide
Powered by GitBook
On this page

Was this helpful?

  1. working with Connect
  2. Create and design
  3. Automations
  4. Executing Automations Externally

Salesforce Apex Trigger Example

Below is an exampole of a trigger handler for a Salesforce Apex Trigger. For a compleate udnerstanding of triggers in Salesforce please consult the salesforce documentation.

Remember to register a Remote Site Settings in salesforce for your Automation webhook.

// Salesforce Apex Class to trigger automation
 
public class Flow_AccountTriggerHandler {

    private static String FlowUrl = 'https://AutomationWebhookUrl'; // Automation Endpoint
    private static String FlowApiKey = '<AccessKey>'; //Automation Access Key
    
    @future (callout=true)
    public static void makeCalloutToFlow(id accountId, String accountAsJson) {
        
        HttpResponse response = makeHttpPostCalloutToWebhook(
            FlowUrl,
            FlowApiKey,
            accountAsJson);
        
        updateAccountWithAccountNumber(
            accountId, 
            response.getStatusCode(),
            response.getBody());        
    }
    
    private static HttpResponse makeHttpPostCalloutToWebhook(
        String webhookEndpoint, 
        String xApiKeyHeaderValue, 
        String jsonBody)
    {
        HttpRequest request = new HttpRequest();
        request.setMethod('POST'); // POST Method
        request.setEndpoint(webhookEndpoint);
        // Begin Headers
        request.setHeader('x-api-key', xApiKeyHeaderValue); // Access Key
        request.setHeader('Content-Type', 'application/json'); // Body Format 
        request.setHeader('Accept','*/*'); //Required Can be */*, application/json, application/xml
        // Beging Body
        request.setBody(jsonBody);
        request.setTimeout(60 * 1000);
        return new Http().send(request);
    }

    private static void updateAccountWithAccountNumber(id accId, Integer statusCode, String jsonStr)
    {
        Account account = getAccountById(accId);        
        if (account != null) {
            if (statusCode == 200)
            {
                Map<String, Object> results = (Map<String, Object>) JSON.deserializeUntyped(jsonStr);
                String hasFailed = (String) results.get('HasFailed');
                if (hasFailed != null && hasFailed.toLowerCase().equals('false'))
                    account.AccountNumber = (String) results.get('CustomerId');
            }
            account.Description = 'Flow : ' + statusCode + ' ' + jsonStr;
            update account;                    
        }
    }
    
    private static Account getAccountById(id accountId) {
        List <Account> accounts = [SELECT Id,Name,Description FROM Account WHERE Id = :accountId];        
        if (!accounts.isEmpty()) return accounts[0];
        else return null;
    }
}
PreviousIFS CloudNextDeploy

Last updated 1 day ago

Was this helpful?

🔁