<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="https://skynorthsoftware-com.azurewebsites.net/blog/rss/xslt"?>
<rss xmlns:a10="http://www.w3.org/2005/Atom" version="2.0">
  <channel>
    <title>SkyNorth</title>
    <link>https://skynorthsoftware-com.azurewebsites.net/blog/</link>
    <description>Blog</description>
    <generator>Articulate, blogging built on Umbraco</generator>
    <item>
      <guid isPermaLink="false">1243</guid>
      <link>https://skynorthsoftware-com.azurewebsites.net/blog/posts/guide-to-m365-on-gcc/</link>
      <title>Migrating to Microsoft 365 Government Cloud (GCC)</title>
      <description>&lt;p&gt;Microsoft’s Government Cloud Computing (GCC) is used by federal, state, and local governments as well as counterparties that consume or produce government data subject to regulatory requirements.  Successful migrations require partners that understand and have experience working within GCC, and the intricacies of its licensing.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What is the Microsoft Government Community Cloud?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Government technology, compliance, and security requirements are typically more stringent than that of private-sector business.  For this reason, Microsoft created a separate environment with unique versions of its software and services that address the specific needs of the public sector. &lt;/p&gt;
&lt;p&gt;Microsoft GCC takes the guesswork out of configuration, security, and controls to help you meet NIST, DFARS, and FEDRamp compliance, allowing government IT departments to concentrate on their business objectives.&lt;/p&gt;
&lt;p&gt;GCC and GCC High are only available to U.S.-based government customers. Other government plans are available to those located outside of the United States.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The options: GCC,  GCC High and Department of Defence (DOD). &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;All versions of GCC offer a standard set of features and functionality that complies with federal, criminal justice, and federal tax information systems requirements. &lt;/p&gt;
&lt;p&gt;GCC High is typically 40% more expensive than typical Microsoft GCC license costs as it complies with a more stringent additional set of requirements:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Defense Federal Acquisition Regulations&lt;/li&gt;
&lt;li&gt;Department of Defense Security Requirements Guidelines&lt;/li&gt;
&lt;li&gt;International Traffic in Arms Regulations&lt;/li&gt;
&lt;li&gt;The Cybersecurity Maturity Model Compliance framework (CMMC)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As one would expect, standard GCC typically sees new features sooner than GCC High and DOD, and in some cases includes features like Yammer that might never make it into GCC High and DOD.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Which does my organization need?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The good news is that majority of our public sector clients do not require GCC High. Even fewer require DOD.  That said, its best to review with a partner experienced in determining which plan fits your needs and requirements.&lt;/p&gt;
&lt;p&gt;That said, Not every organization connected to or part of the government needs GCC or GCC High and DOD. To determine whether it is necessary requires an understanding of the features that are above and beyond non-GCC Office 365 functionality.&lt;/p&gt;
&lt;p&gt;For GCC and GCC High and DOD, these include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Logical segregation of commercial customer content from GCC content.&lt;/li&gt;
&lt;li&gt;The organization’s data is stored in the united states.&lt;/li&gt;
&lt;li&gt;Only security screened Microsoft personnel is allowed to access the organization’s data.&lt;/li&gt;
&lt;li&gt;Certification and accreditation compliance with U.S. Public sector customers.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;We need GCC or GCC High or DOD, now what?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If you haven’t done so all ready, you will need to apply for validation as a type 3 entity with Microsoft by providing basic information, such as which category or government entity you are, your website, and address. Microsoft will confirm your organization’s eligibility through this process.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Getting Ready to Deploy - What Features are and are not available?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Whether you are moving over from a completely different service or just a different edition of Microsoft 365, these differences could impact day-to-day processes and systems. Understanding feature availability is one of the best ways to prepare and adjust.&lt;/p&gt;
&lt;p&gt;Some excellent information detailing Office 365 services and availability for each offering can be found by &lt;a href="https://docs.microsoft.com/en-us/office365/servicedescriptions/office-365-platform-service-description/office-365-us-government/office-365-us-government"&gt;following this link&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Governance from the start is a must&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Any organization moving to GCC must have a plan for governance.  The first step in this process is identifying and documenting all of the governance requirements. Once done, you can then map these to the features and settings to ensure compliance.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Enlist a Partner to Guide You&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;SkyNorth is one of a few Microsoft partners in the Midwest with experience implementing GCC securely in both large and small organizations. &lt;/p&gt;
&lt;p&gt;Our experience results in a much faster, smoother, and more cost-effective deployment than our competitors.  You don’t need to take our word for it.  We’ll happily provide a reference from one of your peers. &lt;/p&gt;
&lt;p&gt;If you’re interested in discussing further &lt;a href="mailto:tmartin@skynorthsoftware.com"&gt;click here to email us&lt;/a&gt; to set up a free consultation&lt;/p&gt;</description>
      <pubDate>Thu, 07 May 2020 19:07:19 Z</pubDate>
      <a10:updated>2020-05-07T19:07:19Z</a10:updated>
    </item>
    <item>
      <guid isPermaLink="false">1242</guid>
      <link>https://skynorthsoftware-com.azurewebsites.net/blog/posts/sharepoint-online-performance-monitoring/</link>
      <title>Sharepoint Online Performance Monitoring with Application Insights</title>
      <description>&lt;h4&gt;My site is slow! ... we've all heard it, but then after digging into the issue the site doesn't seem to have any issues.&lt;/h4&gt;
&lt;p&gt;This is where a tool like &lt;strong&gt;Application Insights&lt;/strong&gt; comes in handy. &lt;strong&gt;Application Insights&lt;/strong&gt; is an Application Performance Monitoring (APM) tool that is targeted at developers and IT pros. You can instrument server side and client side applications, and send performance and usage data back to Microsoft Azure. It is then available for ad-hoc queries, reports, automated alerts, and other ancillary monitoring features. Also, it's pretty cheap for basic use cases!  You can check out the pricing &lt;a href="https://azure.microsoft.com/en-us/pricing/details/monitor/"&gt;here&lt;/a&gt; and for additional reading, check out Microsoft's documentation &lt;a href="https://docs.microsoft.com/en-us/azure/azure-monitor/app/app-insights-overview"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Alright, let's get to the point. I'm going to show you how to do two neat things with &lt;strong&gt;Application Insights&lt;/strong&gt;.&lt;br /&gt;
- First, how to collect telemetry on your SharePoint performance using the http response headers for x-sharepointhealthscore and spiislatency&lt;br /&gt;
- Second, how to collect custom metrics using &lt;strong&gt;Application Insights&lt;/strong&gt;  
&lt;/p&gt;
&lt;h4&gt;Step 1, wiring up Application Insights&lt;/h4&gt;
&lt;p&gt;In the Azure portal, create an Application Insights instance. Then, at the bottom of your page, insert a &lt;code&gt;&amp;lt;script/&amp;gt;&lt;/code&gt; block like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;script&amp;gt;
    var appInsights=window.appInsights||function(a){
        function b(a){c[a]=function(){var b=arguments;c.queue.push(function(){c[a].apply(c,b)})}}var c={config:a},d=document,e=window;setTimeout(function(){var b=d.createElement(&amp;quot;script&amp;quot;);b.src=a.url||&amp;quot;https://az416426.vo.msecnd.net/scripts/a/ai.0.js&amp;quot;,d.getElementsByTagName(&amp;quot;script&amp;quot;)[0].parentNode.appendChild(b)});try{c.cookie=d.cookie}catch(a){}c.queue=[];for(var f=[&amp;quot;Event&amp;quot;,&amp;quot;Exception&amp;quot;,&amp;quot;Metric&amp;quot;,&amp;quot;PageView&amp;quot;,&amp;quot;Trace&amp;quot;,&amp;quot;Dependency&amp;quot;];f.length;)b(&amp;quot;track&amp;quot;+f.pop());if(b(&amp;quot;setAuthenticatedUserContext&amp;quot;),b(&amp;quot;clearAuthenticatedUserContext&amp;quot;),b(&amp;quot;startTrackEvent&amp;quot;),b(&amp;quot;stopTrackEvent&amp;quot;),b(&amp;quot;startTrackPage&amp;quot;),b(&amp;quot;stopTrackPage&amp;quot;),b(&amp;quot;flush&amp;quot;),!a.disableExceptionTracking){f=&amp;quot;onerror&amp;quot;,b(&amp;quot;_&amp;quot;+f);var g=e[f];e[f]=function(a,b,d,e,h){var i=g&amp;amp;&amp;amp;g(a,b,d,e,h);return!0!==i&amp;amp;&amp;amp;c[&amp;quot;_&amp;quot;+f](a,b,d,e,h),i}}return c
        }({
            instrumentationKey:&amp;quot;&amp;lt;guid-found-in-azure-portal&amp;gt;&amp;quot;
        });
    window.appInsights=appInsights;

    // More configuration will be added right here in next steps

&amp;lt;/script&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;h4&gt;Step 2, collecting SharePoint performance data&lt;/h4&gt;
&lt;p&gt;We'll be tracking the &lt;code&gt;x-sharepointhealthscore&lt;/code&gt; and &lt;code&gt;spiislatency&lt;/code&gt; response headers. A couple things to note here: &lt;br /&gt;
- First, this isn't perfect but it can give you some insight into your SharePoint tenant's performance. In order to get access to the Http response headers, we need to create a new Http request in JavaScript, and then pull the response headers from the call. Since we just need the response headers, we'll use a HEAD method to requests only for the headers. The problem with this is it's essentially a new SharePoint health score than the original page load.&lt;br /&gt;
- Second, since you are making a second request to the page, the SharePoint environment will receive more load than before. It should be minimal since we're just doing a HEAD request, but it could have unintended consequences.  
&lt;/p&gt;
&lt;p&gt;Insert this code at the bottom of your &lt;code&gt;&amp;lt;script/&amp;gt;&lt;/code&gt; block  
&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;var req = new XMLHttpRequest();
req.open('HEAD', document.location, false);
req.send(null); 

appInsights.trackPageView(
    _spPageContextInfo.webTitle,
    (window.location.protocol + &amp;quot;//&amp;quot; + window.location.hostname + _spPageContextInfo.serverRequestPath).toLowerCase(), // the full uri to the page
    {
        siteAbsoluteUrl: _spPageContextInfo.siteAbsoluteUrl.toLowerCase(),
        webAbsoluteUrl: _spPageContextInfo.webAbsoluteUrl.toLowerCase(),
        sharepointHealthScore: req.getResponseHeader('x-sharepointhealthscore'),
        sharepointCorrelationId: req.getResponseHeader('sprequestguid'),
        spiislatency: req.getResponseHeader('spiislatency'),
        statusCode: req.getResponseHeader('status')
    }
);
&lt;/code&gt;&lt;/pre&gt;

&lt;h4&gt;Step 3, collecting custom pageView data&lt;/h4&gt;
&lt;p&gt;Do you have an important metric you'd like to track when users traverse through your site? You can use this markup instead of Step 2 to get started collecting custom data.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;appInsights.trackPageView(
    &amp;quot;my title&amp;quot;,
    &amp;quot;https://mysite.skynorthsoftware.com/sites/coolsite&amp;quot;,
    {
        customData = window.location.hostname,
        userName = localStorage.getItem(&amp;quot;userName&amp;quot;)
    }
);
&lt;/code&gt;&lt;/pre&gt;

&lt;h4&gt;Putting it all together&lt;/h4&gt;
&lt;p&gt;This is what the final result should look like. Once you save and deploy your changes to the site, you should see data trickling into the App Insights portal within a few minutes!&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;script&amp;gt;
    var appInsights=window.appInsights||function(a){
        function b(a){c[a]=function(){var b=arguments;c.queue.push(function(){c[a].apply(c,b)})}}var c={config:a},d=document,e=window;setTimeout(function(){var b=d.createElement(&amp;quot;script&amp;quot;);b.src=a.url||&amp;quot;https://az416426.vo.msecnd.net/scripts/a/ai.0.js&amp;quot;,d.getElementsByTagName(&amp;quot;script&amp;quot;)[0].parentNode.appendChild(b)});try{c.cookie=d.cookie}catch(a){}c.queue=[];for(var f=[&amp;quot;Event&amp;quot;,&amp;quot;Exception&amp;quot;,&amp;quot;Metric&amp;quot;,&amp;quot;PageView&amp;quot;,&amp;quot;Trace&amp;quot;,&amp;quot;Dependency&amp;quot;];f.length;)b(&amp;quot;track&amp;quot;+f.pop());if(b(&amp;quot;setAuthenticatedUserContext&amp;quot;),b(&amp;quot;clearAuthenticatedUserContext&amp;quot;),b(&amp;quot;startTrackEvent&amp;quot;),b(&amp;quot;stopTrackEvent&amp;quot;),b(&amp;quot;startTrackPage&amp;quot;),b(&amp;quot;stopTrackPage&amp;quot;),b(&amp;quot;flush&amp;quot;),!a.disableExceptionTracking){f=&amp;quot;onerror&amp;quot;,b(&amp;quot;_&amp;quot;+f);var g=e[f];e[f]=function(a,b,d,e,h){var i=g&amp;amp;&amp;amp;g(a,b,d,e,h);return!0!==i&amp;amp;&amp;amp;c[&amp;quot;_&amp;quot;+f](a,b,d,e,h),i}}return c
         }({
                instrumentationKey:&amp;quot;&amp;lt;guid-found-in-azure-portal&amp;gt;&amp;quot;
        });

    window.appInsights=appInsights;

    var req = new XMLHttpRequest();
    req.open('HEAD', document.location, false);
    req.send(null); 

    appInsights.trackPageView(
        _spPageContextInfo.webTitle,
        (window.location.protocol + &amp;quot;//&amp;quot; + window.location.hostname + _spPageContextInfo.serverRequestPath).toLowerCase(), // the full uri to the page
        {
            siteAbsoluteUrl: _spPageContextInfo.siteAbsoluteUrl.toLowerCase(),
            webAbsoluteUrl: _spPageContextInfo.webAbsoluteUrl.toLowerCase(),
            sharepointHealthScore: req.getResponseHeader('x-sharepointhealthscore'),
            sharepointCorrelationId: req.getResponseHeader('sprequestguid'),
            spiislatency: req.getResponseHeader('spiislatency'),
            statusCode: req.getResponseHeader('status'),
            customData = window.location.hostname,
            userName = localStorage.getItem(&amp;quot;userName&amp;quot;)
        }
    );
&amp;lt;/script&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

</description>
      <pubDate>Tue, 29 Jan 2019 20:17:08 Z</pubDate>
      <a10:updated>2019-01-29T20:17:08Z</a10:updated>
    </item>
    <item>
      <guid isPermaLink="false">1238</guid>
      <link>https://skynorthsoftware-com.azurewebsites.net/blog/posts/improving-your-microsoft-cloud-security-for-free/</link>
      <title>Improving your Microsoft Cloud Security for FREE!</title>
      <description>&lt;p&gt;So your organization has made the jump, at least on some level, to the Microsoft cloud.  That’s a great forward thinking strategy.  
&lt;/p&gt;
&lt;p&gt;I’m sure somewhere along this journey you were questioned about security.  You assured them that it would be covered and the organization would be safe.  Now that you're there, how are you living up to that promise?  Wouldn’t it be great if there was a place you could look that would tell you?  
&lt;/p&gt;
&lt;h4&gt;Say hello to Microsoft’s free tool, Secure Score&lt;/h4&gt;
&lt;p&gt;Secure Score looks at your settings and activities for the Office 365 (and recently added Modern Workplace) services your organization is using (SharePoint, Exchange, One Drive, etc.), and compares them to a baseline established by Microsoft to give you a score on how well you are doing security wise.  Examples of things you are scored on are multi-factor authentication status, policy progress, mailbox auditing, etc.  You can then use this information to take action to improve your score based upon recommendations presented by the tool.  
&lt;/p&gt;
&lt;p&gt;Did I mention it’s all FREE! That’s pretty cool. &lt;/p&gt;
&lt;h4&gt;Show value and justify actions&lt;/h4&gt;
&lt;img src="https://skynorthsoftware-com.azurewebsites.net/media/1035/23757303-274c-46c7-a7ee-b4e6f2f9eca0.png" alt="Actions in queue" title="Actions in Queue" width="450" align='right'/&gt;&lt;p&gt;IT typically understands the big picture of what needs to be done, but often has a hard time quantifying the need.  Because of this securing resources is a challenge especially when an initiative around security looks like a giant black hole to those on the outside.  How do you combat this?&lt;/p&gt;
&lt;p&gt;Metrics. Leadership loves metrics, as they should. They give you an accurate representation of a position.  
&lt;/p&gt;
&lt;p&gt;Secure Score to the rescue by allowing you to identify and communicate your efforts in addition to the benefit received.  Even better you can see how your security has changed historically, so once you complete a control you can see the before and after.  
&lt;/p&gt;
&lt;p&gt;But wait there's more, Secure Score also holds the documentation around these areas and controls in place!  
&lt;/p&gt;
&lt;h4&gt;I’m in. (It’s FREE after all) How can I see my organizations Secure Score?&lt;/h4&gt;
&lt;p&gt;You can view your organizations Secure Score by logging in at https://securescore.office.com with an ID tied to your organization.  Note: You must have Global Admin or a custom Admin role with permissions on an Office 365 Enterprise, M365 Business, or Office 365 Business Premium subscription In order to view the results.  While non admins won't be able to access Secure Score directly, admins can share the results with others in their organization. &lt;/p&gt;
&lt;p&gt;Caveat.  You may see actions that are labeled “Not Scored”.   Unfortunately these are not scored in the tool yet, but completing them will still benefit the security of your environment. &lt;/p&gt;
&lt;h4&gt;So will utilizing Secure Score mean my organization is safe?&lt;/h4&gt;
&lt;p&gt;There is no way of predicting if your organization will be subject to a breach.  There are just too many variables.  Secure Score simply gives you a view in to the measures taken to minimize that risk, and that is huge. Considering the price there is no reason you aren’t utilizing the tool. &lt;/p&gt;
&lt;h4&gt;I don’t understand everything being reported by Secure Score.&lt;/h4&gt;
&lt;p&gt;Unfortunately the bad guys do.  The good news is that you now know what you don’t know.  
&lt;/p&gt;
&lt;p&gt;If your organization doesn’t have the expertise to interpret and implement these controls there are third parties like us at SkyNorth Software that can help.  Pick your favorite or feel free to &lt;a href="&amp;#x6d;&amp;#x61;&amp;#x69;&amp;#x6c;&amp;#x74;&amp;#111;&amp;#x3a;&amp;#116;&amp;#109;&amp;#x61;&amp;#x72;&amp;#116;&amp;#105;&amp;#x6e;&amp;#64;&amp;#x73;&amp;#107;&amp;#121;&amp;#x6e;&amp;#111;&amp;#x72;&amp;#116;&amp;#x68;&amp;#115;&amp;#x6f;&amp;#102;&amp;#116;w&amp;#x61;&amp;#114;&amp;#x65;&amp;#x2e;&amp;#99;&amp;#111;&amp;#x6d;"&gt;d&amp;#x72;&amp;#x6f;&amp;#112;&amp;#32;&amp;#x75;&amp;#115;&amp;#x20;&amp;#x61;&amp;#x20;&amp;#x6c;&amp;#x69;&amp;#110;&amp;#101;&lt;/a&gt; and if you have questions.&lt;/p&gt;
</description>
      <pubDate>Thu, 24 Jan 2019 17:55:08 Z</pubDate>
      <a10:updated>2019-01-24T17:55:08Z</a10:updated>
    </item>
    <item>
      <guid isPermaLink="false">1236</guid>
      <link>https://skynorthsoftware-com.azurewebsites.net/blog/posts/create-azure-bot-registration-programmatic/</link>
      <category>Azure</category>
      <title>Create Azure Bot Registrations with Azure CLI</title>
      <description>&lt;p&gt;There's a lot to decipher when looking at automating the creation of Bot Channel Registrations within Azure. At the time of this writing, the Azure CLI has the most complete set of automation options and the fastest time to value. This sample deploys a Bot Channel, and then configures it to be used with Microsoft Teams, but can also be used for configuring Facebook, web chat, and other channels.&lt;/p&gt;
&lt;p&gt;Here it is, enjoy! &lt;/p&gt;
&lt;p&gt;https://github.com/SkyNorth/Automation/blob/master/Azure/Bots/New-AzureBotRegistration.ps1&lt;/p&gt;
</description>
      <pubDate>Wed, 02 Jan 2019 20:31:22 Z</pubDate>
      <a10:updated>2019-01-02T20:31:22Z</a10:updated>
    </item>
    <item>
      <guid isPermaLink="false">1235</guid>
      <link>https://skynorthsoftware-com.azurewebsites.net/blog/posts/silver-partner-devops-competency/</link>
      <category>Azure</category>
      <category>DevOps</category>
      <title>Silver DevOps Competency</title>
      <description>&lt;p&gt;We are &lt;em&gt;very&lt;/em&gt; excited to announce that we have achieved the Silver competency in DevOps!&lt;/p&gt;
&lt;p&gt;DevOps starts with &lt;strong&gt;culture&lt;/strong&gt; - something we are very passionate about at SkyNorth. We believe it is critical to learn from your failures - to experiment and fail fast. To reduce handoffs and increase autonomy. Let's move away from &amp;quot;if it's not broke, don't fix it&amp;quot; , and adopt a &amp;quot;constant beta/continuous improvement&amp;quot; mindset. Technology evolves so fast, we need to change our way of thinking to keep up and do more with less.&lt;/p&gt;
</description>
      <pubDate>Wed, 07 Nov 2018 19:03:43 Z</pubDate>
      <a10:updated>2018-11-07T19:03:43Z</a10:updated>
    </item>
    <item>
      <guid isPermaLink="false">1234</guid>
      <link>https://skynorthsoftware-com.azurewebsites.net/blog/posts/admin-guide-to-securing-your-office-365-data/</link>
      <category>Azure</category>
      <category>SharePoint</category>
      <category>Security</category>
      <title>The Admins guide to securing your Office 365 data</title>
      <description>&lt;p&gt; &lt;/p&gt;
&lt;p&gt;During my time at Microsoft and SkyNorth, one of the hottest cloud migration topics we have with clients, is around &lt;strong&gt;access and data security&lt;/strong&gt;. &lt;/p&gt;
&lt;p&gt;While most companies believe their on-premises data is secure, we’ve found it is usually at higher risk then data stored in a correctly configured Office 365 tenant.  If you can properly &lt;span style="display: inline !important; float: none; background-color: transparent; color: #000000; font-family: Verdana,Arial,Helvetica,sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;"&gt;answer the four primary concerns of the public cloud, &lt;/span&gt;O365 solutions will increase your security and flexibility.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;How do we limit and control access?&lt;/li&gt;
&lt;li&gt;How to ensure it’s the correct person?&lt;/li&gt;
&lt;li&gt;How do we secure our data?&lt;/li&gt;
&lt;li&gt;How do we secure our devices?&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Out of the box, O365 cloud identities are accessible everywhere via internet, and secured with only username and password.   This appears sketchy at best, until you start looking at all the built-in features that O365 &amp;amp; Azure Active Directory offer.  When developing your O365 access policies you need to put together a plan that focuses on the 3 core areas.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="#a1"&gt;The Who and Where&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#a2"&gt;The What&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#a3"&gt;The How&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Please keep in mind, some of these technologies cross boundaries and can be used in conjunction with other features to maximize your cloud security strategy.   If you haven't seen the &lt;a rel="noopener noreferrer" href="https://docs.microsoft.com/en-us/microsoft-365/enterprise/microsoft-365-policies-configurations" target="_blank"&gt;Microsoft Identity and Device Access&lt;/a&gt; article. it is a must read (after you finish reading my blog post).&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;The Who and Where&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Do you know who is accessing your cloud services, and where they are logging in from?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Option 1 - &lt;strong&gt;ADFS Server&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Pros
&lt;ul&gt;
&lt;li&gt;Many people already have this infrastructure in place from past SSO requirements&lt;/li&gt;
&lt;li&gt;Uses Microsoft technologies&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Cons
&lt;ul&gt;
&lt;li&gt;Requires a lot of extra infrastructure and setup (ADFS, Proxy, x2 for HA)&lt;/li&gt;
&lt;li&gt;Limited Options&lt;/li&gt;
&lt;li&gt;This has became the 'outdated' way of providing a secured Single Sign-On solution&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Extras
&lt;ul&gt;
&lt;li&gt;&lt;span&gt;&lt;a rel="noopener noreferrer" href="https://technet.microsoft.com/en-us/library/hh526961(v=ws.10).aspx" target="_blank"&gt;Limiting Access to Office 365 Services Based on the Location of the Client&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Option 2 - &lt;strong&gt;Conditional Access&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Pros
&lt;ul&gt;
&lt;li&gt;Extremely configurable and stackable rules&lt;/li&gt;
&lt;li&gt;Tied to your cloud login&lt;/li&gt;
&lt;li&gt;Available to all Azure Applications and internal apps that are published via Azure Application Proxy&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Cons
&lt;ul&gt;
&lt;li&gt;Requires &lt;span&gt;&lt;a rel="noopener noreferrer" href="https://azure.microsoft.com/en-us/pricing/details/active-directory/" target="_blank"&gt;Azure AD Premium Plan 1&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Extras
&lt;ul&gt;
&lt;li&gt;&lt;span&gt;&lt;a rel="noopener noreferrer" href="https://docs.microsoft.com/en-us/azure/active-directory/active-directory-conditional-access-azure-portal" target="_blank"&gt;Limit logins based on the following policies&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Allows you to limited login based on the following
&lt;ul&gt;
&lt;li&gt;Select Users&lt;/li&gt;
&lt;li&gt;Trusted IP Range&lt;/li&gt;
&lt;li&gt;Trusted Applications&lt;/li&gt;
&lt;li&gt;Browser or Client Application&lt;/li&gt;
&lt;li&gt;Device Platforms&lt;/li&gt;
&lt;li&gt;Device Compliance (Requires Intune)&lt;/li&gt;
&lt;li&gt;Login Risk (Requires Azure Active Directory Premium Plan 2)&lt;/li&gt;
&lt;li&gt;Allows SharePointusers to only have READ access via Browser session, and others WRITE/EDIT via controlled Application&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;How do we ensure it’s the correct person?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Option 1 - &lt;strong&gt;Multi-Factor Authentication (MFA)&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Pros
&lt;ul&gt;
&lt;li&gt;Helps ensure the person is who they say they are&lt;/li&gt;
&lt;li&gt;Easy to use and configure&lt;/li&gt;
&lt;li&gt;Available for on-prem applications, rdp, and VPN via &lt;span&gt;&lt;a rel="noopener noreferrer" href="https://docs.microsoft.com/en-us/azure/multi-factor-authentication/multi-factor-authentication-get-started-server" target="_blank"&gt;MFA Server&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Cons
&lt;ul&gt;
&lt;li&gt;Limited to call/text or mobile application&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Extras
&lt;ul&gt;
&lt;li&gt;&lt;span&gt;&lt;a rel="noopener noreferrer" href="/umbraco/%09https:/docs.microsoft.com/en-us/azure/multi-factor-authentication/multi-factor-authentication" target="_blank"&gt;A second form of user identification such as a phone call, email, or mobile app&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Option 2 - &lt;strong&gt;ADFS Server 2016 – MFA First&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Pros
&lt;ul&gt;
&lt;li&gt;Skews attempts to brute-force login attempts&lt;/li&gt;
&lt;li&gt;Validates the users device before the username/password&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Cons
&lt;ul&gt;
&lt;li&gt;Requires a lot of extra infrastructure and setup (ADFS, Proxy, x2 for HA)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Extras
&lt;ul&gt;
&lt;li&gt;&lt;span&gt;&lt;a rel="noopener noreferrer" href="/umbraco/%09https:/blogs.technet.microsoft.com/ausoemteam/2016/08/19/whats-new-in-windows-server-2016-standard-edition-part-2-identity/" target="_blank"&gt;ADFS 2016 allows you to prompt for device MFA first, ensuring no password is passed to the session until the first factor has been passed&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Option 3 - &lt;strong&gt;&lt;span style="text-align: left; color: #000000; text-transform: none; line-height: 21px; text-indent: 0px; letter-spacing: normal; font-family: Verdana,Arial,Helvetica,sans-serif; font-size: 14px; font-style: normal; font-variant: normal; text-decoration: none; word-spacing: 0px; display: inline !important; white-space: normal; orphans: 2; float: none; -webkit-text-stroke-width: 0px; background-color: transparent;"&gt;Password-free Login&lt;/span&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Pros
&lt;ul&gt;
&lt;li&gt;Very secure&lt;/li&gt;
&lt;li&gt;Easy to use&lt;/li&gt;
&lt;li&gt;No passwords to remember&lt;/li&gt;
&lt;li&gt;&lt;span style="display: inline !important; float: none; background-color: transparent; color: #000000; font-family: Verdana,Arial,Helvetica,sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;"&gt;Corporate Credentials are not passed through the session&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="display: inline !important; float: none; background-color: transparent; color: #000000; font-family: Verdana,Arial,Helvetica,sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;"&gt;Only devices with an approved certificate/key will be allowed access&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Cons
&lt;ul&gt;
&lt;li&gt;&lt;span style="display: inline !important; float: none; background-color: transparent; color: #000000; font-family: Verdana,Arial,Helvetica,sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;"&gt;Certificate Based requires infrastructure and setup (ADFS, Proxy, x2 for HA)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Authenticator/Hardware Key have limited support at this time&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Extras
&lt;ul&gt;
&lt;li&gt;&lt;a rel="noopener noreferrer" href="https://blogs.msdn.microsoft.com/samueld/2016/07/19/adfs-certauth-aad-o365/" target="_blank"&gt;ADFS: Certificate Authentication with Azure AD &amp;amp; Office 365&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li style="list-style-type: none;"&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel="noopener noreferrer" href="https://docs.microsoft.com/en-us/windows/security/identity-protection/hello-for-business/hello-overview" target="_blank"&gt;Windows Hello for Business&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel="noopener noreferrer" href="https://docs.microsoft.com/en-us/windows/security/identity-protection/hello-for-business/hello-why-pin-is-better-than-password" target="_blank"&gt;Why a PIN is better than a password&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel="noopener noreferrer" href="https://docs.microsoft.com/en-us/windows/security/identity-protection/hello-for-business/hello-biometrics-in-enterprise" target="_blank"&gt;&lt;span&gt;Can Use Biometrics as a form of PC Authentication&lt;/span&gt;&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;Fingerprint&lt;/li&gt;
&lt;li&gt;Facial recognition&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Microsoft Authenticator App
&lt;ul&gt;
&lt;li&gt;&lt;a rel="noopener noreferrer" href="https://docs.microsoft.com/en-us/azure/active-directory/authentication/howto-authentication-phone-sign-in" target="_blank"&gt;Password-less phone sign-in with the Microsoft Authenticator app (public preview)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li style="list-style-type: none;"&gt;
&lt;ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel="noopener noreferrer" href="https://myignite.techcommunity.microsoft.com/sessions/64557" target="_blank"&gt;Hardware Key w/ FIDO2 Support&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;The What?&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;What data are people accessing and how do we secure it?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Option 1 - &lt;strong&gt;SharePoint Site Permissions&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Pros
&lt;ul&gt;
&lt;li&gt;Highly customizable at different SharePoint levels (Site/Web/Library/Item)&lt;/li&gt;
&lt;li&gt;Have remained the same with all versions of SharePoint&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Cons
&lt;ul&gt;
&lt;li&gt;Can get complicated with breaking inheritance&lt;/li&gt;
&lt;li&gt;Auditing/Ensuring users are correctly setting permissions&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Extras
&lt;ul&gt;
&lt;li&gt;&lt;span&gt;&lt;a rel="noopener noreferrer" href="https://support.office.com/en-us/article/Understanding-permission-levels-in-SharePoint-87ecbb0e-6550-491a-8826-c075e4859848" target="_blank"&gt;Understanding permission levels in SharePoint&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Option 2 - &lt;strong&gt;External Sharing Settings&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Pros
&lt;ul&gt;
&lt;li&gt;Allow or prevent external users from accessing your SPO data&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Cons
&lt;ul&gt;
&lt;li&gt;A misconfigured policy could mean bad news for your company&lt;/li&gt;
&lt;li&gt;It's not meant for every type of business or scenario&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Extras
&lt;ul&gt;
&lt;li&gt;&lt;span&gt;&lt;a rel="noopener noreferrer" href="https://support.office.com/en-us/article/Manage-external-sharing-for-your-SharePoint-Online-environment-C8A462EB-0723-4B0B-8D0A-70FEAFE4BE85" target="_blank"&gt;Manage external sharing for your SharePoint Online environment.&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Option 3 - &lt;strong&gt;Tenant Restrictions&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Pros
&lt;ul&gt;
&lt;li&gt;Increased security&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Cons
&lt;ul&gt;
&lt;li&gt;Makes external collaboration difficult&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Extras
&lt;ul&gt;
&lt;li&gt;&lt;span&gt;&lt;a rel="noopener noreferrer" href="https://docs.microsoft.com/en-us/azure/active-directory/active-directory-tenant-restrictions" target="_blank"&gt;Use Tenant Restrictions to manage access to SaaS cloud applications&lt;/a&gt;&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span&gt;&lt;span style="display: inline !important; float: none; background-color: transparent; color: #000000; font-family: Verdana,Arial,Helvetica,sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;"&gt;Prevent your users from accessing other data&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;This is handled via proxy server and HTTP Headers that identify and prevent external access&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Option 4 - &lt;strong&gt;Azure Rights Management / Azure Information Protection&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Pros
&lt;ul&gt;
&lt;li&gt;Increased data security&lt;/li&gt;
&lt;li&gt;Available to many data formats&lt;/li&gt;
&lt;li&gt;Set up on the SPO library or global rules via Azure&lt;/li&gt;
&lt;li&gt;Labeling Support for O365 Data Classification&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Cons
&lt;ul&gt;
&lt;li&gt;Multiple setup/config areas that do not span a broad spectrum of services&lt;/li&gt;
&lt;li&gt;Typically requires an internet connection to pass ACL validation&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Extras
&lt;ul&gt;
&lt;li&gt;&lt;a rel="noopener noreferrer" href="https://docs.microsoft.com/en-us/office365/securitycompliance/set-up-irm-in-sp-admin-center" target="_blank"&gt;Protect SharePoint libraries to prevent read/write/edit/print/etc.&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;Enabled on the document library or list level.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style="background-color: transparent; font-family: Verdana,Arial,Helvetica,sans-serif; font-size: 14px; line-height: 21px; min-height: 0px;"&gt;&lt;span style="background-color: transparent; font-family: Verdana,Arial,Helvetica,sans-serif; font-size: 14px; line-height: 21px; min-height: 0px;"&gt;&lt;a style="background-color: transparent; font-family: Verdana,Arial,Helvetica,sans-serif; font-size: 14px; line-height: 21px; min-height: 0px;" rel="noopener noreferrer" href="https://docs.microsoft.com/en-us/microsoft-365/enterprise/protect-files-with-aip" target="_blank"&gt;Protect files with Azure Information Protection&lt;/a&gt;&lt;/span&gt;
&lt;ul&gt;
&lt;li style="background-color: transparent; font-family: Verdana,Arial,Helvetica,sans-serif; font-size: 14px; line-height: 21px; min-height: 0px;"&gt;Gives you the option to classify, encrypt, and secure your data at a local level
&lt;ul&gt;
&lt;li style="background-color: transparent; font-family: Verdana,Arial,Helvetica,sans-serif; font-size: 14px; line-height: 21px; min-height: 0px;"&gt;For use with O365 documents, as well as on-prem file storage&lt;/li&gt;
&lt;li style="background-color: transparent; font-family: Verdana,Arial,Helvetica,sans-serif; font-size: 14px; line-height: 21px; min-height: 0px;"&gt;Uses Azure RMS to encrypt and secure access&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Option 5 - &lt;strong&gt;Data Loss Prevention&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Pros
&lt;ul&gt;
&lt;li&gt;Easy to configure rules&lt;/li&gt;
&lt;li&gt;Used for SharePoint/OneDrive/Exchange&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Cons
&lt;ul&gt;
&lt;li&gt;Other similar methods make it confusing to determine the best use
&lt;ul&gt;
&lt;li&gt;AIP / Transport Rules / Classification &amp;amp; Labels&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Extras&lt;span&gt;&lt;a rel="noopener noreferrer" href="https://support.office.com/en-us/article/Overview-of-data-loss-prevention-policies-1966b2a7-d1e2-4d92-ab61-42efbb137f5e" target="_blank"&gt;&lt;/a&gt;&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span&gt;&lt;a rel="noopener noreferrer" href="https://support.office.com/en-us/article/Overview-of-data-loss-prevention-policies-1966b2a7-d1e2-4d92-ab61-42efbb137f5e" target="_blank"&gt;Overview of data loss prevention policies&lt;/a&gt;&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;Searches through your existing data to find matches that may need protection&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li style="list-style-type: none;"&gt;
&lt;ul&gt;
&lt;li style="list-style-type: none;"&gt;
&lt;ul&gt;
&lt;li&gt;Create a DLP query to identify what sensitive information now exists in your site collections.&lt;/li&gt;
&lt;li&gt;Create a DLP policy to monitor and automatically protect sensitive information in your site collections.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;The How?&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;How are people accessing cloud services, and how do we secure it?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Option 1 - &lt;strong&gt;Azure AD Device Registration / Workplace Join&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Pros
&lt;ul&gt;
&lt;li&gt;Identifies what users and devices are using cloud services&lt;/li&gt;
&lt;li&gt;Configure MFA for first-time registration&lt;/li&gt;
&lt;li&gt;Allows easy SSO access to all of your apps&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Cons
&lt;ul&gt;
&lt;li&gt;There isn't much security you can place around the device without extras&lt;/li&gt;
&lt;li&gt;MFA Conditional Access rules are met with registered devices so you will not receive a call/text&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Extras
&lt;ul&gt;
&lt;li&gt;&lt;span style="color: #000120;"&gt;&lt;/span&gt;&lt;a rel="noopener noreferrer" href="https://docs.microsoft.com/en-us/azure/active-directory/active-directory-device-registration-on-premises-setup" target="_blank"&gt;Azure AD Device Registration&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Option 2 - &lt;strong&gt;Azure AD Joined Device&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Pros
&lt;ul&gt;
&lt;li&gt;Same as Option 1&lt;/li&gt;
&lt;li&gt;Azure AD Bitlocker Recovery&lt;/li&gt;
&lt;li&gt;PIN Sign-In&lt;/li&gt;
&lt;li&gt;Enterprise State Roaming Features&lt;/li&gt;
&lt;li&gt;Automatic MDM Enrollment (With AAD Premium P1)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Cons
&lt;ul&gt;
&lt;li&gt;On-premises domain access would typically require VPN client&lt;/li&gt;
&lt;li&gt;There isn't much security you can place around the device without extras&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Option 3 - &lt;strong&gt;O365 Mobile Device Management (MDM)&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Pros
&lt;ul&gt;
&lt;li&gt;Comes with O365 E3&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Cons
&lt;ul&gt;
&lt;li&gt;Limited control&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Extras
&lt;ul&gt;
&lt;li&gt;&lt;span&gt;&lt;a rel="noopener noreferrer" href="https://support.office.com/en-us/article/Capabilities-of-built-in-Mobile-Device-Management-for-Office-365-a1da44e5-7475-4992-be91-9ccec25905b0" target="_blank"&gt;Provides Selective Wipe and removal of certain data&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a rel="noopener noreferrer" href="https://support.office.com/en-us/article/Set-up-Mobile-Device-Management-MDM-in-Office-365-dd892318-bc44-4eb1-af00-9db5430be3cd" target="_blank"&gt;Set up O365 MDM&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Option 4 - &lt;strong&gt;Microsoft Intune&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Pros
&lt;ul&gt;
&lt;li&gt;Highly configurable&lt;/li&gt;
&lt;li&gt;Tied with your cloud identity and your device&lt;/li&gt;
&lt;li&gt;Can manage Windows/iOS/Android Devices (limited MAC OSx Support)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Cons
&lt;ul&gt;
&lt;li&gt;Requires &lt;span&gt;&lt;a rel="noopener noreferrer" href="https://www.microsoft.com/en-us/cloud-platform/microsoft-intune-pricing" target="_blank"&gt;Intune or EM+S subscription&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Extras
&lt;ul&gt;
&lt;li&gt;&lt;span&gt;&lt;a rel="noopener noreferrer" href="https://docs.microsoft.com/en-us/intune/introduction-intune" target="_blank"&gt;What is Intune?&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Contains Mobile Application Management policies (MAM)
&lt;ul&gt;
&lt;li&gt;Prevent Cut/Copy/Paste&lt;/li&gt;
&lt;li&gt;Prevent SaveAs&lt;/li&gt;
&lt;li&gt;Require a PIN for specific Mobile Apps&lt;/li&gt;
&lt;li&gt;*With or without device enrollment*&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Selective or Full Wipes of the device&lt;/li&gt;
&lt;li&gt;Manages device compliance settings
&lt;ul&gt;
&lt;li&gt;Encryption/Password Rules/Etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Manages device configuration settings
&lt;ul&gt;
&lt;li&gt;Blocks to cameras, screen shots, USB ports, and tons more&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a rel="noopener noreferrer" href="https://docs.microsoft.com/en-us/intune/conditional-access-intune-common-ways-use" target="_blank"&gt;Conditional Access&lt;/a&gt;&lt;/span&gt; via Compliance Policy and Device Registration
&lt;ul&gt;
&lt;li&gt;Allow only ‘domain joined’ devices to access cloud data&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;I hope I've made an extremely complex topic a little easier for everyone to understand.   Like I mentioned above, there isn't a single solution that you should decide on for all business &amp;amp; security scenarios.  You may need to mix-and-match and you may also need to use features I didn't even mention here.   If you find yourself in a confusing situation and need help finding the best approach please feel free to reach out to &lt;a href="mailto:info@skynorthsoftware.com"&gt;SkyNorth&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Need Help?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Be sure to contact SkyNorth Software today for an &lt;span&gt;&lt;a rel="noopener noreferrer" href="/Offerings/O365-Data-Security" target="_blank"&gt;O365 Data Security Assessment&lt;/a&gt;&lt;/span&gt; or any of your data security needs! &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What is our Data Security Assessment?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;It’s a comprehensive technology and process review for how you handle data security within your organization. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How much does it cost?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;It’s FREE!&lt;/strong&gt;    Out introductory package is completely free and includes a 1-hour finding call with self-help documentation.  If you’d like to have a more comprehensive review or added support, you can look at our &lt;strong&gt;&lt;em&gt;PREMIUM&lt;/em&gt;&lt;/strong&gt; or &lt;strong&gt;&lt;em&gt;PREMIUM – WITH SUPPORT&lt;/em&gt;&lt;/strong&gt; options on &lt;a rel="noopener noreferrer" href="/Offerings/O365-Data-Security" target="_blank"&gt;our website.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;</description>
      <pubDate>Wed, 17 Oct 2018 02:05:06 Z</pubDate>
      <a10:updated>2018-10-17T02:05:06Z</a10:updated>
    </item>
    <item>
      <guid isPermaLink="false">1220</guid>
      <link>https://skynorthsoftware-com.azurewebsites.net/blog/posts/copy-blob-event-trigger/</link>
      <category>Azure</category>
      <title>Copy Azure Blobs with Data Factory Event Trigger</title>
      <description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt;  This article applies to version 2 of Data Factory. The integration described in this article depends on &lt;a href="https://azure.microsoft.com/services/event-grid/"&gt;Azure Event Grid&lt;/a&gt;. Make sure that your subscription is registered with the Event Grid resource provider. For more info, see &lt;a href="https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-manager-supported-services#portal"&gt;Resource providers and types&lt;/a&gt;.  
&lt;/p&gt;
&lt;h3&gt;Overview&lt;/h3&gt;
&lt;p&gt;This article builds on the concepts described in &lt;a href="https://docs.microsoft.com/en-us/azure/data-factory/copy-activity-overview"&gt;Copy Activity in Azure Data Factory&lt;/a&gt;. We will be using an &lt;a href="https://docs.microsoft.com/en-us/azure/data-factory/how-to-create-event-trigger"&gt;event trigger&lt;/a&gt; to copy blobs between Azure Storage accounts. &lt;/p&gt;
&lt;p&gt;There are scenarios where you need to copy blobs between storage accounts. It could be for another layer of redundancy, or simple to move to a lower tiered storage account for cost optimization. In this article, we will show you how to copy blobs immediately after they are created using Data Factory event triggers.&lt;/p&gt;
&lt;h3&gt;Prerequisites&lt;/h3&gt;
&lt;p&gt;1.) Azure Data Factory version&lt;br /&gt;
2.) Azure storage accounts for source and destination. Each storage  has a container called &lt;code&gt;backups&lt;/code&gt;&lt;br /&gt;
3.) Event Grid enabled as a resource provider on your Azure subscription  
&lt;/p&gt;
&lt;p&gt;This is what our resource group looks like:&lt;br /&gt;
&lt;strong&gt;NOTE:&lt;/strong&gt;
The storage accounts are in the same location to prevent egress charges  
&lt;/p&gt;
&lt;p&gt;&lt;img src="https://skynorthsoftwarecomstor.blob.core.windows.net/media/1025/resource-group-setup.png" alt="Resource Group" /&gt;&lt;/p&gt;
&lt;h3&gt;Create Linked Storage Accounts&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; Datasets and linked services are described in depth at &lt;a href="https://docs.microsoft.com/en-us/azure/data-factory/concepts-datasets-linked-services"&gt;Datasets and linked services in Azure Data Factory&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In this demo we will use two storage accounts named &lt;code&gt;dfcopyeventsource&lt;/code&gt; and &lt;code&gt;dfcopyeventdestination&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Create linked services for both storage accounts in Data Factory under the connections tab. For simplicity we will just use the storage account account key for authentication. We will just add a &lt;code&gt;_ls&lt;/code&gt; suffix to these so we they are linked services later.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://skynorthsoftwarecomstor.blob.core.windows.net/media/1016/create-linked-service-storage.png" alt="Create linked service menu" /&gt;&lt;/p&gt;
&lt;p&gt;Select &amp;quot;Use account key&amp;quot; for authentication method&lt;/p&gt;
&lt;p&gt;&lt;img src="https://skynorthsoftwarecomstor.blob.core.windows.net/media/1017/create-linked-service-storage-source.png" alt="Create linked storage" /&gt;&lt;/p&gt;
&lt;p&gt;Both storage accounts are now linked.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://skynorthsoftwarecomstor.blob.core.windows.net/media/1015/create-linked-service-finished.png" alt="Create linked storage" /&gt;&lt;/p&gt;
&lt;h3&gt;Create Datasets&lt;/h3&gt;
&lt;p&gt;Now we will create a Dataset for each storage account with &lt;code&gt;_ds&lt;/code&gt; as a suffix. For simplicity, use binary copy. Be sure to add the path &lt;code&gt;backups&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://skynorthsoftwarecomstor.blob.core.windows.net/media/1013/create-dataset-storage.png" alt="Create Dataset Storage" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://skynorthsoftwarecomstor.blob.core.windows.net/media/1014/create-dataset-storage-name.png" alt="Create Dataset Storage Name" /&gt;&lt;/p&gt;
&lt;p&gt;Publish the Datasets&lt;/p&gt;
&lt;p&gt;&lt;img src="https://skynorthsoftwarecomstor.blob.core.windows.net/media/1024/publish-resources.png" alt="Publish Datasets" /&gt;&lt;/p&gt;
&lt;h3&gt;Create Pipeline&lt;/h3&gt;
&lt;p&gt;Now we will create a Pipeline and add the Copy Data activity. Our pipeline is called &lt;code&gt;copy_blob_pipeline&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://skynorthsoftwarecomstor.blob.core.windows.net/media/1018/create-pipeline.png" alt="Create Pipeline" /&gt;&lt;/p&gt;
&lt;p&gt;Drag the &lt;code&gt;Copy Data&lt;/code&gt; activity onto the canvas.&lt;br /&gt;
1.) Name it Copy Data Activity&lt;br /&gt;
2.) Select source Dataset&lt;br /&gt;
3.) Select destination Dataset (sink)  
&lt;/p&gt;
&lt;p&gt;&lt;img src="https://skynorthsoftwarecomstor.blob.core.windows.net/media/1019/create-pipeline-add-copy-data-activity.png" alt="Copy Data" /&gt;
&lt;img src="https://skynorthsoftwarecomstor.blob.core.windows.net/media/1012/copy-data-activity-set-sink.png" alt="Copy Data Sink" /&gt;&lt;/p&gt;
&lt;h3&gt;Testing Pipeline&lt;/h3&gt;
&lt;p&gt;Publish all resources and your Pipeline should be ready to test. We will add event triggers after confirming the copy data activity works as expected.&lt;/p&gt;
&lt;p&gt;Take the following steps to test the Pipeline&lt;/p&gt;
&lt;p&gt;1.) Upload test data to source storage account&lt;br /&gt;
2.) In Data Factory, click the &lt;code&gt;Debug&lt;/code&gt; button&lt;br /&gt;
3.) Verify the pipeline finishes without error and the data was moved to the destination  
&lt;/p&gt;
&lt;p&gt;&lt;img src="https://skynorthsoftwarecomstor.blob.core.windows.net/media/1021/pipeline-test-before.png" alt="Before" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://skynorthsoftwarecomstor.blob.core.windows.net/media/1022/pipeline-test-debug.png" alt="Debug" /&gt;
&lt;img src="https://skynorthsoftwarecomstor.blob.core.windows.net/media/1023/pipeline-test-results.png" alt="Results" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://skynorthsoftwarecomstor.blob.core.windows.net/media/1020/pipeline-test-after.png" alt="After" /&gt;&lt;/p&gt;
&lt;h3&gt;Adding Event Trigger&lt;/h3&gt;
&lt;p&gt;We will be adding a &lt;code&gt;Blob Created&lt;/code&gt; event trigger to the &lt;code&gt;copy_blob_pipeline&lt;/code&gt;. It will watch the source storage account under the &lt;code&gt;backups&lt;/code&gt; container for new blobs, and then copy only the &lt;em&gt;new&lt;/em&gt; blobs to the destination storage account. To accomplish this, we need to parameterize our Pipeline and source Dataset. The event trigger will inject information about the blob into our parameters at runtime.&lt;/p&gt;
&lt;h4&gt;Parameterize Pipeline&lt;/h4&gt;
&lt;p&gt;Edit the &lt;code&gt;copy_blob_pipeline&lt;/code&gt; and add two parameters:&lt;br /&gt;
1.) &lt;code&gt;sourceFolder&lt;/code&gt;&lt;br /&gt;
2.) &lt;code&gt;sourceFile&lt;/code&gt;  
&lt;/p&gt;
&lt;p&gt;&lt;img src="https://skynorthsoftwarecomstor.blob.core.windows.net/media/1009/blob-event-trigger-pipeline-parameters.png" alt="Pipeline Parameters" /&gt;&lt;/p&gt;
&lt;h4&gt;Add Event Trigger with Parameters&lt;/h4&gt;
&lt;p&gt;We'll create the event trigger and configure it to inject the new blob &lt;code&gt;sourceFolder&lt;/code&gt; and &lt;code&gt;sourceFile&lt;/code&gt; into the pipeline parameters we just created.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://skynorthsoftwarecomstor.blob.core.windows.net/media/1026/blob-event-trigger.png" alt="Trigger" /&gt;
&lt;img src="https://skynorthsoftwarecomstor.blob.core.windows.net/media/1008/blob-event-trigger-parameters.png" alt="Trigger Pamaeters" /&gt;&lt;/p&gt;
&lt;h4&gt;Parameterize Source Dataset&lt;/h4&gt;
&lt;p&gt;The final step is to parameterize the source Dataset &lt;code&gt;dfcopyeventsource_ds&lt;/code&gt;. On the Connection tab, add &lt;code&gt;@pipeline().parameters.sourceFolder&lt;/code&gt; and &lt;code&gt;@pipeline().parameters.sourceFile&lt;/code&gt; to their respective input boxes.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://skynorthsoftwarecomstor.blob.core.windows.net/media/1007/blob-event-trigger-dataset-parameters.png" alt="Pipeline Parameters" /&gt;&lt;/p&gt;
&lt;h4&gt;Testing Trigger&lt;/h4&gt;
&lt;p&gt;Publish All and the Event Trigger will be live and watching the source storage account. Upload a file to the source and then view the monitoring tab to validate the pipeline executed without issues. If all is configured correctly, the blob will be copied to the destination storage account.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://skynorthsoftwarecomstor.blob.core.windows.net/media/1011/blob-event-trigger-test-monitor-tab.png" alt="Test Trigger" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://skynorthsoftwarecomstor.blob.core.windows.net/media/1010/blob-event-trigger-test.png" alt="Test Trigger" /&gt;&lt;/p&gt;
</description>
      <pubDate>Fri, 05 Oct 2018 16:11:11 Z</pubDate>
      <a10:updated>2018-10-05T16:11:11Z</a10:updated>
    </item>
    <item>
      <guid isPermaLink="false">1175</guid>
      <link>https://skynorthsoftware-com.azurewebsites.net/blog/posts/intermittent-workflow-failures-the-workflow-failed-to-start-due-to-an-internal-error/</link>
      <category>SharePoint</category>
      <title>Intermittent Workflow failures – ‘The workflow failed to start due to an internal error’</title>
      <description>&lt;p&gt; &lt;/p&gt;
&lt;p&gt;I just got through working a pretty nasty workflow issue that had  nothing to go on with verbose ULS logging.   Our issue was that even the most basic workflow’s were failing on a brand new custom list, with the first item created.  After the first item was created the workflow would work fine for X amount of time.   This issue was ugly, and intermittent, and it probably would have helped if I read this first - &lt;a href="http://support.microsoft.com/kb/2001370"&gt;http://support.microsoft.com/kb/2001370&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; We found a way to reproduce the error with the following:&lt;/p&gt;
&lt;p&gt;1.)   Create a new list&lt;/p&gt;
&lt;p&gt;2.)   Create a new workflow with SharePoint Designer&lt;/p&gt;
&lt;p&gt;             a.)   Step 1: Email user X&lt;/p&gt;
&lt;p&gt;3.)   Create a new list item&lt;/p&gt;
&lt;p&gt;4.)   Start the workflow&lt;/p&gt;
&lt;p&gt;5.)   Watch the failure&lt;/p&gt;
&lt;p&gt;&lt;span style="text-decoration: underline;"&gt;&lt;strong&gt;Note:&lt;/strong&gt;&lt;/span&gt; Every other attempt after this work would fine  (restarting the workflow)&lt;/p&gt;
&lt;p&gt; &lt;img style="width: 500px; height: 230.96026490066225px;" src="https://skynorthsoftware-com.azurewebsites.net/media/1005/2451_error.jpg?width=500&amp;amp;height=230.96026490066225" alt="" data-udi="umb://media/1b5d7946a151428caed617e34f3fa0cb" /&gt;&lt;a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/95/77/2451.error.jpg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; Like I said – the ULS logs were clean, tracking the correlation ID we came up with nothing.    Right when we took a break to review the final 3 sets of logs, my friend Wes had attempted a fix he used in the past with another workflow problem.&lt;/p&gt;
&lt;p&gt;&lt;span style="text-decoration: underline;"&gt;&lt;strong&gt;Disabling the &lt;a href="http://support.microsoft.com/kb/2001370"&gt;OffWfCommon&lt;/a&gt; feature&lt;/strong&gt;.&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;disable-spfeature -identity  "OFFWfCommon" –url &lt;a href="http://yoursitehere/sites/site"&gt;http://yoursitehere/sites/site&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;enable-spfeature –identify “OffWfCommon”    –url  &lt;a href="http://yoursitehere/sites/site"&gt;http://yoursitehere/sites/site&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;After doing this the workflow consistently worked - but had me questions as to why, so I did some checking and I have found this to be a fix for other similar workflow issues such as a modified “Workflow Task” content type version that contains this error:  &lt;/p&gt;
&lt;p&gt;&lt;span style="color: #ff0000;"&gt;&lt;strong&gt;The requested workflow task content type was not found on the SPWeb&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;If you have a modified "Workflow Task" version greater then 0 and are seeing this same issue, the steps above may be relevant.  I would always recommend testing this in a test environment fully before doing it.   Here is some sample PowerShell code to help find versions that are not 0.  Again, to be used in a test environment.&lt;/p&gt;
&lt;p&gt; $site = get-spsite &lt;a href="http://yoursitehere/sites/site"&gt;http://yoursitehere/sites/site&lt;/a&gt;  &lt;br /&gt;$site = $site.RootWeb &lt;br /&gt;foreach ($sites in $site) &lt;br /&gt;{ &lt;br /&gt;   foreach ($ctype in $site.ContentTypes) &lt;br /&gt;  { &lt;br /&gt;       if ($ctype.name -eq "workflow Task" -and $ctype.version -gt "0") &lt;br /&gt;           {&lt;/p&gt;
&lt;p&gt;              $ctype.Scope,$ctype.name,$ctype.version } &lt;br /&gt;            }&lt;/p&gt;
&lt;p&gt;  }&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt; Please only use these steps if you are experience the exact scenarios listed above, and I hope this helps you!&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;</description>
      <pubDate>Tue, 03 Oct 2017 14:15:16 Z</pubDate>
      <a10:updated>2017-10-03T14:15:16Z</a10:updated>
    </item>
    <item>
      <guid isPermaLink="false">1173</guid>
      <link>https://skynorthsoftware-com.azurewebsites.net/blog/posts/ulsviewer-filters-performance-filters/</link>
      <category>SharePoint</category>
      <title>ULSViewer Filters – Performance Filters</title>
      <description>&lt;p&gt; &lt;/p&gt;
&lt;p&gt;By now everyone should know about ULSViewer that is available for download from &lt;a rel="noopener noreferrer" href="http://archive.msdn.microsoft.com/ULSViewer" target="_blank" title="MSDN"&gt;MSDN&lt;/a&gt;, and you also should be familiar with the data filter that comes built into the tool.   If you are not familiar with the ULSViewer you may be using some other log reader that is out there, but I would highly recommend getting use to ULSViewer as it is a powerful, user friendly,  tool.   This blog is about making your life easier to troubleshoot SharePoint issues using the ULS logs and ULSViewer filter.  &lt;/p&gt;
&lt;p&gt;One of the  best things I have found with the ULSViewer is the ability to create, save, and reuse a filter.   When you do this, you can bring it to any other ULSViewer and import the filter.  Why is this handy?  This is handy because you may have a common web application, or site that you are trying to troubleshoot and you know exactly what you are looking for but don't like entering in all of the filter fields over and over again.&lt;/p&gt;
&lt;p&gt;The following filter is one that I have used many times in performance related issues.   It has a the common stack of performance EventIDs and has saved me many times during troubleshooting performance problem.&lt;/p&gt;
&lt;p&gt;&lt;span style="text-decoration: underline;"&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align: left;"&gt;&lt;span style="font-size: large;"&gt;&lt;strong&gt;Tag Description (EventID)&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align: left;"&gt;&lt;br /&gt;&lt;span style="font-size: medium;"&gt;nask             SPRequestMemory leak&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: medium;"&gt;c8hq             ECM Object Cache Full Flush - too many changes&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: medium;"&gt;8gsc             WSS Template Cache Trim - memory usage exceeds target&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: medium;"&gt;avjr              WSS Template Cache Trim - low memory condition&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: medium;"&gt;fa43             slow query with duration&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: medium;"&gt;fa44             call stack for slow query&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: medium;"&gt;tzkv             query text (useful for slow queries and sql exceptions)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: medium;"&gt;tzku             connection string (useful for slow queries and sql exceptions)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: medium;"&gt;8pbe            Watson bucketing parameters&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: medium;"&gt;fa45             exception encountered during a sql query&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: medium;"&gt;btq8             exception encountered during a sql query&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: medium;"&gt;d0d6            exception encountered during a sql query&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: medium;"&gt;880i             exception encountered during a sql query&lt;/span&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p style="text-align: left;"&gt;&lt;span style="font-size: medium; text-decoration: underline;"&gt;&lt;strong&gt;So how to do this?&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-size: small; font-family: Times New Roman;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small; font-family: Times New Roman;"&gt;1.) Open ULSViewer and load a ULS log - this gives you the ability to create a filter&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small; font-family: Times New Roman;"&gt;&lt;span style="background-color: #ffff00;"&gt;&lt;strong&gt;Notice:  &lt;/strong&gt;&lt;/span&gt;   The EventID are IDs inserted in the ULS directly from the SharePoint source.   In most scenarios this will be a pretty unique ID, however some generic catch-all's will be used and may not be as helpful, but great to Bing!&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/95/77/5468.ULSViewer.png"&gt;&lt;img style="width: 1150px; height: 230px;" src="https://skynorthsoftware-com.azurewebsites.net/media/1002/5468ulsviewer.png?width=1150&amp;amp;height=230" alt="" data-udi="umb://media/1e6ba28c2ca4442aacffd6e9eddb02b7" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;2.) Open the Filter Tool with the icon directly below the Edit Menu (shown above)&lt;/p&gt;
&lt;p&gt;3.) Start creating your filter!&lt;/p&gt;
&lt;p&gt;&lt;span style="text-decoration: underline; background-color: #ffff00;"&gt;&lt;strong&gt;Note:&lt;/strong&gt;&lt;/span&gt;  This will be the hardest part.  Everything will be OK in the end, so start clicking and typing!&lt;/p&gt;
&lt;p&gt;&lt;img style="width: 920px; height: 624px;" src="https://skynorthsoftware-com.azurewebsites.net/media/1003/2313_filter.png?width=920&amp;amp;height=624" alt="" data-udi="umb://media/21c17a0419244abe8be02ffee28aa2d4" /&gt;&lt;a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/95/77/0172.ULSViewer.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="text-decoration: underline; background-color: #ffff00;"&gt;&lt;strong&gt;Notice: &lt;/strong&gt;&lt;/span&gt; One thing to note here is the&lt;strong&gt; 'Save As', 'Save', and 'Load'&lt;/strong&gt; button.  This is obviously where you would save, or import your filter for reuse.   Start using this TODAY!&lt;/p&gt;
&lt;p&gt;&lt;span style="text-decoration: underline; background-color: #ffff00;"&gt;&lt;strong&gt;Notice:&lt;/strong&gt;&lt;/span&gt;  Another very cool feature is the ability to &lt;strong&gt;Group your AND/OR logic&lt;/strong&gt; so your filter works as expected.   If you have a grouping set the bar will show on the left side of the filter.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;4.)  &lt;strong&gt;That's It! &lt;/strong&gt; You now have created a very useful filter that will help you troubleshoot a lot of performance related problems.&lt;/p&gt;
&lt;p&gt; On a final note, I really love when our customers are proactive in troubleshooting new features or applications in SharePoint.   You could create a AND filter like I have done above to watch for specific sites and see how they are performing when using your new tool, and if they trigger any of the performance EventIDs above when you test them.&lt;/p&gt;
&lt;p&gt; If anyone has a useful filter combination please post it in the comments below and explain how it helped you troubleshoot SharePoint!&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;</description>
      <pubDate>Tue, 03 Oct 2017 13:13:54 Z</pubDate>
      <a10:updated>2017-10-03T13:13:54Z</a10:updated>
    </item>
    <item>
      <guid isPermaLink="false">1182</guid>
      <link>https://skynorthsoftware-com.azurewebsites.net/blog/posts/the-first-30-days/</link>
      <title>The first 30 days</title>
      <description>&lt;p&gt;Well, we've done it. We made the leap and turned this dream into a reality. These next 30 days are going to fly by! We'll spend some time networking in Minneapolis and Fargo, and fine tuning our business model. We will also be presenting on data security at &lt;a href="http://www.spstc.com/"&gt;SharePoint Saturday&lt;/a&gt; Twin Cities on October 28th. While this is something we've done in the past when working at Microsoft, it will be the first time as SkyNorth!  We'd love to see you there. #SPSTC&lt;/p&gt;
&lt;p&gt;It's no secret that cloud computing has been disrupting the industry the past few years. We are thrilled to be a part of this digital transformation and to help companies accelerate their journey to the modern workplace and the cloud. &lt;/p&gt;
&lt;p&gt;It has been hard for all of us to keep SkyNorth a secret the past several months. Our friends and family have been overwhelmingly supportive as we worked extra hours getting the business set up. &lt;strong&gt;Thank you&lt;/strong&gt; for your support!&lt;/p&gt;</description>
      <pubDate>Sun, 01 Oct 2017 02:03:53 Z</pubDate>
      <a10:updated>2017-10-01T02:03:53Z</a10:updated>
    </item>
  </channel>
</rss>