Tuesday, 10 May 2022

Automate creation of new documents with SharePoint Syntex Content Assembly

With the recent Content Assembly feature, SharePoint Syntex can now create templated documents as part of an automated process - all native to Microsoft 365. This is an important part of intelligent automation since so many processes involve a document - in the consumer world your mortgage documents, an insurance quote, a letter confirming a policy change and so on. While financial and ERP systems often take care of invoices, sales orders and purchase orders, the business world revolves around proposals, contracts, safety reports, compliance certificates, checklists, affiliate agreements and many other types of standard document. I know what you're thinking - sure, there have always been ways to automate document creation, but custom code or a 3rd party product have typically been needed. Often these solutions have been very expensive indeed, such as some of those for intelligent proposal generation. 

Another significant thing here is that I don't remember ever seeing a solution 100% baked into the core Microsoft experience in such an intuitive way - that means potentially everyone in the organisation can make use of automated document creation, and without training on specialist tools. This combination of things that make me believe that what Microsoft are doing with Syntex (and the journey they're on with Content Services in general) is extremely significant in the market. 

Scenario used in my example

Before I dive into showing how Syntex Content Assembly works, some details on my scenario - here I want to easily create documents for different open roles here at Content+Cloud. We have no less than 100+ open roles at the moment and these documents are used in internal hiring and to brief external agencies, so simplifying the creation of these documents and reducing the copying and pasting that people currently is a big win. The documents combine variable content (the role details) with standard content (our benefits and working environment etc.) Using Syntex Content Assembly, we can automate the document creation and Syntex ensures the respective details for the role are dropped into placeholders in the template. 

Let's start with the fundamentals.

Syntex Content Assembly ingredients
Understanding how Content Assembly works starts with understanding the two main ingredients needed:
  • A SharePoint list - this will contain an item for each document instance to create, with the values to drop in
  • A 'modern template' - this is an Office document specially created with Syntex support, providing the outer template for the document


Creating a Syntex modern template

Step 1 - creating the list


Since you'll automate the creation of documents from items in a SharePoint list, the first thing to do is to define and create that list. In my case it's a list for our open roles and I've added SharePoint columns for the variable pieces of information which will be dropped into the documents:  

It's very important to have this list available and ready (at least it's structure and columns) before going to create the modern template. The reason for this is because the template creation process involves you picking the columns and specifying the location in the document where this information should display. 

Step 2 - creating the template itself


To do this you'll need a user with a Syntex license. A licensed user will see a new option in a SharePoint document library to create a modern template:

Have your Word document ready when you click the item above - but note that it can be a "filled" version of your document rather than a specially prepared template. You'll upload it from your PC rather than select it from an existing SharePoint location:

Once your document has been selected we go to the next phase.
Adding content placeholders to the template
At this point you'll see a panel on the right which will help you drop the placeholders into the document template. Simply highlight some text and then the 'add placeholder' control appears on the right:

The placeholder control asks you to name the placeholder and specify what should be dropped into it when new documents are created from the template. There are two options here:

Text shown Use when
Enter text or select a date The user should enter some new text as each document is created from the template
Select from choices in a column of a list of library The text should be pulled from the list item as each document is created from the template

For the most part you'll probably be using list item values for the vast majority of values dropped into your documents - adding text ad-hoc may be useful sometimes but the real power is in more automated creation from your structured data. Let's look at each in more detail:

Option 1 - entering an ad-hoc value

When creating the template, you'll specify what kind of data can be used for this value, but note this isn't adding any kind of column to the list containing your list items - it just constrains the data that can be entered:

When using the template, a control is presented to the user (matching the data type) to allow the ad-hoc value to be entered:

Option 2 - selecting from a list item

Using this approach, when creating the template you'll browse to the SharePoint list you're using a choose the column which holds values for this 'field' in the document:
First choose the list:
...and then the column:
Once selected you'll see confirmation of the selected column, including if you come back in later to edit:
When using the template, once the user has selected an item in the list for the document instance being created, Syntex will automatically fill in this placeholder from your list item - as it will do for ALL of your placeholders in the document. A placeholder which is bound in this way can't be overtyped, but that makes sense because you are creating the document from a 'record' in your list:

Finalising the template
The template creation process from here is essentially repeating the above steps for each placeholder you need in your template. For each placeholder, either select that the value should be entered ad-hoc or (more likely) pulled from the list item. Once this is done you'll have lots of placeholders in your template, with each one listed on the right-hand side showing where the value will come from:
At this point the template can be published. Hit the publish button and see the confirmation:
So once we have the template in place, what does creating a document look like?

Creating documents using Syntex Content Assembly


At this point all of the one-off, upfront work to create the template is done - so creating new document instances from the template is quick and easy. No more copy and paste between documents! The critical point to note here is that currently document creation does involve a manual step. I think we can be sure that Power Automate actions will be here very soon to provide end-to-end automation, but for now here's how the process works - your Syntex modern template appears on the 'New' menu for your SharePoint document library:
Selecting the menu option takes you into creating a document instance from your template:
You can give the document a name (the default is the template name) using the editable name highlighted with the red arrow. On the right-hand side, all the placeholders are currently empty - the only reason the document in the image below has content is because in this case my template has content in it (as opposed to empty placeholder values). In any case, they will be overwritten in the next step. To create a document using one of my items in the SharePoint list, I simply choose a field (most likely the title field) and I see a picker of my list items:
Once an item is selected, all values are pulled from the list item and dropped into the corresponding placeholder in the document. You'll need to hit the 'Refresh to preview' button:
The document is now created!


As you'd expect, it lands in the document library where you created and applied the modern template:

So what do we take away from this?

 
The significance of Syntex Content Assembly
What we're seeing here is another big step in the democratization of automation solutions. Sure, there's some complexity as you get used to Syntex Content Assembly, but for the first time it's completely native and baked into Microsoft 365 (specifically the SharePoint document library interface) and doesn't require any coding, scripting, or complex configuration.

Every single organisation today has people copy/pasting into documents - statements of work, project plans, legal agreements, sales pitches, supplier/partner/employee contracts, role descriptions, and many more. In the best-case scenario, a lot of time is being wasted. In the worst-case, human error can creep in and in some cases can have a serious impact on work and people. With Syntex Content Assembly, Microsoft is making a serious play in document automation for the masses - and a segment of specialised product vendors are likely be worried.

Today there are quite a few limitations. A couple of clicks are needed to create the document (so arguably not full automation), there's a one-to-one relationship between the template and a document library, and for now it's only Word. Additionally, in my experience Syntex is a bit finicky in terms of what can be in your Word template. These are worth discussing in more detail, so I'll cover these and more in my next post:

Next article: Tips and tricks when building Syntex Content Assembly solutions

Monday, 28 February 2022

I'm speaking at the European Power Platform Conference 2022 in Berlin - RPA and Power Automate

The rise of low-code business applications continues, with industry analysts such as Gartner predicting that by 2025 70% of new applications developed by enterprises will use low-code or no-code technologies, and Microsoft claiming that 92% of Fortune 500 clients are now using Power Apps to provide tools to their employees and customers. With this backdrop I'm excited to be speaking at the inaugural European Power Platform Conference this year, held in April in Berlin.

The conference is from the same team behind the European SharePoint, Office 365 and Azure Conference (ESPC), one of the biggest events in the Microsoft cloud space across Europe for the last few years and one which I've enjoyed speaking at for the last 6 or 7 years. I've no doubt that the Power Platform event has emerged to fulfill the huge demand for quality learning and guidance on best practices and lessons learnt which are specific to the Power Platform family. The surface area and capability of the platform has expanded massively in recent years, and in each release wave Microsoft are driving innovation hard in each of the areas depicted below:  

The European Power Platform Conference event

The headlines of the event are:
  • When - April 6-8 2022
  • Where - Berlin, Germany
  • Language - English
  • Who - lots of community experts, Microsoft MVPs, and keynotes from Charles Lamanna (Microsoft Corporate Vice President, Business Applications & Platform) and Marios Stavropolous (ex co-founder and CEO of Softmotive, now at Microsoft as Partner, Microsoft Power Automate following the Softmotive acquisition)
  • Pricing - tickets from €695, see the conference pricing page 

My session - Automate the Impossible with RPA and Power Automate Desktop

My session focuses on RPA (Robotic Process Automation) and uses a fun scenario to demonstrate serious technology. The abstract is:

Automate the Impossible with RPA and Power Automate Desktop

An alternative title for this session could be “How I frustrate my kids' ambitions of unauthorised gaming through automation!” Robotic Process Automation (RPA) has been around for a while but is now part of Microsoft’s Power Platform and easier to use than ever. Power Automate Desktop allows “island” or legacy applications and systems without an API to be automated – even my home Wi-Fi settings though my ISP’s terrible portal in my case.

In this session you’ll learn how to get started with automating web applications using Power Automate Desktop. We’ll focus on how to interact with web sites like a human with a mouse and keyboard does – using navigation links, entering text into textboxes and clicking buttons. You’ll learn the difference between web automation and UI automation in Power Automate Desktop, and how to decide which approach is best. Finally, we’ll cover how to integrate with Alexa at home, how to schedule your processes and discuss licensing considerations. The automation wave is about to hit – make sure you’re part of it!

For more details see:

 Automate the Impossible with RPA and Power Automate Desktop

Conference link

Hope to see you there! Here's that link to the conference site again:

     https://www.sharepointeurope.com/european-power-platform-conference/

Wednesday, 2 February 2022

SharePoint Syntex AI - my top 5 real-world tips

SharePoint Syntex is the AI-powered ability for Microsoft 365 to learn and understand your documents, enabling knowledge to be extracted and automated processes to be implemented around your content. Building on earlier work I did, I've worked on a couple of Syntex implementations recently, one for a client and one internal to us at Content+Cloud. Putting Syntex into action in the real world is quite different to general experimentation, and in this post I want to share some learnings as I've worked with different scenarios. Before that, if you're looking for some fundamentals content on Syntex some of my earlier articles might be useful:
Syntex is an evolving technology and although Microsoft have worked hard to democratise the AI and put it in the hands of non-developers, there's definitely a learning curve and the constructs used in the training of AI models take some time and experience to get the most from. It starts with making the right choice between Syntex' two approaches (as discussed in choosing between document understanding and form processing) and then requires a good understanding of the constructs and some trial and error (including interpreting the feedback received) during the AI training process.

Background - real world scenarios these tips are based on


Before I go into the tips I think it's useful to understand the types of documents I trained Syntex to understand. The first is known as a 'method statement' and is used in construction and engineering in the UK - it's required by law in some scenarios but is also commonly used on practically any service task where risk has been identified. Examples I've seen include replacing a building's alarm system or even cleaning windows with a tall ladder. The method statement goes alongside a risk assessment, and the overall process is often known as RAMS (Risk Assessment - Method Statement). The method statement describes the 'safe system of work', detailing the control measures taken for the identified hazards and risks. Here are the first pages from a couple of examples - as you can see the formats are quite different, but that's OK for Syntex:

For these types of document, Syntex document understanding works best.

The other work I'm doing revolves around an Excel format we use commonly at Content+Cloud which looks like this:

As you can see this one is very tabular in nature, and unsurprisingly if you know Syntex I found that the forms processing model works best here.

My top 5 Syntex tips

 

1. To extract from Excel, convert to PDF first

Syntex forms processing actually doesn't directly support Excel files so a quick conversion to one of the supported formats (JPG, PNG or PDF) is needed - I recommend PDF to avoid the uncertainties of image processing. Power Automate offers a couple of simple ways to convert an Office file to PDF and because you call into Syntex forms processing through a Power Automate Flow you create, this is convenient all round. Some options are:
  • Move the file to OneDrive temporarily and use the 'Convert file' action with a target type of 'PDF', then copy or move back
  • Use a 3rd party conversation service which has a Power Automate connector. Encodian works great and is free for small volumes
To avoid a recursive loop you should add a check that the file being created is indeed an Excel file before converting. You'll need a check such as:

Content-Type is equal to 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'

Your file is now ready for Syntex processing.

2. When working with tables, try forms processing first

From the two Syntex approaches, document understanding often isn't well-suited to extracting content from tables. The main reason for this is that Syntex document understanding strips away all the structural and formatting elements of the document to leave just the raw content. Consider the following document:

What Syntex actually 'sees' for this document has all of the formatting removed - we see this when labelling documents in the training process:





As a result, extracting contents from a certain row or column in a table can be difficult in document understanding. You might be able to do something with before/after labels and a proximity explanation, but accuracy might vary. In these situations, it's worth trying a switch to forms understanding. The model there has special support for processing tables and it's capable of detecting rows and columns in a table - this makes it possible to zone in on 'row 4, column 2' or whatever you need.  

Of course, what comes with a change to forms understanding is a completely different approach (with its Power Automate integration) and pricing. But, you might need to go this way if the content you're trying to extract is tabular.

3. Implement a 'proximity explanation' and train on more documents when extracting content in a less describable formats

In Syntex document understanding models, when creating a Syntex extractor to recognise some content in a document and pull it out, it's worth understanding the following - unless specific steps are taken Syntex is best at extracting content in known, describable formats. For example, an extractor you create may be accurate immediately if you're extracting a consistent format such as a postcode or set of product IDs for example. However, training a model to recognise arbitrary data can be more difficult even if it's in a consistent place in the document. This becomes an important aspect of working with Syntex and something to plan for. 

Consider two scenarios: 
  • Extracting a product description (lots of arbitrary phrases)
  • Extracting a product ID in form XXX-123456-YY (distinct pattern)
In addition to the AI machine teaching you do when providing Syntex with some sample documents, the 'explanations' you create are vital here:




My tips for extracting more arbitrary formats are:
  • Implement a proximity explanation in conjunction with something just before or just after the content you're trying to extract 
  • Train on larger numbers of documents - don't just stop at five sample docs, provide Syntex with ten or more
  • Expect to spend a bit more time on these scenarios
With some tuning, you should be able to get the extractor accuracy to where you need it to be. If not, see tip #2 - setting up a quick test with Syntex forms processing to see if that's more effective is a good idea at this point.

4. Combine Syntex with formatting in SharePoint lists and libraries

Syntex and SharePoint JSON column formatting are a winning combination - I use them together frequently. Consider the case where you're extracting some content from documents with Syntex, and of course the values are extracted from the document into list item values - when some column formatting is applied we can really bring out the value of what Syntex has found.

From this:

To this:


We can now get an instant view across many documents at once:
  • Engagements with a higher value become obvious from the Excel 'data bar' style formatting on that column
  • The business manager is highlighted in bold, blue text
  • Any missing values from the project manager field are highlighted in red
In another example, I use very similar formatting but the emphasis is on highlighting the missing gaps across the documents (as shown by the red):

This provides an intuitive, instant picture of how complete the documents are according to what Syntex found in them. This can be a useful technique when Syntex is used with documents where it's important that certain information is present - which applies to many of the world's is commonly the case when you think about it.

5. Combine Syntex with Power BI reporting to measure document compliance

Expanding on the theme behind the formatting approaches shown above, many business processes rely on documents being completed to a certain standard - the document represents an important form of information exchange or capture. The RAMS review process I discuss above is a great example of this. I'll talk about that particular scenario in more detail in a future article, but as we're discussing general concepts today this idea of "Syntex + reporting" is, I feel, worthy of being a top Syntex tip.

Consider that for any process where information completeness is important, measuring and reporting on this is likely to be valuable. For my client's scenario where fully completed RAMS method statements are a guardrail to help ensure safe working, we implemented a Power BI dashboard to provide insights on to what Syntex was finding. As you can see in the image below, this measures overall 'process compliance' levels, and measures such as the average fidelity of documents from individual subcontractor companies. This allows us to create a subcontractor 'leader board', helping the team understand where there may be greater risk and what to investigate:

This does rely on your Syntex AI models being accurate for the documents you are processing, but even without full accuracy the insights help guide you to where improvements can be made.

Summary

Syntex is an amazing technology and while other AI-based document processing solutions have existed for a while (often vertical-specific, such as legal or contracts management solutions), the advantage Syntex has of being baked into your core collaboration platform is profound and opens many doors. With a good understanding of the constructs and capabilities together with some imagination, Syntex can be the foundation for some high value solutions. Hopefully this post provides some inspiration and useful tips! 


Wednesday, 5 January 2022

Supercharge your virtual Teams meetings with SharePoint Syntex, whiteboards, polls, presenter modes and more

As we all settle into the next few years of hybrid work, it's somewhat sobering to reflect that Microsoft have clocked up to 2.7 billion minutes of Teams calls in a single day at times. We're irrefutably spending much more of our time in Teams calls and meetings - from all those short "stop by the desk" chats that are now scheduled meetings (reflected by a 22% increase in meetings of 30 mins or less in Microsoft's research), to more organised team and company "all-hands" meetings which have shifted from either fully or partly physical to fully virtual in many cases. The challenge now is how to make the best of meetings - how to elevate beyond the humdrum, ineffective, energy sapping meetings that I suspect are common in many businesses. This post has some tips which my Content+Cloud colleagues and fellow MVPs Steve Goodman and Jason Wynn spoke about at the recent South Coast Summit event here in the UK - our session extended to Teams Voice, Teams rooms, devices and kit, broadcast considerations and many more topics, but here I'll focus on a few things in particular:

  • Whiteboards
  • Polls
  • Presenter modes
  • Using SharePoint Syntex to quickly understand documents during a call

Using Microsoft Whiteboard in a Teams meeting

Being able to lead a remote whiteboard session is becoming a critical skill in a world where everyone isn't in the room. The key, in many cases, is to prepare the whiteboard in advance - and Teams has special support for this. Once you have the meeting in the calendar (even if you haven't invited others yet), click into the meeting within Teams and then go into the Whiteboard tab. Seeding the whiteboard with thoughts rather than starting from a blank canvas during the meeting can have a big effect and takes the pressure off in the meeting itself. With a few minutes of prep you might come out with something like this:

 
This is now in a better state for effective brainstorming during the meeting. Since this is a collaborative whiteboard, participants in the meeting can simultaneously edit, whether that's adding a sticky note on the left for the challenges or a list item on the right for ideas. Microsoft don't state a maximum number of participants in the documentation, and I've certainly heard of folks using with 25 people at once with no issues. Microsoft Whiteboard has recently undergone a significant revamp providing templates and other capabilities like those of Miro and Lucid, and further changes are imminent - in the near future live components (soon to be renamed "Loop components") will be introduced to provide even more collaborative authoring tools. The video below shows myself and my colleague Dan editing the whiteboard simultaneously. It's not the best illustration but I think it does convey the capabilities:

 
In short, spending a bit of personal time playing with Whiteboard and building confidence is a good investment for many people at this point. It will be interesting to see where Microsoft take the interplay between Whiteboard and the forthcoming Microsoft Loop app (expected in the first half of 2022), but being comfortable running collaborative meetings is essential regardless of the tool specifics.

Using in-meeting polls to survey the team and ask questions

One extremely powerful technique which I don't think is widely known yet is the ability to dynamically create an on-the-fly poll during the meeting. Some folks try to gather sentiment by asking people to raise hands at a certain point ("all those who vote for X, raise hands now") but that's sub-optimal because:
  • There's no option for anonymity - everyone can see who raised hands when
  • People may miss the timing or context
  • Results aren't captured anywhere
Teams has some extremely good smarts to help with dynamic polling to speed up the process - this is what makes it possible to do live, on-the-fly as you're also dealing with hosting the meeting and the conversation flow. Specifically, AI is used to help you re-use a question you've asked previously and suggest likely response options to questions you add, saving you from manually typing out each possible option for a multi-choice question.

When you're in a call and realize that a quick poll would be helpful, you add the Forms app to the meeting - the concept of adding an app to a meeting is perhaps the step which isn't widely known. Some key things to observe in the video below:
  • As soon as the app is added to the meeting, there's a poll suggestion from a previous question I used ("how happy are you at the moment?") - I could simply click this to reuse within seconds
  • I decide to create a new poll but with the same "how happy are you?" question, and the Forms app automatically gives suggested options such as "Very happy", "Somewhat happy" etc. - this is such a time saver
  • I can select options around sharing results immediately, keeping responses anonymous and even allowing others to add questions to the poll
  • Once launched, the form appears as a pop-up form (task module) for others in the meeting
You can see all this in action here:


Using presenter mode in Teams

The combination of "speaker plus PowerPoint deck" is one we're all intimately familiar with, but in the vast majority of cases people use the default settings which simply presents the attendee gallery alongside the presentation. Although the spotlight feature can be used for the person speaking, the experience is still far from optimal and doesn't compare to a physical meeting where someone might be stood at the front of the room. Fortunately presenter mode in Teams is designed to improve upon this - it combines the speaker's video and the content being shared (e.g. PowerPoint) in a few different layouts:   

Side-by-side:


Reporter:


Standout:



I think the biggest adoption blocker for presenter mode is simply that people overlook where to do this in Teams. Here's where to find the options:


Note that PowerPoint Cameo takes this even further by allowing you to place exactly where you'd like to appear on each individual slide - this helps ensure you don't block vital content on the slide for example:



PowerPoint Cameo is expected to be available in 'early 2022'.
 

Using SharePoint Syntex in Teams meetings

At first you might think there isn't much connection between SharePoint Syntex and meetings. Syntex, of course, provides the ability for Microsoft 365 to 'understand' your documents, automatically recognizing and classifying known document types and extracting the important parts from them. I liken it to the ability of SharePoint to read your documents like a human does - not only understanding the difference between an invoice and a contract (for example), but also being able to find and read the all-important cost table or assigned project manager - and doing so reliably for a document that has 10 pages and one that has 100 pages. If useful, I walk through Syntex in more detail in two articles starting with SharePoint Syntex - training Syntex to read your documents like a human.

So, the connection with meetings? Well, at Content+Cloud we're starting to use Syntex during certain team meetings. The use cases vary, but one example is a weekly commercial meeting where Statements of Work which were issued to clients through the week by different project managers are gathered up and placed into a central SharePoint library during the call itself to avoid "Sure, I'll get round to that later!" act as a forcing agent. In 1-2 minutes a bunch of SOWs are parsed by Syntex allowing the team to see the total value and any details accidentally missed. This is best summarized by the following image, taken at the end of the processing:

Notice that:
  • The document has been recognised as "C+C Statement of Work"
  • The Engagement total, Business Manager, Exec Sponsor and Project Manager have been located in the documents and extracted into columns
  • There's a visualisation on the engagement total
  • A couple of SOWs do not have a Project Manager specified, and this has been highlighted
Of course, all these opportunities and transactions are going through our CRM and ERP systems but there's always a Statement of Work document sent to the client for signature at some point. Ensuring the details are as expected before sending, keeping the team up-to-date, but doing so at speed on the weekly call is invaluable. The video below shows:
  • A couple of redacted C+C Statement of Work documents, to give a sense of the structure of these documents
  • A set of around 10 SOWs being dropped into a SharePoint library with Syntex enabled
  • The completed processing happening within seconds
 
 

Summary

Hybrid working means a continued focus on Teams meetings and calls for most of us, and running effective meetings takes effort and a good understanding of the tools available. I'd contend it's practically a new skillset for most of us, but there's a lot to be gained by elevating meetings beyond  simply people speaking and raising hands. 

Going beyond the suggestions in this post, the next frontier is building custom apps which extend the Teams meeting experience - clearly that requires some investment but there are all sorts of possibilities with Teams meeting extensions. Take the idea of ensuring stakeholders on a Teams call have accurate client information to hand to support decision making for example - sure, it would be possible for someone on he call to go off to separate apps and platforms to do some lookups, but by baking the tools and data into the Teams call we reduce the friction and make the insights available to all. There's a much higher chance of up-to-date and accurate information being used because it's right there in the context of the call. 

At Content+Cloud we've used this in some of the Teams apps we've developed for clients and are actively thinking about how this dimension can help in just about all Teams solutions we build. 

Hopefully this post has been food for thought, and perhaps a mini-inspiration (or at least a reminder) of some of the techniques which can transform Teams meetings and drive new levels of effectiveness.

Monday, 6 December 2021

Microsoft Ignite November 2021 announcements summary - Teams, Power Platform, Viva, Syntex and new products/experiences

Microsoft held their now twice yearly Ignite conference a few weeks ago, with the usual firehose of announcements - as usual, this included some items which aren't really "new news" at all and some parsing is needed. It always hard to keep up with the detail of developments and launch dates, but never more so than now. Not only are Microsoft keeping their foot to the floor on innovation, but also with some bold and surprising new products and experiences such as Mesh for Teams and Microsoft Loop. Whilst the "Ignite Book of News" that Microsoft create is useful (link at the end), I find myself needing a more concise summary to reference when talking to inside Content+Cloud or with clients. For the last few events I've created "Ignite on a slide" summaries, presenting my view of key announcements and expected availability dates.

In this post you'll find the slides as images, and a downloadable deck which combines all of them. The following areas are covered:

  • Teams
  • Power Platform
  • Microsoft Viva
  • New products and experiences (Microsoft Loop, Mesh, Context IQ, Clipchamp etc)
  • SharePoint Syntex 

Feel free to re-use or share.

Microsoft Teams

Click each image to enlarge:

Power Platform

Microsoft Viva

New products and experiences (Loop, Mesh, Context IQ, Clipchamp etc.)

SharePoint Syntex

Of course, my summaries are somewhat subjective and you might feel there's something I've missed - but hopefully they're useful somehow.

Download the combined deck

You can download the combined deck from:

 

Summary

Hopefully these summaries are useful in some form and you're free to use them as you like. When you need more detail on any of these announcements (and you will), I highly recommend using Microsoft's published "Book of News":

Link:  Ignite November 2021 Book of News

Monday, 15 November 2021

Speaking at the European Collaboration Summit 2021 - Infuse AI into your Power Platform solutions

The European Collaboration Summit (ECS) is a fantastic Microsoft-focused conference in Europe with around 2100 attendees expected, and I'm hugely excited to be speaking there again this year. While we're clearly not done with the pandemic yet, it feels great to be out speaking and networking in-person again and the recent South Coast Summit event here in the UK showed that many others share the same feeling. This year's European Collaboration Summit will be a special event - it essentially combines two conferences in one since the European Cloud Summit which focuses on Azure and Google Cloud has been rolled into this event. I'll be speaking on automation, AI and the Power Platform - some one of my favourite topics of recent times as we embark on the next frontier of process automation.

ECS is held in Düsseldorf this year and as usual has a strong line-up of speakers and significant Microsoft representation. Keynote speakers include Karuana Gatimu, Dan Holme, Vesa Juvonen and others from Microsoft and Bernd Wagner from Google. With over 150 sessions, you can expect deep dives on Microsoft 365, Azure, the Power Platform, Google Cloud as well as business and strategy-focused talks on digital transformation and modern workplace in general. 


The event is almost sold out but it's not too late to get tickets - see below for more details. 

My session - "Infuse AI into your Power Platform solutions"

The session abstract is:

Bringing AI into your applications has never been easier, and huge benefits can be unlocked when some level of intelligent processing of your data happens. From auto-tagging of incident report images uploaded from a Power App, to Flows that detect anomalies in documents, to apps which detect if a retail shelf is low on stock - so many improvements to your SharePoint-based processes are now within easy reach.

In this session we'll cover several scenario demos showing how you can instantly get better insights from your data and better outcomes with little effort - and no developers required! This session is aimed at anyone building solutions on the Power Platform.

The session has a couple of pillars:

  • Demonstrating how to build AI into solutions using the example of an incident reporting Power App. The app uses image recognition to understand photos captured on a mobile phone, auto-tagging the image in Microsoft 365 and integrating with Microsoft Teams to alert a responder group for further triage if the incident appears to be serious
  • An exploration of 3 different techniques to integrate AI. Specifically we look at:
    • Power Apps AI Builder
    • Azure Cognitive Services through code
    • Azure Cognitive Services through Power Automate

Each of these options brings different capability and cost implications, and being able to make the right decisions in this space is vital. One area of focus is cost modelling based on Power Platform premium licensing where I show how what could be considered an architectural choice can have a big impact on the TCO of your solution. 

ECS conference details

Some more high level details of the conference:
  • When - 29 November - 01 December 2021
  • Where - Düsseldorf, Germany
  • Language - English
  • Conference size - expected to be 2100+ attendees
  • Pricing - see the Tickets page on the conference website
It would be great to see you there! The conference website has all the details you need of course:



Wednesday, 8 September 2021

Bringing external data into Microsoft 365 - custom search result types and verticals

 In the previous article we looked at how to integrate other data sources into Microsoft 365, using ServiceNow as an example. This approach of using a Graph Connector to bring external data in can be used with Azure SQL, on-premises SQL Server, Windows file shares, Azure Data Lake, Azure DevOps, Salesforce, Oracle, ServiceNow and several other major platforms - regardless of the target, the process is largely the same. One benefit is that Microsoft Search can now provide a consolidated search engine across all of these platforms - improving discoverability and breaking down silos. There's more to it than that though - beyond search, the other platforms can now be used as "intelligence sources" for Microsoft 365, with some capabilities available now and more to come. Examples of this include:

  • Viva Topics using the other platform to mine knowledge and expertise (later in 2021)
  • "People and workplace intelligence" integrations, where the other platforms feeds information to the Microsoft Graph to power experiences in Microsoft 365. Examples of this might be: 
    • Recommended content from a custom SQL CRM system being displayed to the user on the Office.com home page
    • Entities in another system (e.g. a client in Salesforce) appearing in 'used', 'shared' and 'trending' lists shown to the user within Microsoft 365 (date unknown)   
In this article I want to stay focused on search, and in particular discuss how to control the appearance of search results which come from an external platform. Continuing my scenario from the previous article, I'm bringing in ServiceNow Knowledge Base content - in cases like this you will typically want to do two things:
  • Create a custom search vertical - this is a tab in the search results which only shows results from the external platform. This allows users to filter their search to just this content source
  • Create a custom result type - this allows you to control exactly which pieces of data are displayed in the search result and where
Microsoft provide a layout designer to help with this process. This helps you construct an adaptive card layout which gives you the formatting control of the search result, allowing you to specify all of the individual bits of data and where in the result they appear:

So, in this post we'll create a custom search vertical and a custom result type for my ServiceNow scenario. Configuration for both of these can be done at the tenant level in the Microsoft 365 admin portal or at the site collection level in Site Settings. I'm using the former option here, requiring tenant admin permissions. Before we dive in, note that:


Creating a custom search vertical for external search results

If you have extended SharePoint search in the past, you'll probably be familiar with the concept of a search vertical - effectively a custom tab of search results appearing in the search engine. This model continues to be used in modern day Microsoft Search, and the process only takes a few minutes. Essentially we're providing a place for the results to show in a way that's clear where they are from - results do not get interleaved in the main search results. 

To start, find the Search & intelligence section within the Settings menu in the admin portal. From the last post we already have a data source defined (ServiceNow in my case), so we go into the Customizations area and select Verticals and begin the process of adding one:


In the next step, select the definition of the remote content source you are using (i.e. ServiceNow):


You now have a couple of options for pre-filtering the results returned - using KQL or property matching. For example, you could ensure only KB articles created in the last 12 months are used. I'm choosing not to do any pre-filtering:



You can now review the settings used before finishing up:


Now it's just a question of adding and enabling the vertical you just created:




So that's step one. Now that we have a search vertical defined to show results from the data being integrated, it's time to move on to how the results are presented.

Creating a custom search result type

Microsoft Search needs to understand how to present a result from the system you are integrating. Within the admin portal we need to be in the same areas as above (Search & intelligence > Settings > Customizations. This time select Result types and begin the process of adding one:


In the next step we name the result type. Then area on the left in the image below shows the steps we'll walk through:

Now we assign this result type to our previously-created content source:

In the next step we can define criteria for the result type to apply. This gives the control to use multiple result types for a given data source, for example in my case I could have a different layout depending on the category of the ServiceNow Knowledge Base article being returned: 

At this point we can jump off into the layout designer mentioned earlier:

The designer is an external tool currently hosted at https://searchlayoutdesigner.azurewebsites.net - once opened, the first step in the tool is to select one of the provided base templates to use as a starting point:

Once you've chosen a good base, click the "Get Started" button at the bottom of the page. That will take you into this interface where you can map values in the search result to tokens in the layout template:

At this point things can be confusing initially because it may not be clear what to enter into each of the "Property" boxes to do the mapping for things like the title, URL, description etc. - they're just text boxes after all, no pickers. However, that might be because, like me, you didn't pay enough attention to what was on the previous page in the admin center:

If you scroll down on the page we jumped off from, there's a table of "Available properties" which lists the name of every piece of data which can be used in your search result:

Armed with this, the process involves copy/pasting keys into the slots provided in the layout designer.


These are "property labels" you assigned when setting up the data source itself - we did this in the last article in this step:

For my ServiceNow result, I use mappings such as:
  • title = ShortDescription
  • titleUrl = AccessUrl
  • modifiedBy = SysUpdatedBy
..where the item on the left is the "slot" in the SharePoint search result, and the item on the right is the ServiceNow attribute. Once you've filled all the slots, the 'Submit' button the bottom of the page will become enabled and clicking it copies the JSON template which is generated:

You then paste this into the textbox provided in the admin center page:


From there you can review your previous selections and then click the 'Add result type' button. On doing so you should see a successful result:


Your custom search vertical and result type are both now created, complete with all the formatting rules you chose. 

The result should be something like this:

(In Microsoft 365/SharePoint):



(In Microsoft Search in Bing):


Summary 

Integrating other platforms with Microsoft 365 provides some compelling ways to simplify the user experience. The approach described here with Graph Connectors can provide a unified search experience and single place to go to, but there are other benefits too. As described at the beginning of this article, Microsoft are increasingly looking for ways to drive value from external data - including expanding the content Viva Topics can use for knowledge mining as well as proactively guiding the user to new or modified data and recommended content from the other platform. This is likely to be a technique we'll use heavily in the future.