Microsoft Flow Virtual Summit – Demos

collab365-virtual-summitsToday was the first day of the Microsoft Flow Virtual Summit sponsored by Collab 365. I really enjoyed being able to sit back and watch my recorded session and spend my time answering questions from the attendees. The comments I got in the chat window were all very gracious and complimentary. It didn’t take long during the session for people to start asking if I would make my demos available after the session. I promised that I would export all seven and post them here on my blog and also send them to the Collab 365 folks to be posted on the Summit site. The demos have all been exported and sent via email to Collab 365.  Now I just need to upload them and post them here:

  1. Applying custom formatting to the approval email
  2. Recording approval results and comments
  3. Creating custom responses without premium licensing
  4. Forwarding an approval if the approver is out of the office
  5. Escalating an approval that hasn’t been responded to
  6. Periodic reminders about pending approvals
  7. Serial Approvals with dynamic list of approvers

Fix for: Can’t Connect to Azure VM via RDP

RDP errI use Azure Virtual Machines (VMs) a lot for demos and testing.  Recently when I tried to connect to some of my VMs using remote desktop I got a error message.  The message read “An authentication error has occurred. The function requested is not supported.”  Researching this error on the Internet led me to a security update applied to Windows 10 and Windows Server 2016 that was rolled out on April 17, 2018.  This update includes an update for the Remote Desktop Client (RDP) to fix a CredSSP authentication protocol vulnerability.  After the update is applied you can no longer RDP to any machine that isn’t fully updated.  My problem was that my Windows 10 laptop had been updated, but my Azure VMs had not been updated.

I’ve seen several fixes on the Internet to workaround this problem temporarily using registry settings or Group Policy Objects (GPO). Unfortunately, the only Active Directory server involved was also on Windows Server 2016, so there was no way to attach to it make registry changes or modify GPO settings. But I was able to find another workaround that let me access the affected servers via RDP so that I could update them.

The Solution

The trick was to find a server or workstation that hadn’t been updated yet. In my case I had a local Windows 8.1 Hyper-V VM that I hadn’t updated in a while.  Using that I was able to access the affected VMs and run Windows Update.  Once the update was applied I could RDP into them from my Windows 10 laptop.

I also found that I could still RDP from my iPhone to the affected servers to apply the update.  I admit that the screen size is pretty small and difficult to work with, but it is possible.  So if you don’t have a workstation or server that hasn’t been upgraded recently you can try to RDP in from your non-Microsoft phone.  Note: I didn’t try using Android, but I assume it will also work.

When Implementing SharePoint: Failing to Plan is Planning to Fail – Pt.2

plan-to-fail1Benjamin Franklin is reported to have said, “If you fail to plan, you are planning to fail!”
I’ve seen this scenario – the failure to plan – play out at many companies, especially when implementing or upgrading SharePoint environments.
Implementing or upgrading a product like SharePoint, that is designed to empower information workers to do things for themselves, requires detailed planning.
Why?
Because empowerment​ does not come from a “one size fits all” product or solution.
SharePoint can be used to tailor a solution and deliver business value to an organizations’ technical environment. But that kind of tailoring requires careful planning. Otherwise, an organization will end up with a product that is implemented well, but does not fulfill the strategic goals they’ve set for the business.
In my first post of this series, we evaluated the reasons why organizations do not spend enough time planning before implementing SharePoint. (Read part 1)  In part two of this series, we’ll identify at some of the planning tasks that are overlooked when planning a new SharePoint implementation.

Governance

Governance helps you determine how SharePoint will be used to make your organization better. There must be a shared vision and the appropriate controls in place to make that happen.

Goals

  1. Develop a shared strategic vision ​
  2. ​​Reach a consensus on how SharePoint will be used

Key Questions

  • Is our corporate culture comfortable with a self-service model?
  • What will we control using Policies versus customization of SharePoint?
  • What business needs will SharePoint address?
  • How will policy decisions be communicated, updated, and enforced?

Security

How SharePoint security is implemented must be done in accordance with corporate culture. If not, content won’t be available to the people that need it or won’t it be secured.

Goal

  1. Decide whether or not security administration will be centralized or delegated

​​Key Questions

  • Do business users just manage the content or actually own the content they produce?
  • ​Which is more important: timely access to content or guaranteed security?
  • Will training be provided for users who need to manage their own content?

Taxonomy/Folksonomy

If information architecture isn’t planned, content will go in, but it won’t be efficiently used after it is first stored. A good organizational methodology is critical to your success.

Goal

  1. Plan how content will be organized in order to make it easy to find

Key Question​

  • How will we implement a structure for organizing content?
  • How can users surface content that is important to them?

Architecture

Upfront planning will result in a physical system that maximizes performance while minimizing costs. It must also be flexible and grow as usage increases.

Goal

  1. A​chieve a balance between cost and performance

Key Questions

  • What services will we use and where will they be located?
  • How important is search in our environment?

High Availability (“HA”)/Disaster Recovery (“DR”)

In most organizations, SharePoint becomes a mission critical application when it is implemented well. A service that can’t be depended upon can be worse than one that is poorly implemented.

Goal

  1. Build an environment that can be depended upon as a critical application.

Key Questions

  • How much downtime can we tolerate?
  • How much data can we afford to lose?
  • How much will HA and DR cost?

Staffing

SharePoint focuses on providing a self-service environment. But, having the right staff in place to maintain the system is still a critical factor to your success.

Goal

  1. Plan adequate staffing to support implementation of the other planning decisions.

Key Questions

  • Centralized security will require more staff for versus delegated security
  • How will our information architecture be maintained and enhanced over time?
  • What level of patches and fixes will be applied? All Cumulative Updates or just Service Packs?

Training/Communications

Even if you build the perfect system, people won’t be able to effectively use it without the appropriate training. You must develop a communications and training plan.

Goal

  1. Increase user adoption and satisfaction

Key Questions

  • Develop and leverage local champions to increase knowledge and acceptance.
  • What is the right level of training and communications for your organization?

Spending some time planning will lead to a successful implementation that can transform the way your company collaborates and shares information. And that’s what you started your project for in the first place, right?

When Implementing SharePoint: Failing to Plan is Planning to Fail

plan-to-fail1

Benjamin Franklin is reported to have said, “If you fail to plan, you are planning to fail!”

I’ve seen this scenario – the failure to plan – play out at many companies, especially when implementing or upgrading SharePoint environments.

Implementing or upgrading a product like SharePoint, that is designed to empower information workers to do things for themselves, requires detailed planning.

Why?

Empowerment does not come from a “one size fits all” product or solution.

SharePoint can be used to tailor a product or solution and deliver the greatest business value to an organizations’ technical environment. And that kind of tailoring requires careful planning. Otherwise, an organization will end up with a product that is implemented well, but does not fulfill the strategic goals they’ve set for the business.

There are many reasons why an organization may not spend enough time planning before implementing SharePoint. Some of the most common are as follows:

  • “We don’t know enough about the capabilities of SharePoint. We need to do a pilot to find out what’s possible.”
  • “People are excited now about the new environment. If we spend a lot of time planning that enthusiasm will subside.”
  • “Planning is important, but we don’t want to succumb to Analysis-Paralysis. We’re afraid that planning will just go on forever and we’ll never implement anything.”
  • “We hired a consulting firm to do our implementation.  They are experts, have done this before and already know how it should be done.”
  • “We’re just doing an upgrade.  We did our planning when we originally implemented SharePoint.”

All of these statements have a kernel of truth in them. However, all of the above overstate the case and can lead to significant problems. Here are the issues raised by each statement:

  • Often, pilot environments become indispensable production environments when no one is looking. Once an environment is in production it’s difficult to go back to the beginning and plan, even if you learned important lessons.
  • Planning tasks that don’t involve a broad cross-section of the user population can lead to a decrease in user acceptance, and users look for alternatives to fulfill their business needs. But a poorly planned environment will also lead to a lack of user adoption and a failed implementation.
  • Planning is not important to success, it’s critical to success. But if planning seems to go on forever it is poor planning. Planning should be a well-managed and scheduled part of an implementation project. It should have goals and deadlines.
  • Seeking professional help can be an asset and save time. But every implementation is different and planning for those differences is a critical success factor.
  • Upgrades always involve change and new feature sets. Otherwise why would you upgrade? Planning is not just a task done up front. It’s a task that needs to be incorporated into the life-cycle of SharePoint.

Now that your organization is convinced that planning is a critical to success and to strategically implementing SharePoint, you need to know what tasks to plan.

In part two of this blog series, we’ll discuss common planning tasks that are overlooked when companies fail to plan their new SharePoint implementation.

Read Part 2

Configuring Search Authoritative Pages with PowerShell

logo-powershellSomeone at work recently asked if you could configure the Authoritative Pages settings in SharePoint 2013 Search using PowerShell or whether the only way to do it was using the Search Service UI.  After a bit of research I found out that indeed you can configure the settings using PowerShell.  But I also found out that there isn’t a lot of documentation available on the web about exactly how to do it.  The difficulty is made worse by the fact that most of the documentation that does exist is for SharePoint 2010 Enterprise Search and there is a new required parameter in 2013 that makes all those Blog posts invalid.  So I decided it would be a good idea to write a “How To” post that would explain the required PowerShell.

What are Authoritative Pages?

When SharePoint web site pages and documents are returned in Search results one of the factors that effects their relevance placement is static rank.  Static rank is computed as the smallest number of clicks it would take a user to navigate from an authoritative page to a document. The closer a document is to the most authoritative page, the higher its static rank is.  Search Administrators can enter three (3) levels of authoritative pages for calculating the static rank of a search result.  They can also add site addresses to a fourth level which will demote the static rank of a specific result when compared to all other references.  In other words the closer a specific document is to one of the three authoritative pages the higher it will appear in a set of search results, while results that come from the non-authoritative sites will be at the bottom of the search results list.  For example, you might list a team site that contains draft copies of documents in the Non-authoritative sites and the home page of a document center site contains published copies in the most authoritative pages section.  This would lead to the elevation of published copies in search results instead of draft copies.

The PowerShell Cmdlets

There are two sets of PowerShell Cmdlets used to manipulate the authoritative pages settings.  First, there are four (4) Cmdlets for creating/managing the three (3) main authoritative page lists.  They are:

  • Get-SPEnterpriseSearchQueryAuthority – retrieves existing authoritative page(s)
    -Identity <AuthorityPagePipeBind>
    -Owner <SearchObjectOwner>
    -SearchApplication <SearchServiceApplicationPipeBind>
  • New-SPEnterpriseSearchQueryAuthority – creates a new authoritative page setting
    -Url <String>
    -Level <Single>
    -Owner <SearchObjectOwner>
    -SearchApplication <SearchServiceApplicationPipeBind>
  • Set-SPEnterpriseSearchQueryAuthority – changes the level of an existing authoritative page
    -Identity <AuthorityPagePipeBind>
    -Level <Single>
    -Owner <SearchObjectOwner>
    -SearchApplication <SearchServiceApplicationPipeBind>
  • Remove-SPEnterpriseSearchQueryAuthority – removes an existing authoritative page
    -Identity <AuthorityPagePipeBind>
    -Owner <SearchObjectOwner>
    -SearchApplication <SearchServiceApplicationPipeBind>

There are also three (3) Cmdlets for creating/managing the non-authoritative page list.  They are:

  • Get-SPEnterpriseSearchQueryDemoted – retrieves existing non-authoritative page(s)
    -Identity <AuthorityPagePipeBind>
    -Owner <SearchObjectOwner>
    -SearchApplication <SearchServiceApplicationPipeBind>
  • New-SPEnterpriseSearchQueryDemoted – creates a new non-authoritative page setting
    -Url <String>
    -Owner <SearchObjectOwner>
    -SearchApplication <SearchServiceApplicationPipeBind>
  • Remove-SPEnterpriseSearchQueryDemoted – removes an existing non-authoritative page
    -Identity <AuthorityPagePipeBind>
    -Owner <SearchObjectOwner>
    -SearchApplication <SearchServiceApplicationPipeBind>

The Parameters

As I mentioned before some of the parameters have changed since SharePoint 2010.  Most importantly the –Owner parameter is now a required parameter and it wasn’t in 2010.  Here’s what you need to know about each of the parameters:

  • Url – The New commands require a Url to designate the page or site address to be added as an authoritative page entry.
  • Identity – Identity is optional for the Get command.  Without an Identity the Get command will return all the authoritative pages.  The Set and Remove commands require that a specific page be identified.
  • Level – Specifies the level where the page address should be added.  Valid values are integers 0, 1, and 2 with 0 being the Most Authoritative Pages and 2 being the Third-level Authoritative Pages.
  • Owner – This was optional for 2010 but is required in 2013.  It must be set to a Search Object Owner designating either a Search Service Application or a Tenant Subscription in a Multi-tenant environment.  I’ll provide an example of how to get the Search Object Owner in the sample code below.
  • SearchApplication – This is the Search service application object to which the pages will be added.

PowerShell Sample

Now that we’ve looked at the commands and parameters lets look at a sample script that demonstrates how to use the commands.

   1:  #Get the Enterprise Search Service Application
   2:  $ssa = Get-SPEnterpriseSearchServiceApplication
   3:  
   4:  #Get the Search Owner object.  
   5:  #Must be either SearchServiceApplication (Ssa) or Multitenancy SiteSubscription (SPSiteSubscription) 
   6:  $owner = Get-SPEnterpriseSearchOwner -Level Ssa
   7:  
   8:  #Identity is either a valid url or an AuthorityPage Object(Retrieved with Get-SPEnterPriseSearchQueryAuthority)
   9:  $url1 = "http://siteURL/"
  10:  $url2 = "http://siteURL/sites/sitecollection/"
  11:  $url3 = "http://siteURL/Pages/Default.aspx"
  12:  
  13:  $mostAuthoritative = 0
  14:  $secondMostAuthoritative = 1
  15:  $thirdMostAuthoritative = 2
  16:  
  17:  #Try to get an existing Authoritative Page 
  18:  $sqa = Get-SPEnterpriseSearchQueryAuthority -Identity $url1 -Owner $owner -SearchApplication $ssa -ErrorAction SilentlyContinue
  19:  if ($sqa -eq $null)
  20:  {
  21:      #Create a new Authoritative page if one doesn't exist
  22:      $sqa = New-SPEnterpriseSearchQueryAuthority -Owner $owner -SearchApplication $ssa -Url $url1 -Level $secondMostAuthoritative
  23:  }
  24:  else
  25:  {
  26:      #Change the level of an exiting Authoritative page
  27:      Set-SPEnterpriseSearchQueryAuthority -Identity $sqa -Level $thirdMostAuthoritative -SearchApplication $ssa -Owner $owner
  28:  }
  29:  
  30:  $sqa2 = Get-SPEnterpriseSearchQueryDemoted -Identity $url3 -Owner $owner -SearchApplication $ssa -ErrorAction SilentlyContinue
  31:  if ($sqa2 -eq $null)
  32:  {
  33:      New-SPEnterpriseSearchQueryDemoted -Owner $owner -SearchApplication $ssa -Url $url2
  34:  }
  35:  
  36:  Remove-SPEnterpriseSearchQueryAuthority -Identity $url3 -Owner $owner -SearchApplication $ssa -Confirm:$false