• Home
  • About Us
  • Contact Us
  • Privacy Policy
  • Special Offers
Business Intelligence Info
  • Business Intelligence
    • BI News and Info
    • Big Data
    • Mobile and Cloud
    • Self-Service BI
  • CRM
    • CRM News and Info
    • InfusionSoft
    • Microsoft Dynamics CRM
    • NetSuite
    • OnContact
    • Salesforce
    • Workbooks
  • Data Mining
    • Pentaho
    • Sisense
    • Tableau
    • TIBCO Spotfire
  • Data Warehousing
    • DWH News and Info
    • IBM DB2
    • Microsoft SQL Server
    • Oracle
    • Teradata
  • Predictive Analytics
    • FICO
    • KNIME
    • Mathematica
    • Matlab
    • Minitab
    • RapidMiner
    • Revolution
    • SAP
    • SAS/SPSS
  • Humor

Tag Archives: PowerApps

Refactoring Pipelines and Implementing PowerApps Checker in DevOps for Dynamics 365 for Customer Engagement Solutions – DevOps Part 2

August 8, 2019   Microsoft Dynamics CRM

Welcome to the next entry in our blog series on DevOps for Dynamics 365 for Customer Engagement (D365 CE). Up until now, we’ve covered the following:

This article will build on the material covered so far, so if you want to follow along and you haven’t walked through those articles yet, I’d recommend you do so.

Contents

Introduction

Often times in large development efforts, a codebase will rapidly approach a critical, messy mass where additional features become exponentially more difficult to implement. The developers’ impulse here may be to stop all new feature development and redesign the entire system, but this is never a good idea. Instead, we need to start making iterative changes to our code to clean it as we add new features. In this article, we are going to be celebrating this philosophy.

As a new deliverable in our DevOps environment, we will be enforcing some code quality rules by including PowerApps Checker in the build stage of our pipeline. We can consume the results of the report generated by this module to prevent developers from introducing common D365 CE anti-patterns to our codebase.

Making Pipelines Reusable

It is very likely your D365 CE deployment will consist of more than one solution. While the components that comprise your solution may be distinct, the pipelines you use to deploy these solutions will be quite similar, if not completely identical. That said, it would be an ironic shame if we were to start copying and pasting our code while incorporating DevOps.

There are many strategies for organizing your D365 CE solution architecture in source control. We will be exploring some of them in later blog posts, but for the purposes of this article, let’s assume that we’ve landed on a strategy which includes storing our pipeline templates in a separate repository. You can import, fork, or directly reference our pipeline repository, or create your own.

Introducing Stage Templates

Stage templates allow us to write the YAML for our stages in separate files, enabling us to gain the power of new multi-stage pipelines combined with the cleanliness of modularity. At the time of writing this article, there are templates for stages, jobs, steps, and variables. Eventually, we will be using each of them, but for now, we’ll start with stage templates, leaving the world a little better than we found it.

stages:
- stage: Build
  jobs:
  - job:
    displayName: "Pack Solution from repository"

Excerpt from stages/build.yml

For the full source code of the stage template, click the link above. Since we’re planning on using other template types here, let’s think ahead a little bit and place our stage templates in a folder. Of course, the eventual increasing complexity of this project may call for that organizational strategy to change.

stages:
- stage: Release

  dependsOn: Build
  condition: succeeded('Build')

  jobs:
  - deployment: Deploy
    displayName: "Import solution artifact"

Excerpt from stages/release.yml

Migrating the Release stage to an external template should be a practice of repetition at this point. We will be improving these stage templates soon, and I encourage you to experiment with how you can find an organizational strategy that works for your team.

Referencing a Pipeline Repository From a Pipeline

Since the stage templates we’ve created are tracked in an external repository, we will need to make them available by adding a repository resource to our pipeline. The steps for this are going to vary slightly based on where your pipeline templates repository is stored:

Pipeline Templates in Azure Repos

If you chose to import our repository or create your own in Azure Repos, you can simply reference it by name in a repository entry, as explained in the documentation for the type parameter.

name: $  (BuildDefinitionName)-$  (Date:yyyyMMdd).$  (Rev:.r)

trigger:
- master

resources:
  repositories:
  - repository: templates
    type: git
    name: pipeline-templates

stages:
- template: stages/build.yml@templates
- template: stages/release.yml@templates

azure-repos-build-release.yml

Pipeline Templates in GitHub

If you are using GitHub for your repository, you will need to create a service connection, if you don’t have one already. Be sure to adhere to the principle of least privilege. That is, you only need to read from a public repository, make sure your service connection only has that privilege.

Steps to Create a GitHub Service Endpoint
  1. Create a personal access token in GitHub

    1. From GitHub, click on your Profile icon.
    2. Click Settings.
    3. Click Developer Settings.
    4. Click Personal access tokens.
    5. Click Generate new token.
    6. Enter a note, such as “Read Public Repositories”, and check the box for public_repo.
    7. Click Generate token.
    8. Click the clipboard icon to copy the token.

github pat Refactoring Pipelines and Implementing PowerApps Checker in DevOps for Dynamics 365 for Customer Engagement Solutions   DevOps Part 2

  1. Create a service connection in Azure DevOps.

    1. From Azure Devops, click Project Settings.
    2. Click Service connections (in the Pipelines category).
    3. Click New service connection.
    4. Click GitHub.
    5. For Choose authorization, select Personal access token.
    6. Enter a Connection Name, such as “pipeline-templates”.
    7. For Token, paste the token from your clipboard.
    8. Click OK.

azdops create service connection Refactoring Pipelines and Implementing PowerApps Checker in DevOps for Dynamics 365 for Customer Engagement Solutions   DevOps Part 2

Now that you have a service connection, following the documentation for the type parameter, you can reference your repository by name and set the endpoint parameter to the name of your service connection. Also, if you want to point to a specific version of the external repository, supply the tag in the ref parameter. For example, if you are using our public pipelines repository, for the purposes of this tutorial, enter a value of refs/tags/blog-part-2.0 for a version consistent with what we’ve learned so far. We will be updating this in a moment.

name: $  (BuildDefinitionName)-$  (Date:yyyyMMdd).$  (Rev:.r)

trigger:
- master

resources:
  repositories:
  - repository: templates
    type: github
    name: microsoft-d365-ce-pfe-devops/D365-CE-Pipelines
    ref: refs/tags/blog-part-2.0
    endpoint: pipeline-templates

stages:
- template: stages/build.yml@templates
- template: stages/release.yml@templates

azure-repos-build-release.yml

After the changes we’ve made, if you attempt to run your Build & Release pipeline, you shouldn’t notice any change in behavior.

Include PowerApps Checker in a Pipeline

At the time of writing, the D365 CE product group has just released the PowerApps checker PowerShell Module. In conjunction with this module, they have also released a collection of official DevOps tasks for invoking the service, and we will cover them in another article in the near future. For now, we will be using the PowerShell module. Let’s add it to our environment and provide a report on our built solution.

For the purposes of this stage, we will be using the Invoke-PowerAppsChecker cmdlet. In order to call this, we’re going to need a few new variables in our pipeline. At a minimum, we will need the following:

  • Geography (or ApiUrl)
  • Azure Tenant Id
  • Client Application Id
  • Client Application Secret
  • Ruleset Id

Create an Application Registration for PowerApps Checker

In order to add the Client Application Id / Secret, we will need to create an App Registration in Azure Active Directory. The documentation on PowerApps Checker includes a script to do this for you. If you’d rather do this manually from the portal, you can follow the instructions in the “How to”, using the configurations provided below. If you choose to use the script, you can skip to generating a client secret.

Per the documentation on PowerApps Checker, provide the following options when creating your App Registration:

  • Redirect URI

    • Type: Public client (mobile & desktop)
    • Redirect URI: urn:ietf:wg:oauth:2.0:oob

powerapps checker client Refactoring Pipelines and Implementing PowerApps Checker in DevOps for Dynamics 365 for Customer Engagement Solutions   DevOps Part 2

Then, in API permissions, grant access to the PowerApps-Advisor API, giving Application permissions to Analysis.All.

powerapps checker api permissions Refactoring Pipelines and Implementing PowerApps Checker in DevOps for Dynamics 365 for Customer Engagement Solutions   DevOps Part 2

Finally, generate a secret for the registration.

powerapps checker secret Refactoring Pipelines and Implementing PowerApps Checker in DevOps for Dynamics 365 for Customer Engagement Solutions   DevOps Part 2

Create Additional Pipeline Variables Required to Call PowerApps Checker

Now that we have a client application that we can use to authenticate with the PowerApps Checker service, we can create the additional pipeline variables. Open up the pipeline we currently use for Build / Release and add the following variables:

  • azure.geography – Region of data center to temporarily store reports generated by the PowerApps Checker service. Read more.

    Note: Based on your implementation, you may need to use ApiUrl instead. If so, be sure to modify the YAML file accordingly.

  • azure.tenantId – Example: ab2cea59-d1df-4950-ad30-3d7f43d1a8d8

  • powerAppsChecker.clientId – Example: 24076c4b-1a57-4ca1-9da5-42f367cf57d8

  • powerAppsChecker.clientSecret – Generated in the steps shown above. Be sure to change this variable type to secret.

You can get azure.tenantId and powerAppsChecker.clientId from the Overview tab for the App registration you created.

app registration overview Refactoring Pipelines and Implementing PowerApps Checker in DevOps for Dynamics 365 for Customer Engagement Solutions   DevOps Part 2

Retrieve the Ruleset Id

The final variable we will need in order to invoke PowerApps Checker is powerAppsChecker.rulesetId. You can use the Get-PowerAppsCheckerRulesets cmdlet to retrieve the available guids. At the time of writing, there are two rulesets available. The guids will never change, so you are free to store these as a variable to re-use them for your pipelines.

  • powerAppsChecker.rulesetId

    • 083a2ef5-7e0e-4754-9d88-9455142dc08b for AppSource Certification
    • 0ad12346-e108-40b8-a956-9a8f95ea18c9 for Solution Checker

Install Sarif Viewer Build Tab

The PowerApps Checker service will generate a JSON file following the SARIF schema. Once we invoke the service from our pipeline, we will want a convenient way to view the results. The Microsoft DevLabs team has released an experimental, open-source Azure DevOps extension for this called Sarif Viewer Build Tab. Open that link and install it into your Azure DevOps organization in order to view the results of PowerApps Checker within your Pipeline summary.

Invoke PowerApps Checker From a Test Stage in a Pipeline

We now have all of the pieces in place to add an additional stage to our Pipeline and start invoking PowerApps Checker. Add the following YAML file to your pipelines repository, or if you’re referencing ours, update your reference to use the blog-part-2.1 tag, which contains the newest test.yml file.

stages:
- stage: Test

  dependsOn: Build
  condition: succeeded('Build')

  jobs:
  - job:
    displayName: 'Run PowerApps Checker'

    pool:
      vmImage: 'vs2017-win2016'

    steps:
    - task: DownloadBuildArtifacts@0
      inputs:
        buildType: 'current'
        downloadType: 'single'
        artifactName: 'drop'
        downloadPath: '$  (System.ArtifactsDirectory)'

    - powershell: Install-Module -Name Microsoft.PowerApps.Checker.PowerShell -Scope CurrentUser -Force
      displayName: 'Install Microsoft.PowerApps.Checker.PowerShell'

    - powershell: |
        md '$  (Common.TestResultsDirectory)\powerapps-checker'

        Import-Module Microsoft.PowerApps.Checker.PowerShell
        $  ruleset = New-Object Microsoft.PowerApps.Checker.Client.Models.Ruleset
        $  ruleset.Id = [Guid]::Parse('$  (powerAppsChecker.rulesetId)')

        Invoke-PowerAppsChecker `
          -Geography $  (azure.geography) `
          -ClientApplicationId $  (powerAppsChecker.clientId) `
          -TenantId $  (azure.tenantId) `
          -Ruleset $  ruleset `
          -FileUnderAnalysis '$  (System.ArtifactsDirectory)\drop\packedSolution$  (solution.name)_managed.zip' `
          -OutputDirectory '$  (Common.TestResultsDirectory)\powerapps-checker' `
          -ClientApplicationSecret (ConvertTo-SecureString -AsPlainText -Force -String '$  (powerAppsChecker.clientSecret)')
      displayName: 'Invoke PowerApps Checker'

    - powershell: md '$  (Common.TestResultsDirectory)\powerapps-checker\unzipped'
      displayName: 'Create folder for unzipped results'

    - task: ExtractFiles@1
      inputs:
        archiveFilePatterns: '$  (Common.TestResultsDirectory)\powerapps-checker\*.zip'
        destinationFolder: '$  (Common.TestResultsDirectory)\powerapps-checker\unzipped'
      displayName: 'Extract results to folder'

    - task: PublishBuildArtifacts@1
      inputs:
        pathtoPublish: '$  (Common.TestResultsDirectory)\powerapps-checker\unzipped'
        artifactName: CodeAnalysisLogs
      displayName: 'Publish PowerApps Checker report artifacts'

stages/test.yml

Note that at the time of writing, it is important that your artifact be called “CodeAnalysisLogs”. The current version of the Sarif Viewer Build Tab extension is hard-coded to only read from that folder. Also, the tab extension will not read from zip files, so you need to extract the SARIF files into that folder.

You will also need to update your main YAML file to include a reference to the newly created stage:

name: $  (BuildDefinitionName)-$  (Date:yyyyMMdd).$  (Rev:.r)

trigger:
- master

resources:
  repositories:
  - repository: templates
    type: github
    name: microsoft-d365-ce-pfe-devops/D365-CE-Pipelines
    ref: refs/tags/blog-part-2.1
    endpoint: pipeline-templates

stages:
- template: stages/build.yml@templates
- template: stages/test.yml@templates
- template: stages/release.yml@templates

github-build-test-release.yml
(Azure Repos version: azure-repos-build-test-release.yml)

Once you’ve committed that, you should be able to run your pipeline and watch as the Test stage completes prior to beginning the Release stage. Once the Test stage completes, from the Pipeline review, you should see a “Scans” tab, which will show the results of the PowerApps Checker.

powerapps checker no results Refactoring Pipelines and Implementing PowerApps Checker in DevOps for Dynamics 365 for Customer Engagement Solutions   DevOps Part 2

However, right now, if you are using the sample solution from our tutorial repository, this view is pretty unexciting. Feel free to verify it by adding a solution component that violates a PowerApps Checker rule. Alternatively, you can download and check in the newest ExtractedSolution folder from our tutorial repository for a version of the solution containing a JavaScript file that should throw off some red flags:

powerapps checker bad javascript Refactoring Pipelines and Implementing PowerApps Checker in DevOps for Dynamics 365 for Customer Engagement Solutions   DevOps Part 2

That’s it for this article! There’s still plenty of room to add value here. As a fun challenge for yourself, see if you can parse the results of the PowerApps Checker programmatically and actually cause the Test stage to fail if any results are found. We will be providing a solution to this in our next entry. (Hint: The PowerApps Checker result includes a property called IssueSummary.)

Thanks for reading, feel free to ask any questions in the comments section below, and happy DevOps-ing!

Let’s block ads! (Why?)

Dynamics 365 Customer Engagement in the Field

Read More

PowerApps: Sending Text Messages

January 3, 2019   Microsoft Dynamics CRM
powerapps text messages 300x225 PowerApps: Sending Text Messages

So much can be accomplished with PowerApps! In today’s blog post, we will walk you through the incredibly simple process of using PowerApps to send text messages with prefilled content using your own phone’s native messaging app. It’s just one example of the potential of PowerApps.

With PowerApps, we can generate text messages in a couple different ways:

  • Using a Flow to send an automated message. Typically, this requires the use of a 3rd party action in Flow which will incur additional costs.
  • Using the sender’s own device to send the message through its native texting application. This option uses existing carrier rates to send the text message, which for most plans is free due to unlimited texting – therefore, it is the preferred method.

You can even configure the body of the text message in PowerApps to make the whole process only two clicks:

010219 1621 PowerAppsSe1 PowerApps: Sending Text Messages

1. Click the Send on-route text message button in Power Apps.

2. Click Send.

010219 1621 PowerAppsSe2 PowerApps: Sending Text Messages

Slick, right? Now let’s look at how we can automate this process with a very simple formula.

1. In the “OnSelect” event of our button, we will add the Launch() formula Launch(Address, Label, value). As the name suggests, Launch is used to open or launch an application on your device – it could be your phone’s native SMS/texting app, a phone call app, or even a browser. In our example, we will pass the SMS: along with the customer’s phone number in the Address parameter and then pass “body” in the Label parameter to denote the location of pre-populated text of our choice, which is the Value parameter. The pre-populated text is a concatenated string of text along with fields from the Customer record to personalize the message.

2. Note that in terms of the necessary code, there is a slight difference in the syntax between IOS and Android devices. Android follows the comma-separated syntax describe above: Launch(Address, Body, Content). However, Apple devices use a slightly different syntax that uses ampersands (&) and equal signs (=) instead of the commas, yielding the following syntax: Launch(Address & Label=Content). To handle the specific syntax for Apple, we concatenate the three Launch parameters into the first (Address) parameter. We add the ampersands and equal sign syntax into the string and the Apple device will interpret the syntax and will open a new message.

  • Android: Set the syntax by using the format provided in the hover over, which is Launch(Address, Label, value). Below is the Android syntax used in our example:
    Launch(“SMS:”& Gallery1.Selected.address1_telephone2, “body”, “Hey ” & Gallery1.Selected.name & “! We are en-route to your location for the appointment. We will be there in less than an hour!”)
  • IOS: The entire syntax is located in the address parameter of the Launch formula , with the ampersand and equal sign being passed after the telephone number as part of the body string (highlighted below):
    Launch(“SMS:”& Gallery1.Selected.address1_telephone2 & “&body=Hey ” & Gallery1.Selected.name & “! We are en-route to your location for the appointment. We will be there in less than an hour!”)

So, there you have it! Although simple, the Launch formula can help you not only automate your processes, but also save you a lot of money by using your carrier’s (unlimited) texting plan.

Tip: You can also use the Launch() function without the “body” seen in the examples above. If you just say Launch(“SMS” & Gallery1.Selected.address1_telephone2), it will launch the SMS/texting app on your phone with the customer’s phone number filled in. This gives you the ability to seamlessly transition from the PowerApps to your native texting app to send personalized messages to your customer.

We hope this helps. Don’t forget to subscribe to our blog for more!

Happy PowerApps’ing!

Let’s block ads! (Why?)

PowerObjects- Bringing Focus to Dynamics CRM

Read More

Enhancing Customer Experience with PowerApps and Chatbots

November 12, 2018   Microsoft Dynamics CRM
ChatBot Blog 300x224 Enhancing Customer Experience with PowerApps and Chatbots

When researching or buying a product or service, a customer has several touchpoints with a company – these can include a salesperson, technical engineer, financial adviser, retail store employee, field technician, and many others. Through all these touchpoints, the customer is expecting a smooth, easy, and pleasant buying experience. For this to happen, all internal employees must be certain they’re providing the right information at the right time to their customers, which begs the question: do our employees have access to the right information, tools, and people to provide good and accurate information to the customer?

Many times, the issue that arises in this endeavor has nothing to do with providing information to customers or prospects – instead, it’s that our own employees may not be familiar with the processes in place and may need help getting their questions answered to get comfortable with the process. Here are a few examples:

  • “What PowerPoint template should I use for my presentation with the prospect? There are so many!”
  • “Do we give discounts to Non-Profits?”
  • “My prospect is asking for a demo this week. How do I get technical sales involved?”
  • “Is there a document I can read to get familiar with our sales process?”

All employees who accompany our customers on their buying journeys may have such questions. So, the question becomes, how do we ensure they are empowered every step of the customer journey and have access to the right information at their fingertips? In today’s blog, we’ll answer that question!

PowerApps + Chatbots

First, let’s quickly discuss chatbots and attempt to debunk some preconceived notions about them. In our experience, when most people think about chatbots, they automatically and immediately associate them with customer service. It seems they picture a customer wanting an update on their delivery status, so they go to a website, start a chat, ask a question about their delivery status, and boom! They immediately get a bot-powered response. Now, it’s great that customer service for end-consumers is the first thing that comes to mind, but chatbots can be used in so many other scenarios besides just tier-one customer service.

Let’s revisit one of the questions we posted above: “What PowerPoint template should I use for my presentation?” This is an innocuous question asked by a salesperson – can we not have a bot answer that question for them?

Yes, of course we can! Not just this, but many other process-, product-, or service-related questions, as well. And what this means is that your employees are not emailing, texting, or calling each other to find the right information. In times of needs, a beloved bot can be at their service and help them out immediately!

Let’s look at a few more possibilities:

  • A Financial Planner goes to a meeting with an investor and accesses production-sales data from their mobile device. Can that Financial Planner ask the bot for recommendations on the best next action, product, or investment approach? Yes, of course! And a bot will provide them with responses and guide them through the process.
  • A consumer walks into a retail store and wants to know where the slim-fit jeans are. Can they just walk up to a kiosk and ask? Yes, of course! And a bot can instantly provide the right information.

How to Create a Chatbot

A chatbot can be created in a variety of different ways. In this example, we’ll describe a specific bot from QnA Maker, which we’re using for two important reasons:

  • It’s a no-code solution. Yes, you read that right: it requires zero coding!
  • It can be surfaced easily in PowerApps through an out-of-the-box connector.

Indeed, QnA Maker is one of the easiest chatbots out there. Simply go to www.qnamaker.ai, sign in with your Microsoft account, and click <Create a knowledge base>. The page walks you through some very quick and easy steps, and before you know it, your bot is ready!

Once your QnA Maker chatbot is ready, you can use the QnA Maker connector in PowerApps to surface it in your app. Now, using a phone, tablet, or computer, anyone in your organization can access this bot to get answers to their questions!

Note: To see how to surface a QnA Maker chatbot in PowerApps, watch this live webinar
on Thursday, 11/8/2018.

What is the experience like? See for yourself:

 Enhancing Customer Experience with PowerApps and Chatbots


Salespeople, Financial Planners, field technicians, customers at an in-store kiosk, and anyone else you can imagine… everyone can get their questions answered in a matter of seconds!

Who is it for?

Currently, the licensing for PowerApps does not allow for apps to be exposed to customers, although your employees with Office 365 accounts can always access any app. In other words, while your customers will not be able to access the app directly on their own device, your organization can use this chatbot app to enhance customer experiences. In addition, using PowerApps on your own devices, you can make these apps available at an in-store kiosk where anyone, including customers, can walk right up to it and get “self-service” answers to their questions.

Bringing it all together

Businesses of all sizes have various employees interacting with customers at several stages of their selling process. The goal of any successful business should be to not just close a sale, but to wow their customers in the process, gaining their trust for a long-lasting relationship. None of this is possible if we don’t provide our own employees with the right knowledge, ability, and tools to help our customers. In pursuit of enhancing consumer experiences, solutions like chatbots and PowerApps play a small yet crucial role. “No code/low code” platforms (which also tend to be “no cost/low cost”) are becoming increasingly viable solutions for many business scenarios, and PowerApps and QnA Maker are just a couple of examples.

If you want to empower your employees with the right knowledge, ability, and tools, please explore these platforms for your needs – and you can start by joining us on 11/8 for a live webinar.

Happy D365’ing!

Let’s block ads! (Why?)

PowerObjects- Bringing Focus to Dynamics CRM

Read More

Fill Your “Last Mile” Gaps with PowerApps

October 24, 2018   Microsoft Dynamics CRM
last mile blog 300x225 Fill Your “Last Mile” Gaps with PowerApps

“Last mile” is a major buzzword right now, especially as it relates to PowerApps. To understand the concept behind the buzz, let’s consider a company that spends millions of dollars on CRM and other software to help induce customers to buy their product. Perhaps the various parts of said product are created in multiple countries, shipped to the US, and driven across the country to stores or warehouses to facilitate a customer’s purchase, all of which is nicely tracked in the CRM. Then, after all that complexity, the sale falls apart in the “last mile,” which is the seemingly simple act of delivering said product to the customer’s house.

This is a big issue across industries right now, as customers have high (and constantly increasing) expectations for flawless execution, service, delivery, etc. To that end, it is becoming tougher every day to meet the standards set by the likes of Uber and Amazon, and thus “last mile” gaps are created.

In this blog post, we will show you how you can build last mile solutions to ensure your users:

  1. Can get what they want, when they want it, wherever they are.
  2. Can get information easily, seamlessly, and painlessly.
  3. Adopt the bigger Dynamics 365 implementation through these apps!

In the example below, we’ll look at how an employee who is always (or mostly) on the road can use a PowerApps app to:

  • Easily communicate with customers through phone calls and text messaging.
  • Get driving directions to customer locations.
  • Email customers and coworkers.
  • Schedule appointments.

…all with minimal clicks!

In the home screen below, we have a list of contacts that the user owns. (Note this “gallery” can be filtered based on various conditions.) For each contact, we can do the following with a single click:

  1. Call
  2. Text/SMS
  3. Get driving directions to their location from user’s current location
  4. Email
  5. Check calendar + schedule appointments

powerapps blog Fill Your “Last Mile” Gaps with PowerApps

Digression: At the very bottom is a “robot” icon. We have integrated a QnaMaker.ai chatbot with this app that does not require any coding. More on that in an upcoming blog post!

Notice that not all contacts have the same icons. That is intentional! If we don’t have a contact’s mobile number, we make our users know that by hiding the call and text icons (another option is to “gray out” the icons).

The first three icons under Yvonne McKay perform calling, texting, and getting driving directions – with a single click, as shown in the video below:

 Fill Your “Last Mile” Gaps with PowerApps

Clicking on Yvonne’s fourth icon takes us to the next screen, where we can add as many email addresses as we want, compose an email, and send it to everyone.

Note: The email screen integrates PowerApps with Exchange, making it a breeze to find coworkers to add to emails.

 Fill Your “Last Mile” Gaps with PowerApps

Clicking the final icon for each of our contacts allows the user to do two things: check calendar and schedule appointments. As a bonus, our app once again connects to Exchange to:

  1. Show the current user’s appointments first
  2. Schedule meetings with coworkers – by picking a date and duration of the meeting, the app shows all the times that work for everyone without conflicts.
 Fill Your “Last Mile” Gaps with PowerApps

The screen is doing a lot here, and the coolest part is that we’re using one of the out-of-the-box screens that are available within PowerApps. In other words, you wouldn’t need to write a single formula to adopt this functionality!

Bringing it All Together

So, what are we really doing here? Essentially, four things:

  1. Surfacing information from a certain data source. In our example, contacts are coming from Dynamics 365, but the source can be SharePoint, Excel, or any other.
  2. Providing users the ability to interact with their customers and co-workers easily, creating a wow! factor for everyone involved.
  3. Encouraging user adoption.
  4. Helping to close those last mile gaps!

Apps like this one are extremely quick and easy to build. In our next blog post, we’ll show you the formulas that our PowerApps designers used to build this app. Until then, learn more about PowerApps here.

As always, Happy D365’ing!

Let’s block ads! (Why?)

PowerObjects- Bringing Focus to Dynamics CRM

Read More

D365 in Focus: PowerApps Demo [VIDEO]

October 5, 2018   Microsoft Dynamics CRM
D365 InFocusPowerApps Demo Still 800x600 300x225 D365 in Focus: PowerApps Demo [VIDEO]

Watch our Power Platform Capability Manager build a fully functioning app – all within minutes! This video showcases the creation of an app that empowers traveling agents and salespeople with single-click options to call, text, and get driving directions to their clients and prospects. Although this is just one of countless functionalities that can easily be built out with PowerApps, you’ll see the drag-and-drop actions and Excel-like formulas that differentiate PowerApps from other app builders.

Let’s block ads! (Why?)

PowerObjects- Bringing Focus to Dynamics CRM

Read More

When to use Dynamics 365 Connector or Common Data Services in PowerApps

August 21, 2018   Microsoft Dynamics CRM
CDS or connector 300x225 When to use Dynamics 365 Connector or Common Data Services in PowerApps

Word’s out! PowerObjects hosted its first ever hackathon in July. Great apps were built PowerApps by team members across the globe, and you can check them out here. With all the development accomplished in a few hours, many lessons were learned. In this blog post, we’ll be sharing one of the lessons learned by the team.

Spoiler Alert: If you can’t find an entity in the Data Source’s tables list, it is not the right connection for your scenario

Using Connections

With PowerApps, you can create intuitive applications connected to your organization’s Dynamics 365 data. You can create, update, and see Dynamics 365 records right within your app. Common Data Services (CDS) and the Dynamics 365 Connector are considered standard connections, and can be used to connect to your Dynamics 365 data. You can also use CDS to create and customize entities from PowerApps.

To learn more about Connectors, and how to connect, review Microsoft’s PowerApps guide here.

First attempt

082018 1602 WhentouseDy1 When to use Dynamics 365 Connector or Common Data Services in PowerApps

For one of the use cases, we wanted a user to be able to create a Lead within PowerApps. To connect the app to the Dynamics 365 data in the organization, we first added a data source.

082018 1602 WhentouseDy2 When to use Dynamics 365 Connector or Common Data Services in PowerApps

From the available Data Connections, we selected CDS.

082018 1602 WhentouseDy3 When to use Dynamics 365 Connector or Common Data Services in PowerApps

To choose a table (entity), we searched for Leads.

082018 1602 WhentouseDy4 When to use Dynamics 365 Connector or Common Data Services in PowerApps

Look again at the image, and you’ll notice the Leads table is not available. This takes us to the lesson learned: not all out-of-the-box (OOB) entities are currently available in CDS. When working with OOB entities and choosing your data source, visit PowerApps’ Entity Reference to identify if the desired entity is currently available.

But we still need to build an app, right? A lesson learned is complete when there’s a solution for it.

Dynamics 365 Connector

082018 1602 WhentouseDy5 When to use Dynamics 365 Connector or Common Data Services in PowerApps

Microsoft is still updating the Common Data Model, and new entities are expected to be available in the future. In the meantime, the Dynamics 365 Connector is an excellent alternative to connect to the data. The solution is to repeat the previous steps; this time selecting the Dynamics 365 Connector.

Choose View > Data Sources > Add a Data Source. From the available Data Connections, select Dynamics 365.

082018 1602 WhentouseDy6 When to use Dynamics 365 Connector or Common Data Services in PowerApps

Search through the tables for Leads. Success! You are able to connect to the out of the box Leads entity.

082018 1602 WhentouseDy7 When to use Dynamics 365 Connector or Common Data Services in PowerApps

Now connected to Leads, you can continue building the app. If you wish to learn more about the Dynamics 365 Connector, check this list of formulas you can use to complete and deploy your app.

Happy D365’ing!

Let’s block ads! (Why?)

PowerObjects- Bringing Focus to Dynamics CRM

Read More

8/2 Webinar: See how PowerApps and PowerBI can provide school teachers the apps and the reports they need by Daniel Christian

August 6, 2018   Self-Service BI

Join Charles Sterling and one of the Power BI, PowerApps and Flow MVPs Daniel Christian (a triple crown awardee!) as Daniel covers how PowerApps and PowerBI can provide school teachers the apps with reports.

Session Abstract:

Education should be the #1 priority and school teachers should be provided all the tools they need. PowerApps, Flow and Power BI can be part of those tools. In this webinar Daniel Christian, Microsoft MVP will demonstrate how his educational app and report can help school teachers monitor the performance of their students. Daniel will demonstrated his PowerApp and Power BI report leverages the back end data to provide valuable insights.

When: 8/2/2018 8AM PST

Where: https://www.youtube.com/watch?v=FeDmLwU2YC0

 8/2 Webinar: See how PowerApps and PowerBI can provide school teachers the apps and the reports they need by Daniel Christian

About Daniel Christian

Daniel Christian has over 11 years of SharePoint experience starting with SharePoint Portal 2003 . His area of expertise includes SharePoint On-Premises architecture, maintenance and administration, SharePoint Online administration. He is a big fan of building no-code solutions and reporting. Currently, he is focused on PowerApps and its integration using Gateway with SharePoint Server 2013 and 2016. Besides writing blogs, Daniel enjoys working with musical holiday lights and photography. Here’s the YouTube playlist of his 2016 holiday lights.

Let’s block ads! (Why?)

Microsoft Power BI Blog | Microsoft Power BI

Read More

PowerApps Hackathon Event Recap

July 16, 2018   Microsoft Dynamics CRM
HACKATHON 1 300x225 PowerApps Hackathon Event Recap

On July 1, PowerObjects hosted its first ever company-wide hackathon. The goal of the daylong competition was to empower PowerObjects employees to truly “Live the Technology” and gain hands-on experience with Microsoft PowerApps. PowerApps is one of Microsoft’s Business Applications that allows users to create custom mobile apps on a cell phone, tablet, or computer without any coding or development experience.

We had a tremendous day with nearly 20 different apps created across the globe, showcasing rapid development in PowerApps! We learned a lot and at the end of the day we increased our organizational knowledge around this very powerful tool. Check out a few of the apps that our employees created during the PowerApps Hackathon.

GPS Locator

Connectors: Flow, Bing Maps and Dynamics 365

What the App Does:

This apps allows users to quickly view nearby records by utilizing their physical (GPS) location and displaying all customers within a given radius based on the address field entered in Dynamics 365.

How it works:

hackathon 2 PowerApps Hackathon Event Recap

By connecting Microsoft Flow to Dynamics 365, users are able to capture the geo-codes of the out-of-the box address fields (street, city, county, country, zip code) and map the data to the address 1: latitude and longitude fields. Using BingMaps API in Microsoft Flows, the latitude and longitude data is returned in to PowerApps. Displaying a list of nearby customers along with their record details.

Delivery Tracking

Connectors: Azure and Google Maps

What the App Does:

This app is designed to allow drivers to view a dynamic list of deliveries scheduled for a specific day with an optimized route and ​barcode scanner to track delivered packages.

071218 1856 PowerAppsHa9 PowerApps Hackathon Event Recap

How it works:

Azure Functions and Flow are used to call Google Maps API, which launches an in app navigation screen that displays the optimized route for the current deliveries scheduled for the truck. The PowerApps Media Barcode can then be used to scan barcodes on packages​ to indicate a successful delivery. Once a package is successfully delivered the app automatically updates and begins navigating to the next location.  

Field Reporting

Connectors: Dynamics 365

What the App Does:

One of our current customers needed an app that all employees can use when in the field or during off-hours to collect information needed to create a new opportunity. ​

071218 1856 PowerAppsHa10 PowerApps Hackathon Event Recap

How it works:

This app connects to the Dynamics 365 entity “Opportunity Create” that allows team members to easily schedule a follow-up communication and assign that activity to the appropriate project manager or owner in CRM. ​The user can collect data and on-site photos from the potential customer and associate the information to an existing record in Dynamics 365. The data collected in the “OpportunityCreated” entity then ties to a dashboard to allow CRM to review the contact information collected and create a formal opportunity via their existing native processes.

PowerScan

Connectors: Dynamics 365

What the App Does:

This app allows you to use your mobile device to scan bar codes, QR codes, and business cards to deposit data into Dynamics 365. Instead of having to purchase a third-party scanner at a trade show to do the exact same thing and then get a CSV file to import into Dynamics 365. The app scans this information at trade shows, events or just anytime where you can verify the information, then qualifies and assigns the leads in real time.

071218 1856 PowerAppsHa11 PowerApps Hackathon Event Recap

How it works:

The out-of-the box PowerApps Camera captures and stores images as Notes or Attachments using Optical Character Recognition (OCR) Text. These notes are can then be set Regarding to the Trade Show Lead record. OCR Text is processed with Regular Expressions to determine the type of data. Name, Email, Telephone, Address, etc., is saved to the Trade Show Lead record. From here, PowerApps can be used to launch Google Maps for driving directions, send emails or call a lead directly.

Want to see these apps in action?

PowerObjects is a Platinum Sponsor at this year’s Microsoft Business Applications Summit happening in Seattle, Washington July 22-24. Be sure to visit our team of experts at booth #1 for exclusive demos and experience the power of Microsoft’s end-to-end Business Application Platform solutions for yourself. You can register for the conference with our code: HCL100dc to receive a $ 100 discount.

Happy D365’ing!

Let’s block ads! (Why?)

PowerObjects- Bringing Focus to Dynamics CRM

Read More

Checking for Consecutive Repeating Characters in PowerApps

July 4, 2018   Microsoft Dynamics CRM
PowerApps Green 300x225 Checking for Consecutive Repeating Characters in PowerApps

Today’s blog will walk through how you can check for repeating characters within PowerApps. We at PowerObjects are excited about the functionality of PowerApps and their potential for reducing the time for developing mobile apps. There are many resources to get up and running, including our webinars.

The challenge with checking for repeating characters is that the PowerApps platform does not allow for writing loops within the PowerApps designer. How can you check if char4 = char5 = char6 within a full string? The solution is to leverage regular expressions. JavaScript regular expressions work in PowerApps.

The solution for this use case is to use the IsMatch (Text, Pattern [,Options]) function with the Contains option and combining special characters “.” and “\x” and “{n,m}” to get the desired regular expression pattern: (.)\x{n}

Let’s walk through an example of how to apply these pieces by creating a simple screen.

Steps overview:

  1. Insert a Text Field.
  2. Insert two icons.
  3. Set one icon to display and the other to not display if there are three consecutive repeating characters.
  4. Test it out.

Step 1 – Insert a Text Field

070318 1513 Checkingfor1 Checking for Consecutive Repeating Characters in PowerApps

Step 2

070318 1513 Checkingfor2 Checking for Consecutive Repeating Characters in PowerApps

Step 3

Set one icon to display and the other to not display if there are three consecutive repeating characters

Input the following expressions in the Visible property of the icons:

Icon 1: If(IsMatch(TextInput1.Text,”(.){2}”,Contains),true,false)

Icon 2: If(IsMatch(TextInput1.Text,”(.){2}”,Contains),false,true)

Let’s break down what each piece means:

IsMatch – checks if the input text matches what you specify in this function

(.) – match any character except a newline character

– remembers 1 preceding character

{2} – matches at least 2 occurrences of the preceding character (exclude the “m” in {n,m} because we are not limiting the number of characters in the string)

Contains – the string specified is within the input text

070318 1513 Checkingfor3 Checking for Consecutive Repeating Characters in PowerApps

Step 4 – Test it out

The happy emoji should display only when there are no three consecutive repeating characters, including letters and numbers.

070318 1513 Checkingfor4 Checking for Consecutive Repeating Characters in PowerApps

070318 1513 Checkingfor5 Checking for Consecutive Repeating Characters in PowerApps

Congratulations! You just executed a workaround for the known limitation that PowerApps do not support programming loops. This is particularly helpful if you need to validate password inputs. You can learn more about the Dynamics 365 Spring 2018 Update for PowerApps in this blog.

Want to learn more about how PowerApps and Microsoft Business Applications can benefit your organization? Join PowerObjects, this year’s Platinum Sponsor, at the Microsoft Business Applications Summit on July 22-24 in Seattle. Register with our code: HCL100dc to receive a $ 100 discount.

Happy Dynamics 365’ing!

Let’s block ads! (Why?)

PowerObjects- Bringing Focus to Dynamics CRM

Read More

6/14 Webinar: Inside the Universal Audit App: See what PowerApps and Flow are capable of by Paul Culmsee

June 15, 2018   Self-Service BI
social default image 6/14 Webinar: Inside the Universal Audit App: See what PowerApps and Flow are capable of by Paul Culmsee

This week have another Australian join me to cover off one of my favorite topics….using PowerApps and Flow to deliver applications that traditionally require a development and devops team!

Inside the Universal Audit App: See what PowerApps and Flow are capable of by Paul Culmsee

This popular app in the PowerApps showcase has resulted in 3-5 requests a week for this app. As a result it has been deployed all around the world. In this session Paul will show how it was conceived, how we leveraged PowerApps and Flow to their full potential and what customization have been done for clients. A great accompaniment session for those looking to get started by showing a complete solution in use around the world…

When June 14th 2018 6pm PST (NOTE the time!)

Where: https://www.youtube.com/watch?v=6Wn47bDOMEE

Let’s block ads! (Why?)

Microsoft Power BI Blog | Microsoft Power BI

Read More
« Older posts
Newer posts »
  • Recent Posts

    • solve for variable in iterator limit
    • THE UNIVERSE: A WONDROUS PLACE
    • 2020 ERP/CRM Software Blog Award Winners
    • Top 10 CRM Software Blog Posts in 2020
    • Database trends: Why you need a ledger database
  • Categories

  • Archives

    • January 2021
    • December 2020
    • November 2020
    • October 2020
    • September 2020
    • August 2020
    • July 2020
    • June 2020
    • May 2020
    • April 2020
    • March 2020
    • February 2020
    • January 2020
    • December 2019
    • November 2019
    • October 2019
    • September 2019
    • August 2019
    • July 2019
    • June 2019
    • May 2019
    • April 2019
    • March 2019
    • February 2019
    • January 2019
    • December 2018
    • November 2018
    • October 2018
    • September 2018
    • August 2018
    • July 2018
    • June 2018
    • May 2018
    • April 2018
    • March 2018
    • February 2018
    • January 2018
    • December 2017
    • November 2017
    • October 2017
    • September 2017
    • August 2017
    • July 2017
    • June 2017
    • May 2017
    • April 2017
    • March 2017
    • February 2017
    • January 2017
    • December 2016
    • November 2016
    • October 2016
    • September 2016
    • August 2016
    • July 2016
    • June 2016
    • May 2016
    • April 2016
    • March 2016
    • February 2016
    • January 2016
    • December 2015
    • November 2015
    • October 2015
    • September 2015
    • August 2015
    • July 2015
    • June 2015
    • May 2015
    • April 2015
    • March 2015
    • February 2015
    • January 2015
    • December 2014
    • November 2014
© 2021 Business Intelligence Info
Power BI Training | G Com Solutions Limited