Do you need to auto-provision a common SharePoint site in your Office 365 tenant and then make a Hub of them? This is a common request many of us are being asked to do. Examples of the types of sites that fall into this bucket are: Project sites (Project Hub), Team sites (Team Hub), and Customer sites (Customer Hub). This post series walks thru the steps to auto-provision Customer sites in a Customer Hub. The intent of the series is not to be prescriptive on what should go on your Customer site, but to demonstrate the technique that could be applied to your own provisioning use-case. Let’s go!
According to Wikipedia, a CRM is a Customer Relationship Management approach to managing a company’s interaction(s) with current and potential customers.
Although there are several dominant players in the CRM space today offering full-blown products for managing these interactions, I was recently asked to come up with a CRM Light (i.e. Customer Hub) using current tools and provisioning capabilities in SharePoint Online and Office 365. After all, why not use the tools already available to you instead of purchasing another? (SharePoint, Planner, Outlook, ToDo, OneNote, etc.) Now that I’ve seen this entire solution built end-to-end, I’m confident the Customer Hub would suffice for many organizations’ light-weight CRM needs.
Credit: The approach to this solution was based on a session given by Drew Madelung and Vlad Catrinescu at the Microsoft Ignite 2018 session titled: From start to finish: How to create your modern SharePoint site provisioning solution
This is part 1 of a 3-part blog post series with steps to build one.
- Part 1: Provision a Hub of sites in Modern SharePoint. The Design. (this post)
- Part 2: Provision a Hub of sites in Modern SharePoint. The Build.
- Part 3: Provision a Hub of sites in Modern SharePoint. The Execution.
- Design the Site Architecture
- Design the Information Architecture
- Describe the process flow
Step 1: Site Architecture
For this solution, there are 2 types of SharePoint sites:
A Modern Communication site manually provisioned called the Customer Hub. Identify this site as a SharePoint Hub thru the modern SharePoint Admin Center. Once the site’s been hubbified, retrieve the Hub ID to use in the Site script in the next post, The Build:
Get-SPOHubSite -Identity “https://domain.sharepoint.com/sites/customerhub”
Update the Hub’s top-level navigation to include a node called Customers. Add a sub-navigation node under Customers for each of the customer industry verticals (identified in the Information Architecture section below). I’ll automatically add each new Customer site into this navigation under its corresponding industry vertical:
Retrieve the internal navigation ID for each of the above industry vertical navigation nodes. To do this, use the following PnP PowerShell cmdlet:
Get-PnPNavigationNode -Location TopNavigationBar -Tree
The second type of site in this solution is a Modern Team site with a Group that will be auto-provisioned for each customer site. Each of these sites will be automatically joined to the Customer Hub.
Step 2: Information Architecture
- Define managed term set at the tenant level term store:
- Customer Regions: West, East, North, South
- Create Lookup list for the industry verticals:
- Title (rename to Industry Vertical): Financial, Health, Government, Manufacturing
- NavigationNode (this will be used to insert the customer site link in the Hub’s navigation)
- Create Site Columns on the Customer Hub:
- CustomerRegion: managed metadata (term set above), required, single value
- IndustryVertical: lookup (list above), required, single value, include additional metadata NavigationNode
- CustomerAccountRep: person column, required
- SiteRequestStatus: choice (values: Pending (default), Provisioned, Deleted), hidden
- CustomerStatus: choice (values: Potential (default), Current, Inactive)
- Create 1 Content Type on the Customer Hub
- Customer Detail (inherits from Link)
- Title (rename to Customer Name): single line of text, required, unique constraint
- URL (comes with Link content type): hyperlink, update visibility to be hidden
- SiteRequestStatus: update visibility to be hidden
- Customer Detail (inherits from Link)
- One SharePoint List:
- Customer Details list to hold information for each Customer(leads, current, and inactive) to be used to initiate the auto-provisioning process. Includes the Customer Detail content type. New/changed items to the list will trigger a Microsoft Flow. This list will also be used to summarize Customer site information organized by Region and Industry Vertical on Customer Hub pages. Note: You *could* include an approval Flow on this list if required
Here are the final list settings for the Customer Details list. The 2 columns identified with a yellow star are both Hidden at the content type level. This is important so the end-user can’t edit them, but they will still be available in views to show .
Step 3: High-level Process
- End-user creates an item in the Customer Details list. Customer leads are entered into the list with a Potential status. Once a lead turns into a customer, the status is updated to Current.
- The item-added/updated event will trigger a Microsoft Flow. The Flow will check if the CustomerStatus is Current and the SiteRequestStatus is Pending and, if it is, it will run the steps to provision a Customer site. The Microsoft Flow will do the following:
- Call an Azure Runbook to:
- create the new site using PnP PowerShell
- apply the Customer Site Design
- put the Customer Account Rep in the Member and Owners group for the site
- update the Hub’s navigation to reference the new Customer site
- Update the Customer Details list:
- SiteRequestStatus to ‘Provisioned’
- Friendly-named URL to the new Customer Site URL
Note: You could optionally enforce an approval on this list before a Customer site was provisioned.
3. The automated Welcome message from the Office 365 Group ownership assignment will notify the Customer Account Rep they’ve been added as an owner of the new Customer site with a link to the site.
Diagram of the process flow:
Continue to Part 2 of this series for the build of the CRM Light solution!