![]() |
VOOZH | about |
Microsoft Power Apps provides a drag and drop interface, underpinned by a rich set of formulas, for generating mobile and tablet apps that are connected to data. The CData API Server extends Power Apps with connectivity to remote data sources, without a need to maintain a separate copy of the data in the Power Apps Common Data Service. The CData API Server provides database-like connectivity for Salesforce, augmenting the functionality of SaaS APIs and NoSQL databases with an in-memory SQL-92 engine.
The CData API Server also supports the Swagger metadata standard, whose UI-generation and code-generation possibilities are utilized across Azure App Service, Power Automate, and Power Apps. With Swagger, Power Apps generates a complete set of formulas for working with Salesforce -- this article shows how to use these formulas to connect your PowerApp to remote Salesforce data.
Accessing and integrating live data from Salesforce has never been easier with CData. Customers rely on CData connectivity to:
Users frequently integrate Salesforce data with:
For more information on how CData solutions work with Salesforce, check out our Salesforce integration page.
If you have not already done so, download the CData API Server. Once you have installed the API Server, follow the steps below to begin producing secure Salesforce OData services:
To work with Salesforce data from Microsoft Power Apps, we start by creating and configuring a Salesforce connection. Follow the steps below to configure the API Server to connect to Salesforce data:
There are several authentication methods available for connecting to Salesforce: OAuth, Login (or basic), and SSO. The Login method requires you to have the username, password, and security token of the user.
The default authentication mechanism (and the one preferred by Salesforce) is OAuth. To use OAuth with CData's embedded OAuth application, leave the connection properties blank. If you have configured your own custom OAuth application with Salesforce (see the Help documentation for more information), set OAuthClientId, OAuthClientSecret, and CallbackURL to the properties for you application. Set InitiateOAuth to the desired OAuth flow ("GETANDREFRESH" will have the connector manage the entire OAuth flow).
If you do not wish do not wish to use OAuth authentication, you can use Login (or basic) authentication. Set AuthScheme to Basic, and set the User, Password, and SecurityToken properties. You can configure your security token in Salesforce.
SSO (single sign-on) can be used by setting the SSOProperties, SSOLoginUrl, and SSOExchangeURL connection properties, which allow you to authenticate to an identity provider. See the "Getting Started" chapter in the Help documentation for more information.
If your Salesforce org has MFA enforcement enabled, set MFACode to the time-based one-time passcode (TOTP) generated by your authenticator app (such as Salesforce Authenticator or Google Authenticator). MFACode applies to both OAuth and Login authentication flows.
π Connecting to a datasource (SQLite is shown)Next, create a user to access your Salesforce data through the API Server. You can add and configure users on the Users page. Follow the steps below to configure and create a user:
Having created a user, you are ready to create API endpoints for the Salesforce tables:
Having configured a connection to Salesforce data, created a user, and added resources to the API Server, you now have an easily accessible REST API based on the OData protocol for those resources. From the API page in API Server, you can view and copy the API Endpoints for the API:
π API EndpointsYou will use the metadata to create a Custom API connection. You can obtain the Swagger definition by making the following request in your browser and then saving the resulting JSON file:
http://MySite:MyPort/api.rsc/$oas?version=2
The following procedure shows how to create a simple app that searches remote Salesforce data.
Follow the steps below to connect to Salesforce from a Power App:
Follow the steps below to create a simple app that can search Salesforce data. You will use Power Apps formulas to bind Salesforce rows to rows in a gallery control.
In the View tab, click Gallery -> Vertical to add a Gallery.
After selecting a gallery, assign the Items property of the gallery to Salesforce data on the Advanced tab of the gallery settings. The formula below will allow you to access columns in the Account table.
ForAll(CDataSwaggerAPI.getAllAccount().value, {myIndustry: Industry, myAnnualRevenue: AnnualRevenue})
Assign Salesforce columns to UI elements by clicking the element and then setting the Text property (on the Advanced tab of the UI element) to ThisItem.myIndustry or ThisItem.myAnnualRevenue.
π Adding the connection to the layout.To filter the records displayed by the gallery, add a TextInput to your Screen, clear the Text property for the TextInput, and set the Items property of the gallery to a formula like the one below, replacing TextInput1 with the name of the TextInput control in your gallery, if necessary:
If(IsBlank(TextInput1.Text),
ForAll(CDataSwaggerAPI.getAllAccount().value, {myIndustry: Industry, myAnnualRevenue: AnnualRevenue}),
ForAll(CDataSwaggerAPI.getAllAccount({'$filter':Concatenate("contains(Industry,",TextInput1.Text,")")}).value, {myIndustry: Industry, myAnnualRevenue: AnnualRevenue}))
The formula builds an OData query that the API Server executes against the remote Salesforce data, ensuring that the search is run against the current data without first pulling in every record into the app. You can find more information on the supported OData in the API Server help documentation.
Follow the steps below to load an editable screen that shows the fields of the Salesforce record selected in the gallery.
Navigate( Details, None )
For each column you will need to do the following. Note that for Custom APIs form elements cannot detect which requests need to be formulated to the API Server, so you will need to write the data modification formulas manually.
To give your app basic update functionality and navigation, add Submit and Back buttons:
CDataSwaggerAPI.updateAccount(BrowseGallery.Selected.myId,BrowseGallery.Selected.myId,{Industry:TextInput1.Text,AnnualRevenue:TextInput2.Text})
Navigate( BrowseScreen, None )
Your mobile or tablet app can now browse, search, and update Salesforce data.
Learn more or sign up for a free trial:
CData API Server