Are you over 18 and want to see adult content?
More Annotations
A complete backup of xn--c3cspb1di8o8acz3dd.com
Are you over 18 and want to see adult content?
A complete backup of linkdatacenter.net
Are you over 18 and want to see adult content?
A complete backup of misessentials.net
Are you over 18 and want to see adult content?
Favourite Annotations
A complete backup of alisonkrauss.com
Are you over 18 and want to see adult content?
A complete backup of frontrowcentre.com
Are you over 18 and want to see adult content?
A complete backup of appriver3651010230-my.sharepoint.com
Are you over 18 and want to see adult content?
Text
CHRIS O'BRIEN
Slide deck and videos - Building AI into Power Platform solutions. This is a quick post to publish some resources I created recently covering considerations for using AI in the Power Platform. They are from a talk I gave at ESPC 2020 (the European CHRIS O'BRIEN: QUICK TIP Quick tip - search across sites under a SharePoint hub site. SharePoint Hub Sites are an important aspect of building a modern digital workplace on Office 365. They provide a way of relating sites to each other, and since a modern SharePoint intranet is built from a flat list of sibling site collections which are siblings, suchmechanisms are
CHRIS O'BRIEN: SHAREPOINT SYNTEX AI SharePoint Syntex, the AI-powered document understanding capability of Office 365 which was previously part of Project Cortex (we'll come to that in a second), provides two approaches to understanding your content in document understanding and form processing.I talked about document understanding in two previous articles: CHRIS O'BRIEN: SHAREPOINT SYNTEX That last article in particular is designed to help you understand the difference between the two models and when to use each one. As you read about Syntex you might form the view that "form processing is for things like invoices and order forms and document understanding is for everything else" - certainly some of the guidance infers this. CHRIS O'BRIEN: IGNITE 2021 ANNOUNCEMENTS SUMMARY Microsoft announced a lot of changes and enhancements to their cloud products this month at Ignite, their major conference. Keeping up with the firehose of constant change is difficult at the best of times, but the flurry of announcements at these events - not to mention minor updates masquerading as major announcements - only makes it moredifficult.
CHRIS O'BRIEN: WEB PART PROPERTIES IN THE SHAREPOINT There are lots of out-of-the-box controls you can use when implementing web part properties in the SharePoint Framework. In this post we looked at the Button, Slider, Toggle, ChoiceGroup and Link controls – but there are others too, including Textbox, Dropdown and Checkbox controls which I wrote about earlier. CHRIS O'BRIEN: MODERN SHAREPOINT PAGES AND TEAM NEWS PAGES Modern pages are now in SharePoint team sites in Office 365, and this includes the new “team news” facility. This is a simple way of creating news articles within a team site - it’s no replacement for an organization-wide intranet news facility, but it is useful for teams to convey news or other information within their group. And whilst it’s called “news”, of course the pages CHRIS O'BRIEN: POWERAPPS–THE GOOD, THE BAD AND THE UGLYSEE MORE ON SHAREPOINTNUTSANDBOLTS.COM CHRIS O'BRIEN: QUICK TIP MyDateFieldInternalName lt formatDateTime (getPastTime (1, 'Month'), 'yyyy-MM-dd') That would filter items to only those older than one month for example. In the Flow designer, this should look like this: Hope that's useful. May all your Flows execute on time and without error! Posted by Chris O'Brien at 20:04. Labels: Power Platform ,SharePoint.
CHRIS O'BRIEN: USING CSOM IN POWERSHELL SCRIPTS WITHSEE MORE ON SHAREPOINTNUTSANDBOLTS.COMCHRIS O'BRIEN
Slide deck and videos - Building AI into Power Platform solutions. This is a quick post to publish some resources I created recently covering considerations for using AI in the Power Platform. They are from a talk I gave at ESPC 2020 (the European CHRIS O'BRIEN: QUICK TIP Quick tip - search across sites under a SharePoint hub site. SharePoint Hub Sites are an important aspect of building a modern digital workplace on Office 365. They provide a way of relating sites to each other, and since a modern SharePoint intranet is built from a flat list of sibling site collections which are siblings, suchmechanisms are
CHRIS O'BRIEN: SHAREPOINT SYNTEX AI SharePoint Syntex, the AI-powered document understanding capability of Office 365 which was previously part of Project Cortex (we'll come to that in a second), provides two approaches to understanding your content in document understanding and form processing.I talked about document understanding in two previous articles: CHRIS O'BRIEN: SHAREPOINT SYNTEX That last article in particular is designed to help you understand the difference between the two models and when to use each one. As you read about Syntex you might form the view that "form processing is for things like invoices and order forms and document understanding is for everything else" - certainly some of the guidance infers this. CHRIS O'BRIEN: IGNITE 2021 ANNOUNCEMENTS SUMMARY Microsoft announced a lot of changes and enhancements to their cloud products this month at Ignite, their major conference. Keeping up with the firehose of constant change is difficult at the best of times, but the flurry of announcements at these events - not to mention minor updates masquerading as major announcements - only makes it moredifficult.
CHRIS O'BRIEN: WEB PART PROPERTIES IN THE SHAREPOINT There are lots of out-of-the-box controls you can use when implementing web part properties in the SharePoint Framework. In this post we looked at the Button, Slider, Toggle, ChoiceGroup and Link controls – but there are others too, including Textbox, Dropdown and Checkbox controls which I wrote about earlier. CHRIS O'BRIEN: MODERN SHAREPOINT PAGES AND TEAM NEWS PAGES Modern pages are now in SharePoint team sites in Office 365, and this includes the new “team news” facility. This is a simple way of creating news articles within a team site - it’s no replacement for an organization-wide intranet news facility, but it is useful for teams to convey news or other information within their group. And whilst it’s called “news”, of course the pages CHRIS O'BRIEN: POWERAPPS–THE GOOD, THE BAD AND THE UGLYSEE MORE ON SHAREPOINTNUTSANDBOLTS.COM CHRIS O'BRIEN: QUICK TIP MyDateFieldInternalName lt formatDateTime (getPastTime (1, 'Month'), 'yyyy-MM-dd') That would filter items to only those older than one month for example. In the Flow designer, this should look like this: Hope that's useful. May all your Flows execute on time and without error! Posted by Chris O'Brien at 20:04. Labels: Power Platform ,SharePoint.
CHRIS O'BRIEN: USING CSOM IN POWERSHELL SCRIPTS WITHSEE MORE ON SHAREPOINTNUTSANDBOLTS.COMCHRIS O'BRIEN
Slide deck and videos - Building AI into Power Platform solutions. This is a quick post to publish some resources I created recently covering considerations for using AI in the Power Platform. They are from a talk I gave at ESPC 2020 (the European CHRIS O'BRIEN: QUICK TIP MyDateFieldInternalName lt formatDateTime (getPastTime (1, 'Month'), 'yyyy-MM-dd') That would filter items to only those older than one month for example. In the Flow designer, this should look like this: Hope that's useful. May all your Flows execute on time and without error! Posted by Chris O'Brien at 20:04. Labels: Power Platform ,SharePoint.
CHRIS O'BRIEN: USING SITE DESIGNS OR PNP TEMPLATES FOR So the new “site designs and site scripts” capability for creating SharePoint sites from a template is starting to become available in Office 365. This provides an alternative approach to using Microsoft’s Patterns and Practices (PnP) provisioning library and XML, which has been the way that most experienced implementers have been creating custom site templates in recent times. CHRIS O'BRIEN: USING AZURE DEVOPS TO MANAGE TEAMWORK Setting up an Azure DevOps project. In the video below, I demonstrate starting from nothing - creating a new DevOps project, and then adding some issues and tasks to assign to team members. I think it gives a good feel for the user experience of working with items and using some of the collaborative features: YouTube. Chris O'Brien. CHRIS O'BRIEN: DEBUGGING ERRORS IN SHAREPOINT ADD-IN (APP Take the add-in package and deploy it to the SharePoint add-in catalog for your environment (be in Office 365 or on-premises SharePoint). Drag the .app file into the catalog, and add any additional details (e.g. add-in description, screenshots etc.) to the list item for the file. The add-in is now available to be installed to SharePoint sites. CHRIS O'BRIEN: CREATE MICROSOFT TEAMS FROM A TEMPLATE One thing we’ve been waiting for is the ability to create many Teams from a template, in the same way that many organisations do with SharePoint sites. Microsoft have now released this (in preview at the time of writing), and we can define a template in JSON defining exactly what the Team should look like, including the channels, tabs CHRIS O'BRIEN: RUNNING A POWERSHELL SCRIPT IN THE CLOUD We all know that Azure Functions are really useful in many Office 365 scenarios, and this goes beyond developers. IT Pros can certainly benefit from the ability to run a script in the cloud – perhaps it’s something you want to run every hour, day or week on a schedule, and maybe you want to use PnP PowerShell too for its awesome commands around managing Groups/Teams, provisioning of CHRIS O'BRIEN: CALLING AN AZURE FUNCTION FROM A SHAREPOINT ..and now this will show up in browser dev tools/Fiddler/other monitoring tools in the right way and so on. The full code for the Azure Function to create a modern page is: CHRIS O'BRIEN: USING JSLINK TO CHANGE THE UI OF A This bit only ensures your .js file is referenced by the page.You also need to make sure it has the right contents to register your display templates – we’ll come to that in a second. In my case, I’m creating a new list – it’s worth noting that I’m assigning a list type ID of “11000” – we’ll use this later with respect toJSLink:
CHRIS O'BRIEN: SPDATASOURCE SPDataSource - every SharePoint developer's friend (part 1) Sooner or later, nearly every SharePoint developer needs to write code to retrieve all the items from a list and display them - either on the page, or often in a control like a dropdown list control. An example could be retrieving a list of countries, or perhaps person titles fora
CHRIS O'BRIEN: QUICK TIP Quick tip - search across sites under a SharePoint hub site. SharePoint Hub Sites are an important aspect of building a modern digital workplace on Office 365. They provide a way of relating sites to each other, and since a modern SharePoint intranet is built from a flat list of sibling site collections which are siblings, suchmechanisms are
CHRIS O'BRIEN: AI IN OFFICE 365 APPS In the last article we talked about some examples of using AI in Office 365, and looked in detail at the the idea of building an incident reporting app which combines common Office 365 building blocks with AI. Whilst Power Apps and SharePoint underpin our solution, we use AI to triage the incident by understanding what is happening in the image. CHRIS O'BRIEN: SHAREPOINT SYNTEX AI SharePoint Syntex, the AI-powered document understanding capability of Office 365 which was previously part of Project Cortex (we'll come to that in a second), provides two approaches to understanding your content in document understanding and form processing.I talked about document understanding in two previous articles: CHRIS O'BRIEN: SHAREPOINT SYNTEX That last article in particular is designed to help you understand the difference between the two models and when to use each one. As you read about Syntex you might form the view that "form processing is for things like invoices and order forms and document understanding is for everything else" - certainly some of the guidance infers this. CHRIS O'BRIEN: WEB PART PROPERTIES IN THE SHAREPOINT There are lots of out-of-the-box controls you can use when implementing web part properties in the SharePoint Framework. In this post we looked at the Button, Slider, Toggle, ChoiceGroup and Link controls – but there are others too, including Textbox, Dropdown and Checkbox controls which I wrote about earlier. CHRIS O'BRIEN: POWERAPPS–THE GOOD, THE BAD AND THE UGLYSEE MORE ON SHAREPOINTNUTSANDBOLTS.COM CHRIS O'BRIEN: MODERN SHAREPOINT PAGES AND TEAM NEWS PAGES Modern pages are now in SharePoint team sites in Office 365, and this includes the new “team news” facility. This is a simple way of creating news articles within a team site - it’s no replacement for an organization-wide intranet news facility, but it is useful for teams to convey news or other information within their group. And whilst it’s called “news”, of course the pages CHRIS O'BRIEN: WEB PART PROPERTIES IN THE SHAREPOINTSEE MORE ON SHAREPOINTNUTSANDBOLTS.COM CHRIS O'BRIEN: QUICK TIP MyDateFieldInternalName lt formatDateTime (getPastTime (1, 'Month'), 'yyyy-MM-dd') That would filter items to only those older than one month for example. In the Flow designer, this should look like this: Hope that's useful. May all your Flows execute on time and without error! Posted by Chris O'Brien at 20:04. Labels: Power Platform ,SharePoint.
CHRIS O'BRIEN: CHANGES TO CUSTOM ACTIONS AND HANDLING OFSEE MORE ON SHAREPOINTNUTSANDBOLTS.COM CHRIS O'BRIEN: QUICK TIP Quick tip - search across sites under a SharePoint hub site. SharePoint Hub Sites are an important aspect of building a modern digital workplace on Office 365. They provide a way of relating sites to each other, and since a modern SharePoint intranet is built from a flat list of sibling site collections which are siblings, suchmechanisms are
CHRIS O'BRIEN: AI IN OFFICE 365 APPS In the last article we talked about some examples of using AI in Office 365, and looked in detail at the the idea of building an incident reporting app which combines common Office 365 building blocks with AI. Whilst Power Apps and SharePoint underpin our solution, we use AI to triage the incident by understanding what is happening in the image. CHRIS O'BRIEN: SHAREPOINT SYNTEX AI SharePoint Syntex, the AI-powered document understanding capability of Office 365 which was previously part of Project Cortex (we'll come to that in a second), provides two approaches to understanding your content in document understanding and form processing.I talked about document understanding in two previous articles: CHRIS O'BRIEN: SHAREPOINT SYNTEX That last article in particular is designed to help you understand the difference between the two models and when to use each one. As you read about Syntex you might form the view that "form processing is for things like invoices and order forms and document understanding is for everything else" - certainly some of the guidance infers this. CHRIS O'BRIEN: WEB PART PROPERTIES IN THE SHAREPOINT There are lots of out-of-the-box controls you can use when implementing web part properties in the SharePoint Framework. In this post we looked at the Button, Slider, Toggle, ChoiceGroup and Link controls – but there are others too, including Textbox, Dropdown and Checkbox controls which I wrote about earlier. CHRIS O'BRIEN: POWERAPPS–THE GOOD, THE BAD AND THE UGLYSEE MORE ON SHAREPOINTNUTSANDBOLTS.COM CHRIS O'BRIEN: MODERN SHAREPOINT PAGES AND TEAM NEWS PAGES Modern pages are now in SharePoint team sites in Office 365, and this includes the new “team news” facility. This is a simple way of creating news articles within a team site - it’s no replacement for an organization-wide intranet news facility, but it is useful for teams to convey news or other information within their group. And whilst it’s called “news”, of course the pages CHRIS O'BRIEN: WEB PART PROPERTIES IN THE SHAREPOINTSEE MORE ON SHAREPOINTNUTSANDBOLTS.COM CHRIS O'BRIEN: QUICK TIP MyDateFieldInternalName lt formatDateTime (getPastTime (1, 'Month'), 'yyyy-MM-dd') That would filter items to only those older than one month for example. In the Flow designer, this should look like this: Hope that's useful. May all your Flows execute on time and without error! Posted by Chris O'Brien at 20:04. Labels: Power Platform ,SharePoint.
CHRIS O'BRIEN: CHANGES TO CUSTOM ACTIONS AND HANDLING OFSEE MORE ON SHAREPOINTNUTSANDBOLTS.COMCHRIS O'BRIEN
Slide deck and videos - Building AI into Power Platform solutions. This is a quick post to publish some resources I created recently covering considerations for using AI in the Power Platform. They are from a talk I gave at ESPC 2020 (the European CHRIS O'BRIEN: JUNE 2021 Like many families, we have annoying kids who would spend all their time gaming or on screens given half the chance. So, our tyrannical regime approach essentially grants them a certain amount of time per week, with controls put in place through our ISP which allows me to block or allow individual websites. Unfortunately with my ISP (Virgin Media here in the UK) there's no scheduling CHRIS O'BRIEN: END-TO-END GUIDE TO SHAREPOINT SITE DESIGNS Creating the SharePoint app registration To do this, we use SharePoint’s AppRegNew.aspx page to register our app. Remember this authentication approach results in a token that can only be used against SharePoint (as opposed to the Graph or other areas of Office 365), but that’s all we need when templating SharePoint sites – even if it happens to be a site which belongs to a Microsoft Team. CHRIS O'BRIEN: SLIDE DECK AND VIDEOS This is a quick post to publish some resources I created recently covering considerations for using AI in the Power Platform. They are from a talk I gave at ESPC 2020 (the European SharePoint, Microsoft 365 and Azure Conference).. For many people getting into building Power Apps and Power Automate solutions, the obvious first choice is the "AI Builder" capability which comes as part of the CHRIS O'BRIEN: USING AZURE DEVOPS TO RUN AGILE DEVELOPMENT The main differences are the workflow states (e.g. New, Active, Resolved, Closed, Removed for Agile, but use of Approved and Committed for Scrum, where the dev team has to "commit" to doing those tasks in this sprint) and whether user stories are used in planning. The Choose a process page in the DevOps documentation is your guide here. CHRIS O'BRIEN: WEB PART PROPERTIES IN THE SHAREPOINT Web part properties in the SharePoint Framework – part 1. Modern SharePoint pages have a new web part editing experience. This is powered by modern web parts and the new SharePoint Framework (SPFx), and developers who wish to work with these new pages need to understand the new model. As you start to build modern web parts,you’ll find the
CHRIS O'BRIEN: QUICK TIP MyDateFieldInternalName lt formatDateTime (getPastTime (1, 'Month'), 'yyyy-MM-dd') That would filter items to only those older than one month for example. In the Flow designer, this should look like this: Hope that's useful. May all your Flows execute on time and without error! Posted by Chris O'Brien at 20:04. Labels: Power Platform ,SharePoint.
CHRIS O'BRIEN: CREATE MICROSOFT TEAMS FROM A TEMPLATE One thing we’ve been waiting for is the ability to create many Teams from a template, in the same way that many organisations do with SharePoint sites. Microsoft have now released this (in preview at the time of writing), and we can define a template in JSON defining exactly what the Team should look like, including the channels, tabs CHRIS O'BRIEN: AVOIDING DEPENDENCY ISSUES IN SHAREPOINT Chris O'Brien I specialise in helping organisations get the most out of Microsoft 365 and and other Microsoft cloud technologies. I'm the Products and Services Director at Content+Cloud in London, UK, where I work with extremely talented colleagues across clients in many different sectors. I've worked with Microsoft technologies for around 19 years, and have received the MVP award for the last CHRIS O'BRIEN: USING CSOM IN POWERSHELL SCRIPTS WITH In my recent “Office 365 developer decisions, tips and tricks” talk I mentioned that we’d been doing a lot of “PowerShell with CSOM” work, and this was enabling us to run scripts against SharePoint Online in the same way that we are used to (for on-premises SharePoint). This is becoming a popular approach, but since I got questions on it I thought it worth writing about. CHRIS O'BRIEN: QUICK TIP Quick tip - search across sites under a SharePoint hub site. SharePoint Hub Sites are an important aspect of building a modern digital workplace on Office 365. They provide a way of relating sites to each other, and since a modern SharePoint intranet is built from a flat list of sibling site collections which are siblings, suchmechanisms are
CHRIS O'BRIEN: AI IN OFFICE 365 APPS In the last article we talked about some examples of using AI in Office 365, and looked in detail at the the idea of building an incident reporting app which combines common Office 365 building blocks with AI. Whilst Power Apps and SharePoint underpin our solution, we use AI to triage the incident by understanding what is happening in the image. CHRIS O'BRIEN: SHAREPOINT SYNTEX AI SharePoint Syntex, the AI-powered document understanding capability of Office 365 which was previously part of Project Cortex (we'll come to that in a second), provides two approaches to understanding your content in document understanding and form processing.I talked about document understanding in two previous articles: CHRIS O'BRIEN: SHAREPOINT SYNTEX That last article in particular is designed to help you understand the difference between the two models and when to use each one. As you read about Syntex you might form the view that "form processing is for things like invoices and order forms and document understanding is for everything else" - certainly some of the guidance infers this. CHRIS O'BRIEN: WEB PART PROPERTIES IN THE SHAREPOINT There are lots of out-of-the-box controls you can use when implementing web part properties in the SharePoint Framework. In this post we looked at the Button, Slider, Toggle, ChoiceGroup and Link controls – but there are others too, including Textbox, Dropdown and Checkbox controls which I wrote about earlier. CHRIS O'BRIEN: POWERAPPS–THE GOOD, THE BAD AND THE UGLYSEE MORE ON SHAREPOINTNUTSANDBOLTS.COM CHRIS O'BRIEN: MODERN SHAREPOINT PAGES AND TEAM NEWS PAGES Modern pages are now in SharePoint team sites in Office 365, and this includes the new “team news” facility. This is a simple way of creating news articles within a team site - it’s no replacement for an organization-wide intranet news facility, but it is useful for teams to convey news or other information within their group. And whilst it’s called “news”, of course the pages CHRIS O'BRIEN: WEB PART PROPERTIES IN THE SHAREPOINTSEE MORE ON SHAREPOINTNUTSANDBOLTS.COM CHRIS O'BRIEN: QUICK TIP MyDateFieldInternalName lt formatDateTime (getPastTime (1, 'Month'), 'yyyy-MM-dd') That would filter items to only those older than one month for example. In the Flow designer, this should look like this: Hope that's useful. May all your Flows execute on time and without error! Posted by Chris O'Brien at 20:04. Labels: Power Platform ,SharePoint.
CHRIS O'BRIEN: CHANGES TO CUSTOM ACTIONS AND HANDLING OFSEE MORE ON SHAREPOINTNUTSANDBOLTS.COM CHRIS O'BRIEN: QUICK TIP Quick tip - search across sites under a SharePoint hub site. SharePoint Hub Sites are an important aspect of building a modern digital workplace on Office 365. They provide a way of relating sites to each other, and since a modern SharePoint intranet is built from a flat list of sibling site collections which are siblings, suchmechanisms are
CHRIS O'BRIEN: AI IN OFFICE 365 APPS In the last article we talked about some examples of using AI in Office 365, and looked in detail at the the idea of building an incident reporting app which combines common Office 365 building blocks with AI. Whilst Power Apps and SharePoint underpin our solution, we use AI to triage the incident by understanding what is happening in the image. CHRIS O'BRIEN: SHAREPOINT SYNTEX AI SharePoint Syntex, the AI-powered document understanding capability of Office 365 which was previously part of Project Cortex (we'll come to that in a second), provides two approaches to understanding your content in document understanding and form processing.I talked about document understanding in two previous articles: CHRIS O'BRIEN: SHAREPOINT SYNTEX That last article in particular is designed to help you understand the difference between the two models and when to use each one. As you read about Syntex you might form the view that "form processing is for things like invoices and order forms and document understanding is for everything else" - certainly some of the guidance infers this. CHRIS O'BRIEN: WEB PART PROPERTIES IN THE SHAREPOINT There are lots of out-of-the-box controls you can use when implementing web part properties in the SharePoint Framework. In this post we looked at the Button, Slider, Toggle, ChoiceGroup and Link controls – but there are others too, including Textbox, Dropdown and Checkbox controls which I wrote about earlier. CHRIS O'BRIEN: POWERAPPS–THE GOOD, THE BAD AND THE UGLYSEE MORE ON SHAREPOINTNUTSANDBOLTS.COM CHRIS O'BRIEN: MODERN SHAREPOINT PAGES AND TEAM NEWS PAGES Modern pages are now in SharePoint team sites in Office 365, and this includes the new “team news” facility. This is a simple way of creating news articles within a team site - it’s no replacement for an organization-wide intranet news facility, but it is useful for teams to convey news or other information within their group. And whilst it’s called “news”, of course the pages CHRIS O'BRIEN: WEB PART PROPERTIES IN THE SHAREPOINTSEE MORE ON SHAREPOINTNUTSANDBOLTS.COM CHRIS O'BRIEN: QUICK TIP MyDateFieldInternalName lt formatDateTime (getPastTime (1, 'Month'), 'yyyy-MM-dd') That would filter items to only those older than one month for example. In the Flow designer, this should look like this: Hope that's useful. May all your Flows execute on time and without error! Posted by Chris O'Brien at 20:04. Labels: Power Platform ,SharePoint.
CHRIS O'BRIEN: CHANGES TO CUSTOM ACTIONS AND HANDLING OFSEE MORE ON SHAREPOINTNUTSANDBOLTS.COMCHRIS O'BRIEN
Slide deck and videos - Building AI into Power Platform solutions. This is a quick post to publish some resources I created recently covering considerations for using AI in the Power Platform. They are from a talk I gave at ESPC 2020 (the European CHRIS O'BRIEN: JUNE 2021 Like many families, we have annoying kids who would spend all their time gaming or on screens given half the chance. So, our tyrannical regime approach essentially grants them a certain amount of time per week, with controls put in place through our ISP which allows me to block or allow individual websites. Unfortunately with my ISP (Virgin Media here in the UK) there's no scheduling CHRIS O'BRIEN: END-TO-END GUIDE TO SHAREPOINT SITE DESIGNS Creating the SharePoint app registration To do this, we use SharePoint’s AppRegNew.aspx page to register our app. Remember this authentication approach results in a token that can only be used against SharePoint (as opposed to the Graph or other areas of Office 365), but that’s all we need when templating SharePoint sites – even if it happens to be a site which belongs to a Microsoft Team. CHRIS O'BRIEN: SLIDE DECK AND VIDEOS This is a quick post to publish some resources I created recently covering considerations for using AI in the Power Platform. They are from a talk I gave at ESPC 2020 (the European SharePoint, Microsoft 365 and Azure Conference).. For many people getting into building Power Apps and Power Automate solutions, the obvious first choice is the "AI Builder" capability which comes as part of the CHRIS O'BRIEN: USING AZURE DEVOPS TO RUN AGILE DEVELOPMENT The main differences are the workflow states (e.g. New, Active, Resolved, Closed, Removed for Agile, but use of Approved and Committed for Scrum, where the dev team has to "commit" to doing those tasks in this sprint) and whether user stories are used in planning. The Choose a process page in the DevOps documentation is your guide here. CHRIS O'BRIEN: WEB PART PROPERTIES IN THE SHAREPOINT Web part properties in the SharePoint Framework – part 1. Modern SharePoint pages have a new web part editing experience. This is powered by modern web parts and the new SharePoint Framework (SPFx), and developers who wish to work with these new pages need to understand the new model. As you start to build modern web parts,you’ll find the
CHRIS O'BRIEN: QUICK TIP MyDateFieldInternalName lt formatDateTime (getPastTime (1, 'Month'), 'yyyy-MM-dd') That would filter items to only those older than one month for example. In the Flow designer, this should look like this: Hope that's useful. May all your Flows execute on time and without error! Posted by Chris O'Brien at 20:04. Labels: Power Platform ,SharePoint.
CHRIS O'BRIEN: CREATE MICROSOFT TEAMS FROM A TEMPLATE One thing we’ve been waiting for is the ability to create many Teams from a template, in the same way that many organisations do with SharePoint sites. Microsoft have now released this (in preview at the time of writing), and we can define a template in JSON defining exactly what the Team should look like, including the channels, tabs CHRIS O'BRIEN: AVOIDING DEPENDENCY ISSUES IN SHAREPOINT Chris O'Brien I specialise in helping organisations get the most out of Microsoft 365 and and other Microsoft cloud technologies. I'm the Products and Services Director at Content+Cloud in London, UK, where I work with extremely talented colleagues across clients in many different sectors. I've worked with Microsoft technologies for around 19 years, and have received the MVP award for the last CHRIS O'BRIEN: USING CSOM IN POWERSHELL SCRIPTS WITH In my recent “Office 365 developer decisions, tips and tricks” talk I mentioned that we’d been doing a lot of “PowerShell with CSOM” work, and this was enabling us to run scripts against SharePoint Online in the same way that we are used to (for on-premises SharePoint). This is becoming a popular approach, but since I got questions on it I thought it worth writing about. CHRIS O'BRIEN: QUICK TIP Quick tip - search across sites under a SharePoint hub site. SharePoint Hub Sites are an important aspect of building a modern digital workplace on Office 365. They provide a way of relating sites to each other, and since a modern SharePoint intranet is built from a flat list of sibling site collections which are siblings, suchmechanisms are
CHRIS O'BRIEN: SHAREPOINT SYNTEX That last article in particular is designed to help you understand the difference between the two models and when to use each one. As you read about Syntex you might form the view that "form processing is for things like invoices and order forms and document understanding is for everything else" - certainly some of the guidance infers this. CHRIS O'BRIEN: USING AZURE DEVOPS TO RUN AGILE DEVELOPMENT The main differences are the workflow states (e.g. New, Active, Resolved, Closed, Removed for Agile, but use of Approved and Committed for Scrum, where the dev team has to "commit" to doing those tasks in this sprint) and whether user stories are used in planning. The Choose a process page in the DevOps documentation is your guide here. CHRIS O'BRIEN: WEB PART PROPERTIES IN THE SHAREPOINT There are lots of out-of-the-box controls you can use when implementing web part properties in the SharePoint Framework. In this post we looked at the Button, Slider, Toggle, ChoiceGroup and Link controls – but there are others too, including Textbox, Dropdown and Checkbox controls which I wrote about earlier. CHRIS O'BRIEN: IGNITE 2021 ANNOUNCEMENTS SUMMARY Microsoft announced a lot of changes and enhancements to their cloud products this month at Ignite, their major conference. Keeping up with the firehose of constant change is difficult at the best of times, but the flurry of announcements at these events - not to mention minor updates masquerading as major announcements - only makes it moredifficult.
CHRIS O'BRIEN: MODERN SHAREPOINT PAGES AND TEAM NEWS PAGES Modern pages are now in SharePoint team sites in Office 365, and this includes the new “team news” facility. This is a simple way of creating news articles within a team site - it’s no replacement for an organization-wide intranet news facility, but it is useful for teams to convey news or other information within their group. And whilst it’s called “news”, of course the pages CHRIS O'BRIEN: QUICK TIP MyDateFieldInternalName lt formatDateTime (getPastTime (1, 'Month'), 'yyyy-MM-dd') That would filter items to only those older than one month for example. In the Flow designer, this should look like this: Hope that's useful. May all your Flows execute on time and without error! Posted by Chris O'Brien at 20:04. Labels: Power Platform ,SharePoint.
CHRIS O'BRIEN: POWERAPPS–THE GOOD, THE BAD AND THE UGLYSEE MORE ON SHAREPOINTNUTSANDBOLTS.COM CHRIS O'BRIEN: DEBUGGING ERRORS IN SHAREPOINT ADD-IN (APP Take the add-in package and deploy it to the SharePoint add-in catalog for your environment (be in Office 365 or on-premises SharePoint). Drag the .app file into the catalog, and add any additional details (e.g. add-in description, screenshots etc.) to the list item for the file. The add-in is now available to be installed to SharePoint sites. CHRIS O'BRIEN: RUNNING A POWERSHELL SCRIPT IN THE CLOUD We all know that Azure Functions are really useful in many Office 365 scenarios, and this goes beyond developers. IT Pros can certainly benefit from the ability to run a script in the cloud – perhaps it’s something you want to run every hour, day or week on a schedule, and maybe you want to use PnP PowerShell too for its awesome commands around managing Groups/Teams, provisioning of CHRIS O'BRIEN: QUICK TIP Quick tip - search across sites under a SharePoint hub site. SharePoint Hub Sites are an important aspect of building a modern digital workplace on Office 365. They provide a way of relating sites to each other, and since a modern SharePoint intranet is built from a flat list of sibling site collections which are siblings, suchmechanisms are
CHRIS O'BRIEN: SHAREPOINT SYNTEX That last article in particular is designed to help you understand the difference between the two models and when to use each one. As you read about Syntex you might form the view that "form processing is for things like invoices and order forms and document understanding is for everything else" - certainly some of the guidance infers this. CHRIS O'BRIEN: USING AZURE DEVOPS TO RUN AGILE DEVELOPMENT The main differences are the workflow states (e.g. New, Active, Resolved, Closed, Removed for Agile, but use of Approved and Committed for Scrum, where the dev team has to "commit" to doing those tasks in this sprint) and whether user stories are used in planning. The Choose a process page in the DevOps documentation is your guide here. CHRIS O'BRIEN: WEB PART PROPERTIES IN THE SHAREPOINT There are lots of out-of-the-box controls you can use when implementing web part properties in the SharePoint Framework. In this post we looked at the Button, Slider, Toggle, ChoiceGroup and Link controls – but there are others too, including Textbox, Dropdown and Checkbox controls which I wrote about earlier. CHRIS O'BRIEN: IGNITE 2021 ANNOUNCEMENTS SUMMARY Microsoft announced a lot of changes and enhancements to their cloud products this month at Ignite, their major conference. Keeping up with the firehose of constant change is difficult at the best of times, but the flurry of announcements at these events - not to mention minor updates masquerading as major announcements - only makes it moredifficult.
CHRIS O'BRIEN: MODERN SHAREPOINT PAGES AND TEAM NEWS PAGES Modern pages are now in SharePoint team sites in Office 365, and this includes the new “team news” facility. This is a simple way of creating news articles within a team site - it’s no replacement for an organization-wide intranet news facility, but it is useful for teams to convey news or other information within their group. And whilst it’s called “news”, of course the pages CHRIS O'BRIEN: QUICK TIP MyDateFieldInternalName lt formatDateTime (getPastTime (1, 'Month'), 'yyyy-MM-dd') That would filter items to only those older than one month for example. In the Flow designer, this should look like this: Hope that's useful. May all your Flows execute on time and without error! Posted by Chris O'Brien at 20:04. Labels: Power Platform ,SharePoint.
CHRIS O'BRIEN: POWERAPPS–THE GOOD, THE BAD AND THE UGLYSEE MORE ON SHAREPOINTNUTSANDBOLTS.COM CHRIS O'BRIEN: DEBUGGING ERRORS IN SHAREPOINT ADD-IN (APP Take the add-in package and deploy it to the SharePoint add-in catalog for your environment (be in Office 365 or on-premises SharePoint). Drag the .app file into the catalog, and add any additional details (e.g. add-in description, screenshots etc.) to the list item for the file. The add-in is now available to be installed to SharePoint sites. CHRIS O'BRIEN: RUNNING A POWERSHELL SCRIPT IN THE CLOUD We all know that Azure Functions are really useful in many Office 365 scenarios, and this goes beyond developers. IT Pros can certainly benefit from the ability to run a script in the cloud – perhaps it’s something you want to run every hour, day or week on a schedule, and maybe you want to use PnP PowerShell too for its awesome commands around managing Groups/Teams, provisioning of CHRIS O'BRIEN: JUNE 2021 Like many families, we have annoying kids who would spend all their time gaming or on screens given half the chance. So, our tyrannical regime approach essentially grants them a certain amount of time per week, with controls put in place through our ISP which allows me to block or allow individual websites. Unfortunately with my ISP (Virgin Media here in the UK) there's no schedulingCHRIS O'BRIEN: 2020
Enabling technology - Azure Cognitive Services - Computer Vision API. 2. Use AI to extract entities, key phrases and sentiment from your documents. We live in a world of documents, and in the Microsoft 365 world this generally means many Teams and SharePoint sites full of documents, usually with minimal tagging or metadata. CHRIS O'BRIEN: SHAREPOINT SYNTEX AI SharePoint Syntex, the AI-powered document understanding capability of Office 365 which was previously part of Project Cortex (we'll come to that in a second), provides two approaches to understanding your content in document understanding and form processing.I talked about document understanding in two previous articles: CHRIS O'BRIEN: USING AZURE DEVOPS TO MANAGE TEAMWORK Setting up an Azure DevOps project. In the video below, I demonstrate starting from nothing - creating a new DevOps project, and then adding some issues and tasks to assign to team members. I think it gives a good feel for the user experience of working with items and using some of the collaborative features: YouTube. Chris O'Brien. CHRIS O'BRIEN: DEBUGGING ERRORS IN SHAREPOINT ADD-IN (APP Take the add-in package and deploy it to the SharePoint add-in catalog for your environment (be in Office 365 or on-premises SharePoint). Drag the .app file into the catalog, and add any additional details (e.g. add-in description, screenshots etc.) to the list item for the file. The add-in is now available to be installed to SharePoint sites. CHRIS O'BRIEN: RUNNING A POWERSHELL SCRIPT IN THE CLOUD We all know that Azure Functions are really useful in many Office 365 scenarios, and this goes beyond developers. IT Pros can certainly benefit from the ability to run a script in the cloud – perhaps it’s something you want to run every hour, day or week on a schedule, and maybe you want to use PnP PowerShell too for its awesome commands around managing Groups/Teams, provisioning of CHRIS O'BRIEN: LICENSING FOR PUSH NOTIFICATIONS IN The answer. In fact, it depends on how your Flow is triggered – since it can be done by a user action, or indirectly through an event: Triggered. Who needs the license. License type required. Manually. Any user of the app which triggered the Flow (e.g. your PowerApp, Flow button or other app) Flow is triggered by PowerApp –> PowerApps P1 CHRIS O'BRIEN: CHANGES TO CUSTOM ACTIONS AND HANDLING OF Chris O'Brien I specialise in helping organisations get the most out of Microsoft 365 and and other Microsoft cloud technologies. I'm the Products and Services Director at Content+Cloud in London, UK, where I work with extremely talented colleagues across clients in many different sectors. I've worked with Microsoft technologies for around 19 years, and have received the MVP award for the last CHRIS O'BRIEN: USING CSOM IN POWERSHELL SCRIPTS WITH In my recent “Office 365 developer decisions, tips and tricks” talk I mentioned that we’d been doing a lot of “PowerShell with CSOM” work, and this was enabling us to run scripts against SharePoint Online in the same way that we are used to (for on-premises SharePoint). This is becoming a popular approach, but since I got questions on it I thought it worth writing about. CHRIS O'BRIEN: SPDATASOURCE SPDataSource - every SharePoint developer's friend (part 1) Sooner or later, nearly every SharePoint developer needs to write code to retrieve all the items from a list and display them - either on the page, or often in a control like a dropdown list control. An example could be retrieving a list of countries, or perhaps person titles fora
CHRIS O'BRIEN
Slide deck and videos - Building AI into Power Platform solutions. This is a quick post to publish some resources I created recently covering considerations for using AI in the Power Platform. They are from a talk I gave at ESPC 2020 (the European CHRIS O'BRIEN: QUICK TIP Quick tip - search across sites under a SharePoint hub site. SharePoint Hub Sites are an important aspect of building a modern digital workplace on Office 365. They provide a way of relating sites to each other, and since a modern SharePoint intranet is built from a flat list of sibling site collections which are siblings, suchmechanisms are
CHRIS O'BRIEN: AI IN OFFICE 365 APPS In the last article we talked about some examples of using AI in Office 365, and looked in detail at the the idea of building an incident reporting app which combines common Office 365 building blocks with AI. Whilst Power Apps and SharePoint underpin our solution, we use AI to triage the incident by understanding what is happening in the image. CHRIS O'BRIEN: MODERN SHAREPOINT PAGES AND TEAM NEWS PAGESSHAREPOINT MODERN PAGES WEB PARTSSHAREPOINT ONLINE MODERN PAGESCREATE MODERN SHAREPOINT PAGESHAREPOINT ONLINE MODERN PAGE LAYOUTSHAREPOINT PAGE TEMPLATESSWITCH TO MODERN SHAREPOINT Modern pages are now in SharePoint team sites in Office 365, and this includes the new “team news” facility. This is a simple way of creating news articles within a team site - it’s no replacement for an organization-wide intranet news facility, but it is useful for teams to convey news or other information within their group. And whilst it’s called “news”, of course the pages CHRIS O'BRIEN: POWERAPPS–THE GOOD, THE BAD AND THE UGLYSEE MORE ON SHAREPOINTNUTSANDBOLTS.COMGOOD BAD AND THE UGLY SONGGOOD BAD THE UGLYGOOD BAD AND UGLY FILMWATCH GOOD BAD AND UGLY FREEYOUTUBE GOOD BAD UGLYGOOD BAD UGLY CAST CHRIS O'BRIEN: WEB PART PROPERTIES IN THE SHAREPOINT There are lots of out-of-the-box controls you can use when implementing web part properties in the SharePoint Framework. In this post we looked at the Button, Slider, Toggle, ChoiceGroup and Link controls – but there are others too, including Textbox, Dropdown and Checkbox controls which I wrote about earlier. CHRIS O'BRIEN: LICENSING FOR PUSH NOTIFICATIONS INSEE MORE ON SHAREPOINTNUTSANDBOLTS.COM CHRIS O'BRIEN: RUNNING A POWERSHELL SCRIPT IN THE CLOUD We all know that Azure Functions are really useful in many Office 365 scenarios, and this goes beyond developers. IT Pros can certainly benefit from the ability to run a script in the cloud – perhaps it’s something you want to run every hour, day or week on a schedule, and maybe you want to use PnP PowerShell too for its awesome commands around managing Groups/Teams, provisioning of CHRIS O'BRIEN: USING CSOM IN POWERSHELL SCRIPTS WITHSEE MORE ON SHAREPOINTNUTSANDBOLTS.COM CUSTOM CODE IN THE SITE CREATION PROCESS So if you don't want to use VSeWSS to create site definitions, this is the technique to use to add your custom code to the site creation process. In terms of what that code might look like, a 'Hello World' example could be: public void OnActivated ( SPFeatureReceiverProperties properties) {. SPWeb currentWeb = null;CHRIS O'BRIEN
Slide deck and videos - Building AI into Power Platform solutions. This is a quick post to publish some resources I created recently covering considerations for using AI in the Power Platform. They are from a talk I gave at ESPC 2020 (the European CHRIS O'BRIEN: QUICK TIP Quick tip - search across sites under a SharePoint hub site. SharePoint Hub Sites are an important aspect of building a modern digital workplace on Office 365. They provide a way of relating sites to each other, and since a modern SharePoint intranet is built from a flat list of sibling site collections which are siblings, suchmechanisms are
CHRIS O'BRIEN: AI IN OFFICE 365 APPS In the last article we talked about some examples of using AI in Office 365, and looked in detail at the the idea of building an incident reporting app which combines common Office 365 building blocks with AI. Whilst Power Apps and SharePoint underpin our solution, we use AI to triage the incident by understanding what is happening in the image. CHRIS O'BRIEN: MODERN SHAREPOINT PAGES AND TEAM NEWS PAGESSHAREPOINT MODERN PAGES WEB PARTSSHAREPOINT ONLINE MODERN PAGESCREATE MODERN SHAREPOINT PAGESHAREPOINT ONLINE MODERN PAGE LAYOUTSHAREPOINT PAGE TEMPLATESSWITCH TO MODERN SHAREPOINT Modern pages are now in SharePoint team sites in Office 365, and this includes the new “team news” facility. This is a simple way of creating news articles within a team site - it’s no replacement for an organization-wide intranet news facility, but it is useful for teams to convey news or other information within their group. And whilst it’s called “news”, of course the pages CHRIS O'BRIEN: POWERAPPS–THE GOOD, THE BAD AND THE UGLYSEE MORE ON SHAREPOINTNUTSANDBOLTS.COMGOOD BAD AND THE UGLY SONGGOOD BAD THE UGLYGOOD BAD AND UGLY FILMWATCH GOOD BAD AND UGLY FREEYOUTUBE GOOD BAD UGLYGOOD BAD UGLY CAST CHRIS O'BRIEN: WEB PART PROPERTIES IN THE SHAREPOINT There are lots of out-of-the-box controls you can use when implementing web part properties in the SharePoint Framework. In this post we looked at the Button, Slider, Toggle, ChoiceGroup and Link controls – but there are others too, including Textbox, Dropdown and Checkbox controls which I wrote about earlier. CHRIS O'BRIEN: LICENSING FOR PUSH NOTIFICATIONS INSEE MORE ON SHAREPOINTNUTSANDBOLTS.COM CHRIS O'BRIEN: RUNNING A POWERSHELL SCRIPT IN THE CLOUD We all know that Azure Functions are really useful in many Office 365 scenarios, and this goes beyond developers. IT Pros can certainly benefit from the ability to run a script in the cloud – perhaps it’s something you want to run every hour, day or week on a schedule, and maybe you want to use PnP PowerShell too for its awesome commands around managing Groups/Teams, provisioning of CHRIS O'BRIEN: USING CSOM IN POWERSHELL SCRIPTS WITHSEE MORE ON SHAREPOINTNUTSANDBOLTS.COM CUSTOM CODE IN THE SITE CREATION PROCESS So if you don't want to use VSeWSS to create site definitions, this is the technique to use to add your custom code to the site creation process. In terms of what that code might look like, a 'Hello World' example could be: public void OnActivated ( SPFeatureReceiverProperties properties) {. SPWeb currentWeb = null; CHRIS O'BRIEN: PROJECT CORTEX Syntex requires you to add at least 5 files which match the document type you're working with, and at least 1 which isn't. However, the best idea is to gather up and add more than 6 files because you'll use them in two steps: Labelling at least 6 files during initial training. Using the remaining unlabelled files to test your model. CHRIS O'BRIEN: IGNITE 2021 ANNOUNCEMENTS SUMMARY Microsoft announced a lot of changes and enhancements to their cloud products this month at Ignite, their major conference. Keeping up with the firehose of constant change is difficult at the best of times, but the flurry of announcements at these events - not to mention minor updates masquerading as major announcements - only makes it moredifficult.
CHRIS O'BRIEN: USING AZURE DEVOPS TO RUN AGILE DEVELOPMENT The main differences are the workflow states (e.g. New, Active, Resolved, Closed, Removed for Agile, but use of Approved and Committed for Scrum, where the dev team has to "commit" to doing those tasks in this sprint) and whether user stories are used in planning. The Choose a process page in the DevOps documentation is your guide here. CHRIS O'BRIEN: WEB PART PROPERTIES IN THE SHAREPOINT Web part properties in the SharePoint Framework – part 1. Modern SharePoint pages have a new web part editing experience. This is powered by modern web parts and the new SharePoint Framework (SPFx), and developers who wish to work with these new pages need to understand the new model. As you start to build modern web parts,you’ll find the
CHRIS O'BRIEN: QUICK TIP MyDateFieldInternalName lt formatDateTime (getPastTime (1, 'Month'), 'yyyy-MM-dd') That would filter items to only those older than one month for example. In the Flow designer, this should look like this: Hope that's useful. May all your Flows execute on time and without error! Posted by Chris O'Brien at 20:04. Labels: Power Platform ,SharePoint.
CHRIS O'BRIEN: 3 WAYS TO CREATE AND DEBUG AZURE FUNCTIONS PROCESS: Creating a function in VS Code is easy: First, create a folder on your machine to host the files – I named my folder “COB-JS-Functions” to reflect what we’re doing here. Open VS Code to this folder. Hit CTRL SHIFT + P for the VS Code command bar, and start typing “Azure Functions” to pull up those commands. CHRIS O'BRIEN: DEBUGGING ERRORS IN SHAREPOINT ADD-IN (APP Take the add-in package and deploy it to the SharePoint add-in catalog for your environment (be in Office 365 or on-premises SharePoint). Drag the .app file into the catalog, and add any additional details (e.g. add-in description, screenshots etc.) to the list item for the file. The add-in is now available to be installed to SharePoint sites. CHRIS O'BRIEN: CREATE MICROSOFT TEAMS FROM A TEMPLATE One thing we’ve been waiting for is the ability to create many Teams from a template, in the same way that many organisations do with SharePoint sites. Microsoft have now released this (in preview at the time of writing), and we can define a template in JSON defining exactly what the Team should look like, including the channels, tabs CUSTOM CODE IN THE SITE CREATION PROCESS Notably, this is the ID of the Feature which is hooked up to the Feature receiver. Using Reflector on the assembly containing the Feature receiver shows that the main event-handler method performs some processing and then calls into the OnActivated method shown above, i.e. the place where VSeWSS provides for you to add your own code to execute when sites are created. CHRIS O'BRIEN: CHANGES TO CUSTOM ACTIONS AND HANDLING OF Chris O'Brien I specialise in helping organisations get the most out of Microsoft 365 and and other Microsoft cloud technologies. I'm the Products and Services Director at Content+Cloud in London, UK, where I work with extremely talented colleagues across clients in many different sectors. I've worked with Microsoft technologies for around 19 years, and have received the MVP award for the lastCHRIS O'BRIEN
Slide deck and videos - Building AI into Power Platform solutions. This is a quick post to publish some resources I created recently covering considerations for using AI in the Power Platform. They are from a talk I gave at ESPC 2020 (the European CHRIS O'BRIEN: QUICK TIP Quick tip - search across sites under a SharePoint hub site. SharePoint Hub Sites are an important aspect of building a modern digital workplace on Office 365. They provide a way of relating sites to each other, and since a modern SharePoint intranet is built from a flat list of sibling site collections which are siblings, suchmechanisms are
CHRIS O'BRIEN: MODERN SHAREPOINT PAGES AND TEAM NEWS PAGESSHAREPOINT MODERN PAGES WEB PARTSSHAREPOINT ONLINE MODERN PAGESCREATE MODERN SHAREPOINT PAGESHAREPOINT ONLINE MODERN PAGE LAYOUTSHAREPOINT PAGE TEMPLATESSWITCH TO MODERN SHAREPOINT Modern pages are now in SharePoint team sites in Office 365, and this includes the new “team news” facility. This is a simple way of creating news articles within a team site - it’s no replacement for an organization-wide intranet news facility, but it is useful for teams to convey news or other information within their group. And whilst it’s called “news”, of course the pages CHRIS O'BRIEN: POWERAPPS–THE GOOD, THE BAD AND THE UGLYSEE MORE ON SHAREPOINTNUTSANDBOLTS.COMGOOD BAD AND THE UGLY SONGGOOD BAD THE UGLYGOOD BAD AND UGLY FILMWATCH GOOD BAD AND UGLY FREEYOUTUBE GOOD BAD UGLYGOOD BAD UGLY CAST CHRIS O'BRIEN: WEB PART PROPERTIES IN THE SHAREPOINT There are lots of out-of-the-box controls you can use when implementing web part properties in the SharePoint Framework. In this post we looked at the Button, Slider, Toggle, ChoiceGroup and Link controls – but there are others too, including Textbox, Dropdown and Checkbox controls which I wrote about earlier. CHRIS O'BRIEN: DEBUGGING ERRORS IN SHAREPOINT ADD-IN (APPSHAREPOINT ADD IN MODELSHAREPOINT ADD IN MODELSHAREPOINT ADD IN STOREVISUAL STUDIO SHAREPOINT ADD INSHAREPOINT 2013 ADD INSHAREPOINT 2013 ADD IN Take the add-in package and deploy it to the SharePoint add-in catalog for your environment (be in Office 365 or on-premises SharePoint). Drag the .app file into the catalog, and add any additional details (e.g. add-in description, screenshots etc.) to the list item for the file. The add-in is now available to be installed to SharePoint sites. CHRIS O'BRIEN: LICENSING FOR PUSH NOTIFICATIONS INSEE MORE ON SHAREPOINTNUTSANDBOLTS.COM CHRIS O'BRIEN: RUNNING A POWERSHELL SCRIPT IN THE CLOUD We all know that Azure Functions are really useful in many Office 365 scenarios, and this goes beyond developers. IT Pros can certainly benefit from the ability to run a script in the cloud – perhaps it’s something you want to run every hour, day or week on a schedule, and maybe you want to use PnP PowerShell too for its awesome commands around managing Groups/Teams, provisioning of CHRIS O'BRIEN: USING CSOM IN POWERSHELL SCRIPTS WITHSEE MORE ON SHAREPOINTNUTSANDBOLTS.COM CUSTOM CODE IN THE SITE CREATION PROCESS So if you don't want to use VSeWSS to create site definitions, this is the technique to use to add your custom code to the site creation process. In terms of what that code might look like, a 'Hello World' example could be: public void OnActivated ( SPFeatureReceiverProperties properties) {. SPWeb currentWeb = null;CHRIS O'BRIEN
Slide deck and videos - Building AI into Power Platform solutions. This is a quick post to publish some resources I created recently covering considerations for using AI in the Power Platform. They are from a talk I gave at ESPC 2020 (the European CHRIS O'BRIEN: QUICK TIP Quick tip - search across sites under a SharePoint hub site. SharePoint Hub Sites are an important aspect of building a modern digital workplace on Office 365. They provide a way of relating sites to each other, and since a modern SharePoint intranet is built from a flat list of sibling site collections which are siblings, suchmechanisms are
CHRIS O'BRIEN: MODERN SHAREPOINT PAGES AND TEAM NEWS PAGESSHAREPOINT MODERN PAGES WEB PARTSSHAREPOINT ONLINE MODERN PAGESCREATE MODERN SHAREPOINT PAGESHAREPOINT ONLINE MODERN PAGE LAYOUTSHAREPOINT PAGE TEMPLATESSWITCH TO MODERN SHAREPOINT Modern pages are now in SharePoint team sites in Office 365, and this includes the new “team news” facility. This is a simple way of creating news articles within a team site - it’s no replacement for an organization-wide intranet news facility, but it is useful for teams to convey news or other information within their group. And whilst it’s called “news”, of course the pages CHRIS O'BRIEN: POWERAPPS–THE GOOD, THE BAD AND THE UGLYSEE MORE ON SHAREPOINTNUTSANDBOLTS.COMGOOD BAD AND THE UGLY SONGGOOD BAD THE UGLYGOOD BAD AND UGLY FILMWATCH GOOD BAD AND UGLY FREEYOUTUBE GOOD BAD UGLYGOOD BAD UGLY CAST CHRIS O'BRIEN: WEB PART PROPERTIES IN THE SHAREPOINT There are lots of out-of-the-box controls you can use when implementing web part properties in the SharePoint Framework. In this post we looked at the Button, Slider, Toggle, ChoiceGroup and Link controls – but there are others too, including Textbox, Dropdown and Checkbox controls which I wrote about earlier. CHRIS O'BRIEN: DEBUGGING ERRORS IN SHAREPOINT ADD-IN (APPSHAREPOINT ADD IN MODELSHAREPOINT ADD IN MODELSHAREPOINT ADD IN STOREVISUAL STUDIO SHAREPOINT ADD INSHAREPOINT 2013 ADD INSHAREPOINT 2013 ADD IN Take the add-in package and deploy it to the SharePoint add-in catalog for your environment (be in Office 365 or on-premises SharePoint). Drag the .app file into the catalog, and add any additional details (e.g. add-in description, screenshots etc.) to the list item for the file. The add-in is now available to be installed to SharePoint sites. CHRIS O'BRIEN: LICENSING FOR PUSH NOTIFICATIONS INSEE MORE ON SHAREPOINTNUTSANDBOLTS.COM CHRIS O'BRIEN: RUNNING A POWERSHELL SCRIPT IN THE CLOUD We all know that Azure Functions are really useful in many Office 365 scenarios, and this goes beyond developers. IT Pros can certainly benefit from the ability to run a script in the cloud – perhaps it’s something you want to run every hour, day or week on a schedule, and maybe you want to use PnP PowerShell too for its awesome commands around managing Groups/Teams, provisioning of CHRIS O'BRIEN: USING CSOM IN POWERSHELL SCRIPTS WITHSEE MORE ON SHAREPOINTNUTSANDBOLTS.COM CUSTOM CODE IN THE SITE CREATION PROCESS So if you don't want to use VSeWSS to create site definitions, this is the technique to use to add your custom code to the site creation process. In terms of what that code might look like, a 'Hello World' example could be: public void OnActivated ( SPFeatureReceiverProperties properties) {. SPWeb currentWeb = null; CHRIS O'BRIEN: SHAREPOINT SYNTEX That last article in particular is designed to help you understand the difference between the two models and when to use each one. As you read about Syntex you might form the view that "form processing is for things like invoices and order forms and document understanding is for everything else" - certainly some of the guidance infers this. CHRIS O'BRIEN: PROJECT CORTEX Syntex requires you to add at least 5 files which match the document type you're working with, and at least 1 which isn't. However, the best idea is to gather up and add more than 6 files because you'll use them in two steps: Labelling at least 6 files during initial training. Using the remaining unlabelled files to test your model. CHRIS O'BRIEN: IGNITE 2021 ANNOUNCEMENTS SUMMARY Microsoft announced a lot of changes and enhancements to their cloud products this month at Ignite, their major conference. Keeping up with the firehose of constant change is difficult at the best of times, but the flurry of announcements at these events - not to mention minor updates masquerading as major announcements - only makes it moredifficult.
CHRIS O'BRIEN: USING AZURE DEVOPS TO RUN AGILE DEVELOPMENT The main differences are the workflow states (e.g. New, Active, Resolved, Closed, Removed for Agile, but use of Approved and Committed for Scrum, where the dev team has to "commit" to doing those tasks in this sprint) and whether user stories are used in planning. The Choose a process page in the DevOps documentation is your guide here. CHRIS O'BRIEN: WEB PART PROPERTIES IN THE SHAREPOINT Web part properties in the SharePoint Framework – part 1. Modern SharePoint pages have a new web part editing experience. This is powered by modern web parts and the new SharePoint Framework (SPFx), and developers who wish to work with these new pages need to understand the new model. As you start to build modern web parts,you’ll find the
CHRIS O'BRIEN: QUICK TIP MyDateFieldInternalName lt formatDateTime (getPastTime (1, 'Month'), 'yyyy-MM-dd') That would filter items to only those older than one month for example. In the Flow designer, this should look like this: Hope that's useful. May all your Flows execute on time and without error! Posted by Chris O'Brien at 20:04. Labels: Power Platform ,SharePoint.
CHRIS O'BRIEN: 3 WAYS TO CREATE AND DEBUG AZURE FUNCTIONS PROCESS: Creating a function in VS Code is easy: First, create a folder on your machine to host the files – I named my folder “COB-JS-Functions” to reflect what we’re doing here. Open VS Code to this folder. Hit CTRL SHIFT + P for the VS Code command bar, and start typing “Azure Functions” to pull up those commands. CHRIS O'BRIEN: DEBUGGING ERRORS IN SHAREPOINT ADD-IN (APP Take the add-in package and deploy it to the SharePoint add-in catalog for your environment (be in Office 365 or on-premises SharePoint). Drag the .app file into the catalog, and add any additional details (e.g. add-in description, screenshots etc.) to the list item for the file. The add-in is now available to be installed to SharePoint sites. CUSTOM CODE IN THE SITE CREATION PROCESS Notably, this is the ID of the Feature which is hooked up to the Feature receiver. Using Reflector on the assembly containing the Feature receiver shows that the main event-handler method performs some processing and then calls into the OnActivated method shown above, i.e. the place where VSeWSS provides for you to add your own code to execute when sites are created. CHRIS O'BRIEN: CHANGES TO CUSTOM ACTIONS AND HANDLING OF Chris O'Brien I specialise in helping organisations get the most out of Microsoft 365 and and other Microsoft cloud technologies. I'm the Products and Services Director at Content+Cloud in London, UK, where I work with extremely talented colleagues across clients in many different sectors. I've worked with Microsoft technologies for around 19 years, and have received the MVP award for the last skip to main | skip to sidebarCHRIS O'BRIEN
The nuts and bolts of Microsoft 365 and SharePoint MONDAY, 16 NOVEMBER 2020 AUTOMATING LOCATION CHECK-INS WITH POWER AUTOMATE Geofencing is the idea of a location service triggering an action whenever a device (i.e. a user's mobile device) moves in or out of an area, and there are lots of great use cases. On the personal/home automation side, you might want to automatically switch the house lights off and activate the alarm when you leave home (think IFTTT or Zapier if you're familiar with those), and on the work side your employer might provide an app which automatically checks you in (or out) of an office location dependent on your location - as just two examples. I was looking at the latter scenario for our internal desk booking app as part of our "controlled use of offices during Covid"plan.
You can imagine lots of cases where knowing the user's location and whether it has changed can be powerful. The Power Platform has a couple of ways to tap into this. I'd been researching the Location trigger in Power Automate, and this provides a Flow action named "When I enter or exit an area": As is normal with geofencing, you specify a location anywhere in the world and create a radius around it. The location is approximate since GPS on the user's mobile device is used, but it works great for mostpurposes:
Things were working great for a while, but then I ran into this: The Location trigger has been removed from Power Automate! The trigger was only ever in preview, and sadly in the few weeks since I had this article in draft (and had taken the above screenshots) it was removed. At this stage it's unclear whether it will return, and whilst there are traces of it on the internet there are no mentions of it within Microsoft documentation. So that's a shame! To be quite honest, there was a challenge with the trigger anyway in the Power Platform - it could only ever be used for personal Flows, MEANING EACH USER WHO SHOULD USE THE CAPABILITY WOULD NEED TO CREATE THEIR OWN FLOW. Clearly this doesn't work for any kind of business solution provided by an organization, but could still be useful for personal automation. HOW ELSE CAN WE AUTOMATE BASED ON USER LOCATION? The good news is that Power Automate is still able to understand the user's device location. A fully automated solution which is triggered simply by moving in or out of a defined region is no longer possible, BUT IF YOU'RE HAPPY TO HAVE USERS MANUALLY CLICK A BUTTON ON THEIR DEVICE, similar automations are still possible. Indeed, in some scenarios this approach may be _preferred_ so that there's a level of human control and opt-in - allowing the user to avoid triggering a process if the circumstances don't warrant it (e.g. leaving the area radius briefly to pick up lunch). So, let's take a look at how we can build Power Platform apps which account for the user's location. USING FLOW BUTTONS TO LOG A LOCATION VISIT Flow buttons provide a great way to build a mobile app with a super-simple user interface - without having to delve into any kind of coding or the world of NATIVE iOS or Android development. In my example below, I'm using a simple button and a very simple form. But first, the prerequisites. The first requirement for a solution like this is for users to have the Power Automate app installed on their mobile device. Your organization could push it out using a MDM or MAM solution, or it's available in both the Apple and Google app stores: The user will need to sign-in to the app with her Microsoft 365 identity. The other important thing is that location services are enabled on the device for the Power Automate app - an obvious necessity if we are collecting and logging the location. Once in the app, the user would GO TO THE "BUTTONS" AREA IN APP using he navigation bar along the bottom. ANY FLOWS WHICH HAVE BEEN CREATED USING THE "MANUALLY TRIGGER A FLOW" TRIGGER WILL APPEAR IN HERE: In my solution, I have a Flow to log details of a location visit - this is named "Report location status" in the image above, and you can also see some other Flows which also use the the button trigger. As you've probably gathered, these are known as "Flow buttons" and provide a really quick and easy way of manually triggering a process. No need to create and deploy a custom app - instead we can piggy back on what the Power Platform provides. When the button is clicked, some information can be selected to feed into the process. In my example of logging a location visit, the Flow asks for a "status" to be collected: In the case of my solution, when the user submits this "location report" I store the details in a SharePoint list. POWER AUTOMATE HAS DONE THE HARD WORK OF AUTOMATICALLY DERIVING THE USER'S LOCATION AT THE TIME OF PRESSING THE BUTTON, and with a little column formatting magic I can display a small map for the location instead of just theaddress text:
So that's it! With fairly minimal effort in the Power Platform we have a mobile app which can collect the user's location, collect additional information and log it into a central store such as a SharePoint list in Microsoft 365. HOW DO WE BUILD THAT? We've covered what the user would see, but what is needed in Power Automate to create this? We start by creating a Flow with the "Manually trigger a flow" trigger. Notice in my case I've added a single input named "Status", and supplied some help text: You could actually stack several of these inputs and essentially create a mini-form which is presented to the user when they hit the button - which becomes quite powerful when you consider that no coding is required and we don't even need a Power App. The next step in the Flow is simply to log the item to SharePoint. I have a list ready to go with appropriate columns, and I just need to configure the Flow action to store the data in each: The important thing is that several tokens are available from thetrigger, including:
* User name
* User email
* Timestamp
* Date
* fullAddress - this is the full address of the auto-derived locationof your user
* Many address sub-components:* Street
* City
* State
* Postal code
* Country
* Latitude
* Longitude
* Any inputs you have added (e.g. "Status") in my case The final step in my Flow is to send a confirmation to the user that the report was logged successfully: Which results in this appearing on the device: So we've managed to capture the user's location and status report of the location, and confirmed back to them that the data was saved.SUMMARY
The Power Platform has many amazing facilities for building applications, and that's especially the case for simple mobile applications. The ability to tap into device features such as location and the camera mean that you can build very capable apps quickly, without code - and certainly without all the hassles of native app development and distribution. In this post we looked at how Flow buttons can be used to quickly trigger a process from the mobile app, and how to capture the user's location at the time. Unfortunately the "When I enter or exit an area" Power Automate trigger that was in preview hasn't made it to release - but we hope it comes back because that would unlock some great scenarios around automation and the user's location. Come on Microsoft! Posted by Chris O'Brien at 07:100 comments
Links to this post
MONDAY, 21 SEPTEMBER 2020 5 WAYS TO USE AI TO SUPERCHARGE YOUR CONTENT IN MICROSOFT 365 We’re all familiar with increasing rates of data growth, and practically every organization using Microsoft 365 has an ever-growing tenant which is accumulating Teams, sites, documents and other files by the day. The majority of organizations aren’t making the most of this data though – in the worst cases it could just be another digital landfill, but even in the best case the content grows but doesn’t have much around it in terms of intelligent processing or content services. As a result, huge swathes of content go unnoticed, search gives a poor experience and employees struggle to find what they’re looking for. This is significant given that McKinsey believe the average knowledge worker spends nearly 20% of their time looking for internal information or tracking down colleagues who can help withspecific task
s.
At the macro level, this can accumulate to a big drag on organizational productivity – valuable insights are missed, time is lost to searching, and opportunities pass by untapped. In this post, I propose five ways AI can help you get more value fromyour data.
1. USE AI TO ADD TAGS AND DESCRIPTIONS TO YOUR IMAGES SO THEY CAN BESEARCHED
Most organizations have a lot of images - perhaps related to products, events, marketing assets, content for intranet news articles, or perhaps captured by a mobile app or Power Apps solution. The problem with images, of course, is that they cannot be searched easily - if you go looking for a particular image within your intranet or digital workplace, chances are you'll be opening a lot of them to see if it's what you want. Images are rarely tagged, and most often are stored in standard document libraries in Microsoft 365 which don't provide agallery view.
A significant step forward is to use image recognition to automatically add tags and descriptions to your pictures in Microsoft 365. Now, the search engine can do a far better job of returning images - users can enter search terms and perform textual searches rather than relying on your eyeballs and lots of clicks. Certainly, the AI may not autotag your images perfectly - but the chances are that some tagging is better than none. Here are some examples I've used in previous articles to illustrate what you can expect from the Vision API in Azure Cognitive Services:IMAGE
RESULT
IMAGE
RESULT
IMAGE
RESULT
Enabling technology - Azure Cognitive Services - Computer Vision API 2. USE AI TO EXTRACT ENTITIES, KEY PHRASES AND SENTIMENT FROM YOURDOCUMENTS
We live in a world of documents, and in the Microsoft 365 world this generally means many Teams and SharePoint sites full of documents, usually with minimal tagging or metadata. Nobody wants the friction of manually tagging every document they save, and even a well-managed DMS may only provide this in targeted areas. Auto-tagging products have existed for a while but have historically provided poor ROI due to expensive price tags and ineffective algorithms. As a result, the act of searching for information typically involves opening several documents and skimming before finding the details you're looking for. What if we could extract key phrases from documents and known entities (organizations, products, people, concepts etc.) and highlight them next to the title so that the contents are clearer before opening? Technology has moved on, and Azure's Text Analytics API is far superior to the products of the past. In my simple implementation below I'm simply sending each document in a SharePoint library to the API and then storing the resulting key phrases and entities as metadata. I also grab the sentiment score of the document as abonus:
A more advanced implementation might provide links to more information on entities that have been recognized in the document. The Text Analytics API has a very nice capability here - if an entity is recognized that has a page on Wikipedia (e.g. an organization, location, concept, well-known person etc.), the service will detect this and the response data for the item will include a link to theWikipedia page:
There are lots of possibilities there of course! Enabling technology - Azure Cognitive Services - Text Analytics API 3. CREATE SEARCHABLE TRANSCRIPTS FOR OLD CALLS, MEETINGS AND WEBINARS WITH SPEECH-TO-TEXT AI If your company uses Microsoft 365, then Stream is already capable of advanced speech-to-text processing - specifically, the capability which automatically generates a transcript of the spoken audio within a video. This is extremely powerful for recording that important demo or Teams call for others to view later of course. However, not every organization is using Stream - or perhaps there are other reasons why some existing audio or video files shouldn't be published there. In any case, many organizations _do _have lots of this type of content lying around, perhaps from webinars, meetings or old Skype calls. Needless to say, all this voice content is not searchable in any way - so any valuable discussion won't be surfaced when others look for answers with the search engine. That's a huge shame because the spoken insights might be every bit as valuable as those recorded indocuments.
A note on Microsoft Stream transcripts Whilst Stream is bringing incredible capabilities around organizational video, it's worth noting that transcripts are NOT searched by Microsoft 365 search - only by 'Deep Search' in Stream. So if you've honed in on a particular video and want to search within it, Deep Search is effective - but if you're at step one of trying to find content on a particular topic, videos are not currently searched at the global level in this way. Speech-only content comes with other baggage too. As just one example, it may be difficult to consume and understand for anyone whose first language is different from the speaker(s). The Azure Speech Service allows us to perform many operations such as:* Speech-to-text
* Text-to-speech
* Speech translation * Intent recognition More advanced scenarios also include call recording, full conversation transcription, real-time translation and more. In the call center world, products such as Audiocodes and Genesys have been popular and are increasingly integrated with Azure's advanced speech capabilities - indeed, Azure has dedicated real-time call center capabilities thesedays
.
At the simpler end though, if your company does have lots of spoken content which would benefit from transcription you can do this without too much effort. I wrote some sample code against the API and tested a short recording I made with the PC microphone - I don't need to tell you what I said because the API picked it up almost verbatim: If we're splitting hairs, really I said this as one sentence so the first full stop (period) should arguably be a comma. Certainly this was a short and simple recording, but as you can see the recognition level is extremely high - and astonishingly, the API even managed to spell O'Brien correctly! Here's the code required to call the API, largely as described in thedocs:
using System;
using System.Threading.Tasks; using Microsoft.CognitiveServices.Speech; using Microsoft.CognitiveServices.Speech.Audio; namespace COB.SpeechAPI{
class Program
{
private static string WAV_FILEPATH = @"C:\Users\chris.obrien\Documents\Voicemeeter\Recording-_17_.wav"; private static async Task getTextFromSpeech(){
var speechConfig = SpeechConfig.FromSubscription("", ""); // OPTION 1: use pre-recorded WAV file.. var audioConfig = AudioConfig.FromWavFileInput(WAV_FILEPATH); var recognizer = new SpeechRecognizer(speechConfig, audioConfig); // OPTION 2: record from microphone.. //var recognizer = new SpeechRecognizer(speechConfig); //var audioConfig = AudioConfig.FromDefaultMicrophoneInput(); var result = await recognizer.RecognizeOnceAsync(); switch (result.Reason){
case ResultReason.RecognizedSpeech: Console.WriteLine($"RECOGNIZED TEXT: '{result.Text}'");break;
case ResultReason.NoMatch: Console.WriteLine($"NOMATCH: Speech could not be recognized.");break;
case ResultReason.Canceled: var cancellation = CancellationDetails.FromResult(result); Console.WriteLine($"CANCELED: Reason={cancellation.Reason}"); if (cancellation.Reason == CancellationReason.Error){
Console.WriteLine($"CANCELED: ErrorCode={cancellation.ErrorCode}"); Console.WriteLine($"CANCELED: ErrorDetails={cancellation.ErrorDetails}"); Console.WriteLine($"CANCELED: Did you update the subscriptioninfo?");
}
break;
}
}
static void Main(string args){
getTextFromSpeech().Wait();Console.ReadLine();
}
}
}
view raw
GetTextFromSpeech.cs hosted with ❤ by GitHub Enabling technology - Azure Cognitive Services - Speech API (speech-to-text in this case) 4. USE AI TO TRANSLATE DOCUMENTS The case for this one is simple to understand - an organization can have a variety of reasons for translating documents, and AI-based machine translation has advanced sufficiently that it's precise enough for many use cases. Working with international suppliers or clients could be one example, or perhaps it's because search isn't effective enough in a global organization - users are searching in their language, but key content is only available in another language. Azure allows you to translate documents individually or at scale through APIs or scripting, all in a very cost-effective way. I didn't need to build anything to tap into it, since a ready-made front-end exists in the form of the Document Translator appin Github
- once hooked up to my Azure subscription, I'm ready to go. IN THIS TOOL, IF YOU SUPPLY A DOCUMENT YOU GET A COMPLETED DOCUMENT BACK - IN OTHER WORDS, PASS IN A POWERPOINT DECK AND GET A FILE WITH EACH SLIDE TRANSLATED IN RETURN - NO NEED TO PASTE ANYTHING BACK TOGETHER. The Translator capability in Azure Cognitive Services allows you to tap into same translation engine behind Teams, Word, PowerPoint, Bing and many other Microsoft products, BUT ALSO TO BUILD YOUR OWN CUSTOM MODELS TO UNDERSTAND LANGUAGE AND TERMINOLOGY SPECIFIC TO YOUR CASE. My French is a bit rusty, but these look fairly good to me: Translation of documents you already have offers lots of possibilities, with improved search being just one example. But there are many other high-value translation scenarios too, such as real-time speech translation - something that's now possible in Teams LiveEvents
.
With Azure Cognitive Services, it's also possible to build the capability into your own apps without needing to use Teams, and you're tapping into the same back-end underneath. Enabling technology - Azure Cognitive Services - Translator API 5. EXTRACT INFORMATION FROM DOCUMENTS SUCH AS INVOICES, CONTRACTS ANDMORE
In one of the earlier examples we talked about extracting key phrases, entities and sentiment. In some cases though, the valuable content within a document is found within a certain section of the document - perhaps a table, a set of line items or grand total. Every organization in the world has loosely-structured documents such as invoices, contracts, expense receipts and order forms - but often the valuable content is deeply embedded and each document needs to be opened to get to it. With the Forms Recogniser capability in Azure, you can use either pre-built models for common scenarios or train a custom model yourself, allowing the AI to learn your very specific document structure. This is the kind of capability that is coming in Project Cortex (essentially a version of this tightly-integrated with SharePoint document libraries), but it may be more cost-effective to plug into the Azure service yourself.Some examples are:
* FORMS - extract table data or key/value pairs by training with yourforms
* RECEIPTS AND BUSINESS CARDS - use pre-built models from Microsoftfor these
* EXTRACT KNOWN LOCATIONS FROM A DOCUMENT LAYOUT - extract text or tables from specific locations in a document (including handwriting), achieved by highlighting the target areas when training the model So if you have documents like this: ..you could extract the key data and make better use of it (e.g. store as searchable SharePoint metadata or extract into a database to move from unstructured to structured data). Enabling technology - Azure Cognitive Services - Vision API(Form
Recognizer in this case)CONCLUSION
AI is within reach NOW, and many of the above scenarios can be achieved without coding or complex implementation work. There needs to be a person or team somewhere who knows how to stitch together Azure AI building blocks and Microsoft 365 of course, but the complexity and cost barriers are melting away. Beyond the scenarios I present here, lots of value can be found in use cases which _COMBINE _some of the above capabilities with other actions. Some examples where you could potentially roll your own solution rather than invest in an expensive platform could be: * Analyze call transcripts for sentiment (run a speech-to-text translation and then derive sentiment) and provide a Power BI report * Perform image recognition from security cameras and send a push notification or post to a Microsoft Team if something specific isdetected
* Auto-translate the transcript of a CEO speech or townhall event and publish on a regional intranet The AI element of all of these scenarios and more is now easily achieved with Azure. What a time to be in technology! Posted by Chris O'Brien at 05:560 comments
Links to this post
THURSDAY, 30 JULY 2020 USING AZURE DEVOPS TO RUN AGILE DEVELOPMENT SPRINTS In the last post we talked about some fundamentals around USING AZURE DEVOPS FOR TEAMWORK - in particular, the idea that it doesn't need to be development work that's the focus. As I mentioned last time, here at Content and Code we have all sorts of teams using the Boards capability within Azure DevOps - in addition to our development teams, architect and platform/infrastructure teams also manage their project work and week-to-week tasks in the service. It's certainly true that DevOps _is_ primarily targeted at developers though, and there are some great features for teams performing agile development using sprints or iterations. We'll dig into tools such as the sprint board, burndown chart and cumulative flow diagram in this article - all hugely valuable tools to help a team measure their work and continuously improve from sprint to sprint, at least once team members are in the swing of using them. First though, let's think about motivations. WHY DO THIS? WE'VE SURVIVED THIS LONG WITHOUT SOMETHING LIKE AZUREDEVOPS!
Many organizations have development teams who are getting by with approaches they've used for a long time. There are a series of inefficiencies and guesswork that are somewhat invisible, and just accepted as "this is as good as it gets". Symptoms of this include: * Project managers constantly asking for an update * Regular interruptions from colleagues, even other developers on theteam
* Difficulties interpreting why changes were made * Lack of clarity of progress against estimates * No understanding of whether team productivity is improving ordeclining
Azure DevOps isn't the only way to solve these problems, but it _does _provide a platform to address these challenges and it certainly does a lot of the heavy lifting for you. Once the team are working in a certain way, things flow _around _the work items in the system - the need for conversations and interruptions to keep people's work in sync is much reduced, because many of the answers are right there in the system. This even extends to trying to avoid pinging a colleague in Teams (or Slack or other chat tool) and instead having more of the conversation in comments of an Azure DevOps work item with @mentions - this dialogue is probably useful later, either to the participants or others. Stand-ups become much more efficient, and the remaining conversation is high value rather than transactional "when will you be done with X?" type questions. STEP 1 - CREATE A PROJECT AND CHOOSE YOUR PROCESS (E.G. AGILE ORSCRUM)
The first thing you'll need of course, is an Azure DevOps project created using the methodology you prefer. DevOps gives you four main types, but you can customize these to add your own (notice the lasttwo items):
If you're new to these types, I would suggest: * Basic is great for non-development or very simple work with minimal categorization of tasks (still in preview at time of writing) * Agile and Scrum are the most common * CMMI is appropriate for "high-formality" development only The main differences are the workflow states (e.g. New, Active, Resolved, Closed, Removed for Agile, but use of Approved and Committed for Scrum, where the dev team has to "commit" to doing those tasks in this sprint) and whether user stories are used in planning. TheChoose a process
page in the DevOps documentation is your guide here. The next step is to enter your work items into the system. Usually you'll break these down into user stories or features, with tasks underneath. I'm going to skip over this bit because it's relatively simple once you've created the first one, but the Add and update awork item
page provides guidance. ONE OF THE KEY TENETS OF AGILE IS TO CREATE AN OVERALL BACKLOG OF WORK (WHICH IS CONTINUALLY EVOLVING), AND THEN ALLOCATE THIS INTO ITERATIONS/SPRINTS AS YOU GO ALONG. You use a product backlog for the overall programme or project, and a sprint backlog for each iteration. The whole world of backlogs and boards in Azure DevOps is quite deep - see Three classes of backlogs, two types of boardsas
a good primer, but remember that you don't have to use everyfeature.
STEP 2 - SET TEAM CAPACITY AND SET-UP THE SPRINT Once you have an overall product backlog, we're ready to start thinking about chunking the work into individual sprints. I show some of the most important next steps in the video below. The first minute of the video in particular shows: * DEFINING TEAM CAPACITY - telling the system how many hours each team member has available per day * This is critical for DevOps' ability to calculate how much work the team is likely to get done in a certain period. If you haven't told it how many hours are available, how could forecasting ever be possible? You can also set amounts per activity type e.g. design, development, deployment, documentation, testing etc. * USE FORECASTING TOOLS TO ALLOCATE WORK TO THE NEXT SPRINT - the backlog view helps you carve up the work into iterations/sprints by forecasting how much work will fit into the time available. Items are dragged into the sprint to confirm. * Imagine a scenario where you have 2 x 20 hour tasks, compared to one where you have 10 x 4 hour tasks. Clearly there's a big difference here in the number of tasks which would get completed - the forecasting tools help you see this, by drawing a line in the task list at the point where the sprint would end - thus helping the team make decisions about what to bring in to a sprint * In the video I show how adjusting the "velocity" parameter (how fast the team are working) changes how much gets done - you see the line changing position in the list of tasks. The velocity number is is something you tweak over time using data from Azure DevOps From there I show various other features around running a sprint in DevOps - use of the board, updating tasks and so on: The video actually covers _many _different elements of working in sprints, not just the initial setup. Here's a summary of what we justsaw in the video:
So, hopefully the video and commentary conveys some key principles of using Azure DevOps for development sprints. What about some of thetools we can use?
THE BURNDOWN CHART
More formally known as the "Burndown Trend report" in Azure DevOps, the burndown chart is the classic tool to help manage your sprint. It provides the team with a view of progress against the current sprint plan, indicating whether things are ahead of or behind schedule. Here's an example of a real burndown from one of our projects/sprints with a note on some of the indicators: The blue area represents work still to be completed, and the grey line indicates linear progress from start to end of the sprint. Comparing the two helps show where you are against plan. You can use either _remaining hours _or _number of work items _to represent the work remaining, with the former usually making more sense. The sprint above doesn't have non-working days configured, so that would be a nice improvement to show a more accurate picture. For more information on the burndown chart, see Configure and monitorsprint burndown
.
THE CUMULATIVE FLOW DIAGRAM The CFD is a fantastic tool once your team has been working for a period. It helps you understand how work flows the process, inparticular:
* Cycle time - how long an item is active for on average (i.e. from the time someone starts work on the item, to time of completion) * Lead time - average end-to-end time for an item (i.e. from time of item creation to time of completion) I use the slide below as an example of a CFD from one of our projects: Here's a diagram which helps explain some of the various elements: For more information on the Cumulative Flow Diagram, see Cumulative flow, lead time, and cycle time guidance.SUMMARY
Azure DevOps can really propel a development team to achieve more. Notably, some of the benefits come from centralizing updates, discussion and questions around the work items in the system - as opposed to having discussions separately and somewhat out of context (e.g. pinging a colleague in Teams). This doesn't mean that _all _communication happens this way, but a subtle move in this direction can help enormously. Aside from this, it's the following prerequisites which unlock thebenefits:
* Ensuring project tasks (work items) are entered into the system, with effort estimated for each one * Defining a series of iterations (sprints) to break the project upinto time periods
* Regularly updating the "effort remaining" on tasks * Use of the forecasting and analysis tools to continuously improve Hopefully this has been useful. If you didn't catch the first article on DevOps Boards fundamentals, it can be found at: USING AZURE DEVOPS TO MANAGE TEAMWORK Posted by Chris O'Brien at 07:390 comments
Links to this post
TUESDAY, 30 JUNE 2020 USING AZURE DEVOPS TO MANAGE TEAMWORK It's been interesting observing the rise of Azure DevOps in the last couple of years at Content and Code, and in particular, seeing the usage expand beyond the development team. We now have several teams which are _not_ dev-focused using the platform to manage their work - including architecture and platform/infrastructure teams whose work is oriented towards envisioning, design, configuration, security or testing. In many cases, team leaders have been looking for a task management tool somewhere within the Microsoft stack with deeper capabilities than Planner or To Do, and without the heavy project management emphasis of Project Online. In some cases their work involves files (e.g. PowerShell scripts or JSON snippets) but often does not. The common thing is that a team's work needs to be managed - and once introduced to Azure DevOps Boards, everyone seems to love the feature set offered by Boards and the clarity it brings to the work. Being able to understand priorities, who is working on what and how various tasks relate to each other are perhaps fundamental to teamwork but are done very well in DevOps Boards. Being able to stay up-to-date on specific items without chasing the owner starts to change the team dynamic in significant ways - it's amazing how many interruptions can be avoided and how efficient a team can become. OVER THE NEXT COUPLE OF ARTICLES, I WANT TO TALK ABOUT HOW AZURE DEVOPS CAN HELP IN MANY SCENARIOS - NOT JUST FOR ADVANCED DEVELOPMENTTEAMS.
I use the slide below to summarise some of the benefits - this was in a presentation aimed at developers, but it's interesting how only a couple of the points are specific to dev work: By the way, the slide shows a screenshot of the "Work Details" pane in Azure DevOps. This alone is hugely powerful, providing a view of the volume of work assigned to each team members and how this relates to pre-defined limits. The limits come into play by defining the _capacity_ that each person has available in a particular period, meaning that vacations, work on other projects and anything else that takes away from time available to this work can be accounted for - thus keeping forecasts and time management accurate: In addition to the examples in my company of architecture and platform/infrastructure teams, I think there's even a case for small support teams outside of a full ITSM process to use Azure DevOps over other tools - more on that later. Overall, I see a scale of different levels of Azure DevOps usage where only development teams running agile sprints are likely to move to level 2 or 3, but level 1 can work for so many different teams: To unpack that a little, here's an overview of what I mean by those different usage levels: Some of that might not mean too much at the moment, but we'll explore the different areas further in these articles. A CLOSER LOOK AT AZURE DEVOPS BOARDS If you're not familiar with the Boards capability, part of the premise is that the team can see a visual board of a task backlog where an item can simply be dragged to another column to update the status, similar to Post It notes on a physical board (Kanban). This is similar to Trello, Planner or some other task management tools of course. Personally, I love the following features: * Being able to define your own columns - often these will map to an individual item status such as e.g. New, Approved, In Progress etc. but you can also map _multiple_ states to a column such as "Build andTest"
* Being able to define swimlanes to go across the board _horizontally_ - to help categorise items regardless of their state*
Styling rules - some examples I like to implement include: * Changing the card color to red for blocked or overdue items * Highlighting the tag displayed on the card for certain tags - the image above shows any item tagged with "Data" in a yellow highlight so the team can identify those tasks quickly for example * Live updates - meaning that another team members changes are immediately reflected without a page refresh Here's an example of a board showing some of those features: SETTING UP AN AZURE DEVOPS PROJECT In the video below, I demonstrate starting from nothing - creating a new DevOps project, and then adding some issues and tasks to assign to team members. I think it gives a good feel for the user experience of working with items and using some of the collaborative features: Quite a lot of the basic features are shown in this video - defining tasks, tagging, using drag and drop to update an item's status on the board, using collaborative features such as @mentions and "following" to receive update when an item is changed, and more. The elements shown can be summarized into this list, broken down into three areas:SUMMARY
Getting started with Azure DevOps is quick and easy. Licensing is generally considered a good deal for what you get, with the first 5 users free and then $6 per user per month after that. In this post we explored some of the capabilities to support modern teamwork - and my experience is that they really can work amazingly well for a variety of teams. Whilst Azure DevOps has many benefits for developers, we've certainly seen it work well in other contexts too at Content andCode.
Coming back to the different levels of usage, this article and video focuses on the first level ("Simple"): In the next article, I'll cover some of the agile features which help a team run sprints, including use of tools such as the burndown chart Cumulative Flow Diagram - tools which help a team understand their progress through a series of tasks and overall velocity over time: USING AZURE DEVOPS TO MANAGE AGILE SPRINTS Posted by Chris O'Brien at 07:160 comments
Links to this post
MONDAY, 18 MAY 2020
TEAMS AND SHAREPOINT PROVISIONING SOLUTIONS - NEW GROUP.CREATEPERMISSION
It's common for organizations using Office 365 to provide a custom experience for requesting and creating Microsoft Teams and/or SharePoint sites - often giving the ability to select from pre-defined templates, provide metadata and important settings, check for a possible duplicate, implement an approval process and so on. For many, this is key part of governance and provides a more controlled approach than "allow everyone to create and perform some clean-up later". We've been building solution like this for years, and as one example, the workspace request and provisioning capability in our Fresh digital workplace solution has increased in richness and control as Teams has come to prominence and APIs have gotten better. You want WHAT permission in our tenant?? Until recently, there was a big problem with these solutions. Since both Microsoft Teams and SharePoint team sites are underpinned by Office 365 Groups (though not SharePoint communication sites of course), creating either involves creation of an Office 365 Group underneath. Whether a logged-in user or application or tool is performing this step, a very high permission is needed - GROUP.READWRITE.ALL. This is essentially allowing the app to read and write to any Microsoft Team, SharePoint site or Office 365 Group within your entire tenant - think about that for a moment! As you might expect, many security-conscious organizations were reluctant to grant this permission to something running in their tenant. Practically every business on the planet using Office 365 to it's full extent has Teams and SharePoint sites which contain sensitive information, and the whole idea of a single application being able to change or delete data across the entire estate is _VERY_ far away from the principle of least privilege. If an attacker or some malicious code code was to impersonate this identity, the impact to the business could be huge. With one global organization, I spent around 8 weeks convincing the Digital Security (Info Sec) group and other stakeholders that the other mitigations our team and other internal teams were taking were enough to offset this risk. No less than 7 distinct sign-offs wererequired.
So, something had to change. I knew others would be feeling this pain and I'd been speaking to folks at Microsoft like Jeremy Thake about it for some time. I finally got round to raising a request on UserVoice,
but also mentioned it on Twitter. I was pleased to see this response from Bill Bliss, Microsoft's Platform Architect for Teams: So, that gave me hope. FAST FORWARD A FEW MONTHS, AND THE GOOD NEWS NOW OF COURSE IS THAT A SOLUTION LANDED SOME TIME AGO - MAKING THE LIVES OF ANYONE BUILDING ON THE OFFICE 365 THAT BIT EASIER. THE NEW GROUP.CREATE PERMISSION IN THE MICROSOFT GRAPH Solutions which create Microsoft Teams or Group-connected SharePoint sites can now use a new permission scope in the Graph authorization model named Group.Create. This arrived without much noise or fanfare, and I suspect many people who this is relevant to may still not beaware.
As you might expect, this allows the user or application to create new Teams, Groups and sites, without having access to all existing instances. As the documentationsays:
_ALLOWS THE CALLING APP TO CREATE GROUPS WITHOUT A SIGNED-IN USER. DOES NOT ALLOW READ, UPDATE, OR DELETION OF ANY GROUPS._ This is hugely important for any organization using Office 365 who cares about their security posture and wants to make use of provisioning solutions. Here's what it looks like in AAD: Hoorah! So now we have something that fits both requirements: * Allows new Teams and sites to be created * Minimises the surface area so that other actions cannot be taken CALL TO ACTION - IS THIS RELEVANT TO YOUR ENVIRONMENT? If you're using any kind of tailored approach to creating Teams and SharePoint sites, whether it's solution developed in-house or by a partner, a 3rd party product or one of starter solutions found on Github, you should ensure the permission set used is Group.Create. If you find there's a change to be made, this should be carefully managed with testing in your non-production tenants before being going ahead with the switch in live of course - but the process shouldn't be toocomplex.
I previously mentioned this new option on Twitter a while ago, and was quite a few people responded in some way: However, I wanted to also post about this here too. The pace of change in Office 365 and underlying platform elements such as the Microsoft Graph is relentless, and it's easy to miss things. And whilst there will always be imperfections, it's good to know that things like this are being smoothed out. Hopefully this is useful to some folks! Posted by Chris O'Brien at 07:370 comments
Links to this post
WEDNESDAY, 22 APRIL 2020 INFUSE AI INTO YOUR OFFICE 365 APPS – THREE APPROACHES AND PRICING:PART 3
This is the 3rd article in my series on AI in Office 365 apps. Obviously the world has turned upside down since the last post a few weeks ago - firstly I hope you and the people you care about are well and you are coping. We're learning more about new world each day, and it's clear some things might not be quite the same again. I think it's fair to say we'll see _greater_ use of the technologies discussed in this series - the Power Platform, Azure and AI. MANY ORGANIZATIONS NOW NEED TO TRANSFORM VERY RAPIDLY - AND THAT MEANS NEW FORMS OF I.T., NEW PROCESSES, AND IN MANY CASES MORE AUTOMATION. You've probably seen Power Apps such as the Crisis Communications appand
Emergency Response appemerge
from Microsoft, and the fact that these apps were produced so quickly highlights how effective these technologies can be. Being able to plug AI into such apps provides a strong foundation for a wide range of scenarios, as you've hopefully seen in the "Incident Reporting" sample app I built for this series. As a reminder, the articles in this group are: * AI in Office 365 apps - a scenario, some AI examples and a samplePower App
* AI in Office 365 apps - choosing between Power Apps AI Builder, Azure Cognitive Services and Power Automate * AI in Office 365 apps - pricing and conclusions (this article) As you might expect, pricing is another area where things get interesting as we compare the three approaches. We looked at _capabilities_ last time (and some factors which can guide you to which form of AI is right for a given situation) - but pricing surely has to be part of the overall decision making process, so let's diveinto that now.
In writing this article I compiled costs for the three approaches based on the following parameters for the Incident Reporting app used in the previous articles:* 200 users
* Varying transactions (incidents being reported with an image to tag/describe) - 1000, 100,000, 200,000 and 1 million * Calculate app running cost PER MONTH I ended up with a spreadsheet that looks like this - but the costs on their own don't mean much without commentary so I've blurred out the numbers for now, but we'll come back to this later. I'm just providing this here so you can understand the process I went through: So let's dive into the different approaches, starting with PowerApps AI Builder.
POWER APPS AI BUILDER - PRICING Use of AI Builder in Power Apps is enabled by purchasing "AI Builder service credits". Prices can be obtained on the Power Apps pricing page , and the idea is that these are purchased in blocks of 1 million service credits. Prices at the time of writing are $500/£377/€421 per block per month. So the immediate question of course is "how many service credits will I consume?". In the case of the scenario discussed in this series, the specific question would be "how many service credits will _my use of Object Detection consume?_", since that's the particular type of AI Builder functionality which is appropriate. Microsoft provide the Power Apps AI Builder pricing calculatorto help
with this kind of cost forecasting. There, you can enter the number of transactions you'd like to price for - so I entered my range of numbers (1000, 100,000, 200,000 and 1 million) and assumed my model would be trained once per month: This gives me an estimate of how many AI Builder add-on units are required for that many transactions, and the cost in USD: So, we get a monthly cost of $500 for 1000 transactions - and we can use the calculator to see costs for varying usage levels The caveat is that they _are_ only estimates rather than a guaranteed price, but they should be reasonably accurate. HOWEVER, THE BIG THING TO ALSO CONSIDER FOR THIS APPROACH IS THAT WE ALSO NEED POWER APPS PER USER/PER APP LICENSING TO COVER OUR 200 USERS. As the Power Platform licensing FAQstates,
"_AI Builder is licensed as an add-on to standalone Power Apps and Power Automate licensing as well as Dynamics 365 licenses._" What that means of course, is that if you're using Power Apps through Office 365 licensing, you cannot use AI Builder - Power Apps licensing itself is required too. AS WE'LL SEE, THIS MAKES A HUGE DIFFERENCE TO THE PRICING - SOMETHING THAT WON'T BE A SURPRISE TO ANYONE WHO HAS PREVIOUSLY LOOKED AT POWER PLATFORM LICENSING. So, pricing for this approach ends up like this - these numbers are PER MONTH for our varying amounts of usage: SO, THINGS FEEL EXPENSIVE WHEN USING POWER APPS AI BUILDER - BUT THE COSTS ARE MAINLY COMING FROM THE CORE POWER APPS LICENSING REQUIREMENTS FOR OUR 200 USERS, RATHER THAN THE AI BUILDER COSTS. AZURE COGNITIVE SERVICES - PRICING So, does sidestepping Power Apps AI Builder and plugging directly into AI services help in any way? Well, as you might expect, the Computer Vision API in Azure (which again, is the particular AI service relevant to the needs of our scenario) is priced by number of API transactions i.e. it is a consumption-based Azure service. There are tiers of 0-1 million, 1-5M, 5M-10M, 10M-100M and so on, with pricing getting cheaper the more you use. Pricing will vary per region, and there's a different pricing rate for each capability. For our scenario, we would use the following capabilities of the Computer Vision API:* Tag
* Detect
* Describe
Pricing looks like this:ITEM
PRICING (CURRENT, UK, LOWEST TIERS)1000
100K
200K
1M
TAG
0-1M transactions — £0.746 per 1,000 transactions 1M-5M transactions — £0.597 per 1,000 transactions0.75
74.60
149.20
597.00
DETECT
0-1M transactions — £1.118 per 1,000 transactions 1M-5M transactions — £0.746 per 1,000 transactions1.12
111.80
223.60
746.00
DESCRIBE
1.864 per 1,000 transactions1.86
186.40
372.80
1864.00
TOTAL
3.73
372.80
745.60
3207.00
So if our app had around 1000 incidents reported per month, we'd be looking at a total of £3.73 per month. 2000 incidents would be7.46, and so on.
As you can see, this is pretty cheap unless you're running at scale. HOWEVER, THE GOTCHA IS THAT WE WOULD *STILL* NEED POWER PLATFORM PER APP/PER USER LICENSES TO TAP INTO THIS THOUGH - THIS IS BECAUSE WE NEED TO USE THE HTTP CONNECTOR TO CALL TO AZURE, WHICH MEANS THAT WE ARE IN "PAY FOR" POWER PLATFORM TERRITORY. ASSUMING WE WOULD USE THE PER USER LICENSING, CURRENT UK PRICING IS £7.50 PERUSER PER MONTH.
The impact of Power Apps licensing for HTTP calls The issue here for our incident reporting app and any similar scenario, is that the Power App can be used by many users. Since our app needs to call into Azure via the HTTP connector, *each* user needs a per app/per user license. Even just 100 users would mean £750 per month, and that's before the Azure costs or costs for any other aspect. So, just when you think you have an extremely cost-effective way of building AI into your Office 365 application, if you're using a Power App as the front-end, you'll find that the Power Platform licensing can get in the way if you envision large numbers of users. So, pricing for this approach ends up like this - again, PER MONTH and for our different usage levels: Again, it's the need for Power Apps licensing that makes this expensive, rather than the costs for Azure AI services. POWER AUTOMATE (FLOW) FOR AI - PRICING The final option we looked at was using Power Automate to plug into AI. As we detailed last time, this is essentially a wrapper around Azure's Vision API anyway - making the services easily available to a Flow you might create. Is pricing any better here? Well, yes - _depending on how your Flow is called. _If your Flow is triggered by an item being added to SharePoint, rather than being directly triggered by the user - which is the case in my Incident Reporting app - then only a single user license is required for Flow. Clearly this is very different to requiring _EACH _user of the Power App to have a license - the difference is substantial if you have a large number of users, and this is completely valid according to Microsoft's licensingguidelines.
So, pricing for this final approach ends up like this - again, PER MONTH and for our different usage levels: AS YOU CAN SEE, THE COSTS ARE DRAMATICALLY DIFFERENT! Removing the need for Power Apps per user/per app licensing for our fictional 200 users is by far the biggest factor, but it also helps that our AI costs are massively cheaper with Azure Cognitive Services compared to Power Apps AI Builder. It seems the conclusion here is that if your solution can be built in certain ways, then you can save substantially on license costs. Some of these aspects aren't specific to the use of AI in our scenario, but are common considerations: * ENSURING AI IS USED VIA THE AZURE COMPUTER VISION ACTIONS IN POWERAUTOMATE
AS
AN ALTERNATIVE APPROACH TO POWER APPS AI BUILDER * ENSURE YOUR POWER AUTOMATE FLOW IS TRIGGERED "INDIRECTLY" * In other words, the trigger used is either "When an item is created" or "When an item is created or modified" provided by the SharePoint connector. This way the metadata is added to the file in SharePoint after it lands in the document library, and the process isn't triggered by the user directly (e.g. from a button in the PowerApp)
Of course, these choices only stack up if you or your team are happy to build in this way. If, for example, you don't have skills in Power Automate, this specific approach may not be an option for you.SUMMARY
There are numerous approaches to AI in Office 365, and they come with a big variance in operational costs. The decisions your implementation team or partner make during the design of the solution will have a significant impact on the TCO of your application! Understanding the techniques to use which can reduce costs but not contravene any Microsoft licensing guidelines is the key to success here - so having the right expertise is vital. Two principles which can help overall are: * STORE DATA IN OFFICE 365 WHERE POSSIBLE - avoiding data sources which require a premium connector (e.g. Azure, SQL, CDS, other SaaS applications) or custom connector means you stay within the bounds of "Power Platform use rights for Office 365" described in the licensingguidelines
* USE OFFICE 365 TRIGGERS FOR POWER AUTOMATE - avoiding implementations where the Flow is triggered directly by the user, but instead uses an Office 365 trigger (e.g. SharePoint's "When an item is created", or OneDrive's "When a file is created") will again keep you within the bounds of Office 365 licensing None of this will be a surprise to people who know Power Platform licensing well, but it's interesting to see a quantified comparison of costs for a detailed scenario. Of course, in many cases storing data in Office 365 will _NOT _be the right solution design - perhaps you need true database features such as relationships (one-to-many or many-to-many), cascading integrity, or business rules/triggers related to your data. Maybe you need better support for role-based access. In cases like these, choosing CDS or SQL is likely to provide a better platform and stakeholders need to accept that costs come along with this - but that should be reflected in the value provided by theapplication.
In any case, these decisions should be made mindfully. Hopefully the information in this article series has been useful! Posted by Chris O'Brien at 07:140 comments
Links to this post
TUESDAY, 3 MARCH 2020 AI IN OFFICE 365 APPS – CHOOSING BETWEEN POWER APPS AI BUILDER, AZURE COGNITIVE SERVICES AND POWER AUTOMATE: PART 2 In the last article we talked about some examples of using AI in Office 365, and looked in detail at the the idea of building an INCIDENT REPORTING app which combines common Office 365 building blocks with AI. Whilst Power Apps and SharePoint underpin our solution, we use AI to triage the incident by understanding what is happening in the image. Is this a serious emergency? Are there casualties or emergency services involved? Our image processing AI can interpret the picture, and add tags and a description to where the file is stored in Office 365 - this can drive some automated actions to be taken, such as alerting particular teams or having a human review the incident. We also looked at the results of feeding in a series of images to the AI to analyze the results of differentscenarios.
Overall, this article is part one of a series: * AI in Office 365 apps - a scenario, some AI examples and a samplePower App
* AI in Office 365 apps - choosing between Power Apps AI Builder, Azure Cognitive Services and Power Automate (this article) * AI in Office 365 apps - pricing and conclusions In this article, we'll focus on the HOW - in particular, comparing three approaches we could use in Office 365 to build our incident reporting app and make use of AI. Which is easier? What skills are required? How long might we expect it to take for each approach? CHOOSING BETWEEN POWER APPS AI BUILDER, AZURE COGNITIVE SERVICES ANDPOWER AUTOMATE
As mentioned in the last article, there are a number of ways we couldbuild this app:
* Use of Power Apps AI Builder * A Power App which talks directly to Azure Cognitive Services (viaa Custom Connector)
* A Power App which uses a Power Automate Flow to consume AIservices
For each approach, we’re looking at HOW THE APP WOULD BE BUILT, PRICING, AND ANY CONSTRAINTS AND CONSIDERATIONS which come with thisoption.
OPTION 1 - POWER APPS AI BUILDER AI Builder is still in preview at the time of writing (February 2020 - release will be April 2020)
with four models offered: As you might expect, the idea is to make AI relatively easy to use and to focus on common scenarios. No coding is required, and anyone with Power Apps experience can now take advantage of what would previously have been highly-complex application capabilities. HOW THE APP WOULD BE BUILT In our scenario, it’s the “Object Detection” model that is relevant. This can detect specific objects in images that are supplied to it, as well as count the number of times the recognized object is found in the image. The first step is to define a model and supplysome sample images:
You'll need an entity pre-defined in CDS to use AI Builder - I'm skipping through a few screens here, but ultimately you select a CDS entity representing the object you are detecting: In my case, I was building an app related to transport and my entity is "Bus". The next step is to start to train the AI model by providing some images containing the entity: We then tag the object in each image with the entity: Once all this is done, you can use the Object Detector control in your Power App and configure it to use this model: Since the whole topic of how to build apps with AI Builder is interesting, I'll most likely go through this process in more detail in a future article - but hopefully you get a feel for what theprocess looks like.
In the case of our scenario, we said that we wanted the images to be tagged in SharePoint - and here's where we run into a considerationwith AI Builder:
Power Apps AI Builder - great for SOME forms of image detection The Object Detector capability allows us to detect whether a certain object is in an image or not, and how many times. However, our scenario demanded the capability to recognize *what* was happening in an image, not simply whether a predefined object is present or not! And that's what AI Builder provides - a percentage certainty of whether your single object is present or not. This is much less flexible other forms of AI image processing, and we'd need to somehow supplement this to achieve the goals of our application. After all, we can't provide an AI model with every known object in the universe.. OPTION 2 - AZURE COGNITIVE SERVICES Another way of bringing AI into an app is to plug directly into Azure Cognitive Services. As you might expect, this as a developer-centric approach which is more low-level - we're not in the Power Platform or other low-code framework here. THE BIG ADVANTAGE IS THAT THERE'S A WIDER ARRAY OF CAPABILITIES TO USE. Compared to the other approaches discussed here, we're not restricted to whatever Microsoft have integrated into the Power Platform. The high-level areas of Cognitive Services currently extend to: * DECISION - detect anomalies, do content moderation etc. * LANGUAGE - services such as LUIS, text analytics (e.g. sentiment analysis, extract key phrases and entities), translation between 60+languages
* SPEECH - convert between text and speech (both directions), real-time speech translation from audio, speaker recognition etc. * VISION - Computer Vision (e.g. tag and describe images, recognize objects, celebrities, landmarks, brands, perform OCR, generate thumbnails etc.), form data extraction, ink/handwriting processing, video indexing, face recognition and more * NOTE - this is the service that's relevant to the scenario in this article, in particular the Computer Vision API's ability to tag anddescribe images)
* WEB SEARCH - Bing autosuggest, Bin entity/image/news/visual/videosearch and more
In terms of what this looks like for our scenario, let's take thefollowing image:
HOW THE APP WOULD BE BUILT If I can write some code to consume the Computer Vision API and send the above image to it, I get a response that looks like this (notice the tags such as "person", "indoor", "ceiling", "event", "crowd" andso on:
The code I used to do this is:Code sample:
using System;
using System.Collections.Generic; using Microsoft.Azure.CognitiveServices.Vision.ComputerVision;using
Microsoft.Azure.CognitiveServices.Vision.ComputerVision.Models; using System.Threading.Tasks;using System.IO;
namespace COB.Azure.ComputerVision{
class Program
{
private static string SUBSCRIPTION_KEY = "3f51127f19b84396b55c376ef61fbfb9"; private static string COGNITIVE_SERVICES_ENDPOINT = "https://uksouth.api.cognitive.microsoft.com/"; private static string IMAGE_URL = "https://cobgenstorage.blob.core.windows.net/general/COB_Future_Decoded_2019.jpg"; public static ComputerVisionClient Authenticate(string endpoint,string key)
{
ComputerVisionClient client = new ComputerVisionClient(new ApiKeyServiceClientCredentials(key)){
Endpoint = endpoint
};
return client;
}
public static async Task AnalyzeImageUrl(ComputerVisionClient client, string imageUrl){
Console.WriteLine("----------------------------------------------------------"); Console.WriteLine("ANALYZE IMAGE - URL"); Console.WriteLine(); // specify all the types of analysis we want to perform.. List{
VisualFeatureTypes.Categories, VisualFeatureTypes.Description, VisualFeatureTypes.Faces, VisualFeatureTypes.ImageType, VisualFeatureTypes.Tags, VisualFeatureTypes.Adult, VisualFeatureTypes.Color, VisualFeatureTypes.Brands, VisualFeatureTypes.Objects};
ImageAnalysis results = await client.AnalyzeImageAsync(imageUrl,features);
// image tags and their confidence score.. Console.WriteLine("Tags:"); foreach (var tag in results.Tags){
Console.WriteLine($"{tag.Name} {tag.Confidence}");}
Console.WriteLine(); // objects detected.. Console.WriteLine("Objects:"); foreach (var obj in results.Objects){
Console.WriteLine($"{obj.ObjectProperty} with confidence {obj.Confidence} at location {obj.Rectangle.X}, " + $"{obj.Rectangle.X + obj.Rectangle.W}, {obj.Rectangle.Y}, {obj.Rectangle.Y + obj.Rectangle.H}");}
}
static async Task Main(string args){
ComputerVisionClient client = Authenticate(COGNITIVE_SERVICES_ENDPOINT, SUBSCRIPTION_KEY); Console.WriteLine($"Analyzing image {Path.GetFileName(IMAGE_URL)}..."); Console.WriteLine(); await AnalyzeImageUrl(client, IMAGE_URL);Console.ReadLine();
}
}
}
view raw
Azure_CognitiveServices_VisionAPI hosted with ❤ by GitHub The relationship between Azure Cognitive Services and other options Whilst we're talking about Cognitive Services, it's worth recognising of course that all of the options listed in this e-mail use these services underneath. Power Apps AI Builder, the Power Automate activities discussed here, and many other facilities in Microsoft cloud technologies ALL USE AZURE COGNITIVE SERVICES UNDERNEATH. When you're thinking about technology options, it's worth considering that the more direct your approach to Azure is, the cheaper it is likely tobe.
OPTION 3 - USING POWER AUTOMATE (FLOW) TO CONSUME AI The final option presented here is to create a Flow which will do the work of tagging and describing the incident report images. This is by far the easiest way I think, and is perhaps an overlooked approach for building AI into your apps - I recommend it highly, Power Automate is your friend. Note, however, that these are _PREMIUM _Flow actions - we'll cover licensing and pricing more in the next post, but for now understand that bringing AI capabilities this way does incur additional cost (as it does with the other two approaches). In the scenario of our Power App for incident reporting, the simplest implementation is probably this: * Power App uploads image to SharePoint document library * Flow runs using the "SharePoint - when a file is created in afolder" trigger
* The Flow calls Azure Cognitive Services (using the native Flowactions for this)
* Once the tags and image descriptions have been obtained, they are written back to the file in SharePoint as metadata The beauty is really in step 3. Since Microsoft provide hooks into many AI services as Flow actions, infusing AI into your app this way is extremely simple - no code is required, and it's as simple as lining up some actions in the Flow. Some skills and experience in Power Automate are certainly required, but the bar is certainly much lower than the other options. Here's what my end-to-end Flow looks like: In more specific terms, the trigger is on a new file being created in the SharePoint site and list where my Power App pushes the image to: For each file that has been added, I get the file and then call: * Describe Image Content* Tag Image
The Flow section below shows how we get the details of the file added to SharePoint to be able to pass the contents to the Azure actions forprocessing:
On the Power App side of course, I need something to use the camera on the device to take the photo and upload the file to SharePoint - but that's not too complex, and it's just a question of adding the Power Apps camera control to my app to facilitate part of that. Of course, a major capability of Power Apps is being able to plug into device facilities such as camera, GPS and display functions, so it should be no surprise that's simple. If you remember, I showed my sample app briefly in the last post: However, I do need to do some work to get my image into SharePoint once it has been captured - in my case I use the integration between Power Apps and Power Automate to do this. I create a Flow which uses the Power Apps trigger and ultimately uses the SharePoint "Create File" action. The important part though, is the Compose action in the middle which uses the "DataUriToBinary" function to translate the image data from how Power Apps captures it to how SharePoint needs it: I then link the Flow to the Power App: I can then use this in my formulas, as: UpdateContext( { PictureFilename: "Incident_" & Text( Now(), "yyyy-mm-dd-hh-mm-ss" ) & ".jpg" } ); IncidentPhotoProcessing.Run(PictureFilename, First(Photos).Url); ..and there we go, a fairly quick and easy way to get the photo for my incident into SharePoint so that the AI can do it's processing.SUMMARY
We've looked at three possible approaches in this post to building an Office 365 application which uses AI - Power Apps AI Builder, use of Azure Cognitive Services from code and use of actions in Power Automate which relate to AI. The findings can be summarized as: * DIFFERENT SKILLS ARE NEEDED FOR EACH APPROACH:- * Power Automate is the simplest to use because it provides actions which plug into AI easily - just build a Flow which can receive the image, and then use the Computer Vision actions shown above * Direct use of Azure Cognitive Services APIs requires coding skills (either use provided SDKs for .NET and JavaScript etc. or make your own REST requests to the Azure endpoints), but is a powerful approach since the full set of Microsoft AI capabilities are exposed * CAPABILITIES ARE DIFFERENT ACROSS THE OPTIONS:- * Power Apps AI Builder has some constraints regarding our image processing scenario. The "object detection" model is great for identifying if a known object is present in the image, but can't help with identifying any arbitrary objects or concepts in the image * Azure Cognitive Services underpins ALL of the AI capabilities in Office 365, and offers many services not exposed in Power Apps or Power Automate. As a result, it offers the most flexibility and power, at the cost of more effort and different skills to implement * REQUIREMENTS AND CONTEXT ARE IMPORTANT:- * In our scenario we're talking about a Power App which captures incident data and stores it in SharePoint - in other words, we've already specified that the front-end should be Power Apps. In this context, integrating Azure Cognitive Services directly would be a bit more challenging than the other two approaches (but is relatively simple from a coded application). In Power Apps, we'd need a custom connector to bring the code in (probably in the form of an Azure Function), and that's certainly more complex than staying purely inthe Power Platform
* In the design process, other requirements could lead to one technical approach being much more appropriate than another. As another example, if the app needed a rich user interface that was difficult to build in Power Apps, the front-end may well be custom code. At this point, there's an argument for saying that using code for the content services back-end of the application also makes sensetoo
As usual, having a team or partner who understands this landscape well and has capability across all options can lead to the best result. In this case, all options can be on the table rather than being limited to one or two because of skills. The architecture decision can be merit-based, considering the use cases and scenarios for the app, the AI capabilities needed, the user experience, the range of devices used, speed to implement and cost. And cost, of course, is the element that we haven't covered yet! Let's discuss that in the next post: NEXT ARTICLE - AI IN OFFICE 365 APPS - PRICING OF DIFFERENT OPTIONSAND CONCLUSIONS
Posted by Chris O'Brien at 14:290 comments
Links to this post
Older Posts
Home
Subscribe to: Posts (Atom)CONTACT ME
My LinkedIn profile
MVP PROFILE
FIND ME ON TWITTER
@ChrisO_Brien
MOST POPULAR ARTICLES (UPDATED!) * 5 ways to use AI to supercharge your content in Microsoft 365 * AI and the Power Platform - 3 approaches and pricing * Create Microsoft Teams from a template * Improving Power Apps governance and analytics * SPFx isolated web parts - the right way to call your back-end API * End-to-end guide - templating modern SharePoint sites with Site Designs and PnP templates * Using a custom Azure Function in Flow (e.g. to call the Graph) * PowerApps – sample formulas to implement offline support in yourapp
* 3 ways to create and debug Azure Functions * PowerApps - the good, the bad and the ugly * 5 ideas for using Flow in your applications * An intro to SPFx – client web parts, JavaScript frameworks, npm, Gulp, TypeScript etc. * Use an SPFx Application Customizer to add JavaScript (e.g. header) to every page in a site * Calling an Azure Function from a SharePoint Framework web part(SPFx) – part 1
* An intro to Power BI for the Office 365 developer – slide deckRSS FEED
Subscribe in a readerPREVIOUS ARTICLES
* ▼ 2020 (10)
* ▼ November
(1)
* Automating location check-ins with Power Automate* ► September
(1)
* ► July (1)
* ► June (1)
* ► May (1)
* ► April (1)
* ► March (1)
* ► February
(1)
* ► January
(2)
* ► 2019 (14)
* ► November
(2)
* ► October
(1)
* ► September
(1)
* ► July (1)
* ► June (2)
* ► May (1)
* ► April (1)
* ► March (1)
* ► February
(1)
* ► January
(3)
* ► 2018 (15)
* ► December
(1)
* ► November
(2)
* ► October
(1)
* ► September
(1)
* ► August (1)
* ► July (1)
* ► June (1)
* ► May (2)
* ► April (1)
* ► March (1)
* ► February
(2)
* ► January
(1)
* ► 2017 (18)
* ► December
(2)
* ► October
(2)
* ► September
(2)
* ► August (1)
* ► June (2)
* ► May (1)
* ► April (3)
* ► March (1)
* ► February
(1)
* ► January
(3)
* ► 2016 (20)
* ► December
(1)
* ► November
(2)
* ► September
(4)
* ► August (3)
* ► July (1)
* ► June (2)
* ► May (2)
* ► April (1)
* ► March (2)
* ► February
(2)
* ► 2015 (16)
* ► December
(2)
* ► November
(1)
* ► October
(1)
* ► September
(1)
* ► August (1)
* ► July (1)
* ► June (2)
* ► May (2)
* ► April (2)
* ► March (1)
* ► February
(1)
* ► January
(1)
* ► 2014 (20)
* ► December
(1)
* ► November
(2)
* ► October
(1)
* ► September
(2)
* ► July (2)
* ► June (2)
* ► May (2)
* ► April (3)
* ► March (2)
* ► February
(1)
* ► January
(2)
* ► 2013 (21)
* ► December
(2)
* ► November
(1)
* ► October
(2)
* ► September
(2)
* ► August (1)
* ► July (1)
* ► June (2)
* ► May (2)
* ► April (3)
* ► March (2)
* ► February
(1)
* ► January
(2)
* ► 2012 (16)
* ► December
(1)
* ► November
(2)
* ► October
(2)
* ► September
(1)
* ► August (2)
* ► July (2)
* ► May (2)
* ► April (1)
* ► March (2)
* ► January
(1)
* ► 2011 (19)
* ► November
(3)
* ► October
(1)
* ► September
(2)
* ► August (2)
* ► June (1)
* ► May (2)
* ► April (1)
* ► March (2)
* ► February
(2)
* ► January
(3)
* ► 2010 (26)
* ► December
(2)
* ► November
(2)
* ► October
(3)
* ► September
(2)
* ► August (2)
* ► July (3)
* ► June (2)
* ► May (2)
* ► April (1)
* ► March (2)
* ► February
(2)
* ► January
(3)
* ► 2009 (24)
* ► December
(4)
* ► November
(1)
* ► October
(2)
* ► September
(2)
* ► August (1)
* ► July (1)
* ► June (1)
* ► May (3)
* ► April (2)
* ► March (2)
* ► February
(2)
* ► January
(3)
* ► 2008 (31)
* ► December
(2)
* ► November
(2)
* ► October
(3)
* ► September
(2)
* ► August (2)
* ► July (3)
* ► June (3)
* ► May (2)
* ► April (4)
* ► March (2)
* ► February
(3)
* ► January
(3)
* ► 2007 (38)
* ► December
(3)
* ► November
(3)
* ► October
(2)
* ► September
(3)
* ► August (4)
* ► July (6)
* ► June (6)
* ► May (3)
* ► April (4)
* ► March (3)
* ► February
(1)
ABOUT ME
* Chris O'Brien
I specialise in
helping organisations get the most out of Microsoft 365 and and other Microsoft cloud technologies. I'm the Products and Services Director at Content+Cloud in London, UK, where I work with extremely talented colleagues across clients in many different sectors. I've worked with Microsoft technologies for around 19 years, and have received the MVP award for the last 12 consecutiveyears.
View my complete profileDetails
Copyright © 2024 ArchiveBay.com. All rights reserved. Terms of Use | Privacy Policy | DMCA | 2021 | Feedback | Advertising | RSS 2.0