What kind of apps would a citizen developer make?

Sure, I’ve been around this industry forever, but I hardly ever have a chance to make personal productivity apps for me.  I’m also spending loads of time training and have less and less time for building stuff.  I’ve never been into coding, not even copy/paste of someone’s script on a CRM form.

And as much as it pains me to say it, I made a Power App with an Excel data source.  But that’s what the situation called for, and that’s what Power Platform enabled me to do.

Please note that I am aware that there are a million ways to accomplish what I did, this is the way that I chose to make it with my time and available resources.

Power Apps come in all shapes and sizes to solve business problems of all kinds.  They don't have to be fancy, they have a job to do.  As long as they do the job, that's often just what you need.

This is the story of making a gradebook app.

Some of the details:

  • Four users of the app, we are all licensed users on the same tenant
  • We are supporting cohorts of students and their weekly assignments
  • Each cohort has about 100 members
  • Cohorts last six weeks
  • Most of the time we have two active cohorts because their weeks overlap, so that’s around 200 active students at a time

Also of note:

  • I am not an admin of the tenant
  • I have a good Enterprise Office/Microsoft 365 license, but no Power Platform add-ons

The general flow of things is that each week students have short writing assignments.   Trainers need to review the assignments and provide feedback to students in a timely manner. There are a few other things we track, but the heavy lifting is the writing assignments and feedback cycle.

The writing assignments

Each cohort has 6 forms, one for each week. We open up each week using native functionality to start the new week’s form on a certain date. 

Data

Let’s start with the backend, the data.

There is a connector that allows me to capture Forms responses.

There is a connector that allows me to populate an Excel row in a table.

Our unique identifier in this case is the student email address.  This comes with good and bad.  Good, it’s easy for me on the build side.  Bad, so many ways for this to not make the match we hope for, and it causes the cloud flow to fail.  For now, we review failures and manually correct our gradebook as needed.  Better error handling/avoidance is on the near-term backlog.  ***edited to add*** I added some error handling this weekend and woohoo, it was so easy!

Each week has a form.  Each form has a flow.  And because of data retention policies each cohort has its own series of forms.  So, March cohort has 6 forms and 6 flows; April cohort has 6 forms and 6 flows, and so on.  For me, for now, this is ok.  We have a master set of each and making the forms and flows for a new cohort takes fewer than ten minutes total.

The flow is very simple.  Very. 

The trigger is this named form is submitted.

Now take the info from the form.

Match to this row of this table of this file in this location.

Add these things to the row.

Pictureflow

The Power App

For the app itself, it is built in the Teams channel we use to manage the cohorts.

It has 8 screens.

Main screen- This is where we pick the student we need to view.  This is a read-only screen. 

Student detail screen- We see the student info to include identifying info and assignments in summary form. This is a read-only screen.

Weekly screens- there are six of these pages, one for each week.  They are effectively the same except each week shows that week’s questions and answers.  From here we can track some of their non-writing activities and we can offer them feedback on the writing assignments. 

Let’s look more at the functionality of each screen.

Main screen

Picturescreen1

This is a simple page to select the student.  For now, the students are listed by their username they have on the cohort Team. That might change to their email in the future, we’ll see how it goes in practical day-to-day use.  Sometimes we need to see a student for weekly feedback.  Sometimes it’s to update their participation in other activities. 

When a trainer is going to spend some time offering feedback, it’s easier if we know who is waiting for the feedback.  So, the checkbox will only show us students who have submitted assignments and have not yet received feedback for that assignment.  This query was the most cumbersome because we have to perform the same check for each of the six weeks in this one query.  It was a bunch of if this and this or this and this, and so on.  Once the first weekly logic was set, adding the other weeks was very simple.

I had noticed that sometimes the selected student wasn’t clearing as expected.  It was sticky.  I would look at Student A, go back home.  Select Student B, and on view would see Student A instead.  So I added a clear button for when that happens.  It was so inconsistent that this was the fastest way to solve the problem instead of troubleshooting the why, we just solved it with a button.

Student detail screen

Picturescreen2

The available actions on this page are to go home (click that shiny cohort badge/logo takes you home), or drill into a week.  Looking at this example you can quickly see that the first two weeks have the writing completed by the student, and feedback provided.  But the third week has the student input, but no feedback yet.  So, the trainer clicks the button for the week from the center of the page.  If you were here to track other activities, you would still drill into the week to track that.

Weekly feedback screens

Picturescreen3

This is where the action happens.  Before we got here, everything was read-only and directional. First, we have the non-action, action items.  You can go home from here by selecting the icon.  You can go back to the student summary screen with the back button. 

Most of the fields on this page are read-only.

If you are here to track the non-writing activities, you can add your responses to those fields (there are two) and select the save icon.  This sends the updates back to the Excel table. (Yup, we’re still on Excel here, did you forget?)

If you are here to provide feedback to the writing assignment, you enter your text in the review box, and select the Send Feedback button.  This will send the save back to the table for any of the three fields you could have edited.  But it also uses the Office connector and sends feedback in an email to the student.  The email comes from the current user of the app.  This is NOT a flow, it’s via a formula here in the app.

If you need to view other weekly activities for this student while you are here, you can navigate to any of the weeks directly from this page using the buttons on the top.

Random findings

  • Still not a huge fan of Excel as a data source, but it’s what we have available here so it’s what we use. It is stored in a location far away from our other daily files, so chances of it accidentally being updated are less than if it were in a common location.
  • Even experienced people have to search for formula help, and they make things via trial and error. I’m surrounded by super smart people and asked for help when I needed it.  They still had to go look things up.  And often things didn’t work on the first try.
  • There is usually more than one way to do the same thing. For example, sending the feedback to the student each week could have been a cloud flow.  The send feedback button was originally intended to trigger a flow to grab info from the table, then compose and send the email.  But, it turned out for our purposes, using native functionality we could compose it all inline in the app itself and make it a more direct path to send, and it was easier to make it come from the current user with the in app email send.
  • I could probably make a single flow for each cohort combining the six weeks into one cloud flow. For me that adds a layer of complexity that is just not needed here.  It would make troubleshooting problems more difficult.
  • Flow error messages can give enough detailed information to be able to manually complete the task, if the task is small.
  • Things were easier for me because I am pretty good at quickly recognizing patterns and using them as needed with minor modifications.
  • Things were more difficult for me because I am a three-dimensional thinker and Excel is not a relational database, it’s pretty darn flat.
  • It’s ok to ask for help.

All in all, I spent about 20 hours on this so far.  That includes everything from the structure of the table that powers the backend to the apps and automation.  I also needed help a couple of times that added up to another couple of hours from my friends.  This app will save our team several times that amount in a single cohort and we start new cohorts each month.  It was definitely worth making this app.  Even with Excel.


Certification renewals from Microsoft Learn

Recently we’ve had the option to incrementally update some of our certifications.  A certification has a shelf-life.  And it should.  The product, the training content, the exam questions, are all updated quite often.  However, the incremental differences are not worthy of a full re-do of a certification every year.  We now have the chance to take an assessment of the net new and extend a certification.

With the renewals, you have a few chances to pass.  My strategy, take the assessment to see what gaps I may have to fill to be more current.  Just like with the exams themselves, there is no better study guide than the test itself.  If I started the assessment and knew right away it was not going to end in my favor, then I slow down and re-read every question, every one of the answer options.  Make sure I know what is expected of me for the next time.  The renewals are free, and you get more than one chance to pass.

A million years ago, I did a blog post about my failing a certification exam.  You can find my post from 2011 here.  So much of it is still relevant today.  It even looks like Microsoft may have taken some of my advice and split the old-school applications exam into separate ones based on products/modules.

You should set realistic expectations of yourself.  No one has to know your score, unless you tell them.  Certifications are binary; you are certified, or you are not certified.

When you pass the exam by one question, you get the same certification as the person with a perfect score, no gold stars for anyone- Julie Yack, 2011

 

I did my renewal yesterday and am just as certified as anyone else. 

Picture1


Which business applications cert is for you?

I am often asked what exam to take...how do I know it applies to me? It is super important to understand that the numbers with the certification exam do not convey any level of difficulty. 

Here's my summary of the Business Applications exams.

PL-100- Power Platform App Maker (aka the citizen developer exam)- Your job is not Power Platform. Maybe you’re an accountant, maybe you work on the shop floor. You are an expert in what you do but you want to solve problems with Power Apps. This is a good way to show IT that you can be trusted to make apps in ”their” environments, or maybe even transition to a role of making Power Apps.

PL-200 -Power Platform Functional Consultant- You make Power Apps with low code or no code. You automate stuff with Power Platform resources using Power Fx, cloud flows, and connectors. This is your explicit job. (In my opinion, this is the toughest exam because it covers SO MUCH STUFF).

PL-300- Power BI Data Analyst- You transform data in a way that makes it consumable to stakeholders.  You need to understand the sources for the data, and that may or may not be a Power Platform data source.  This is your explicit job.

PL-400-Power Platform Developer-You extend Power Apps with code. You will do this better if you also understand what’s needed from PL-200/MB-200 above. This is your explicit job.

PL-500- Power Automate RPA Developer- You automate tasks with robotic process automation, and you do it with pro-code level skills. This is your explicit job.

PL-600-Power Platform Solution Architect-An advanced certification for architecting Power Platform solutions. You need to know a bit of everything and be able to apply it to solve real problems. This is your explicit job.

PL-900- Power Platform Fundamentals- Your job might be Power Platform, but the non-technical side. It’s important for you to understand abstract ideas about what the platform can and should do.

MB-210- Microsoft Dynamics 365 Sales Functional Consultant- You implement Dynamics 365 Sales. You understand the sales process and how users best work with sales automation software. You recognize and mitigate inefficiencies. You have a strong base knowledge of Power Platform, specifically model-driven apps and cloud flows.  This is your explicit job.

MB-220- Microsoft Dynamics 365 Marketing Functional Consultant- You implement Dynamics 365 Marketing. You understand traditional and digital marketing needs and strategies. You recognize and mitigate inefficiencies. You have a strong base knowledge of Power Platform, specifically model-driven apps and cloud flows.  This is your explicit job.

MB-230- Microsoft Dynamics 365 Customer Service Functional Consultant- You implement Dynamics 365 Customer Service. You understand how and why users use software to track and solve customer service issues. You recognize and mitigate inefficiencies. You have a strong base knowledge of Power Platform, specifically model-driven apps and cloud flows.  This is your explicit job.

MB-240- Microsoft Dynamics 365 Field Service Functional Consultant- You implement Dynamics 365 Field Service. You know how users can manage and implement software solutions in the field to better service customer needs. A solid understanding of Internet of Things will help you do your job better. You recognize and mitigate inefficiencies. You have a strong base knowledge of Power Platform, specifically model-driven apps and cloud flows.  This is your explicit job.

MB-260- Microsoft Dynamics 365 Customer Data Platform Specialist- You implement solutions for customer profiles and engagement tracking.  You have a very good understanding of Power Platform that includes Dataverse, Power Query, and general CRM principles.  You have a general understanding of the common data model and Azure concepts like Azure Machine Learning, Azure Synapse and Azure Data Factory. This is your explicit job, likely along with either Power Platform or CRM-type implementations.

MB-300- Microsoft Dynamics 365 Core Finance and Operations- You need to know the common features and concepts for the finance and operations apps.  You might become a functional consultant, developer or other supporting role for an implementation. You will likely specialize in one of the other ERP-focused areas.  This is your explicit job.

MB-310- Microsoft Dynamics 365 Finance Functional Consultant- You analyze business requirements and turn them into business solutions and processes using the finance application.  You understand industry best practices and how it applies to ERP-related operations. You are capable with other finance and operations apps, but specialize in finance solutions.  This is your explicit job.

MB-330- Microsoft Dynamics 365 Supply Chain Management Functional Consultant- You analyze business requirements and turn them into business solutions and processes using the supply chain application.  You understand industry best practices and how it applies to ERP-related operations. You are capable with other finance and operations apps, but specialize in supply chain solutions.  This is your explicit job.

MB-340- Microsoft Dynamics 365 Commerce Functional Consultant- You analyze business requirements and turn them into business solutions and processes using the commerce application.  You understand industry best practices and how it applies to ERP-related operations. You are capable with other finance and operations apps, but specialize in commerce solutions.  This is your explicit job.

MB-500- Microsoft Dynamics 365 Finance and Operations Apps Developer- You implement business logic for finance and operations apps using pro-code solutions to extend these apps.  You need a solid understanding of out of the box configuration options so that you do not code things that are best as configured options.  This is your explicit job.

MB-700- Microsoft Dynamics 365 Finance and Operations Apps Solution Architect- This is an advanced certification for architecting solutions with finance and operations applications.  You orchestrate and watch over all aspects of the implementation from planning to building to testing.  This is your explicit job.

MB-800- Microsoft Dynamics 365 Business Central Functional Consultant- You implement the core setup of Business Central.  You configure the application to meet the needs of the client.  You fully understand the business needs that are solved with the application. This is your explicit job.

MB-910- Microsoft Dynamics 365 Fundamentals (CRM)- Your job might be something with Dynamics 365, but not the technical aspects.  You support people who use these products or implement these products.  You need to understand the business reasons for implementing various customer relationship management software.

MB-920- Microsoft Dynamics 365 Fundamentals (ERP)- Your job might be something with Dynamics 365, but not the technical aspects.  You support people who use these products or implement these products.  You need to understand the business reasons for implementing various enterprise resource planning software.


How to build your own collection on Microsoft Learn

The Microsoft Learn platform hosts Collections.  These collections are several learning assets in a container.  There are official collections like the Biz Apps Skilling collection (https://aka.ms/BAPSkilling).
Picture1

You can also make (and share) your own collections.  You may have just completed a training such as one of the Business Applications Skilling cohort experiences and want to build your “what’s next” collection.  Here’s how. 

Login to Learn and click on your profile in the top right.  This will load a page like this one.  Select Collections from the options.  Click +New collection.
Picture2

Name and save your collection.
Picture3

You can fill your collection starting from the collection.  Add items to the collection.

Picture4

Or from viewing a lesson in Learn, when you click the +Save option.

Picture5

And choosing the collection.

Picture6

Collections can be just for you, or you might want to share one.  This is also where you can edit some of the details about your collection.

Picture7

See it in action as I build and organize a collection.







Getting geared up for conferences again

Wow, it's been a hot minute since we've all met in person, no?

I am immunocompromised and as vaccinated as vaccinated can be.  My doctor and I decided I can travel again, even speak at events.  So, come October, I'll be out there with you all.

I had written a post about being prepared for an event (CRMUG Summit 2016 to be precise).  And it is all still good advice.  But now we have to add a a few more items to the list.

  • We all missed in-person events, but many of us are still terrified of germs and have spent the last few years avoiding them.  Please don't be the person that gets me (or other vulnerable people) sick.  If you suspect you have an active contagious anything, stay home this round.

  • Don't be offended when someone like me is wearing a mask, or asks your vaccination status before giving that hug (can we establish a V hand signal, like V for victory and V for vaccinated??).  There are still people dying from COVID and flu.  I'd rather not be one of them.

  • Remember what we all loved about being in person.  Talking about the cool things we've been doing.  Sharing our stories from the field. Learning from each other.

  • Be forgiving.  We've all had an isolating couple of years.  We may have lost some of our social skills, we may have gained a few pounds, many have lost loved ones.

  • Be smart. Wash your hands often.  See a sanitizer station- use it.  Don't sneeze or cough toward others.

    I'm really getting excited about seeing my community again.  I really did miss you all.



    Original list:
  • Minimize distractions back at the office. Work extra hard now to avoid the trap of trying to work AND attend the conference. If you find yourself replying to emails three times in every session you attend, you aren’t really going to get much out of the session. If you have to keep up with the folks back at work, set aside time and plan for a session to spend working in a quiet corner instead of being partially engaged in several sessions.
  • To ease the stress of leaving behind people at the office that would rather be at the conference with you, get their questions to take with you. What are their burning questions or concerns? Make sure you find the answers and resources to take back with you. Share the schedule with them in advance and then set up a lunch-and-learn the week you return and share your new knowledge and skills.
  • Dress for comfort. Now, I will say no jammies for sure. But also, not a suit. Good shoes are the best thing you can bring. Promise.
  • Stash some good snacks in your bag. You may find yourself in a great discussion and miss a conference meal or break. So grab some granola bars, some durable candy, whatever helps you make it to the meal later on. And drink water. You will be walking more than you plan, avoid dehydration.
  • Every speaker, planner, expert is approachable, so approach them. Raise your hand in the session. Wait after the talk to ask your question. Find them at lunch and sit at the same table. Go to the medics’ station. They are there to share their knowledge. So let them.
  • Plan your sessions in advance, mostly. Be open to last minute choices.
  • Get yourself a fresh CRM trial before you go so you can immediately try that new cool thing you learned. Ok, get at least THREE new free trials. I suggest one that is bare, one that specializes (like sales or service) and one with a solution like Field Service or Project Service in it. Different things work different ways with added customizations or data.
  • Take notes. Doesn’t matter if you’re a pen and paper person (me too!), if you like to scribble on your tablet or if you type it all organized. Take notes. I promise you won’t remember it all the next day.
  • There will be booze. Don’t be THAT person that acts a fool and gets everyone to pull out their cameras and you find yourself rather embarrassed.
  • Make friends, make memories.

A decade of XRM

It took us ten years to get here.  But many of us already were “here”.  We’ve been using the platform as a platform for a very long time.  In 2008 we published our first XRM book for developers, CRM as a Rapid Development Platform.

So much has changed, so much as stayed the same. Microsoft CRM 4.0 gave us so many of the core platform capabilities we still use today.

I have two quotes to set the stage.

The first is from a book review posted on Amazon.

“The perception is that Microsoft have put out a 'CRM product' but what most people don't realise is that Microsoft CRM is actually an application development platform that happens to come pre-configured with CRM functionality. “ (from Guy Riddle)

And the second is from the book itself. More specifically, Chapter 2 on making line of business applications.

“I think that it cold be argued that what Microsoft should have done with CRM 4.0 was separate its application development platform from the implementation as a CRM application. By doing that it could have established the CRM 4.0 platform as a solid development platform for building line of business applications. Then they could market CRM 4.0 as being built on this application development platform. Then developers would be able to license just the platform portion and be charged a license fee that is appropriate for using only the application development platform capabilities.”

 

CDS 2.0 is essentially exactly these two things from ten years ago.

In 2008 we were talking about the cool new features of platform functionality that we now had with CRM 4.0. Some of the things we could not even imagine going without today.

CRM 4.0 gave us user-defined workflows. You no longer needed a developer to automate the system. The birth of Citizen Developers!

And now you could trigger workflows based on more events without needing to engage a developer. Suddenly record changes were triggers. For users to define automation.

Both CRM Online and multi-tenancy were introduced.

With the addition of multi-currency and multi-language capabilities we now had the basis for an implementation that had users all over the world working together in a single tenant.

For me the relationship changes for that release are the unsung hero. Sure CRM 4.0 gave us many-to-many relationships. But it also gave us multiple relationships between entities (system and custom), and self-referential relationships. We could make create hierarchical data with this stuff. We also now had the ability to display columns of data from related entities in our views. We could see the address of the parent account while looking at a contact grid. Come on, how can we brush aside the R in CRM? Think about how you use the platform today? These items are just taken for granted.

Email integration improvements. We got email tracking that no longer required the tracking token. And we could now track emails from POP3 and not just Exchange configurations.

We also saw a host of other random platform updates that we now take for granted.

· Automatic resolution on lookup fields

· User defined duplicate detection

· Report wizard

· Callouts became plugins

· Backward compatibility.

I had the lofty goal of a blog series written by me covering feature by feature, chapter by chapter the then verses now. And now I have instead begun asking some of the super smart folks around me of writing guest posts with their take on these things. Stay tuned.