Monday, August 26, 2019

Classic vs Modern and More Microsoft Search Questions Answered

imageOver the past several weeks there has been a number of community questions on classic vs. modern search in relationship to SharePoint and Microsoft Search across social channels. We selected the most common questions and created a Q&A article over at the Microsoft Tech Community to help answer those.

If you have comments or questions, scoot over to Tech Community and let us know.

Friday, August 23, 2019

I can see it! KQL in the house! HCWP love!

I’ve known this was coming for a while and I can finally see it in my tenant! KQL support for the highlighted content web part has finally arrived. Knock yourself out and surface content any way you want via search, (as long as the visuals cover your needs).

If you’re really crazy and bold, target the web part to a list/library and crank out your favorite CAML queries as well – not sure why you would ever go there though :D


Thursday, August 8, 2019

Update to using Microsoft Flow for approval of site pages

In May of last year I wrote a post which showed how you could implement approval of modern pages in SharePoint using Flow. That post was written before the edit experience implemented the Submit for approval button.


While the built-in approval is nice, Flow approval provides easy to use actionable messages which makes approving that much easier – no need for the approver to visit the page library to actually approve the item.

In my previous post I added a step to check for the Pending status of the page before invoking a Flow approval action in order skip the Draft and Approved states which should be ignored for the Flow itself. This means Flow will trigger more than actually needed – but that was the way to go last year.

Seems the SharePoint triggers have now been updated to support trigger filters, which means the steps can be optimized a bit.

Click the ellipses (…) on the trigger and pick Settings.


In the trigger conditions settings add the following to trigger only for items which are awaiting approval.



In order to use the content approve action you still need to get the correct ETag, which means the Get file metadata action has to stay.

A simple auto-approve Flow would look like below.


Happy Flowing!

Tuesday, August 6, 2019

Search nugget - Grouping property restrictions within a KQL query


Figured I’d alert you guys to a small nugget I was made aware of, and which I have officially documented at

The gist of it all is that you can now use parenthesis on property queries.

<Property Name>:(<Expression>)

As an example:

author:"John Smith" AND author:"Jane Smith"

can be rewritten as:

author:("John Smith" "Jane Smith")

The other cool side effect of adding () around the property value is that the term(s) will be lemmatized. The query title:page return matches with the exact term page only, while title:(page) also return matches for the term pages.

Head over to the docs to read all about it and check out some more complex samples. Start adding those parenthesis, and may the search be with you!

Note: Works for SharePoint Online and SharePoint 2019 only.

Tuesday, June 11, 2019

SharePoint Search Query Tool v2.8.4

Photo by Jason Wong at Unsplash

Get it at

Not a lot happening for this version - mainly UI improvements and support for query history.

Happy searching!

Friday, June 7, 2019

PnP Modern Search Web Parts June 2019 release is out

Get it at

Modern Search Web Parts v3.4.0.0

  • Updated to SPFx v1.8.2
  • Added query language setting
  • Translations
  • Improved loading placeholders
  • Improved hash paramater change handling

Modern Search Custom Renderer v1.0.1.0

  • First binary release
  • Includes example custom code renderer when Handlebars is not enough

Sunday, June 2, 2019

The conspiracy is real!

..or “I believe in Microsoft Search” :)

In February of 2016 I wrote a post titled "I Want to Believe" - Is Microsoft abandoning the enterprise features of enterprise search? where I discuss how Microsoft seems to have abandoned enterprise search, but I still wanted to believe they had not.

Ever since I wrote that article over three years ago I have slowly been building up to write a follow-up – trying hard to find the right framing for my thoughts.

For those who know me, they know I haven’t spent particularly much time on search related work the past years. Why? I have just about only been working with Office 365 and SharePoint Online and tinkering too much with search online has seemed like a bad idea – especially after the launch of modern SharePoint in mid-2017. My advice to clients has been to not spend too much effort on configuring search and see where things are going in the platform as you cannot control much in terms of functionality and user interfaces.

And just as I was about to write my follow-up article in January of this year about having lost the faith, Kathrine Hammervold of Microsoft contacts me for our semi-random-annual coffee chat on “the state of search”. This has typically been an informal chat where I get to give my feedback from the customer/consulting side of search. Except, I was not let in on the new agenda.

My very own Microsoft Search t-shirt and shoe laces!
Over the years I’ve been asked numerous times if I would consider joining Microsoft. It has always been unofficial as part of random conversations, and honestly I’ve been very comfortable working on the “outside” for Puzzlepart. This time around it was very concrete; Kathrine asked if I would be interested in joining the search team!

From what she told me over coffee I was very much intrigued on “the state of Microsoft Search” and my spirits instantly rose. Maybe I could help form the future and have an impact?

I have been with Puzzlepart since 2011 and I so love my job and my freedom. I had no intention of switching jobs what so ever that Tuesday afternoon, but after much thought and discussions with great friends in and outside of Microsoft I decided I had nothing to lose and everything to gain.

Monday June 3rd I’ll be starting my new adventure in a new office, working with many of the people I already know inside of Microsoft as well as get to know a lot of new smart people. Quitting Puzzlepart was certainly not easy and has been a tough choice emotionally. It’s by far the best place I have ever worked and these past 8 years have just flown by. I love the people, I love the work, and I love Puzzlepart’s approach to clients and projects – it’s possibly one of the best Office 365 consultancies to work for. Everyone matters and everyone has the ability to shape their future and to be heard - but be prepared to juggle two to three clients at any one time (cheaper for the client, for fun for you :)  And if you follow my blog you know Puzzlepart share a lot of the things they create for absolutely free on GitHub, as well as contribute to the Office 365 Patterns and Practices (PnP) work.

Which leads to: I honestly believe in Microsoft Search!, and that customers can get back some of the old flexibility we used to love in a modern way. In addition, modern AI driven features are constantly added to the mix, making search and search driven features even more ubiquitous than ever. It’s not about the tech, it’s about making the people who use the Microsoft platform even more efficient and innovative in their jobs.

“May the search be with you!”

Wednesday, May 15, 2019

Approve a document in Teams using Adaptive Cards and Flow

Co-incidentally the same scenarios often appear simultaneously from different people at the same time, and this is one of them.

I’ve been assisting with random comments to a client who wants to start an approval on a document, and have that show up as a card with Approve/Decline buttons in Teams. And yesterday the good SharePoint/Flow man himself Chaks at Microsoft reached out with a similar scenario.

Chaks wanted to build a bot for this, and I asked if he had tried the Adaptive Card action in Flow, and have card buttons trigger an approval/decline action via a HTTP trigger. Turns out that adaptive cards via Flow in Teams does not support Action.Http. End of story.

Here I am, having told a client this should be easy, and Chaks telling me I can’t do it. Being me, that’s not acceptable, of course it can be done – and turns out my ego was right this time :D (it’s not always)

Start the approval Flow from SharePoint.

Adaptive card in Teams.

Important: Enable Major, minor versioning and approval on the document library. And I have not put any thoughts into licensing of actions in Flow if any for this scenario.

How??? Let me show you!

Friday, May 3, 2019

Gotcha in Microsoft Flow when modifying properties on a newly created file

This one is a common task, something I've set up a quadrillion times with workflows and event receivers in SharePoint over the past decade or so. And now the time has come to using Microsoft Flow.

The scenario is that when a file is created, you have a piece of business logic which should set metadata on the file. It could be a status flag, a serial number - the business cases are many and diverse.

Read on, young apprentice (you know who you are :) )

Thursday, May 2, 2019

How to: Creating modern page templates, and retrofitting old pages as templates

Microsoft is in the process of rolling out modern page templates, which is something we've been waiting for for a good long while now. And finally the time has come :)

I've seen it in most tenants, but not all - so be patient as it's trickling in.

If you haven't tested this yet I'll do a quick walk-thru.

To create a template you perform the following steps: Create a new modern page, add all there is to it, hit publish, and you get the option to save the page as a template as seen in the image below.

Note: The option to save as a template only show the first time you publish, but the option is available if you click the Promote button on a page as well.

Once you have created a template it will show up when you click New page from the menu on any existing modern page (it does not show while in the Site Pages library or the cog wheel Add a page at the time of writing).

What if you have existing pages you want to use as templates? One option is to start a new page with Copy of this page, and follow the steps above. Then delete the original page you used as a template as well as your new copy.

But as we're all savvy modern users we know it's simpler. If  you look at how the template feature is actually implemented, you will quickly get the drift. Once you create your first template a folder named Templates is created in the Site Pages library and any page in this folder will show as a template.

Note: If the file you move has been published as a major version at one time or another, the template will also show in search. Same goes if you turn off minor versioning on the Site Pages library. So you might want to create a template from that file instead, and then delete the files still....

This means you can retro-fit existing templates in a site performing the following steps:
  • Create a dummy template in order to have the Template folder created and enabled for templating.
  • Select the page you want as a template, and drag/move it to the Templates folder, as there is no move command on the Site Pages library.
  • Navigate to the Templates folder and open the page and you see it's now been templaty'fied
When you now want to create a new page, the template will show up as easy as corral balls!

For the techies out there

A big thank you to Erwin Van Hunen for helping on this one.

If you manually want to set up the templating feature, say in a provisioning scenario, do the following:

  • Create a folder in Site Pages (name it whatever you want) and record the unique guid of the folder

    $f = Get-PnPFolder  SitePages/MyTemplates -Includes UniqueId
  • In the property bag of the Site Pages library, set vti_TemplatesFolderGuid to that guid

    Set-PnPPropertyBagValue -Key "vti_TemplatesFolderGuid" -Value $f.UniqueId -Folder "SitePages"