Tuesday, June 4, 2019

Moving to a new Home

I have been blogging on KRMCRM for several years now. Since it's not even called CRM anymore, I have decided to move into the future on a new site.

Thank you to my loyal followers here! Please take a moment to check out the new site at KylieKiser.com and sign up to follow via email. All existing content has been migrated so you can still find all of your favorites there.

Please head over and share your thoughts!

Saturday, April 13, 2019

May 2019 Events

There are several great events happening in the next few weeks where you can meet #CRMUGDC the Monkey. Make sure you save the date and get registered!

CRMUGDC Q2 Chapter Meeting

  • May 15, 8:30am-12:30pm
  • Location: Microsoft Chevy Chase
  • Speakers
    • Geoff Ables: Designing Customer Engagement Processes
    • Nelson Johnson: Power BI for Beginners
    • Kalpana Sivanandan: Microsoft Teams Introduction
  • Get all the details and register here!
  • Check out more events and discussion in the Washington, DC Chapter
If you can't make it to the May 15 DC event, keep in mind that the Reston, VA and Richmond, VA Chapters always meet the same week. We work together to coordinate speakers and plan great content. These are other great chapters to attend!
For those who will be in Philly early, you can also check out the local D365UG/CRMUG Chapter. Their Q2 meeting will be taking place on Friday before D365 Saturday. Check out the details for the May 17 meeting and get registered!

Sunday, April 7, 2019

Improve Game Night with the Power Platform: Lessons Learned

For the last several weeks I have been working on a project to encourage myself to learn more about Power BI, PowerApps and Flow. I have been procrastinating learning these tools waiting for the perfect use case to test on. However what I really needed was just time and a data set to work with.

I have been procrastinating on learning these "new" tools for far too long. So my main takeaway is that there is no excuse! There are so many resources available to learn. No one needs to be an expert right away, its just important to start trying.

When creating new entities it is always important to plan your data structure ahead of time. In this case I planned for this use case but there are probably additional questions to be answered if this was a more real-life scenario. Additionally there are probably other data points that would be helpful for this. It would be helpful to get this data at the beginning instead of trying to add later.

Power BI was really exciting! Once the data was in the Power BI Desktop it was easy to add in data tables and visualizations. Then it only took a bit longer to figure out how to make the changes I was looking for. I was very impressed with what could be done with only a few minutes of dedicated time. 

PowerApps was not as easy for me. I learned the importance of reviewing the templates and different options available. I initially created a blank canvas app, got stuck and started again with the app from data. Also learned to look at all of the different settings for each element. It was easy to think I could just delete or edit something on the screen when I really just needed to edit the properties. There are so many resources for PowerApps plus a great community to help us out. So I didn't stay stuck for long. Some research and some trial and error.

I liked how I could get to the Flow editor right from the PowerApp. It was quick and painless to make the simple flow and it worked as expected.

These posts have been a long time in the making and the main thing I learned was I needed to stop procrastinating! There are no more excuses. It's time to learn these new tools and start applying them to your organization! Thanks everyone for coming with me on this journey.

How do you learn new tools? How do you find good use cases to test?

Saturday, April 6, 2019

Improve Game Night with the Power Platform: Canvas PowerApp

I am working through a scenario to select and rate Board Games to help push me to learn more about the Power Platform.

At this point we have selected a game and sat down to play. Obviously I won so I want to record a high rating for this game. My goal is to create a PowerApp I can run from my phone. I will search for the game to view details and then add a new rating for played games. This rating will create a new "rating" record in D365. Then our rollup field will automatically update the parent Board Game record.

So let's see if this works. The PowerApp was a bit less intuitive (at least for me) than the Power BI dashboard. So I created several different Apps and forms/screens before getting what I wanted. The end result is not perfect but was achieving my goal of getting in and trying it out.

You start in web.powerapps.com and login to your org. From here you can create a Canvas App starting from Data. I selected Dynamics 365 and my board game entity. This automatically built a list screen where you can search the games and a detail screen to view all the details from the game. These screens can be edited using the options on the right hand side to add fields, remove fields, change layout, etc.
Create Canvas App from Data
Connect with D365

Setting up Data Connection
Now, to create a new Rating record I created a new blank form page. I added a combo box to this page which links to the Board Game list and allows users to search and select one. Then added a Rating scale to fill in the star rating. Then I linked the submit check mark to a Flow. This Flow will push the data from the PowerApp form into Dynamics 365.
List Screen

Rating Screen Details

Finally I created a new button on our main page to get to this Rating page.
Details for Rating Button

Additionally there were a few other navigation edits to make sure canceling goes back to the right page and such. The hard part for me was getting the right logic to send to the Flow which submitted the data. The main issue I had with this was making sure I had a blank form (no data source selected) and then making sure my combo box was only allowing one item to be selected.

Logic to send Data to Flow
Flow to push data to D365

I would like to expand this by allowing someone to go to a detail form and add the rating from there. This can be a day 2 item.

To test this, I downloaded the PowerApps app on my phone and logged in with my trial credentials. Then I was able to add ratings in the same way as when I was testing on the PowerApps site. Finally, I went into Dynamics 365 and saw that the ratings were being added and were being rolled up at the Board Game level.
Mobile View Search
Mobile View to save rating

Ratings being created in D365
Success! Now to see if any friends want to use this at Parties.

Tomorrow we will finish this series with a look back at lessons learned and thoughts from this series. Don't miss it!

Friday, April 5, 2019

Improve Game Night with the Power Platform: Power BI

I am in the middle of working to learn the Power Platform by making a dashboard and application to help select a board game to play for game night. The data structure has been created and current game list imported.

Now we are going to use Power BI to make a Board Game dashboard. My goal is to make a magical list that will update based on some slicers so we can eliminate options that do not fit the people interested in playing.

So first let's get the data in Power BI using XrmToolBox's Power Query (M) Builder. The step by step instructions are available here: https://crmchartguy.com/power-query-builder/

You will also need the Power BI Desktop app. Once you follow the steps from the video above, all of your data will be in Power BI and you can start building visualizations. Within a few minutes of getting the data there I could create a table and create the slicers to dynamically filter that table!

These are simple tasks but I am going to document them for other's just starting out like me.

To create a table, click the table button then select all the fields you want to display in the table. When the table is selected you can drag and drop the columns in the values list on the right hand side to re-order.

To create a slicer, de-select the table and then click the slicer (table with filter) button then select the field you want to filter on.

Once these are created you can just click and drag to move and resize for the look you want.

So in just a few minutes I created the Power BI dashboard below. Moving the slicers will automatically update the results in my table so I can see the games that will fit my requirements based on time and number of people.

My First Ever Power BI Report

You can tell it is working because Scotland Yard was selected as a potential game. Since this is one of the best games ever, it is a success!

Tomorrow we will create a PowerApp to see the Board Game data and enter ratings.

Still some beautification needed but progress is being made

Thursday, April 4, 2019

Improve Game Night with the Power Platform: Data Import

As you may know, I am trying to learn more about the Power Platform by creating an application to help with board game selection in my household. We have already set up the entities. Next is the data import then we will use PowerBI and create a PowerApp.

Since all of our fields are there we can import our data now. We already have the data in a consistent format (remember it was an export from BoardGameGeek) so I am going to review that file and save it as a .csv. I am going to leave extra data in the file (columns I am not importing) so that I know I can easily import more data later. I want to ensure that if I save a data map, I can use it again and do not need to review which columns I had removed the last time.

  1. Navigate to Settings > Data Management > Imports
  2. Click "Import Data"
  3. Select your file
  4. Choose the "Default (Automatic Mapping)" Option
  5. Select the new entity you created
  6. Now map the data to the fields created previously
    Data Map

  7. Click Next, Click Next
  8. Before submitting, enter a name for the Data Map. This will save the mapping you just did so you can use it on future files. This is also helpful when working in multiple environments. You can build and test your mapping in a development environment. Save it, export it, import the map and then import the file into production without worrying about mapping something differently.
    Saving the Data Map

  9. Click "Submit"

Click the "Imports" link to monitor the import. This can also be found in Settings > Data Management > Imports.

Import Success

As you see I had some errors. You can get more details on these by double clicking on the import job and then navigating  to the Failures area. In my case, this was because the value for one of the fields (Minimum Play Time) was outside of the allowable values. Clearly I thought games should not take longer than a 100 minutes. I determined that these are games I didn't want to play anyways so acceptable loss. But if you did care about your errors, then you could export the list from this failure area. Fix the issue either in the file or in your system and then import again.

Reviewing Import Errors

Now your Board Game records have been created and you are ready to start working with this data! Tune in tomorrow to see my first ever Power BI Dashboard!

Wednesday, April 3, 2019

Improve Game Night with the Power Platform: Data Structure

As you learned yesterday, I wanted to learn about PowerApps and decided to do this by improving the game night board game selection process.

As a prerequisite for this learning experiment I exported our board game library from BoardGameGeek (to be honest, most of this was my husband's idea and he maintains this list which he exported for me).

Then I set up a free trial to use. If you need help getting your trail set up, check out my earlier post: How to Set up Your Free Trial.

Now it's time to get started with the "easy" bits. I call these easy because these are the pieces that I already know how to handle. There are a few things we need to create.

  1. New "Board Game" entity with fields to hold:
    1. Name of the game
    2. Minimum play time
    3. Maximum play time
    4. Average Play time
    5. Minimum number of players
    6. Maximum number of players
    7. Year Published
    8. Type (Standalone or expansion)
  2. New "Rating" entity with an N:1 link to the "Board Game" entity. This will capture the date (created on) and an integer score. An argument could be made for this to be a custom Activity type but in this case I think that would be a bit of overkill
  3. New Rollup fields on the "Board Game" entity to get us the average score for the game

Let's start with a solution to keep things classy. I also created a publisher so I didn't have new_ in my screenshots.

Publisher Details

Solution Creation

The solution is created from settings > Solutions > New. Then I created the publisher by using the New option from the lookup field. You can also create your Publishers from Settings > Customizations > Publishers. For more information on Solutions, check out this CRMUG Webinar: Solution Management, Your Customization's on the Move.

Alright, let's create the new Entity. In the solution, click New > Entity. I entered the details as shown below, saved and published.

Board Game Entity Set Up

I set the ownership to Organization because all games will be visible to all users with access to that entity. I made it visible in the sales area and turned off the Communication and Collaboration features. We may decide to use Notes in the future but this can be enabled at a later time.

Now for the new fields. Creating fields can be tedious. There are a few options to speed this up. We could do the import and create new fields on the way in. This is generally not recommended as it is very easy to make a mistake. You can also  create the fields via XrmToolBox.

In most case, I would recommend you create the fields manually. Since these fields are simple and this blog is just for learning and experimentation, that is why I chose to go the exciting route.

So I launched XrmToolBox, connected to my trial and navigated to the Attribute Editor (you may have to download from the plugin store). If you are not familiar with XrmToolBox, check out: Getting Started with XrmToolBox.

In the Attribute editor:

  1. Click "Refresh Entities". This will load all the entities from the trial including the new one we just created.
  2. Select the "Board Game" entity and click "Download Template"
    Download Template from Attribute Editor

  3. This creates an Excel file with the details of all the existing fields. I filled in the details for my new fields. I did not include the details for the Option Set as that seemed likely for disaster.
    Add new fields in the downloaded file

  4. Save the updated file
  5. Back in XrmToolBox, navigate to the file click the "Upload Template" button. This will show you the details of the new fields from the file
    Re-import the field details
  6. Click Save and Publish to push these changes to your D365 environment (or if you are like me: get an error, see your silly mistake, fix it and retake screenshots so it seems like you did it right the first time)

Now back in D365, I see all my new fields and just need to create the final Option Set.
Create Option Set

Ok almost there. Let's create one more entity in the solution.

Create Rating Entity

Then we can create the few fields manually.

Lookup to Board Game Entity

Score Field

Now for the fun stuff! We want a rollup field to give us the average score for this game. So back in the "Board Game" entity, I created a new "Average Rating" Rollup field. This will rollup any related "Ratings" to the "Board Game" as an Average. Later we can decide if we need additional rollup or calculated fields for other uses.

Rollup of Scores from related records

Rollup Details

Finally, I updated the main forms for both entities to contain the new fields I created.

If I was doing this in a real environment, there would be several other things I would do as icing on the cake. First of all, create a workflow to populate the Name field on the "Rating" records. I am always irritated to find an entity where the name field is blank. Then there is nothing visible when doing a lookup, default Advanced Find views contain no data, etc. So The workflow would just set this field to the created on date appended with the name of the game it is linked to. Secondly, I would update the icons of these entities to make them look pretty.

Now that the entities are created, we can proceed with importing the data tomorrow!