<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Blog of an overweight SharePoint addict</title>
	<atom:link href="http://www.myfatblog.co.uk/index.php/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.myfatblog.co.uk/</link>
	<description>The rantings of a (not so) food obsessed IT consultant!</description>
	<lastBuildDate>Wed, 20 Mar 2024 22:07:00 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.4.8</generator>
	<item>
		<title>Getting back to being Maker &#8211; making more content</title>
		<link>http://www.myfatblog.co.uk/index.php/2024/03/getting-back-to-being-maker-making-more-content/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=getting-back-to-being-maker-making-more-content</link>
					<comments>http://www.myfatblog.co.uk/index.php/2024/03/getting-back-to-being-maker-making-more-content/#respond</comments>
		
		<dc:creator><![CDATA[Cimares]]></dc:creator>
		<pubDate>Wed, 20 Mar 2024 22:04:55 +0000</pubDate>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Conferences]]></category>
		<category><![CDATA[Multi Geo]]></category>
		<category><![CDATA[MVP]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Speaking]]></category>
		<category><![CDATA[Collab Summit]]></category>
		<category><![CDATA[CollabDays]]></category>
		<category><![CDATA[Lifestyle]]></category>
		<guid isPermaLink="false">https://www.myfatblog.co.uk/?p=1642</guid>

					<description><![CDATA[<p>I&#8217;ve always prided myself on being a &#8216;maker&#8217;, whether that&#8217;s in my IT world or my Woodturning hobbyists world. And being a maker can mean a number of things. In woodturning, it generally means slapping a piece of wood on the lathe and turning a rough piece of wood into something beautiful. I&#8217;ve recently been &#8230; </p>
<p><a class="more-link btn" href="http://www.myfatblog.co.uk/index.php/2024/03/getting-back-to-being-maker-making-more-content/">Continue reading</a></p>
<p>The post <a href="http://www.myfatblog.co.uk/index.php/2024/03/getting-back-to-being-maker-making-more-content/">Getting back to being Maker &#8211; making more content</a> appeared first on <a href="http://www.myfatblog.co.uk">Blog of an overweight SharePoint addict</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>I&#8217;ve always prided myself on being a &#8216;maker&#8217;, whether that&#8217;s in my IT world or my Woodturning hobbyists world. And being a maker can mean a number of things. In woodturning, it generally means slapping a piece of wood on the lathe and turning a rough piece of wood into something beautiful. </p>



<p>I&#8217;ve recently been experimenting with turning wooden birds as a way of using up some odd scraps of wood and it&#8217;s been a fascinating journey to see how I can represent a mixture of species in a number of ways. The image below is a stylised version of a Wader, and I&#8217;ve recently been working on Robins and Wrens with a mixture of success.</p>



<figure class="wp-block-image size-large is-resized"><a href="http://www.myfatblog.co.uk/wp-content/uploads/2024/03/Wader-scaled.jpg"><img fetchpriority="high" decoding="async" width="1024" height="811" src="http://www.myfatblog.co.uk/wp-content/uploads/2024/03/Wader-1024x811.jpg" alt="Woodturning Maker - Stylised Bird - Wader" class="wp-image-1640" style="width:840px;height:auto" srcset="http://www.myfatblog.co.uk/wp-content/uploads/2024/03/Wader-1024x811.jpg 1024w, http://www.myfatblog.co.uk/wp-content/uploads/2024/03/Wader-300x237.jpg 300w, http://www.myfatblog.co.uk/wp-content/uploads/2024/03/Wader-768x608.jpg 768w, http://www.myfatblog.co.uk/wp-content/uploads/2024/03/Wader-1536x1216.jpg 1536w, http://www.myfatblog.co.uk/wp-content/uploads/2024/03/Wader-2048x1621.jpg 2048w, http://www.myfatblog.co.uk/wp-content/uploads/2024/03/Wader-750x594.jpg 750w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<h2 class="wp-block-heading">The IT &#8216;Maker&#8217;</h2>



<p>In the IT world, the word &#8216;Maker&#8217; most often means putting out some content on YouTube, or creating an App in PowerApps but for me it also means &#8216;making&#8217; knowledge and &#8216;making&#8217; it available to people to consume. As a consultant this has often been part of my day to day role, with me creating and sharing knowledge with the clients that I&#8217;m working with. This has often meant some long hours, mixed between travelling, prepping for conferences and working with Clients.</p>



<p>For those of you that have read my blog in the past, you&#8217;ll know that I had a <a href="https://www.myfatblog.co.uk/index.php/2019/12/the-time-a-disruptive-technology-saved-my-life-in-helsinki/">major life event at the end of 2019</a> that put me in hospital for heart surgery and took me out of commission for several months. I made a slow return to work and was actually helped by Covid as that forced a longer spell of recuperation than would actually have been possible without the pandemic.</p>



<p>As the pandemic started to die down, I had written a few articles and was back to full time work with my employer <a href="https://trustmarque.com/">Trustmarque</a>. However I felt myself dropping back into some of my previous bad habits. So I decided it was time to make a number of lifestyle changes. The easiest of the changes was adopting some of the M365 tools to help me manage my workload and I hope to write about some of these soon. (For the curious, I&#8217;m talking about things like using To Do to manage my tasks list and help reduce stress by curating it regularly using MyDay, being disciplined with my use of Outlook, using Power Automate to monitor my Inbox for key messages using a VIP/Subject list in M365 Lists (And even a bit of sentiment analysis!)).</p>



<h2 class="wp-block-heading">Making a positive change</h2>



<p>By far the biggest change however was to step away from the Consulting lifestyle at the end of 2022 and to take an Associate Director role with <a href="https://www.wtwco.com/">WTW</a>, looking after a large M365 platform (along with a number of smaller tenants) that draws on my Multi-Geo expertise and other areas of my M365 skillset on a daily basis.</p>



<p>It&#8217;s been an interesting mind switch from Consultant to Customer and I&#8217;m really enjoying the challenge and the ability to not just flex my existing M365 skills, but to also grow in areas that haven&#8217;t traditionally been part of my skillset, such as Exchange Online.</p>



<p>I&#8217;m still committed to the Microsoft 365 Community, continue to speak at events and continue to maintain my MVP status. Part of my reason for joining WTW is their attitude to &#8216;making&#8217; knowledge, sharing internally, valuing my MVP status and supporting a healthy work life balance. I regularly present internally on making use of the M365 tools to help manage your workflow, your life balance and generally trying not to end up where I did at the end of 2019!</p>



<p>Looking forward into 2024, I have a number of speaking engagements line up, with a return to North America to speak at NACS in early April, followed by a few more CollabDays events throughout the year (1 confirmed, several submitted!)</p>



<p>Paul.</p>
<p>The post <a href="http://www.myfatblog.co.uk/index.php/2024/03/getting-back-to-being-maker-making-more-content/">Getting back to being Maker &#8211; making more content</a> appeared first on <a href="http://www.myfatblog.co.uk">Blog of an overweight SharePoint addict</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>http://www.myfatblog.co.uk/index.php/2024/03/getting-back-to-being-maker-making-more-content/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Dynamic second stage approvals using Approvals in Power Automate</title>
		<link>http://www.myfatblog.co.uk/index.php/2021/01/dynamic-second-stage-approvals-using-approvals-in-power-automate/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=dynamic-second-stage-approvals-using-approvals-in-power-automate</link>
					<comments>http://www.myfatblog.co.uk/index.php/2021/01/dynamic-second-stage-approvals-using-approvals-in-power-automate/#respond</comments>
		
		<dc:creator><![CDATA[Cimares]]></dc:creator>
		<pubDate>Sun, 24 Jan 2021 21:07:56 +0000</pubDate>
				<category><![CDATA[Automation]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[Power Automate]]></category>
		<category><![CDATA[PowerPlatform]]></category>
		<category><![CDATA[Approvals]]></category>
		<guid isPermaLink="false">http://www.myfatblog.co.uk/?p=1626</guid>

					<description><![CDATA[<p>A member of my team recently came across an interesting customer requirement that didn’t seem to have an easy solution using the out of the box Approvals process in Power Automate. The process on the surface seemed fairly simple, but the execution certainly proved less so! Picture the following approval process: User submits a Document &#8230; </p>
<p><a class="more-link btn" href="http://www.myfatblog.co.uk/index.php/2021/01/dynamic-second-stage-approvals-using-approvals-in-power-automate/">Continue reading</a></p>
<p>The post <a href="http://www.myfatblog.co.uk/index.php/2021/01/dynamic-second-stage-approvals-using-approvals-in-power-automate/">Dynamic second stage approvals using Approvals in Power Automate</a> appeared first on <a href="http://www.myfatblog.co.uk">Blog of an overweight SharePoint addict</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>A member of my team recently came across an interesting customer requirement that didn’t seem to have an easy solution using the out of the box Approvals process in Power Automate. The process on the surface seemed fairly simple, but the execution certainly proved less so!</p>
<p>Picture the following approval process:</p>
<ol>
<li>User submits a Document request in a SharePoint library and selects the first approver.</li>
<li>An approval task is created and passed to the First approver.</li>
<li>The First approver decides to either Reject or Approve the document and then chooses the second stage approver.</li>
<li>A new approval task is created for the second stage approver.</li>
<li>The Second stage Approves or rejects the document</li>
<li>Document status is updated in SharePoint.</li>
</ol>
<p>On the face of it, it’s a fairly straight forward requirement, however in an Approve action we can only capture the Outcome and Comments from the first approver, so there’s no easy way to capture a selection of the next approver (Or any other information for that matter).</p>
<p><a href="http://www.myfatblog.co.uk/wp-content/uploads/2021/01/SNAGHTML14491a9.png"><img decoding="async" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="SNAGHTML14491a9" src="http://www.myfatblog.co.uk/wp-content/uploads/2021/01/SNAGHTML14491a9_thumb.png" alt="SNAGHTML14491a9" width="656" height="361" border="0" /></a></p>
<p>The easiest resolution for this is actually to look at using Outlook Actionable messages with Adaptive cards, which would allow us to capture additional information. The only downside to this is that we would need to handle the Adaptive Card response via an HTTPS Flow trigger, which is a Premium connector! In this environment, the client doesn’t have access to Premium Connectors which rules out that option.</p>
<h1>Dynamic second stage approvals without premium connectors?</h1>
<p>The work around that I suggested, does require that the list of approvers for the second stage be available at the point that the workflow is triggered. For this solution we decided that using a SharePoint configuration list provided the functionality that we needed and would meet the business requirements that we captured. The approval process becomes:</p>
<ol>
<li>User submits a completed Document request in a SharePoint library and selects the Approval Group from a drop down.</li>
<li>When the flow triggers, a lookup is made against the approval group to get the First and Second stage approvers.</li>
<li>A <strong><em>Custom Response</em></strong> Approval Action is launched to the First Approver, with the  possible Outcomes built to include the Second Stage approvers. This results in the following possible Outcomes.
<ul>
<li>Reject</li>
<li>Approve – Send to Second Approver A</li>
<li>Approve – Send to Second Approver B</li>
<li>etc</li>
</ul>
</li>
<li>Wait for the first approval outcome.</li>
<li>Create a second stage approval using the e-mail selected in the First Approval outcome</li>
<li>Wait for the Second Stage approval</li>
<li>Document status updated in SharePoint.</li>
</ol>
<p>To show this approach in a working manner for this post, I’ve built the following:</p>
<ul>
<li>A SharePoint Document library with content approval and a single Lookup column to a configuration list containing the First and Second stage approvers.</li>
</ul>
<p><a href="http://www.myfatblog.co.uk/wp-content/uploads/2021/01/SNAGHTML1441a08.png"><img decoding="async" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="SNAGHTML1441a08" src="http://www.myfatblog.co.uk/wp-content/uploads/2021/01/SNAGHTML1441a08_thumb.png" alt="SNAGHTML1441a08" width="828" height="114" border="0" /></a></p>
<ul>
<li>A SharePoint list with the relevant First and Second Stage approvers with a useful Title field.</li>
</ul>
<p><a href="http://www.myfatblog.co.uk/wp-content/uploads/2021/01/SNAGHTML145088e.png"><img loading="lazy" decoding="async" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="SNAGHTML145088e" src="http://www.myfatblog.co.uk/wp-content/uploads/2021/01/SNAGHTML145088e_thumb.png" alt="SNAGHTML145088e" width="484" height="224" border="0" /></a></p>
<p>We could just as easily have used the users Line Manager and then make a business decision in the flow based on the Line Managers department from their profile (with of course a catch all option for when AD doesn’t have the information!), but I wanted to keep this simpler for now to show the mechanism in action.</p>
<h2>Building the flow</h2>
<p>We start with a simple Selected File trigger, This allows the user to select a file and then use the context menu to submit the file for approval.</p>
<p><a href="http://www.myfatblog.co.uk/wp-content/uploads/2021/01/SNAGHTML9dad371.png"><img loading="lazy" decoding="async" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="SNAGHTML9dad371" src="http://www.myfatblog.co.uk/wp-content/uploads/2021/01/SNAGHTML9dad371_thumb.png" alt="SNAGHTML9dad371" width="525" height="398" border="0" /></a></p>
<p>Immediately after, we pick up the selected item using a Get Item action. This gives us access to the file path and other useful info later. The next step then uses a Get Items action to select the correct Approver group from the configuration file list.</p>
<p><a href="http://www.myfatblog.co.uk/wp-content/uploads/2021/01/SNAGHTML9da694e.png"><img loading="lazy" decoding="async" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="SNAGHTML9da694e" src="http://www.myfatblog.co.uk/wp-content/uploads/2021/01/SNAGHTML9da694e_thumb.png" alt="SNAGHTML9da694e" width="530" height="356" border="0" /></a></p>
<p>The filter query uses the Title from the lookup field in the source Item to filter the configuration list result. Watch the ‘’ around the dynamic data! (In our sample data above, the Title should equal “Finance Tier 1” or the other group name value. Once we have that item, we just need to parse it using a Parse JSON action to make it useful.</p>
<p><a href="http://www.myfatblog.co.uk/wp-content/uploads/2021/01/SNAGHTML9dc6ba5.png"><img loading="lazy" decoding="async" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="SNAGHTML9dc6ba5" src="http://www.myfatblog.co.uk/wp-content/uploads/2021/01/SNAGHTML9dc6ba5_thumb.png" alt="SNAGHTML9dc6ba5" width="521" height="295" border="0" /></a></p>
<p>I usually build the schema for these from a first run of the Get Items action, using the Generate from Sample option. It does sometimes however provide a very rigid schema that may not meet your needs as this one didn’t. I had to remove a number of data types and required fields from the schema to make it work every time.</p>
<blockquote><p>If you find yourself playing with JSON much, I heartily recommend reading John Liu’s post “<a href="http://johnliu.net/blog/2018/6/a-thesis-on-the-parse-json-action-in-microsoft-flow" target="_blank" rel="noopener noreferrer">A thesis on the Parse JSON action in Microsoft Flow</a>” where he dives deeply into the issue with this action and it’s schema.</p></blockquote>
<p>Next up is a couple of Initialize Variable actions, the first to immediately set the First Approver e-mail using the Expression</p>
<p><strong><em>body(&#8216;Parse_Approvers&#8217;)[&#8216;value&#8217;][0][&#8216;FirstApprover&#8217;][&#8216;Email&#8217;]</em></strong></p>
<p>This takes the output of our Parse JSON method, extracts the first item in the Value collection returned (we know we’re only pulling back one item!) and then gets the value of the First Approver email field and sets it as the string value of the variable. The second action just creates an empty container ready for us to use later in the flow.</p>
<p><a href="http://www.myfatblog.co.uk/wp-content/uploads/2021/01/SNAGHTML9e39ab2.png"><img loading="lazy" decoding="async" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="SNAGHTML9e39ab2" src="http://www.myfatblog.co.uk/wp-content/uploads/2021/01/SNAGHTML9e39ab2_thumb.png" alt="SNAGHTML9e39ab2" width="516" height="342" border="0" /></a></p>
<p>And then we need an Array to hold our Custom Responses to be passed into the Approvals process. At this point, we add in any ‘static’ options that we want included, in this case the Reject option.</p>
<p><a href="http://www.myfatblog.co.uk/wp-content/uploads/2021/01/SNAGHTML9f4d826.png"><img loading="lazy" decoding="async" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="SNAGHTML9f4d826" src="http://www.myfatblog.co.uk/wp-content/uploads/2021/01/SNAGHTML9f4d826_thumb.png" alt="SNAGHTML9f4d826" width="518" height="203" border="0" /></a></p>
<p>The next step is where the dynamic approvers comes in. We’re going to process the Second Approvers field from the configuration item. This is a multi-select People field in SharePoint, allowing us to select a number of user accounts. The only caveat really is that their e-mail must be populated. So far for this demo I’ve tried with up to 3 people selected but I see no reason why this wouldn’t work for more, depending on how the App and E-mail handles the larger number of options (You’ll see this in a short while.)</p>
<p><a href="http://www.myfatblog.co.uk/wp-content/uploads/2021/01/SNAGHTML9f868ee.png"><img loading="lazy" decoding="async" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="SNAGHTML9f868ee" src="http://www.myfatblog.co.uk/wp-content/uploads/2021/01/SNAGHTML9f868ee_thumb.png" alt="SNAGHTML9f868ee" width="522" height="339" border="0" /></a></p>
<p>First we add an Apply to Each action and set the target of this to the following expression:</p>
<p><strong><em>body(&#8216;Parse_Approvers&#8217;)?[&#8216;Value&#8217;][0][&#8216;SecondApprovers&#8217;]</em></strong></p>
<p>This addresses the first Item in the query to the config list (again, we know we’re only returning the one item, so this is safe.), we then get the Second Approvers collection. Then in an Append to Array action inside the apply to each, we use the following expression to pull out the e-mail of the Second Approver.</p>
<p><strong><em>items(&#8216;Process_Second_Approvers&#8217;)?[&#8216;Email&#8217;]</em></strong></p>
<p>This is then concatenated with the text “Approved – Send to “ to form the response object that we need.At this point, we know have everything that we need to trigger our first Approval process and wait for the outcome.</p>
<p><a href="http://www.myfatblog.co.uk/wp-content/uploads/2021/01/SNAGHTML9fd1cf8.png"><img loading="lazy" decoding="async" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="SNAGHTML9fd1cf8" src="http://www.myfatblog.co.uk/wp-content/uploads/2021/01/SNAGHTML9fd1cf8_thumb.png" alt="SNAGHTML9fd1cf8" width="521" height="454" border="0" /></a></p>
<p>You’ll notice that I’ve switched the Response Options from individual items to a single block, this allows me to pass in the AuthEmails array that we created earlier. The rest of the information is straight forward, we pass the e-mail of the first approver, then a link to the item and it’s title. You can of course use the Details box to pass in more detailed content using Markdown.</p>
<p>At this point, an approvals process is kicked off and the First Approver will receive a notification by e-mail and directly in Teams if you have the Approvals app installed (Which is well worth doing!). The dynamic responses we put into our response block show up as choices in a drop down on the Approval app and as individual drop downs in the e-mail. Sadly the e-mail does NOT work as I’d have liked for this. It would certainly be better as an individual drop down as per the app.</p>
<p><a href="http://www.myfatblog.co.uk/wp-content/uploads/2021/01/SNAGHTMLa073bbb.png"><img loading="lazy" decoding="async" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="SNAGHTMLa073bbb" src="http://www.myfatblog.co.uk/wp-content/uploads/2021/01/SNAGHTMLa073bbb_thumb.png" alt="SNAGHTMLa073bbb" width="1006" height="528" border="0" /></a></p>
<p>With those issue aside, the next step in the flow is to process the first approval, and this is a simple matter of checking to see if our outcome was a Rejection. If it was then we can do something with the result, such as set the content approval status in SharePoint and notify the requestor. If the approval is granted and sent to the next stage, then you may want to update a status field before moving on. I’m showing that using a multi-line text field and just appending a message onto it.</p>
<p><a href="http://www.myfatblog.co.uk/wp-content/uploads/2021/01/SNAGHTMLa09e455.png"><img loading="lazy" decoding="async" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="SNAGHTMLa09e455" src="http://www.myfatblog.co.uk/wp-content/uploads/2021/01/SNAGHTMLa09e455_thumb.png" alt="SNAGHTMLa09e455" width="997" height="461" border="0" /></a></p>
<p>As we move down the approval route, the next step is to use a Set Variable action to update the empty Second Approver Email variable that we configured earlier. This is done using the Substring function to separate out the Second Approver e-mail from the Outcome text.</p>
<p><strong><em>substring(outputs(&#8216;Wait_for_First_Stage_Approval&#8217;)?[&#8216;body/outcome&#8217;],19)</em></strong></p>
<p>In this case, 19 is the number of characters that appears in the Outcome upto and including the space in front of the e-mail address, which we know is perfectly valid, because it came from a People picker field.</p>
<p><a href="http://www.myfatblog.co.uk/wp-content/uploads/2021/01/SNAGHTMLa0ba89a.png"><img loading="lazy" decoding="async" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="SNAGHTMLa0ba89a" src="http://www.myfatblog.co.uk/wp-content/uploads/2021/01/SNAGHTMLa0ba89a_thumb.png" alt="SNAGHTMLa0ba89a" width="532" height="432" border="0" /></a></p>
<p>Then it’s back to the approvals process, this time with a simple Approve/Reject action, passing in the extracted Second Approver e-mail. Then we wait for the Approval action to complete and then take further action based on what the Second Approver chose. As we’ve covered off the point of this post with the dynamic approvals, I won’t dwell on the closure actions of this e-mail as you’ll have differing needs based on your scenarios.</p>
<h1>In Summary</h1>
<p>For me one of the gaping holes in the Flow no-code story, is the ability to capture information from an end user during a process using simple actions. I’d like to be able to not just ask for approval on an item, but also pass simple questions for additional info, maybe by passing a choice list in an action. Yes we can achieve this through Actionable Messages but these require premium connectors which the majority of my clients won’t have access to. I’d also like to see some consistency between the e-mails and the Approvals app. As you’ve seen in the example above, the E-mail options when combined with custom responses don’t present very well to the end user and I hope this is something that gets amended at some point (I’ll be raising this as a bug with the product group tonight!).</p>
<p>But overall, I was happy that we found a solution to the client’s need that didn’t require a premium license.</p>
<p>The post <a href="http://www.myfatblog.co.uk/index.php/2021/01/dynamic-second-stage-approvals-using-approvals-in-power-automate/">Dynamic second stage approvals using Approvals in Power Automate</a> appeared first on <a href="http://www.myfatblog.co.uk">Blog of an overweight SharePoint addict</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>http://www.myfatblog.co.uk/index.php/2021/01/dynamic-second-stage-approvals-using-approvals-in-power-automate/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>The problem of storing App credentials in Azure Runbooks</title>
		<link>http://www.myfatblog.co.uk/index.php/2020/06/the-problem-of-storing-app-credentials-in-azure-runbooks/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=the-problem-of-storing-app-credentials-in-azure-runbooks</link>
					<comments>http://www.myfatblog.co.uk/index.php/2020/06/the-problem-of-storing-app-credentials-in-azure-runbooks/#respond</comments>
		
		<dc:creator><![CDATA[Cimares]]></dc:creator>
		<pubDate>Sat, 13 Jun 2020 06:29:37 +0000</pubDate>
				<category><![CDATA[SharePoint]]></category>
		<guid isPermaLink="false">http://www.myfatblog.co.uk/?p=1595</guid>

					<description><![CDATA[<p>The problem of storing App Credentials in Azure Runbooks Back when SharePoint on-premises was all the rage, there was always a need to provide a way of automating script actions for a number of reasons. Invariably this would mean that an automation server would be configured running Windows Scheduled tasks out of hours to access &#8230; </p>
<p><a class="more-link btn" href="http://www.myfatblog.co.uk/index.php/2020/06/the-problem-of-storing-app-credentials-in-azure-runbooks/">Continue reading</a></p>
<p>The post <a href="http://www.myfatblog.co.uk/index.php/2020/06/the-problem-of-storing-app-credentials-in-azure-runbooks/">The problem of storing App credentials in Azure Runbooks</a> appeared first on <a href="http://www.myfatblog.co.uk">Blog of an overweight SharePoint addict</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h1>The problem of storing App Credentials in Azure Runbooks</h1>
<p>Back when SharePoint on-premises was all the rage, there was always a need to provide a way of automating script actions for a number of reasons. Invariably this would mean that an automation server would be configured running Windows Scheduled tasks out of hours to access and process SharePoint data under the identity of a Service Account. This need has not gone away with SharePoint Online and if anything, with the advent of the Microsoft Graph the possibilities have increased tenfold along with the options for automating using App Credentials.</p>
<p>For me the simplest automation in recent times has been to use Azure Runbooks, we can use PowerShell, it has a simple to use Modules library for popular modules like PNP PowerShell,we can upload our own Modules for code re-use and we can run scripts for up to 3 hours without problems. It also integrates heavily with other services such as the Azure KeyVault for credential storage. The only problem with KeyVault is that it’s an additional cost and can be a little complex to setup and use, requiring Service Principals and Certificates. If we look back at how we ran our old on-premises Task Scheduler it was generally accepted that IDs and Passwords in Script files was not a good thing and the majority of people would use Windows Credential Manager to encode the credentials into safe storage against the logged on account. Luckily, we can do just such a thing with Windows Automation accounts, enabling us to share service credentials between a number of scripts/authors.</p>
<p>For the purpose of this article I’m going to assume two things, both of which are well documented on the Internet, so there’s no point me re-hashing them here:</p>
<ol>
<li>You have an Automation Account configured in Azure that is configured to allow a limited number of people access using Access Control.</li>
<li>You have some App Credentials configured in Azure AD (A Client/Secret pair) that you wish to call the Microsoft Graph with. These must have been granted API Permissions to the Graph. (<a href="https://docs.microsoft.com/en-us/graph/auth-v2-service" target="_blank" rel="noopener noreferrer">Section 2 in this Doc from Microsoft</a>)</li>
</ol>
<h2>Storing the App Credentials in readiness for reuse.</h2>
<p>When you open your Automation Account pane in the Azure Portal, there are a number of resources down the left hand side that you’ll be using, The section that we’re interested in for this post is under Shared Resources. This is the section where we publish Schedules for our scripts, make modules available, and more importantly let us store and share credentials and variables between our Runbooks.</p>
<p><a href="http://www.myfatblog.co.uk/wp-content/uploads/2020/06/SNAGHTML9e97664.png"><img loading="lazy" decoding="async" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="SNAGHTML9e97664" src="http://www.myfatblog.co.uk/wp-content/uploads/2020/06/SNAGHTML9e97664_thumb.png" alt="SNAGHTML9e97664" width="194" height="240" border="0" /></a></p>
<p>When I first looked at Runbooks, I immediately jumped on Credentials and started trying to use these for my scripts, storing the App Credentials as if they were a UserName and Password. The big problem with this is that the Password is encrypted and it is very difficult to pass this into our automation calls without writing an overly complex script. The much simpler approach is to use Automation Variables instead.</p>
<p>“How is that secure”&#8221;?” you may well ask. Well the answer to that lies in how the Automation accounts let’s you declare a Variable as an Encrypted variable, for which the value is not shown in the interface once it’s been committed. Whilst an author with the correct rights can obtain the value (which is kind of the point as we need to be able to pass a string to the Graph), it reduces the amount of visibility to a casual observer.</p>
<p><a href="http://www.myfatblog.co.uk/wp-content/uploads/2020/06/SNAGHTML9ef631d.png"><img loading="lazy" decoding="async" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="SNAGHTML9ef631d" src="http://www.myfatblog.co.uk/wp-content/uploads/2020/06/SNAGHTML9ef631d_thumb.png" alt="SNAGHTML9ef631d" width="727" height="167" border="0" /></a></p>
<p>To add these, simply click on the “+ Add a variable” at the top of the screen and first add your ClientID as a string and hit Create, then do exactly the same for your Client Secret, but this time, click on the Encrypted toggle at the bottom of the pane, then hit Create.</p>
<p><a href="http://www.myfatblog.co.uk/wp-content/uploads/2020/06/SNAGHTML9f31b05.png"><img loading="lazy" decoding="async" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="SNAGHTML9f31b05" src="http://www.myfatblog.co.uk/wp-content/uploads/2020/06/SNAGHTML9f31b05_thumb.png" alt="SNAGHTML9f31b05" width="629" height="624" border="0" /></a></p>
<p>You’ll notice that the boxes turn purple and when you return to the Credentials screen, you can only see the ID of the ClientID and not the Secret. With those saved, we can now turn our attention to using them in the Runbook itself.</p>
<h2>Consuming our Automation Variables in a Runbook</h2>
<p>This really is the simple part as we use a single Azure Cmdlet to obtain our values in readiness to plug them into the Rest call to the Graph to create our token.</p>
<blockquote><p><strong><em>Get-AutomationVariable</em></strong></p></blockquote>
<pre class="brush: ps;">$ClientID = get-automationvariable  -name "OurNewClientID"
$clientSecret = get-automationvariable -name "OurNewClientSecret"</pre>
<p>&nbsp;</p>
<p>That call handles all of the decryption that we need and gives us simple string variables to inject into the Rest call to the graph (<a href="https://docs.microsoft.com/en-us/graph/auth-v2-service#4-get-an-access-token" target="_blank" rel="noopener noreferrer">detailed in section 4 of this MIcrosoft doc</a>) and for simplicity, in this function that I use in most of my scripts.</p>
<pre class="brush: ps;">function get-oAuthAccessToken()
{
    Param(
        [Parameter(Mandatory=$true)] [String] $resource,
        [Parameter(Mandatory=$true)] [String] $clientID,
        [Parameter(Mandatory=$true)] [String] $clientSecret,
        [Parameter(Mandatory=$true)] [String] $loginURL,
        [Parameter(Mandatory=$true)] [String] $tenantDomain
    )   

    # Retrieve Oauth 2 access token
    $body = @{grant_type="client_credentials";resource=$resource;client_id=$clientID;client_secret=$clientSecret}
    $oauthToken = Invoke-RestMethod -Method Post -Uri $loginURL/$tenantdomain/oauth2/token?api-version=1.0 -Body $body

    return $oauthToken
}</pre>
<p>Call this using your new ClientID and ClientSecret values, along with the following EndPoints:</p>
<pre class="brush: ps;">#oAuth Token Endpoints.
$resourceAPI = "https://graph.microsoft.com"
$loginURL = "https://login.windows.net"
$apiPrefix = "https://graph.microsoft.com/v1.0/"
$tenantDomain = "&lt;&lt;yourdomain&gt;&gt;.onmicrosoft.com"</pre>
<p>&nbsp;</p>
<p>I hope this proves useful.</p>
<p>Paul.</p>
<p>The post <a href="http://www.myfatblog.co.uk/index.php/2020/06/the-problem-of-storing-app-credentials-in-azure-runbooks/">The problem of storing App credentials in Azure Runbooks</a> appeared first on <a href="http://www.myfatblog.co.uk">Blog of an overweight SharePoint addict</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>http://www.myfatblog.co.uk/index.php/2020/06/the-problem-of-storing-app-credentials-in-azure-runbooks/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Addressing the challenge presented by Channel meetings in Microsoft Teams</title>
		<link>http://www.myfatblog.co.uk/index.php/2020/05/addressing-the-challenge-presented-by-channel-meetings-in-microsoft-teams/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=addressing-the-challenge-presented-by-channel-meetings-in-microsoft-teams</link>
					<comments>http://www.myfatblog.co.uk/index.php/2020/05/addressing-the-challenge-presented-by-channel-meetings-in-microsoft-teams/#respond</comments>
		
		<dc:creator><![CDATA[Cimares]]></dc:creator>
		<pubDate>Fri, 29 May 2020 10:20:26 +0000</pubDate>
				<category><![CDATA[5 Minute Fix]]></category>
		<category><![CDATA[Teams]]></category>
		<category><![CDATA[Channel Meetings]]></category>
		<category><![CDATA[Outlook]]></category>
		<category><![CDATA[Teams Meetings]]></category>
		<guid isPermaLink="false">http://www.myfatblog.co.uk/?p=1584</guid>

					<description><![CDATA[<p>I’ve been working with Microsoft Teams for sometime now and it’s having  massive impact both within my own team at work (reducing e-mail and expanding collective and accessible knowledge through the persistent conversation) and with my customers. The Teams and Channel meetings experience is pretty seamless and I have a lot less technical issues with &#8230; </p>
<p><a class="more-link btn" href="http://www.myfatblog.co.uk/index.php/2020/05/addressing-the-challenge-presented-by-channel-meetings-in-microsoft-teams/">Continue reading</a></p>
<p>The post <a href="http://www.myfatblog.co.uk/index.php/2020/05/addressing-the-challenge-presented-by-channel-meetings-in-microsoft-teams/">Addressing the challenge presented by Channel meetings in Microsoft Teams</a> appeared first on <a href="http://www.myfatblog.co.uk">Blog of an overweight SharePoint addict</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>I’ve been working with Microsoft Teams for sometime now and it’s having  massive impact both within my own team at work (reducing e-mail and expanding collective and accessible knowledge through the persistent conversation) and with my customers. The Teams and Channel meetings experience is pretty seamless and I have a lot less technical issues with Teams meetings than I used to with Skype. That doesn’t mean that every meeting is quite as smooth as it could be and I regularly remind clients to look beyond the service as the cause of their problems. As we’re all working from home a lot more now, it’s important to remember that home Broadband is not as resilient as a business connection. Contention (certainly here in the UK continues to be a big issue with broadband networks, so it’s important for users to be aware of what’s happening both in their own property (e.g. kids watching Streaming media or on-line gaming) as well as Street contention where you may face ratios of 1-20 depending on your ISP contract.</p>
<p>The other issue relates to time and schedule management and that’s really the crux of this post. Microsoft Teams provides a number of ways of booking a meeting, from Clicking on the <strong><em>Meet Now</em></strong> button in your personal calendar and dragging people into the call, booking a meeting in the traditional manner through Outlook by inviting people, or clicking on <strong><em>Meet Now</em></strong> in a channel to send an alert to all the users of the Channel. The one aspect that I feel doesn’t work so well is when I schedule a meeting to take place within a Teams Channel. If you’re not familiar with what I mean, take a look at the image below where I’m booking a meeting in the Teams Calendar, but choosing a Channel to meet in rather than selecting attendees.</p>
<p><a href="http://www.myfatblog.co.uk/wp-content/uploads/2020/05/SNAGHTMLfa4315d.png"><img loading="lazy" decoding="async" class="alignnone" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="SNAGHTMLfa4315d" src="http://www.myfatblog.co.uk/wp-content/uploads/2020/05/SNAGHTMLfa4315d_thumb.png" alt="Booking Channel meetings" width="509" height="331" border="0" /></a></p>
<p>When you hit Send, this places a booking into the Originators calendar, blocking out their time but nothing appears in any of the other Channel members calendars for them to accept/decline. Instead what we do get is a Channel message showing that a meeting was scheduled.</p>
<p><a href="http://www.myfatblog.co.uk/wp-content/uploads/2020/05/SNAGHTMLfa3bf4a.png"><img loading="lazy" decoding="async" class="alignnone" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="SNAGHTMLfa3bf4a" src="http://www.myfatblog.co.uk/wp-content/uploads/2020/05/SNAGHTMLfa3bf4a_thumb.png" alt="Channel meetings announcements in the channel thread" width="504" height="124" border="0" /></a></p>
<p>If we click on this to see the meeting details, we can choose Add to Calendar to “Accept” the booking and to block out our time.</p>
<p><a href="http://www.myfatblog.co.uk/wp-content/uploads/2020/05/SNAGHTMLfa6f724.png"><img loading="lazy" decoding="async" class="alignnone" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="SNAGHTMLfa6f724" src="http://www.myfatblog.co.uk/wp-content/uploads/2020/05/SNAGHTMLfa6f724_thumb.png" alt="Scheduling Channel meetings" width="482" height="470" border="0" /></a></p>
<p>The problem for end users here is that this time is only blocked out when they accept the meeting from the channel itself, unlike the default behaviour in Outlook where the time is tentatively blocked out in the calendar until the user decides to Accept or Decline the invitation. For users that rely on their calendar heavily to manage their schedule, this can become a source of double bookings very quickly.</p>
<p>At this point, most end users just end up adding the group members to the Attendees list which is fine in a small group, but what about when a channel has many members? The default behaviour by users is to try and add the Group name to the Attendees list which sadly doesn’t work for most Microsoft Teams because the underlying group is hidden from the Outlook Address book by default (For all Teams created after May 2018). Whilst we can override this behaviour using PowerShell, that would require IT to be involved with each group creation.</p>
<p>The next step is to try @mentioning the Channel or Team name in the title of the meeting and sadly that doesn’t work either. The only way to drive peoples attention to the booking is to pop into the channel and @Mentioning the Team or Channel in the same Thread as the booking.</p>
<p><a href="http://www.myfatblog.co.uk/wp-content/uploads/2020/05/SNAGHTMLfae73b5.png"><img loading="lazy" decoding="async" class="alignnone" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="SNAGHTMLfae73b5" src="http://www.myfatblog.co.uk/wp-content/uploads/2020/05/SNAGHTMLfae73b5_thumb.png" alt="Using @mention with Channel meetings" width="689" height="175" border="0" /></a></p>
<p>For companies and users that are moving from a very Outlook driven experience, meetings in Channels could be a regular sticking point in the adoption path, so hopefully this tip will help drive the behaviour changes needed for Channel meetings. At least until Microsoft look at aligning the behaviours in calendar bookings between outlook and Teams.</p>
<p>Paul.</p>
<p>The post <a href="http://www.myfatblog.co.uk/index.php/2020/05/addressing-the-challenge-presented-by-channel-meetings-in-microsoft-teams/">Addressing the challenge presented by Channel meetings in Microsoft Teams</a> appeared first on <a href="http://www.myfatblog.co.uk">Blog of an overweight SharePoint addict</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>http://www.myfatblog.co.uk/index.php/2020/05/addressing-the-challenge-presented-by-channel-meetings-in-microsoft-teams/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Using Notification Tags in Microsoft Teams</title>
		<link>http://www.myfatblog.co.uk/index.php/2020/05/using-notification-tags-in-microsoft-teams/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=using-notification-tags-in-microsoft-teams</link>
					<comments>http://www.myfatblog.co.uk/index.php/2020/05/using-notification-tags-in-microsoft-teams/#respond</comments>
		
		<dc:creator><![CDATA[Cimares]]></dc:creator>
		<pubDate>Thu, 07 May 2020 15:20:10 +0000</pubDate>
				<category><![CDATA[Notifications]]></category>
		<category><![CDATA[Teams]]></category>
		<guid isPermaLink="false">http://www.myfatblog.co.uk/?p=1572</guid>

					<description><![CDATA[<p>I have been working with Teams for some time now in a mixture of team types from large and small. Each has its own interesting ways of working, but for me one of the biggest problems with larger teams is of course notifications. What generally happens is people raise a topic in the team or &#8230; </p>
<p><a class="more-link btn" href="http://www.myfatblog.co.uk/index.php/2020/05/using-notification-tags-in-microsoft-teams/">Continue reading</a></p>
<p>The post <a href="http://www.myfatblog.co.uk/index.php/2020/05/using-notification-tags-in-microsoft-teams/">Using Notification Tags in Microsoft Teams</a> appeared first on <a href="http://www.myfatblog.co.uk">Blog of an overweight SharePoint addict</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>I have been working with Teams for some time now in a mixture of team types from large and small. Each has its own interesting ways of working, but for me one of the biggest problems with larger teams is of course notifications. What generally happens is people raise a topic in the team or channel and either @mention the Team or the Channel, which in turn notifies everyone!</p>
<p>Since early March, the Teams engineering team released a much-needed improvement for this situation in the form of Notification Tags. As a Team owner, I can define several different tags that the Team can @Mention instead of using the Team or Channel name. As a result, notifications only go out to users that have that Tag assigned to them.</p>
<p>If we take my fictional Business Productivity team as an example, my team has specialists from across Office 365. When I post my latest blog post on how to use SharePoint Spaces, the Exchange guys probably are not that interested in being notified about it. They can still see the post in the channel, but it will not highlight it for them, and they will not get the pop-ups.</p>
<p><a href="http://www.myfatblog.co.uk/wp-content/uploads/2020/05/image.png"><img loading="lazy" decoding="async" class="alignnone" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" src="http://www.myfatblog.co.uk/wp-content/uploads/2020/05/image_thumb.png" alt="Manage Team with Notification Tags" width="748" height="595" border="0" /></a></p>
<p>Adding new tags can be done from the Manage Users screen shown above, or from the Team context menu.</p>
<p><a href="http://www.myfatblog.co.uk/wp-content/uploads/2020/05/image-1.png"><img loading="lazy" decoding="async" class="alignnone" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" src="http://www.myfatblog.co.uk/wp-content/uploads/2020/05/image_thumb-1.png" alt="The manage notification tag dialogs" width="718" height="347" border="0" /></a></p>
<p>Of the two experiences, I like how the tags experience is setup on the Manage Team, however I would imagine for larger teams both experiences will be quite onerous for manual configuration so I’m very interested to see how this feature develops.  It would be nice to be able to maybe define a rule in the UI that applies a tag based on a user profile property.</p>
<p><a href="http://www.myfatblog.co.uk/wp-content/uploads/2020/05/image-2.png"><img loading="lazy" decoding="async" class="alignnone" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" src="http://www.myfatblog.co.uk/wp-content/uploads/2020/05/image_thumb-2.png" alt="Manage notification tags from the Manage Team dialog" width="738" height="409" border="0" /></a></p>
<p>&nbsp;</p>
<p>I do feel that the end-user experience needs some work. Currently if an End-User clicks on the Manage Tags context option, they receive the same layout as shown above, but without the ability to create new tags or change membership INCLUDING their own membership of a Tag. For me, a crucial part of this will be self-management of tag group membership.</p>
<p><a href="http://www.myfatblog.co.uk/wp-content/uploads/2020/05/clip_image001.png"><img loading="lazy" decoding="async" class="alignnone" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="clip_image001" src="http://www.myfatblog.co.uk/wp-content/uploads/2020/05/clip_image001_thumb.png" alt="End user view of the Manage Tag dialog" width="808" height="468" border="0" /></a></p>
<p>With regards to the use of Tags in channel conversations, these work in exactly the same way that @Mentions for Teams, Channels and People do with a nice type ahead lookup and prompt.</p>
<p><a href="http://www.myfatblog.co.uk/wp-content/uploads/2020/05/clip_image003.png"><img loading="lazy" decoding="async" class="alignnone" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="clip_image003" src="http://www.myfatblog.co.uk/wp-content/uploads/2020/05/clip_image003_thumb.png" alt="Notification tags in use" width="774" height="313" border="0" /></a></p>
<p>Overall, this is a great start with notification tags and I’m really looking forward to seeing what Teams Engineering do with the feedback so far on this aspect of the product.</p>
<p><a href="https://support.office.com/en-us/article/using-tags-in-teams-667bd56f-32b8-4118-9a0b-56807c96d91e">For more info, see the documentation here</a>.</p>
<p>The post <a href="http://www.myfatblog.co.uk/index.php/2020/05/using-notification-tags-in-microsoft-teams/">Using Notification Tags in Microsoft Teams</a> appeared first on <a href="http://www.myfatblog.co.uk">Blog of an overweight SharePoint addict</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>http://www.myfatblog.co.uk/index.php/2020/05/using-notification-tags-in-microsoft-teams/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Configuring your tenant Conditional Access for Site Sensitivity Labels in Office 365</title>
		<link>http://www.myfatblog.co.uk/index.php/2020/03/configuring-conditional-access-site-sensitivity/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=configuring-conditional-access-site-sensitivity</link>
					<comments>http://www.myfatblog.co.uk/index.php/2020/03/configuring-conditional-access-site-sensitivity/#respond</comments>
		
		<dc:creator><![CDATA[Cimares]]></dc:creator>
		<pubDate>Sun, 01 Mar 2020 16:49:11 +0000</pubDate>
				<category><![CDATA[SharePoint]]></category>
		<guid isPermaLink="false">http://www.myfatblog.co.uk/?p=1546</guid>

					<description><![CDATA[<p>In my post yesterday about the public preview of Site Sensitivity Labels in office 365, I said I’d do another post about how these work and what’s required to get these working in your tenant. This is kind of important as the current documentation does NOT tell you what to configure in Conditional Access to &#8230; </p>
<p><a class="more-link btn" href="http://www.myfatblog.co.uk/index.php/2020/03/configuring-conditional-access-site-sensitivity/">Continue reading</a></p>
<p>The post <a href="http://www.myfatblog.co.uk/index.php/2020/03/configuring-conditional-access-site-sensitivity/">Configuring your tenant Conditional Access for Site Sensitivity Labels in Office 365</a> appeared first on <a href="http://www.myfatblog.co.uk">Blog of an overweight SharePoint addict</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>In my <a href="http://www.myfatblog.co.uk/index.php/2020/02/site-sensitivity-labels-in-teams-groups-and-sharepoint/" target="_blank" rel="noopener noreferrer">post yesterday about the public preview of Site Sensitivity Labels in office 365</a>, I said I’d do another post about how these work and what’s required to get these working in your tenant. This is kind of important as the current documentation does NOT tell you what to configure in Conditional Access to get this working. You must also have Azure AD P1 licenses for everyone who will be subject to Site Sensitivity label as it required Azure AD Conditional Access to work.</p>
<blockquote><p>Just an FYI.. you must have Azure AD P1 for anyone subject to site sensitivity labels as it requires Azure AD Conditional Access to work!</p></blockquote>
<p>If like me you’ve been using Site Scoped Conditional Access policies in SharePoint for sometime (<a href="https://techcommunity.microsoft.com/t5/microsoft-sharepoint-blog/security-at-the-site-collection-level-in-sharepoint-online/ba-p/115597">Launched in Oct 2017</a>!), then you may already have the required rules in Azure AD Conditional Access, as these were required to enable that functionality and these group scoped rules work in exactly the same way.</p>
<p>For those of you not familiar with Conditional Access, it’s a way of creating a set of policies that can be targeted at all or a subset of your users to control access to Azure AD Protected applications based on things like Who the user is, where they are logging in from, what device they are using and depending on your license even how “Risky” their logon is considered using AI derived algorithms.</p>
<p>For the purposes of what we want to achieve, we’re going to create a Conditional Access rule that covers the following key points:</p>
<ol>
<li>Is targeted at a Single Test User.</li>
<li>Tests to see if the user is outside of the “Trusted locations” (e.g. outside the corporate perimeter)</li>
<li>If the rule applies, access will be granted but final control will be passed to the application for it to control access (in this case SharePoint)</li>
</ol>
<p>It’s that final stage that provides SharePoint the granular control over whether to allow the user in with Full or limited access, or to just block them outright. This maps directly to the ConditionalAccessPolicy property that can be configured on an SPSite object through PowerShell, with the following values.</p>
<p><a href="http://www.myfatblog.co.uk/wp-content/uploads/2020/03/image.png"><img loading="lazy" decoding="async" class="alignnone" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" src="http://www.myfatblog.co.uk/wp-content/uploads/2020/03/image_thumb.png" alt="Site Sensitivity conditional access policies" width="355" height="92" border="0" /></a></p>
<p>Looking at the sites created during both Teams creation and SharePoint site creation with sensitivity labels, I’m seeing the same properties being configured under the hood, so it’s safe to assume the mechanisms of both this and classic Site Scoped access policies are the same.</p>
<p>These map directly to the permissions found in the Sensitivity Label configuration for Sites and Groups:</p>
<p><a href="http://www.myfatblog.co.uk/wp-content/uploads/2020/03/SNAGHTML44b4f6b8.png"><img loading="lazy" decoding="async" class="alignnone" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="SNAGHTML44b4f6b8" src="http://www.myfatblog.co.uk/wp-content/uploads/2020/03/SNAGHTML44b4f6b8_thumb.png" alt="Site Sensitivity conditional access policies settings" width="383" height="398" border="0" /></a></p>
<p>Assuming that we’ve created our site sensitivity labels and created a new Team, Group or Site using them, or decorated a SharePoint site with the conditional access policy shown above, how do we create the conditional access policy to enforce those behaviours?</p>
<ul>
<li>Open the Azure Portal and find the Azure AD Conditional Access blade. Click on New Policy and configure the following:</li>
</ul>
<p><a href="http://www.myfatblog.co.uk/wp-content/uploads/2020/03/SNAGHTML44b9487e.png"><img loading="lazy" decoding="async" class="alignnone" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="SNAGHTML44b9487e" src="http://www.myfatblog.co.uk/wp-content/uploads/2020/03/SNAGHTML44b9487e_thumb.png" alt="Conditional access policy settings for Site Sensitivity" width="322" height="343" border="0" /></a></p>
<ul>
<li>Give your new policy a meaningful name, there’s a good chance your conditional access policy lists will grow quite large!</li>
<li>Apply it to your test users and select which cloud apps, If you select just SharePoint, you’ll see a recommendation that you use the Office 365 App as a selection instead, ignore this and Select SharePoint anyway, if you don’t the Session Condition that we need is greyed out.</li>
<li>Under conditions, if you have Trusted Locations configured to represent your internal perimeter devices, then configure the Conditional to EXCLUDE trusted locations. This means the policy will only apply if you are NOT in a trusted location.</li>
</ul>
<p><a href="http://www.myfatblog.co.uk/wp-content/uploads/2020/03/SNAGHTML44c05daa.png"><img loading="lazy" decoding="async" class="alignnone" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="SNAGHTML44c05daa" src="http://www.myfatblog.co.uk/wp-content/uploads/2020/03/SNAGHTML44c05daa_thumb.png" alt="Conditional access policy settings for Site Sensitivity part 2" width="644" height="250" border="0" /></a></p>
<ul>
<li>In the Access Controls session, select the Session option and choose “Use App Enforced Restrictions”.</li>
<li>Enable the policy and hit Create.</li>
</ul>
<p>Now log on with your Test user from a non trusted location and try and access sites that you’ve configured with Full, Limited and Blocked access policies. You should find a mix of experiences based on each policy that you’ve set.</p>
<p>Note: These new policies take effect almost immediately, however if your test user has cached credentials and a valid token, they won’t take effect until that token expires, so make sure you test using an InPrivate browsing session!</p>
<p>The post <a href="http://www.myfatblog.co.uk/index.php/2020/03/configuring-conditional-access-site-sensitivity/">Configuring your tenant Conditional Access for Site Sensitivity Labels in Office 365</a> appeared first on <a href="http://www.myfatblog.co.uk">Blog of an overweight SharePoint addict</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>http://www.myfatblog.co.uk/index.php/2020/03/configuring-conditional-access-site-sensitivity/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Site sensitivity labels in Teams, Groups and SharePoint</title>
		<link>http://www.myfatblog.co.uk/index.php/2020/02/site-sensitivity-labels-in-teams-groups-and-sharepoint/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=site-sensitivity-labels-in-teams-groups-and-sharepoint</link>
					<comments>http://www.myfatblog.co.uk/index.php/2020/02/site-sensitivity-labels-in-teams-groups-and-sharepoint/#respond</comments>
		
		<dc:creator><![CDATA[Cimares]]></dc:creator>
		<pubDate>Sat, 29 Feb 2020 23:13:38 +0000</pubDate>
				<category><![CDATA[Azure]]></category>
		<category><![CDATA[Conditional Access]]></category>
		<category><![CDATA[SharePoint Online]]></category>
		<category><![CDATA[Teams]]></category>
		<guid isPermaLink="false">http://www.myfatblog.co.uk/?p=1534</guid>

					<description><![CDATA[<p>##UPDATE## I&#8217;ve spent the weekend updating my session ready for SPC20 in Las Vegas in May where I&#8217;ll be demoing this updated experience along with other Conditional Access Scenarios! If you register with Speaker code HUNT or from this link here, you can get $50 off the registration price! Update to Site Collection Scoped policies &#8230; </p>
<p><a class="more-link btn" href="http://www.myfatblog.co.uk/index.php/2020/02/site-sensitivity-labels-in-teams-groups-and-sharepoint/">Continue reading</a></p>
<p>The post <a href="http://www.myfatblog.co.uk/index.php/2020/02/site-sensitivity-labels-in-teams-groups-and-sharepoint/">Site sensitivity labels in Teams, Groups and SharePoint</a> appeared first on <a href="http://www.myfatblog.co.uk">Blog of an overweight SharePoint addict</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h4><em>##UPDATE## I&#8217;ve spent the weekend updating my session ready for SPC20 in Las Vegas in May where I&#8217;ll be demoing this updated experience along with other Conditional Access Scenarios!</em><br />
<em>If you register with Speaker code HUNT or <a href="https://sharepointna.com/#!/register?utm_term=HUNT">from this link here, you can get $50 </a>off the registration price!</em></h4>
<h1>Update to Site Collection Scoped policies with Site Sensitivity Labels</h1>
<p>I’ve been talking about conditional access in Office 365 at events for some time now and whenever we talk about Site Collection Scoped policies, I’ve always said the missing link is for the End User to be able to select them without IT intervention and for this we need Site Sensitivity labels that actually do something!</p>
<p>For those that aren’t familiar with Site Collection Scoped policies, these can be set through PowerShell on any Site Collection in SharePoint Online, which when coupled with a suitably configured Conditional Access rule, lock down the end users ability to take certain actions based on one of three scopes.. Full Access, Limited Access and No Access.</p>
<p>The key blocker for me and the missing link in the whole piece has been the IT involvement step.. What user is going to create a site and then raise a call with their IT department to have the site locked down? Pretty certain the answer to that is a big resounding.. NONE!</p>
<p>Microsoft has been talking about Site Sensitivity Labels since Ignite in 2018 and despite seeing a few previews, we’ve not seen much about them until they announce the private preview at Ignite 2019 and then just last week on 28th February 2020, they announced that the feature had finally hit public preview… The missing link has arrived!</p>
<h1>The missing link &#8211; Site sensitivity labels!</h1>
<p><a href="http://www.myfatblog.co.uk/wp-content/uploads/2020/02/bigstock-Missing-Piece-4109655.jpg"><img loading="lazy" decoding="async" class="alignnone" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="The missing link" src="http://www.myfatblog.co.uk/wp-content/uploads/2020/02/bigstock-Missing-Piece-4109655_thumb.jpg" alt="The missing link - Site sensitivity labels" width="442" height="295" border="0" /></a></p>
<p>To enable the preview feature, you first need to <a href="https://docs.microsoft.com/en-us/azure/active-directory/users-groups-roles/groups-assign-sensitivity-labels" target="_blank" rel="noopener noreferrer">read this page on docs.microsoft.com</a> and follow the steps in “Enable sensitivity label support in PowerShell”.</p>
<p>Then read the preview documents from MS (<a href="https://docs.microsoft.com/en-us/microsoft-365/compliance/sensitivity-labels-teams-groups-sites" target="_blank" rel="noopener noreferrer">available on docs.microsoft.com here</a>.) and follow steps 2 and 3 in “Enable this preview and synchronise labels” (Step 1 was to do the PowerShell bits!)</p>
<p>Now you need to create or edit your sensitivity labels to include the new Site and Group Settings in the Label configuration under Classification in the old protection portal (You may find this in the compliance portal in your tenant.)</p>
<p><a href="https://docs.microsoft.com/en-us/azure/active-directory/users-groups-roles/groups-assign-sensitivity-labels"><img loading="lazy" decoding="async" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="SNAGHTML40e98beb" src="http://www.myfatblog.co.uk/wp-content/uploads/2020/02/SNAGHTML40e98beb.png" alt="SNAGHTML40e98beb" width="483" height="502" border="0" /></a></p>
<p>As you can see, the settings are fairly straight forward and allow you to control the privacy of the group, whether External Users can be added and what access unmanaged devices have to the site. Once you’ve configured a Sensitivity Label or 3, create a publishing Policy that contains a few test users and hit publish… (Just bear in mind, that when a label is applied to a Site or Group, only the Site and Group settings applied to the site, there is no inheritance of the label on content…so no encryption, watermarking etc!)</p>
<p>Then wait up to 24 hours!.. Yep seriously..it can take 24 hours for your labels to be pushed out. Mine took 14 hours in the end, so be prepared to wait.</p>
<p>Once the labels have been applied, you should see them in 4 main places:</p>
<ul>
<li>Office 365 Group Creation experience in Azure</li>
<li>Teams creation experience in the Teams client (or browser)</li>
<li>SPO Creation experience in SharePoint Online.</li>
<li>SharePoint Administration Page (modern experience)</li>
</ul>
<p><a href="http://www.myfatblog.co.uk/wp-content/uploads/2020/02/image.png"><img loading="lazy" decoding="async" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" src="http://www.myfatblog.co.uk/wp-content/uploads/2020/02/image_thumb.png" alt="image" width="536" height="389" border="0" /></a></p>
<p>I’m going to dig a little deeper into the conditional access side of how this all works in my next post, but for now I want to talk about the user experience as there’s a couple of little issues currently. I’ve notified the product group of these through the MVP channels and hopefully by the time this reaches GA, we’ll have got them all resolved.</p>
<p>The first issue is one of confusion. As a SharePoint user, if I go to a limited access site, I get a really nice banner at the top of the page that highlights that due to the device I’m using, I’m not permitted to perform certain actions like downloading or printing.</p>
<p><a href="http://www.myfatblog.co.uk/wp-content/uploads/2020/02/SNAGHTML40f706d8.png"><img loading="lazy" decoding="async" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="SNAGHTML40f706d8" src="http://www.myfatblog.co.uk/wp-content/uploads/2020/02/SNAGHTML40f706d8_thumb.png" alt="SNAGHTML40f706d8" width="720" height="96" border="0" /></a></p>
<p>If I attempt to go to a blocked site, I’ll receive a stern but clear access error:</p>
<p><a href="http://www.myfatblog.co.uk/wp-content/uploads/2020/02/SNAGHTML40f7f0cb.png"><img loading="lazy" decoding="async" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="SNAGHTML40f7f0cb" src="http://www.myfatblog.co.uk/wp-content/uploads/2020/02/SNAGHTML40f7f0cb_thumb.png" alt="SNAGHTML40f7f0cb" width="717" height="242" border="0" /></a></p>
<p>If however I’m a teams user, I can access the Team quite happily, but if I try and switch to the files tab, I receive a rather nasty error that suggests someone has deleted the list or I don’t have access (which is somewhat close to the truth!)</p>
<p><a href="http://www.myfatblog.co.uk/wp-content/uploads/2020/02/SNAGHTML40fb40b1.png"><img loading="lazy" decoding="async" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="SNAGHTML40fb40b1" src="http://www.myfatblog.co.uk/wp-content/uploads/2020/02/SNAGHTML40fb40b1_thumb.png" alt="SNAGHTML40fb40b1" width="415" height="382" border="0" /></a></p>
<p>The second issue is rather less annoying and more one of consistency. When I create a new Office 365 Group or a Microsoft Team (Option B), I can choose to use a Sensitivity Label or leave it set to None.. When creating a new site in SharePoint (Option A), you MUST select a label which could prove limiting as it then requires you to change the label if you want to change the group between Public/Private etc.</p>
<p><a href="http://www.myfatblog.co.uk/wp-content/uploads/2020/02/SNAGHTML410051c0.png"><img loading="lazy" decoding="async" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="SNAGHTML410051c0" src="http://www.myfatblog.co.uk/wp-content/uploads/2020/02/SNAGHTML410051c0_thumb.png" alt="SNAGHTML410051c0" width="526" height="300" border="0" /></a></p>
<p>That&#8217;s all for now. In the next post I&#8217;m going to cover some of the technical controls that you need to put in place, and a few good practices to consider for the short term!</p>
<p>Paul.</p>
<p>The post <a href="http://www.myfatblog.co.uk/index.php/2020/02/site-sensitivity-labels-in-teams-groups-and-sharepoint/">Site sensitivity labels in Teams, Groups and SharePoint</a> appeared first on <a href="http://www.myfatblog.co.uk">Blog of an overweight SharePoint addict</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>http://www.myfatblog.co.uk/index.php/2020/02/site-sensitivity-labels-in-teams-groups-and-sharepoint/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Using PowerAutomate to deploy PowerAutomate (Flow deploying Flow)&#8230; Sounds like Inception?</title>
		<link>http://www.myfatblog.co.uk/index.php/2020/02/using-powerautomate-deploy-powerautomate-flow-deploying-flow-sounds-like-inception/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=using-powerautomate-deploy-powerautomate-flow-deploying-flow-sounds-like-inception</link>
					<comments>http://www.myfatblog.co.uk/index.php/2020/02/using-powerautomate-deploy-powerautomate-flow-deploying-flow-sounds-like-inception/#comments</comments>
		
		<dc:creator><![CDATA[Cimares]]></dc:creator>
		<pubDate>Wed, 12 Feb 2020 19:31:12 +0000</pubDate>
				<category><![CDATA[PowerPlatform]]></category>
		<category><![CDATA[Flow]]></category>
		<category><![CDATA[Flow Deployment]]></category>
		<category><![CDATA[PowerAutomate]]></category>
		<category><![CDATA[PowerAutomate Deployment]]></category>
		<guid isPermaLink="false">http://www.myfatblog.co.uk/?p=1513</guid>

					<description><![CDATA[<p>Cobb: “Once an idea has taken hold of the brain it&#8217;s almost impossible to eradicate. An idea that is fully formed &#8211; fully understood &#8211; that sticks; right in there somewhere.” I’ve not been using Power Automate heavily in recent projects, just the odd small workflow here and there, but just recently a colleague asked &#8230; </p>
<p><a class="more-link btn" href="http://www.myfatblog.co.uk/index.php/2020/02/using-powerautomate-deploy-powerautomate-flow-deploying-flow-sounds-like-inception/">Continue reading</a></p>
<p>The post <a href="http://www.myfatblog.co.uk/index.php/2020/02/using-powerautomate-deploy-powerautomate-flow-deploying-flow-sounds-like-inception/">Using PowerAutomate to deploy PowerAutomate (Flow deploying Flow)&hellip; Sounds like Inception?</a> appeared first on <a href="http://www.myfatblog.co.uk">Blog of an overweight SharePoint addict</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><strong><em>Cobb: “Once an idea has taken hold of the brain it&#8217;s almost impossible to eradicate. An idea that is fully formed &#8211; fully understood &#8211; that sticks; right in there somewhere.”</em></strong></p>
<p>I’ve not been using Power Automate heavily in recent projects, just the odd small workflow here and there, but just recently a colleague asked me if it was possible to automate Flow Deployment.. i.e. deploy a flow with a flow?</p>
<p>Not being 100%, I reached out to a few friends in the User Group community and Serge Luca came back very quickly and said, “Have you looked at the Create Flow” action in the Flow Management Connector.</p>
<p>On the face of it, the “Create Flow” action looks very simple to use, you select your environment, give it a display name, drop in a definition and give it a state of On or Off. Simples!</p>
<p><a href="http://www.myfatblog.co.uk/wp-content/uploads/2020/02/clip_image002.png"><img loading="lazy" decoding="async" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="clip_image002" src="http://www.myfatblog.co.uk/wp-content/uploads/2020/02/clip_image002_thumb.png" alt="clip_image002" width="597" height="321" border="0" /></a></p>
<p>Well of course nothing is that simple and in this case it’s the Flow Definition that will keep you awake. On the face of it, the definition is fairly simple JSON that complies roughly to the following:</p>
<p><a href="http://www.myfatblog.co.uk/wp-content/uploads/2020/02/clip_image004.png"><img loading="lazy" decoding="async" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="clip_image004" src="http://www.myfatblog.co.uk/wp-content/uploads/2020/02/clip_image004_thumb.png" alt="clip_image004" width="600" height="155" border="0" /></a></p>
<p>To test this out, I used the “Get Flow” action to get a valid definition of a flow attached to a SharePoint Library, then took the output of this and piped it directly into the “Create Flow”. This however didn’t work until I realised that I needed to include the Connection References from the received flow too.</p>
<p><a href="http://www.myfatblog.co.uk/wp-content/uploads/2020/02/clip_image006.png"><img loading="lazy" decoding="async" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="clip_image006" src="http://www.myfatblog.co.uk/wp-content/uploads/2020/02/clip_image006_thumb.png" alt="clip_image006" width="602" height="263" border="0" /></a></p>
<p><i>Note: Clicking on the icon to the right of the references collection drops it down to a single box for a collection reference.</i></p>
<p>With all the elements in place, the flow runs perfectly, creating a new copy of the flow attached to the same SharePoint list. Ok great.. we’re now getting two email alerts instead of one!</p>
<p>The real power in this scenario now, would be to take the source Flow and to re-attach the trigger connection to a new library in a new site collection. The Scenario for this is that we’re using a mixture of Site Designs and PNP to create a particular type of site and we need to include a flow on each site that is built. As flows currently do not get included in site designs, the only option is to try and do this through automation, by calling the flow after the PNP work is finished.</p>
<p>To test this theory, I took the output of the Flow Definition step in our test email which is JSON format text and edited it in VS Code. Looking at the structure of the workflow, the only thing I need to change is a few elements in the trigger. These are:</p>
<p>/inputs/path</p>
<p>/inputs/queries/folderpath</p>
<p>I updated this with the correct new values and then pasted the whole JSON back into the “Create Flow” action, only to be met with a Big red dot on the flow checker. Looking at the error it reads <b><i>“Correct to include a valid reference to ‘Get_my_profile_(V2)’ for the input parameter(s) of action ‘Create_Flow’”</i></b></p>
<p>But I’m not using the Get Profile action in this flow? However I am using it in the source flow that we’re copying. On Examination when we look at what’s been pasted into the “Create Flow” action, we can see that the app designer has parsed all of the text, including the parameters of the actions embedded in the workflow definition.</p>
<p><a href="http://www.myfatblog.co.uk/wp-content/uploads/2020/02/clip_image008.png"><img loading="lazy" decoding="async" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="clip_image008" src="http://www.myfatblog.co.uk/wp-content/uploads/2020/02/clip_image008_thumb.png" alt="clip_image008" width="595" height="290" border="0" /></a></p>
<p>This had me at a bit of a loss and I toyed with the problem for a day or two before posting on the Power Platform forums and reaching out to a few people in the community. Luckily, John Liu came to my rescue and pointed to some fun he had using Geolocation for Pokemon Go! (And I love this example of using flow for fun!, click on the Tweet below to see the full trail.)</p>
<blockquote class="twitter-tweet">
<p dir="ltr" lang="en"><a href="https://twitter.com/johnnliu?ref_src=twsrc%5Etfw">@johnnliu</a> I&#8217;ve seen a post of yours I think that discussed the &#8220;Create Flow&#8221; action in the Flow Management Connectors.. were you ever able to customise the definition of the flow being created? <a href="https://t.co/z0expwCk3C">https://t.co/z0expwCk3C</a> <a href="https://twitter.com/hashtag/PowerAutomate?src=hash&amp;ref_src=twsrc%5Etfw">#PowerAutomate</a> <a href="https://twitter.com/hashtag/Flow?src=hash&amp;ref_src=twsrc%5Etfw">#Flow</a></p>
<p>— Paul Hunt #MVP #Maker (@cimares) <a href="https://twitter.com/cimares/status/1227541597849608192?ref_src=twsrc%5Etfw">February 12, 2020</a></p></blockquote>
<p><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script></p>
<p>The pointers he gave me in that tweet showed me that I needed to break up and rebuild the Flow Definition. I didn’t quite realise how granular I needed to be though and in the end we pretty much rebuilt the definition dynamically throughout using a lot of Compose Actions.</p>
<p>As the flow will eventually be triggered by an HTML request, I started building using a Manual Trigger, capturing four key pieces of information.</p>
<p>· siteURL – The URL of the site that has been created</p>
<p>· flowName – The new name of the dynamically created flow.</p>
<p>· listName – The name of the list</p>
<p>· folderPath – Usually the name of the list (unless it’s the Documents list, in which case it’s “Shared Documents”</p>
<p><a href="http://www.myfatblog.co.uk/wp-content/uploads/2020/02/clip_image010.png"><img loading="lazy" decoding="async" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="clip_image010" src="http://www.myfatblog.co.uk/wp-content/uploads/2020/02/clip_image010_thumb.png" alt="clip_image010" width="602" height="331" border="0" /></a></p>
<p><em><strong>Note: Notice the Parameter names that we list in the Trigger action above? These are NOT the names that you find them by when addressing the JSON in the step named &#8220;Initialise SiteURL Encoded&#8221; in the next step. Instead they are labelled &#8220;text&#8221;, &#8220;text_1&#8221; etc internally! If you Peek the code you can see what I mean. This isn&#8217;t a problem when using the Dynamic data selector, only when using the TriggerBody() function.</strong></em></p>
<blockquote><p>Since I demo&#8217;d this issue as the London PPUG, Pieter Veenstra went away to find a way to correct this issue. It does mean exporting and re-importing the flow, but it does resolve the naming problem!</p>
<p><a href="https://sharepains.com/2020/04/24/inputs-in-manually-trigger-a-flow/" target="_blank" rel="noopener noreferrer">Read Pieters blog post from this link.</a></p></blockquote>
<p>After this, we have some setting up to do. First we get all the lists and libraries from the site (<em><strong>I realised after I wrote this, that this step is NOT needed as we can just call for the library ID using an HTTP request!</strong></em>) and also capture the Site URL as an encodedURIComponent so that we can safely embed it in the JSON.</p>
<p><a href="http://www.myfatblog.co.uk/wp-content/uploads/2020/02/clip_image012.png"><img loading="lazy" decoding="async" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="clip_image012" src="http://www.myfatblog.co.uk/wp-content/uploads/2020/02/clip_image012_thumb.png" alt="clip_image012" width="503" height="304" border="0" /></a></p>
<p>Then we get the target List from a SharePoint Rest call so that we can use the ID GUID from the list in our definition (this is also URL Encoded as per the default definition from Flow).</p>
<p><a href="http://www.myfatblog.co.uk/wp-content/uploads/2020/02/clip_image014.png"><img loading="lazy" decoding="async" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="clip_image014" src="http://www.myfatblog.co.uk/wp-content/uploads/2020/02/clip_image014_thumb.png" alt="clip_image014" width="500" height="473" border="0" /></a></p>
<p>Following this, the Get Flow action allows us to grab a copy of our Source flow. For our scenario, this flow is permanently attached to our Template site which is kept to allow for updates to the Site Design.</p>
<p><a href="http://www.myfatblog.co.uk/wp-content/uploads/2020/02/clip_image015.png"><img loading="lazy" decoding="async" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="clip_image015" src="http://www.myfatblog.co.uk/wp-content/uploads/2020/02/clip_image015_thumb.png" alt="clip_image015" width="493" height="119" border="0" /></a></p>
<p>It’s at this point where things go a little crazy. During the reverse engineering that I did, I found that using a single compose action wasn’t suitable as I kept getting crazy errors like: “The flow cannot contain unsupported parameter function expressions” which I traced back to some of the parts of the definition that I wasn’t intending to change.</p>
<p><a href="http://www.myfatblog.co.uk/wp-content/uploads/2020/02/clip_image017.png"><img loading="lazy" decoding="async" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="clip_image017" src="http://www.myfatblog.co.uk/wp-content/uploads/2020/02/clip_image017_thumb.png" alt="clip_image017" width="511" height="49" border="0" /></a></p>
<p>To get around this, I had to break out the individual elements of the JSON definition into single Compose Actions, then bring them all together at the end into a new block of JSON. There might be more efficient ways of doing this using SetProperty like John does in his Flow, but I just haven’t had as much exposure to the Expression functions yet and this worked for me!</p>
<p><a href="http://www.myfatblog.co.uk/wp-content/uploads/2020/02/clip_image018.png"><img loading="lazy" decoding="async" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="clip_image018" src="http://www.myfatblog.co.uk/wp-content/uploads/2020/02/clip_image018_thumb.png" alt="clip_image018" width="495" height="351" border="0" /></a></p>
<p>The first two actions use the same method to grab the relevant portions of the JSON from the “Get Flow” action. In the Inputs field, we use the expression “body(‘Get_Flow’)[‘properties’][‘definition’][‘parameters’] to grab the block of data that we want.</p>
<p><a href="http://www.myfatblog.co.uk/wp-content/uploads/2020/02/clip_image019.png"><img loading="lazy" decoding="async" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="clip_image019" src="http://www.myfatblog.co.uk/wp-content/uploads/2020/02/clip_image019_thumb.png" alt="clip_image019" width="500" height="131" border="0" /></a></p>
<p>As we’re not making any changes to Parameters or Actions at this point, we don’t need to be any more granular than that. These blocks will just be added back into our Flow Definition at the bottom of this step.</p>
<p>The Triggers section is where it becomes a little more difficult, so we start by building up the sections that we do want to amend, Path and Query.</p>
<p><a href="http://www.myfatblog.co.uk/wp-content/uploads/2020/02/clip_image020.png"><img loading="lazy" decoding="async" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="clip_image020" src="http://www.myfatblog.co.uk/wp-content/uploads/2020/02/clip_image020_thumb.png" alt="clip_image020" width="500" height="117" border="0" /></a></p>
<p>For the path, we inject our URL encoded Site URL and the ListID into a new string that replaces this line from the original definition:</p>
<p>&#8220;path&#8221;: &#8220;/datasets/https%253A%252F%252F&lt;tenant&gt;.sharepoint.com%252Fsites%252FTestSiteForPen/tables/ecdd0b51-6f77-42fb-8aad-63e2312a95fe/onnewfileitems&#8221;</p>
<p><a href="http://www.myfatblog.co.uk/wp-content/uploads/2020/02/clip_image021.png"><img loading="lazy" decoding="async" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="clip_image021" src="http://www.myfatblog.co.uk/wp-content/uploads/2020/02/clip_image021_thumb.png" alt="clip_image021" width="501" height="134" border="0" /></a></p>
<p>For the query, we inject the folder path (collected at the start) into a JSON object string.</p>
<p><a href="http://www.myfatblog.co.uk/wp-content/uploads/2020/02/clip_image022.png"><img loading="lazy" decoding="async" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="clip_image022" src="http://www.myfatblog.co.uk/wp-content/uploads/2020/02/clip_image022_thumb.png" alt="clip_image022" width="503" height="254" border="0" /></a></p>
<p>Then finally we grab the Host and Authentication elements in their entirety as we’re not making any changes to these either.</p>
<p>With all of these elements in place, we can now build up the new trigger element as a new block of JSON, injecting the relevant elements as needed (Note the “Outputs” come from the relevant Compose action).</p>
<p><a href="http://www.myfatblog.co.uk/wp-content/uploads/2020/02/clip_image024.png"><img loading="lazy" decoding="async" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="clip_image024" src="http://www.myfatblog.co.uk/wp-content/uploads/2020/02/clip_image024_thumb.png" alt="clip_image024" width="503" height="521" border="0" /></a></p>
<p>And then finally, we create a new Flow Definition bringing together all of the elements:</p>
<p><a href="http://www.myfatblog.co.uk/wp-content/uploads/2020/02/clip_image025.png"><img loading="lazy" decoding="async" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="clip_image025" src="http://www.myfatblog.co.uk/wp-content/uploads/2020/02/clip_image025_thumb.png" alt="clip_image025" width="505" height="278" border="0" /></a></p>
<p>And then the finished “Create Flow” action</p>
<p><a href="http://www.myfatblog.co.uk/wp-content/uploads/2020/02/clip_image026.png"><img loading="lazy" decoding="async" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="clip_image026" src="http://www.myfatblog.co.uk/wp-content/uploads/2020/02/clip_image026_thumb.png" alt="clip_image026" width="505" height="219" border="0" /></a></p>
<p>With this saved, I created a new site collection, then called the flow, passing in the URL, library name and the other required information. This created the Flow which duly triggered when a file was uploaded into the library.</p>
<p>Then I had a drink to celebrate! <img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f60e.png" alt="😎" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>The post <a href="http://www.myfatblog.co.uk/index.php/2020/02/using-powerautomate-deploy-powerautomate-flow-deploying-flow-sounds-like-inception/">Using PowerAutomate to deploy PowerAutomate (Flow deploying Flow)&hellip; Sounds like Inception?</a> appeared first on <a href="http://www.myfatblog.co.uk">Blog of an overweight SharePoint addict</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>http://www.myfatblog.co.uk/index.php/2020/02/using-powerautomate-deploy-powerautomate-flow-deploying-flow-sounds-like-inception/feed/</wfw:commentRss>
			<slash:comments>10</slash:comments>
		
		
			</item>
		<item>
		<title>Back to work with a bang and great news that I&#8217;ll be in Vegas in May @ SPC20</title>
		<link>http://www.myfatblog.co.uk/index.php/2020/01/back-to-work-with-vegas-spc20-news/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=back-to-work-with-vegas-spc20-news</link>
					<comments>http://www.myfatblog.co.uk/index.php/2020/01/back-to-work-with-vegas-spc20-news/#respond</comments>
		
		<dc:creator><![CDATA[Cimares]]></dc:creator>
		<pubDate>Thu, 09 Jan 2020 14:05:25 +0000</pubDate>
				<category><![CDATA[SharePoint]]></category>
		<guid isPermaLink="false">http://www.myfatblog.co.uk/?p=1472</guid>

					<description><![CDATA[<p>For those of you that are connected to me socially or read my previous blog post about disruptive technology in Helsinki, you’ll know that 2019 ended on a bit of a health downer. While travelling to attend and speak at SharePoint Saturday in Helsinki (one of the most awesome cool cities I’ve visited), I had &#8230; </p>
<p><a class="more-link btn" href="http://www.myfatblog.co.uk/index.php/2020/01/back-to-work-with-vegas-spc20-news/">Continue reading</a></p>
<p>The post <a href="http://www.myfatblog.co.uk/index.php/2020/01/back-to-work-with-vegas-spc20-news/">Back to work with a bang and great news that I&rsquo;ll be in Vegas in May @ SPC20</a> appeared first on <a href="http://www.myfatblog.co.uk">Blog of an overweight SharePoint addict</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>For those of you that are connected to me socially or <a href="http://www.myfatblog.co.uk/index.php/2019/12/the-time-a-disruptive-technology-saved-my-life-in-helsinki/">read my previous blog post about disruptive technology in Helsinki</a>, you’ll know that 2019 ended on a bit of a health downer. While travelling to attend and speak at SharePoint Saturday in Helsinki (one of the most awesome cool cities I’ve visited), I had a bit of a health issue that resulted in me taking 3 months off work following major heart surgery. Well I’m at the end of that 3 months now and am getting ready to return to work and all things community once more (albeit maybe at a slower pace this year!)</p>
<p>That said, I was stoked to receive an e-mail from the SharePoint Conference team, to say that my session on conditional access had been selected for presentation in Vegas at SharePoint Conference NA &#8211; SPC20 in May. I know that they get a lot of submissions of quality sessions from some of the most exceptional speakers from around the world (just take a look at the speaker list so far! <a href="https://sharepointna.com/#!/speakers">SharePointna.com</a>), so to be selected to speak is certainly an honour for me and one I am truly grateful for!</p>
<p>I’ll be presenting a session on using Conditional Access to control access to content in Office 365. This is certainly one of my favourite sessions to deliver and I’ve been giving a session with this title for over a year now, but so far nearly every delivery has been different. We can only thank Microsoft for this as their continual evolution of the platform has meant that I’ve had to continually adapt this session to address the changes and improvements they’ve made in both perimeter security and content security for organisation users, admins and external guests.</p>
<p>I find the subject of access into Office 365 a great topic to speak with customers about. There’s this recurring perception that the cloud is unsafe and that your own on-premises data centre is safer, but I like to challenge that statement in discussions and understand why the person takes that viewpoint. In my experience it’s not the cloud platform that is unsafe, it’s generally the way that it’s been deployed and how access is controlled and granted. Conversely if we look at the perimeter controls on an enterprise data centre, there is generally very little that can match the scale of any cloud provider when it comes to perimeter security and intrusion detection.</p>
<p><img loading="lazy" decoding="async" class="alignleft wp-image-1475 size-medium" src="http://www.myfatblog.co.uk/wp-content/uploads/2020/01/bigstock-Sparta-Greece-March-294285784-1-200x300.jpg" alt="Kind Leonidas who led the Spartans at the Battle of Thermopylae that features in this post about my SPC20 session" width="200" height="300" /></p>
<p>On the subject of perimeter security, I read a great security blog last year (apologies but I can’t find the source now) that used the analogy of the Greeks in the battle of Thermopylae, stood outside their mountain fortress, relying on the walls behind them to protect them as they fought off the marauding Persian army. The problem is, they forgot about the locals who had been farming goats in the region for hundreds of years. The Persians used this local knowledge to find these goat paths to get behind the Greeks and destroyed the rear guard, leaving King Leonidas to defend the retreat of the Greeks with 300 Spartans.</p>
<p>&nbsp;</p>
<p>In the context of our data centres, the local knowledge is our users at risk of social engineering attacks, malicious e-mails and documents. The goat paths are the holes we need to make in our perimeter for things like ADFS or access to on-premises data for remote workers.</p>
<p>This is where the cloud configuration of a service like Office 365 and Azure can play a very important part in how we control and govern this access. With content stored in Office 365, we get the native protection of the Microsoft data centres, with the massive economies of scale resulting in large scale security infrastructure and a service that learns from millions of signals a day across all of the tenants around the world. Couple this with the duplication of data and the protection such as self-service restores in OneDrive and SharePoint to help mitigate the effects of Ransom Ware attacks.</p>
<p>The signals and information that we receive by being part of the Microsoft eco-system can also be used as we look into the user access side of things. We can make decisions based on the risk of the user’s logon, where they are coming from, is this a usual behaviour for them etc. Take for example a user logging in from a coffee shop in a strange city. If this location is a known location that sources malware attacks, we can use conditional access to restrict the users permissions or completely blocking them out altogether if we choose.</p>
<p>During my SPC20 session in las Vegas, we’ll take a look at what we mean by “Conditional Access”, looking beyond the conditional access product provide by Microsoft and understanding how such access can be controlled at the various licensing levels, from the basic options with ADFS, using location blocking in office 365 through to the more advanced options available through the EM+S E3 license and Intune. We’ll round out the session with a look at controlling guest access using Terms of Use and managing Privileged Identities via the EM+S E5 license.</p>
<p>I hope you’ll join me at SPC20 in Las Vegas in May to absorb the combined knowledge of some amazing people in the warmth of the desert sun at the amazing MGM Grand. If you’d like to save $50 of your registration, use the discount code HUNT (in caps) or <a href="https://sharepointna.com/#!/register?utm_term=HUNT" target="_blank" rel="noopener noreferrer">click on this link to learn more and register</a>.</p>
<p>Paul.</p>
<p>The post <a href="http://www.myfatblog.co.uk/index.php/2020/01/back-to-work-with-vegas-spc20-news/">Back to work with a bang and great news that I&rsquo;ll be in Vegas in May @ SPC20</a> appeared first on <a href="http://www.myfatblog.co.uk">Blog of an overweight SharePoint addict</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>http://www.myfatblog.co.uk/index.php/2020/01/back-to-work-with-vegas-spc20-news/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>The time a disruptive technology saved my life in Helsinki</title>
		<link>http://www.myfatblog.co.uk/index.php/2019/12/the-time-a-disruptive-technology-saved-my-life-in-helsinki/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=the-time-a-disruptive-technology-saved-my-life-in-helsinki</link>
					<comments>http://www.myfatblog.co.uk/index.php/2019/12/the-time-a-disruptive-technology-saved-my-life-in-helsinki/#comments</comments>
		
		<dc:creator><![CDATA[Cimares]]></dc:creator>
		<pubDate>Mon, 02 Dec 2019 10:54:08 +0000</pubDate>
				<category><![CDATA[SharePoint]]></category>
		<guid isPermaLink="false">http://www.myfatblog.co.uk/?p=1465</guid>

					<description><![CDATA[<p>The tail end of 2019 was due to be a busy time of year for me, conference silly season was in full effect and even though I wasn’t speaking at Microsoft Ignite, I still had a number of SharePoint and Office 365 Saturday events (Zurich, Helsinki, Brussels, Leicester) and other conferences (O365 Connect and Thrive) &#8230; </p>
<p><a class="more-link btn" href="http://www.myfatblog.co.uk/index.php/2019/12/the-time-a-disruptive-technology-saved-my-life-in-helsinki/">Continue reading</a></p>
<p>The post <a href="http://www.myfatblog.co.uk/index.php/2019/12/the-time-a-disruptive-technology-saved-my-life-in-helsinki/">The time a disruptive technology saved my life in Helsinki</a> appeared first on <a href="http://www.myfatblog.co.uk">Blog of an overweight SharePoint addict</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>The tail end of 2019 was due to be a busy time of year for me, conference silly season was in full effect and even though I wasn’t speaking at Microsoft Ignite, I still had a number of SharePoint and Office 365 Saturday events (Zurich, Helsinki, Brussels, Leicester) and other conferences (O365 Connect and Thrive) booked up between September and the end of the year.</p>
<p>Between preparing for these events, doing my normal day job and then travelling and presenting there were a number of signals that I was given that something wasn’t quite right. Excessive tiredness, a reliance on heartburn medication all of which I put down to just being a bit run down with everything going on, but with my 20/20 Hindsight turned on, I know now that I missed a whole bunch of warnings that life was about to change significantly.</p>
<p>Thanks to the BA pilots strike, I ended up flying out to Helsinki at the tail end of September a day early so that I could miss the strike (that subsequently got cancelled after I changed my flights) and work remotely for my client. This added to the stress of the travel a little as it meant two laptops and an extra night away from home. It did however mean that I got to spend the first day exploring Helsinki with my good friend Jussi Mori, a fellow Microsoft MVP based out of Helsinki.</p>
<p><img loading="lazy" decoding="async" class="alignleft size-medium wp-image-1467" src="http://www.myfatblog.co.uk/wp-content/uploads/2019/12/IMG_4597-300x225.jpg" alt="Jussi Mori and Paul Hunt - Helsinki Cathedral" width="300" height="225" srcset="http://www.myfatblog.co.uk/wp-content/uploads/2019/12/IMG_4597-300x225.jpg 300w, http://www.myfatblog.co.uk/wp-content/uploads/2019/12/IMG_4597-768x576.jpg 768w, http://www.myfatblog.co.uk/wp-content/uploads/2019/12/IMG_4597.jpg 927w" sizes="(max-width: 300px) 100vw, 300px" /></p>
<p>During this exploration time, Jussi introduced me to a fairly new transportation method in Helsinki, the Rental Scooter. The rental scooter phenomenon is popping up in cities all around the world where laws permit, and they appeared in <a href="https://yle.fi/uutiset/osasto/news/rent-a-scooters_raise_eyebrows_in_helsinki/10775268">Helsinki back in Spring of 2019</a>. Rented using a mobile phone app, the biggest complaint about the scooters is my favourite feature and that is they do not need a docking station. You can pick up and drop off the scooter at any location (within certain Geo-fenced restrictions, which also includes zones where speed is limited, and parking of scooters forbidden).</p>
<p>The problem here is that not every user is a good scooter user and complaints across the internet talk about how scooters are just thrown down in the middle of pavements, blocking disabled access and making the streets look untidy. I used the scooters a lot during my trip and I always tried to make sure that I left the scooter when I finished, parked reasonably and well out of the way of other pavement users.</p>
<p>At this point, I guess you’re probably wondering how this technology saved my life? As with most stories of this ilk, it starts with a drink. Traditionally after a SharePoint Saturday event, there will always be a SharePint, a tradition that has been around almost as long as SharePoint itself. Helsinki was no different and after the official SharePint had finished, a number of us decided to jump on scooters out to a fabulous Bar on the outskirts of Helsinki called Löyly. Following the coastal route from the centre of town, it’s about a 15 minute ride on the scooters at full pelt and with the added excitement of a couple of drinks it was a fun ride. All of us arrived safely and we grabbed an outside table under blankets and heaters and had a few more drinks.</p>
<p>By the time the bar closed, it was just gone midnight and we’d had more than a few drinks at this point, so the sensible decision was taken to walk back rather than ride. The direct route back through residential Helsinki was much shorter than the coastal route, so we were only looking at about a 2 mile walk. And it was during the start of this walk that I started to have problems.</p>
<p>Whilst I’m overweight, I’m still reasonably fit as I walk a lot when working in London. I don’t usually have problems walking any distance, so when I started getting some breathing difficulties it took me somewhat by surprise. I found myself falling further and further behind and the rest of the group had to wait for me. I didn’t get any pain in my chest, just this tight wheeziness and an inability to catch my breath. When I stopped walking it eased and I started wondering if I was developing asthma. Whilst considering this and just as it was getting uncomfortable again, I came across a fully charged Tier scooter, dumped unceremoniously at the foot of someone’s garden path! Without thinking about it, I whipped out the mobile app, rented the scooter and jumped on it. Problem solved.</p>
<p>Catching up with the main group, I rode the scooter all the way back into central Helsinki, eventually splitting from the group and heading back to my hotel whilst they continued into the early hours.</p>
<p>On my return home I decided to get some medical advice, thinking that I may need to have an inhaler. The doctor on hearing my story, referred me to the Rapid Access Chest Pain Clinic (I did point out that I didn’t have any chest pain!) at our local hospital. I went to see them (after a couple of other events that I was booked for (in hindsight that wasn’t the best decision!), and they performed a stress ECG test. Basically, this sees you wired to an ECG and placed on a treadmill. After 5 short minutes of this, they stopped the test and told me that I wasn’t going home. I was transferred to a ward and prepped for an angiogram.</p>
<p>I’m always an optimistic person and having discussed the results of the stress ECG and understanding I had at this point got a condition called Exertional Angina, fully expected to be told to take 2 pills a day and change my lifestyle. What I didn’t expect was the result of the Angiogram to tell me that I needed Open Heart Surgery, specifically a Coronary Heart Bypass Graft, where they use pieces of other veins to replace the blocked arteries that feed the heart and I did not expect to be told that it needed to be done fairly urgently. According to the doctors, had I not jumped on that scooter in Helsinki and had carried on trying to walk back, there was a distinct likelihood that my angina attack would have escalated into a full cardiac arrest, which at 1am in a quiet residential area of Helsinki would have had a low chance of survival.</p>
<p>I’m now currently in my fifth week of post op recovery and I’m pleased to say that I’m doing well. I can now sit at the computer at least long enough to type this up and to submit some sessions for events in the new year. My company (<a href="https://www.trustmarque.com/">Trustmarque Solutions Ltd</a>) have been very supportive through this process and have ensured that have time and support in place to fully recover. The current plan is to aim to return to work during January and I aim to return to doing community events in March 2020.</p>
<p>In addition to the support I’ve had from work, family and friends (and of course my outstanding wife Billie), I have to call out the amazing messages of support that I’ve had from my extended family around the world in the Office 365 community. So far, I’ve kept news of my condition to a reasonably selective group of around 200 friends on FaceBook, but as I’ve had to pull out of a couple of events such as SPS Leicester and the Thrive conference, word of my illness has got around the community and I’ve had some lovely messages from people. This support from the community is just one example of why I love doing what we do, it goes beyond the technology and is a reward in it’s own right and there’s just too many individuals to call out with direct thanks here. You all know who you are and I look forward to thanking you in person at events in 2020!</p>
<p>The post <a href="http://www.myfatblog.co.uk/index.php/2019/12/the-time-a-disruptive-technology-saved-my-life-in-helsinki/">The time a disruptive technology saved my life in Helsinki</a> appeared first on <a href="http://www.myfatblog.co.uk">Blog of an overweight SharePoint addict</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>http://www.myfatblog.co.uk/index.php/2019/12/the-time-a-disruptive-technology-saved-my-life-in-helsinki/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
	</channel>
</rss>
