A game changer? setValue in Microsoft Lists

For as long as I can remember, SharePoint lists have kept a clear separation between viewing and editing. As soon as you needed to modify fields, you had to switch to a different screen, whether it was the grid view (Excel style) or a single item edit form. The alternative was to assemble your own layout, using a List View Web Part, InfoPath, programming, or more recently Power Apps.

A while ago, I also came up with my own solution, which I called the HTML Calculated Column (HTMLcc).. It later evolved to work with client-side rendering (CSR) in SP 2013. However, those classic approaches were sunset with the move to modern SharePoint and restrictions put on client-side scripts.

I had some tough years after modern was released, because of the huge feature gap. We were sent back to square one, with lists missing even the basics, such as form customization, templating, or calendar views. For many, classic lists were still the go-to choice.

Fast forward to 2021. Major changes have happened, especially in the past year. Forms can be customized out of the box, templates are back, and so are calendar views (well, month view for now), plus now board views. The integration with the Power Platform has matured, and you can today include a Power Apps form, a Power Automate flow, or a Power Bi report directly in your list customization. We also get offline access and half-baked mobile access (iOS but not Android, really?). A new branding reflects these changes, we are now calling them Microsoft Lists and they can live in SharePoint or OneDrive.

And now the cherry on the cake: setValue.

What I haven’t mentioned yet is that Microsoft has also come up with their own special way to customize list layouts in a safe way. It’s called column formatting or view formatting, and relies on the JSON notation to describe the rendering format. The idea is to inject HTML in the views – just like we used to do with HTMLcc and CSR – but restrict it to a controlled subset to keep it safe. This is in line with other safety measures restricting the use of JavaScript on SharePoint pages.

With this newfound ability to mix read-only and edit fields, view formatting is moving one step closer to what you can find elsewhere on the Web, or build with development frameworks such as SPFx. Microsoft Lists also become a more sensible alternative to Power Apps for simple scenarios.

One downside I see to this action is that it’s pure UI and doesn’t validate the user’s actual permissions. If you have read access only, or item level permissions are turned on in the list settings, you’ll still see the button and get an error message when you click. Personally I can live with that.

But how about Power Automate buttons?

Before setValue was released, list formatting already offered a custom action called executeFlow, allowing you to trigger a Power Automate flow. While the action itself is much more powerful than setValue, it has a major drawback from a UX standpoint: the delay between the user click and execution. While update and UI refresh are almost instant with setValue, it could take a few minutes for the flow to run and the change to be reflected in the UI.

I recently demonstrated setValue to someone who was new to list formatting. Much to my dismay, he was not impressed at all by the new capability, simply because he considered it the normal way things should work. And as you can guess he deemed field updates through executeFlow unacceptable… which from today’s perspective sounds about right.

Try it out! Some samples spotted in the wild

Clearly I am not the only one excited about this new action, and some samples have already popped up in the community. Microsoft MVP Tetsuya Kawahara published formatting for switches and checkboxes to the Github PnP repository. The above screenshot shows them in action in a turn-taking application I built last week. In my scenario, volunteers can come to the list and update their weekly availability (check the days they are in, or turn the Active switch off when they are out of the office). Power Automate flows run on top of that and assign action items to the volunteers available on a given day.

Michel Mendes published a sample with approve/reject buttons. Below a screenshot from his blog:

Another blogger, Dennis, published a use case for course registration.

Let’s not forget inlineEditField

Another recent addition, inlineEditField, allows you to make a specific field editable in list formatting. Also a convenient feature, for example to allow users to directly update a choice field like a status directly in the view.

inlineEditField will honor permissions, and only users with edit access will get on click the conversion to an edit control.

What’s next?

This open door to new dynamic behaviors got me excited like it was 2008 again, and I started brainstorming scenarios that go beyond simple row rendering. Hopefully I’ll have some creative use cases to share in the coming months! Just the few examples shared by the community in the past couple days show us how the new capabilities can help build simple apps with a more user-friendly interface, without the need for a bigger hammer such as Power Apps.

References

Manage in-person office hours with Microsoft 365

California is fully reopening the economy on June 15 – no more physical distancing, no more capacity limits on businesses, and relaxed mask guidance. This is just one example of how regulations around the globe are loosening up, and allowing employees to get back in the office.

Does it mean that we are back to the 2019 normal? Certainly not.

For one, organizations are are mindful of their employees’ physical and mental health, and will proceed in stages. This is the case of Microsoft for example, with its six-stage dial.

They have also assimilated the benefits of partially working from home, with reduced office costs, and reduced commute resulting in savings and (hopefully) better life-work balance.

The result is a hybrid workspace model – part home, part office – with the ensuing need to track both room occupancy and employees’ office schedule. In this post, let me introduce two solutions to address this need, available for free within Microsoft 365. One is a feature of Outlook itself, and the other is the inPerson app I have developed for Microsoft Teams. Disclaimer: you’ll need the help of an admin and possibly someone experienced in Microsoft 365 to make the most of these solutions.

Outlook Workspaces

Last year, Microsoft introduced a new feature in Outlook: in addition to the well known meeting room reservation, you can now book workspaces. As defined by Microsoft, a workspace is “a physical location where employees can work from. It can be made up of many desks or can be a single desk”.

This feature was updated in May and I have not tested it yet. for detailed instructions, visit the Microsoft Exchange team blog. Admin access and PowerShell required for the implementation!

The inPerson app

inPerson is an app I developed a few months ago for a Microsoft Teams contest, and is now available on Microsoft AppSource. It is currently offered in English, with plans to expand it to a handful of other languages if there is enough interest.

What differentiates it from other AppSource business apps is that it is entirely built on the Microsoft 365 stack, with no third-party dependency. See it as both a good thing – you have full control on your data – and a bad thing – it is up to you, the team owner, to manage the data, including access, backup or archiving.

inPerson is built with the SharePoint Framework (SPFx) and made available as team tab in Microsoft Teams. To get started, check out the YouTube tutorials listed below. inPerson relies on interactive floor plans, so in addition to installing the app you’ll have to get those plans ready (spoiler: it’s easier than you might think).

Installation tutorial (3 minutes) 

Floor plan tutorial (5 minutes) 

Team owner tutorial (6 minutes) 

User tutorial (4 minutes)

What else?

The above options are the only ones I am aware of that live in Microsoft 365, are free and do not require a third party tool. If you’d like to recommend another one, please leave a comment!

References

Sample floor plan

If you have a jpg or png image of your floor plan, I recommend that you follow the tutorial and build in a few minutes your own accessible SVG. For a quick test, download the SVG below, it includes 12 seats numbered 101 to 112.

Yes, you can use Modern React on SharePoint 2016

Audience: developers.

While we are following the Microsoft 365 buzz in conferences and on social media, many organizations are still on an older platform, such as SharePoint 2016. I expect that many of you in this case are looking to migrate to the Cloud, in particular government agencies with the return of the JEDI contract.

SP 2016 site owners have been relying on the Content Editor Web Part (CEWP) or the Script Editor Web Part (SEWP) for page customization. Neither is available in modern SharePoint Online, and a transition roadmap is needed.

Let’s start with the good news. In recent years, the Microsoft 365 platform has embraced JavaScript, bringing in its own typed flavor called TypeScript. It can be used on SharePoint of course but also in Teams, Outlook, Power Apps or Power BI. In SharePoint and Teams, the points of entry are called the SharePoint Framework (aka SPFx, version 1.12 expected in February) and the Microsoft Teams Toolkit. Since 2019, Microsoft has also embraced React as the main engine for its client side frameworks, and consolidated its UI library under the Fluent UI brand.

That’s very exciting news for SharePoint Online users, but what if you are still on SharePoint 2016?

Microsoft included SPFx in a SP2016 upgrade back in 2018. That made the migration to the cloud straightforward:

Now the not so good news: in 2019 and 2020, Microsoft kept upgrading the SPFx in the Cloud, but didn’t bring any improvement to the 2016 platform. That makes the migration more challenging than it used to:

Hugo Bernier has an excellent compatibility matrix that shows us SP 2016 is restricted to v1.1 and SP 2019 is restricted to v1.4.1, while SP Online has skyrocketed to v1.11. In practice, it means that neither 2016 nor 2019 can leverage the recent versions of React with hooks.

While the above diagram describes the standard roadmap, I’d like to offer another perspective. Instead of getting stuck on premises with old React, here is a different roadmap I suggested in a recent project:

Instead of SPFx 1.1, the idea is to simply leverage the Content Editor Web Part (CEWP) or the Script Editor Web Part (SEWP), which can host any script including modern React. It means that developers can already build , on premises, solutions that leverage modern scripting such as hooks or Fluent UI. In a migration the code can then be transferred to SPFx 1.11.

There’s a number of challenges with this approach and, although it worked in my case, it won’t fit every scenario.

  • First, SPFx comes with a Yeoman scaffolding tool that sets up the dev environment for you. Without SPFx you’ll have to find another way. Fortunately React offers a number of options, including the Create React App toolchain that I used. Version 4 was released on 10/23/2020. Compared to SPFx, it doesn’t come with SharePoint integration, such as no publishing or workbench. Also, there is no built-in property pane. It is not completely foreign to the Microsoft 365 universe though: the Microsoft Teams dev team has chosen Create React App as the foundation of the Microsoft Teams Toolkit.
  • Because you are leveraging the CEWP/SEWP, it also means that site owners will have access to the underlying code. SPFx does a better job at encapsulating the code.
  • As it is the route less travelled, you’ll also have difficulties finding code samples. But to be fair, recent SPFx samples won’t work on SP 2016 either.

If you are still developing on SharePoint 2016, hopefully this article will encourage you to get off the beaten path, and get better prepared for both SharePoint Online and Microsoft Teams. Feel free to share in the comments your challenges and successes!

New terminology in the Power Platform dataverse

Microsoft recently pushed several terminology updates to the Power Platform.

Dataverse is the new name of the Common Data Service, the database leg of the Microsoft Power Platform. Its lightweight version that runs in Microsoft Teams is now called Dataverse for Teams.

Earlier this month, Microsoft already made terminology updates:

Legacy termCurrent term
Entity, entitiesTable, tables
Field, fields
Attribute, attributes
Column, columns
Record, recordsRow, rows
Option set, multi select option sets
Picklist, picklists
Choice, choices
Two OptionsYes/No

Notice how the new terms match the Microsoft Lists terms.

Check out the Microsoft docs for more details.

Trick or treat? Group items by month in Microsoft Lists

Objective: get documents or list items grouped by month. It could be for example invoices, receipts, or meeting minutes. For the above screenshot, I used the “Travel requests” template available in Microsoft Lists.

The challenge is to get the months in chronological order rather than alphabetical order, for example January-February-March-April rather than April-February-January-March.

This post is actually an update for Microsoft Lists of a SharePoint trick I posted 7 years ago. It still works! For a full explanation of the trick see the original article. I’ll only repost here the final formula for the calculated column:

=REPT(" ",13-MONTH([Travel start date]))&TEXT([Travel start date],"mmmm")

In the above formula, “Travel start date” is a column of type date that comes with the Microsoft Lists template.

You’ll probably want the year too. For this you can use another level of grouping, or just include it in the formula:

=YEAR([Travel start date])&" -"&REPT(" ",13-MONTH([Travel start date]))&TEXT([Travel start date],"mmmm")

The result:

If you are not familiar with calculated columns, you can check out an introduction I wrote… 12 years ago. It seems that the rewriting of the official documentation is still in progress, when there’s an update I’ll share it on this blog. In the meantime feel free to post your questions below.

For a list of functions that can be used in formulas, see here.

Walkthrough: download in bulk your favorite resources from MS Ignite

Audience: end users.

Microsoft Ignite has poured on us tons of Microsoft 365 announcements, and thankfully tons of resources to help us get started. Your first step to access those resources is to head to myignite.microsoft.com. There, you can explore the sessions, and for each you’ll get access, in the right hand pane, to a number of resources.

Notice in particular the one that says “Download Resources”. It’s actually the exact same for every session, and lets you download a PowerShell script that in turn will help you download resources.

Great and easy for a techie. For the regular business user, PowerShell can be a little bit intimidating. However, it has become an essential tool in modern Microsoft 365, where some settings get released through PowerShell first, before being surfaced in the admin or setting menus.

So let’s turn this to our advantage, and take this opportunity to get started with PowerShell and at the same time get a copy of our favorite resources.

Disclaimer: this is NOT an invitation to start downloading and running any PowerShell script available from the internet. Scripts can be harmful, especially as they can leverage your credentials. Only use trusted sources and use your own judgment. We are going to trust Microsoft on this specific one.

Click on “Download Resources” to download the zip file, and unzip it. It should look like this in file explorer:

The instructions are in the readme, let me just use an example to walk you through.

  1. First, you need to identify the sessions you are interested in, using their session code located toward the bottom of the page. Let’s pick two of my favorites:
    DB158 (Collaboration announcements)
    DB154 (Project Cortex)
  2. Back in file explorer, where we unzipped, open PowerShell from the file menu

3. You’ll get a blue screen, we’re doing just fine:

Now you can type the PowerShell command and let the script download your resources – just make sure you have room on your computer as these include large videos!

.\Download-Resources.ps1 -directory . -sessionCodes "DB158,DB154"

4. You’ll be presented with a warning, just type R and enter to run once.

5. You can now follow the progress as files get downloaded

6. We’re done! If that was your first PowerShell experience, congratulations!

The MS Ignite Book of News

Looking for the most extensive coverage of Microsoft Ignite? Still hungry for announcements even after reading my previous post and exploring the Power BI reports? (I refreshed mine at noon PST btw)

Microsoft has published the Ignite 2020 Book of News, with the goal to cover all the announcements from the Conference. You’ll wish you hadn’t asked 😉

Thanks to Mark Kashman for bringing this to our attention in his own [always special] way.

MS Ignite: Day One Recap

As expected, Microsoft flooded us with announcements on this first day of the MS Ignite conference. I’ll only cover here my picks, on the collaboration and app building spectrum for desktop. There were a number of improvements on mobile I’ll need to get back to later. For a broader view, for example if you’re more into admin or compliance, I encourage you – just as I did yesterday – to directly browse my Power BI report. I refreshed it at 5pm PST, and won’t change until the refresh for day 2, around noon tomorrow.

I found out that there was another live report available, curated by John White. It offers a different perspective, so you can definitely explore both.

Remember that there are some contests with prizes going on. I already talked about Microsoft Mechanics Sweepstakes yesterday, but my preferred one is the Microsoft Ignite Cloud Skills Challenge which encourages you to learn.

Now to the announcements!

New Power Platform icons: the new look (see above) is more in line with the other products. You can check out the icons for yourself in your own Microsoft 365 waffle.

SharePoint Syntex: part of the broader Project Cortex, this app leverages AI and machine teaching to take on tasks such as document recognition and classification.

Project Oakdale: gives you a Power Platform like experience directly within Microsoft Teams, with the ability to create a table (up to 2 GB of data) and build a Power Apps app on top of it.
A benefit of this low-code approach, compared to a Microsoft list for example, is that it is scalable and can later be enhanced by developers.

Project Nucleus: Microsoft Lists hit back by bringing caching capabilities, promising fast response on large lists (bye bye 5,000 item limit) and the ability to work offline.

SharePoint global navigation: a new vertical bar positioned on the left hand side, similar to the experience you get in Microsoft Teams. You set it up on the Home Site.

SharePoint Framework: it now allows developers to build Microsoft Teams apps, in addition to the already available capabilities to build tabs and personal apps.

Microsoft Stream: videos are becoming first class citizens, benefiting from the same features as other files: external and anonymous sharing, integration with Microsoft Search, enhanced analytics, and new controls for security and compliance.

Microsoft Teams: a bunch of new features, including:

  • Upper limit of 25,000 members per team, instead of 10,000
  • Webinar registration
  • New search experience
  • SharePoint Home site in Teams
  • PowerPoint Presenter Mode
  • integration with github

Some more reading from Microsoft:
A new vision for Microsoft Stream
What’s New in Microsoft Teams | Microsoft Ignite 2020
Microsoft Lists Announcements

And to conclude this post, a selection of tweets with screenshots. Enjoy!
https://twitter.com/mkashman/status/1308424778252861440
https://twitter.com/Flow_Joe_/status/1308460764831784961
https://twitter.com/susanhanley/status/1308438094895603714
https://twitter.com/Path2SharePoint/status/1308495861156986880
https://twitter.com/jeffteper/status/1308429194418765825
https://twitter.com/Path2SharePoint/status/1308451066703302657
https://twitter.com/Path2SharePoint/status/1308429637970608129
https://twitter.com/Path2SharePoint/status/1308314373929091072