But which version are you running?

Ever since swapping away from my 365 account at work to a service account for PowerApps development we’ve experienced issues. Most notably, Power Automate flows just seem to fail where previously they never did. So, I rebuild these flows using the Service Account, reconnect everything within the PowerApp, and things just work once more. The flow doesn’t have a single step changed, or any new connectors, just ownership.

One thing that truly irks me with PowerApps development is adding a flow to your app, why when doing this must Microsoft insist on wiping out all other codes from the formula bar? It’s seriously annoying, right? Having to remember to copy your code prior to insertion of a new flow truly sucks the big one.

Caching

I recently was forced to replace one flow that was used to handle approvals as it kept flaking out on me. In creating the new one under the service account I decided to turn off the old one as this would then indicate to me if someone was running a cached version, which occurred today.

I decided there needed to be a way to highlight to our users when we’d updated our app, something we could announce to them for comparison. I eventually discovered how to go about achieving this, firstly adding the PowerApps for App Makers component. Through this component you’re then able to discover data about apps, pulling this into a collection.

ClearCollect(GetApps,PowerAppsforMakers.GetAppVersions(Last(Filter(PowerAppsforMakers.GetApps().value,properties.displayName = "My Apps Name")).name));
Set(theVersion, Lookup(GetApps, First(GetApps.id), properties.appVersion))

I found when collecting the apps data for my app I was getting several rows returned, the last row contained the most recent published version. I then use a lookup to store this into a variable which I later use within a label for display. The version data displays date and time the app was last published, this makes it easier I think for users to identify whether they’re using an up to date release, version numbers I think have less meaning.

Sadly, I can’t get around the catching issue and must get users to remember to either clear their cache or force refresh to ensure they’ve the most recent version. I’m about to publish a much more substantial update to our service desk that incorporates:

  • Tabbed interface
  • Variable-height galleries with rich text support for comments
  • Introduction of private work notes for our team
  • Dynamic save button (mainly to accommodate the new tabs – I didn’t want multiple save buttons – bleh!)
  • Smarter forms for task assignment

Looking forward to deploying this new release, I think the team will enjoy using it.

Why so difficult to blank?

I’ve made quite the progress in enhancing the support desk app; ironically my supervisor emailed a request for a feature to be added which I’d added just the day prior – rich text comments.

One thing I’ve sadly not managed to achieve is being able to de-assign a task on that rare occasion a task is no longer assigned to someone. For some reason the removal of person claims from SharePoint person field is akin to walking on water, Microsoft hasn’t made this easy, in fact it’s nigh on impossible.

I had located a suggestion of setting up a claims that set all data to blank(), unfortunately this just didn’t seem to work for me, however it does seem to work for others. It may seem to come down to whether you turn on experimental features, I’m not sure – do you risk doing this on a support desk app and later Microsoft rips that feature out? I can’t risk it so will just have our team delete the person in SharePoint manually on those rare occasions we need it.

Microsoft really could do with improving support for complex field types within PowerApps, working with such fields is often said to be difficult and some recommend avoiding as result.

Patch > Success

I spent time today redeveloping our Support Desk app, and as I was doing so I stumbled upon someone’s suggestion for how to handle a successful patch event. In my previous post I mentioned one negative in not using Forms was losing the OnSuccess/OnFailure events and the facts these don’t exist outside of Forms.

Quite ingeniously, the person’s post I stumbled upon today suggested use of a collection to store result of a your patch command:

ClearCollect(colPatched, Patch(Comments, Defaults(Comments), {Comment: ThisItem.Comment}))

Thus, a successful patch command creates a collection with a row of data allowing us to develop our own OnSuccess/OnFailure via an If statement checking the number of rows.

When Forms makes no sense

When I developed our Support Desk app our screens were developed using Forms, these offer certain benefits I required, particularly with handling attachments uploads. However, once we’ve moved to managing of tickets use of forms wasn’t strictly necessary and actually has become a hindrance.

Why? When it comes to assigning a ticket to one of our team members the dropdown needed to refer to data in a separate SharePoint list, something forms just won’t let me do. Thus, I’m now creating a new ticket management screen, including adding some new functionality at the same time.

What spurred this latest iteration for the app was my desire to allow quick ticket assignment of a ticket from within the gallery, just click a person icon and it assigns to you. This worked, however when I would then open the ticket and perform a task (after refreshing the data) the data actually resets to what it was before I’d made the assignment – weird!

So, I decided to abandon use of forms and take control and thereby gain greater functionality. I now have the ability to control who we can assign tasks to, previously we had to search a combo box. The negative with losing forms is of course being able to leverage the OnSuccess and OnFailure events, these are so useful.

I’m adding to this iteration tabs and work notes. The tabs will help us reduce scrolling to see comments blocks, especially as were now adding another comment block, tabs can be used to control visibility and improve usability. Still much to do and test, but liking where this is going.

Survey choice

I’ve had little exposure to Microsoft Forms, most of my 365 apps exposure has centred around PowerApps, SharePoint, Power Automate and to a lesser extent PowerBi. One of the staff in our office coordinates professional development for researchers, research students and staff in general, so is now keen to automate her surveys rather than rely upon paper-based forms that require a lot of effort to record.

This week I began investigating whether Microsoft Forms might be our starting point, drawing from a SharePoint list of her workshops. Stumbling point one, Forms doesn’t support doing a drop list to allow users to choose which workshop they’re providing feedback on. Looks like I’ll be developing a custom PowerApp.

Importing the workshops

I had the devil of a time trying to import the list of workshops from a spreadsheet into SharePoint. In the past I had been able to use Internet Explorer which has Active X, however since last doing this that functionality seems to have been disabled via a Windows update. Thankfully, there is another option open to me within Excel using the Design tab to export to a SharePoint list, unfortunately this only works from Windows versions and not Mac, anything to make me boot that machine.

Once successfully extracted to my SharePoint list I set to task to test how I might take the data from my colleagues spreadsheet used to construct her workshops website. I had initially thought to use a combo box to have users select their course, but then decided a gallery was going to work far better, I could then provide the user with additional information as I could include the date they attended as well.

To assist the user I am going to include three ways to filter:

  • Year
  • Month
  • Text search

The first two are drop lists I have created two additional columns in the collection via AddColumns command and then leveraged the GroupBy command on each of these columns to build the lists, worked a treat. At the moment the list isn’t huge, only around 60-70 courses, however once the list grows these will become more important.

Once users have completed their surveys we’ll then be reporting upon their responses using PowerBi dashboards.

Day 2: App in a day

I’m now half way through Microsoft’s App in a day training program that takes us through the basics of developing in PowerApps, Power Automate and Common Data Service.

Yesterday, we developed a basic canvas app in PowerApps that sourced data from an Excel spreadsheet. I must check out their spreadsheet as it appears to contain photos, would never think to store photos within a spreadsheet.

Today, we were introduced to Common Data Service (CDS), a premium service required if you’re planning to develop model-driven applications. My first exposure to CDS, it was interesting but all too brief, you could spend so much longer sinking your teeth into this product. Tomorrow, our journey into CDS continues as we develop a model-driven app.

It’s clear some in this online version of the class may be struggling with the 2-hour per day format, I’ve actually managed to complete all roughly 15 minutes or so ahead of time both days due to my familiarity with PowerApps.

Under the heading “you get them in every class”, we had several twits this morning log into yesterday’s meeting. Just add our presenter got underway he was interrupted by someone to say the techno laggards were logged into the past 🤦🏼 In sure these are the same people who throughout the lesson who interrupt saying: they can’t log into the lab; can he provide yesterday’s files as they can’t download; will today’s file be provided; as well as anything else to interrupt.

Sadly, I learned yesterday PowerBi won’t be covered within this version of the course, a pity as I really wanted to learn more about this app; another course perhaps.

App in a Day

Tomorrow I’ll be undertaking one of Microsoft’s free training programs, App in a day. It’s targeted towards those who’ve no experience in developing in PowerApps, so not exactly me, however it will also introduce me to other aspects I’ve not yet experienced, including model driven applications; common data service; power automate; and PowerBi (though I have basic exposure to this).

I’m also hoping to solve some niggling issues I have using filter with combo boxes associated with personnel. I’ve a few combo boxes throughout my serve desk app that request a person’s name, for instance who we’re assigning a ticket to. I would love to limit the list for that combo box to just my team, however to date haven’t managed to make that work 😞

The App in a day program is 8 hours in total spread across 4 days, looks like it will be an interesting program.

Annoying forms bug

Wrapped up enhancements to our support desk app today, realising the edit screen reserved for our systems team lacked the comments section that was currently located on the view screen. We’d decided earlier in the week to optimise workflow by not requiring us to click the edit button to then take us to the edit screen.

So, when creating the new edit with comments screen today I came across THE MOST ANNOYING BUG in the forms dialog where you add fields and set whether they’re view/edit, and type of view/edit. Two of the fields are rich text fields, upon specifying the first to be rich text edit the field would then drop it and several others I’d added to the bottom of the list of fields. What the heck? The bug only occurs for the first rich text edit field and not when you set subsequent fields, but is seriously annoying.

Another annoyance is forms layout. Why if they auto layout can they not provide facility to specify this field should span n elements? Having to manually drag and then correct placement of things is so 1990s.

Frustrated enhancements

Following on from yesterday’s development efforts I continued enhancing our support desk app with further features and changes we were keen to implement.

As I was developing it was frustrating the poor documentation on the PowerApps website, funnily enough there was the comment reflecting this from someone who mattered subtlety “incomplete documentation”. It’s poor they fail to document how to use features or attributes sufficiently, even sometimes at all, in this case I was looking for information relating to the ComboBox and setting default and defaultselected, there wasn’t a thing, you are expected to rely solely upon community documentation for support; thank heavens that exists, if you can find what you needed that is.

Today, I split functionality depending upon use when we look at ticket details, support team going straight to edit mode whilst users only view, thus we’re saving a click each time. Also, I added a new tickets list mode I should’ve thought to develop right up, active tickets. Having this listing makes such a difference now we have so many tickets in the system now.

Develop. Use. Enhance.

We’ve been using the Support Desk App I developed for about two months now, long enough to determine things we like and don’t like.

It’s funny how when you develop something at the time it can seem perfect, then you use it over and over and that feature comes to annoy and you want to replace it. For me it is the screen that lists all tickets in the system. I developed it such that it can list all tickets or you can filter to just a particular status, fine I thought at the time, however, as we got more and more tickets I really wanted to just see ‘active’ tickets, that is a grouping of all those tickets that weren’t rejected or closed; I hadn’t thought to include this.

Another feature I’m wanting to add to this same page is to limit the listing to those tickets assigned to me. One of my team highlighted I’d created comments within the system yet had forgotten to add notifications for when people added these; people expected this and were adding comments thinking we were being notified; I added a flow today that is relatively basic:

  • When a new comment is added to the comments list:
    • Get this item
    • For that item, get associated ticket to determine who creator was
    • Notify creator and systems team of the comment

I’ve also started on enhancements to logic associated with the gallery that is used to search tickets, swapping out IF statements for SWITCH as I implemented more complex logic to allow adding show active to the mix.

I still have enhancements to make to combo boxes, so far these have defeated me when connecting to my SharePoint lists and allowing me to limit to just our team, keep running into PowerApps talk to the hand 🖐🏻 ever helpful it is. Hoping to explore UI Flows at some point having set up our server with the requisite permissions last week.