Use Case - Looking up caller information in BSI CRM

In this Use Case we're going to create a BSI CRM lookup.

PRECONDITIONS

You require service owner rights in Nimbus to create the Power Automate Flow.

You require admin rights in BSI to create the API in BSI.

  • A service is set up in Nimbus.
  • A BSI instance is up and running.

🔍 Note: For more detals about custom configurations in BSI please refer to your BSI partner. Please note that Luware is not affiliated with BSI or their support. We use this CRM as an example. Screenshots may differ in your installation.

 

Show Icon Legend

💡 = A hint to signal learnings, improvements or useful information in context. 🔍 = Info points out essential notes or related page in context.
☝ = Notifies you about fallacies and tricky parts that help avoid problems. 🤔 = Asks and answers common questions and troubleshooting points.
❌ = Warns you of actions with irreversible / data-destructive consequence. ✅ = Intructs you to perform a certain (prerequired) action to complete a related step.
 
 

Expose an API in BSI

In your BSI instance, you want to search for and expose customer data. You can do this by building an API.

Description
Screenshot
Login with your admin account and g o to the Interfaces Customer Rest API and create your api under the API section. We will call it " Customer API ".

 

Add an access Policy to the API and define your api key.

You only need a single endpoint that takes a phone number and returns the customer data.

Create it with and add the GET method to it.

Navigate back to the Customer REST Api.

Now create a New Interface to implement the endpoint.

We name our interface "Read". Here is an overview of its implementation. You can add the elements from the library.

Add a REST Provider to the implementation and set the values as follows:

  • Select the Customer API
  • Select the newly created endpoint and as method GET
  • URL = Your path to the BSI API 💡 Will be required in a later step in Power Automate

Define the response codes and messages.

For response code "200" return the interchange-payload in the message.

Add a Javascript element to the implementation.

Relate the "Aufruf" outcome from the previous REST provider element to the Javascript element.

Copy&paste the javascript to it

 
JS
let phone = interchange.attributes.pathParams.phone;
if (!phone) {
 interchange.attributes.responseCode = '400'
 interchange.payload = "No phone provided";
 self.withOutlet('OUTLET_FAILURE');
 return;
}
let params = {phone: phone};
interchange.attributes.params=params;
LOG.info("phone provided: " + interchange.attributes.params.phone);
self.withOutlet('OUTLET_SUCCESS');
Define the Outcomes.

Add a "Daten suchen" element to the implementation. Relate the "Javascript" element with the "Daten suchen" element by the Success outcome.

Add the Customer entity to the element and add the fields you wish to return in the response.

Define the bindings as follows

JS
 self.withBindings({ phone : interchange.attributes.params.phone });

✅ Run your interface to test it.

 Please contact your BSI provider for more help.

-

Create the flow

Create your new caller identification flow in Power Automate.

Description & Settings
Screenshot
Start with GetOnNewTasks and set it to your service(s).
Add a new variable to the flow that should hold the apikey of your BSI Api.

Add a HTTP element to the flow and set it as follows:

  • Method = GET
  • URI = Your path to the BSI API with Nimbus MicrosoftCallerId field as value.
  • Headers = apikey and variables('APIKey')

Add a Parse JSON element to the flow. 

Depending on what you return in the "Daten suchen" of your BSI Interface implementation, this might differ. In our example the returned data from the API has the following schema:

JSON
{
 "type": "array",
 "items": {
 "type": "object",
 "properties": {
 "firstName": {
 "type": "string"
 },
 "lastName": {
 "type": "string"
 },
 "no": {
 "type": "string"
 },
 "mobile": {
 "type": "string"
 },
 "email": {
 "type": "string"
 },
 "phone": {}
 },
 "required": [
 "firstName",
 "lastName",
 "no",
 "preferredChannelValue-113640",
 "preferredChannelValue-113641",
 "preferredChannelValue-193768"
 ]
 }
}

Add a Condition element to the flow and check on 

  • length(body('Parse_JSON')) is greater than 1

If YES branch:

The phone number has been sucecssfully identified. We can now map the customer fields to the Nimbus fields.

Add a "UpdateTask" to the flow and map the fields accordingly.

If NO branch

Add a second Condition element to the flow and check on 

  • length(body('Parse_JSON')) is greater than 1

If YES: The phone number has been found more than once in BSI. We can Update the Nimbus Task with a special message indicating that multiple contacts have been found.

If NO: No one has been found in BSI. We do not update anything.

✅ Now you are ready to see customer data in Nimbus.

Table of Contents