A new SharePoint site, SharePoint Hub Site, was announced at Microsoft Ignite 2017 in Orlando. The purpose of the SharePoint Hub Site is to provide a point of organization for content across SharePoint sites. Hub Sites allow you to associate SharePoint Team Sites and Communication Sites with a parent thereby streamlining and alleviating the issues of locating related content across the organization that appears in other sites. Associating multiple Team Sites and Communication Sites provides the flexibility to model and promote an intranet that reflects the way that your people in your organization organize. Across associated sites, Hub Sites provide a common navigational structure, look, and feel. Hub Sites also aggregate news and activities, displaying the roll-up on the Hub Site’s home page. SharePoint Hub Sites can be used to organize content, teams, divisions or resources throughout your business.
How do SharePoint Hub Sites work?
Newly created SharePoint Hub Sites propagate the navigation to all the associated sites, creating parent/subsite relationships. Consistency across sites go from the top down so that all team sites or communication sites inherit common characteristics from the Hub Site. These characteristics include:
1. Navigation: Define top navigation in the hub site that is inherited by associated sites
2. Themes: Define the look and feel of the hub site. This theme remains consistent across all associated sites
3. Logo: The logo is the most important identifier of the site you are visiting. The logo remains consistent across all associated sites providing the message that says, “You are here, and you have not left”
SharePoint is a tool for collaboration and the sharing of information. Within an organization, there can be numerous project teams working on a variety of projects and it is important to increase awareness, visibility, and discoverability to encompass those who are not part of the core team. It would be unreasonable to expect your audience to search and drill down for the information, but having access to clear, concise communication that expresses in a broad sense of what is happening with the projects and initiatives would be valuable. Team sites and communication sites push information and content up to the hub site level with rollup web parts. These parts can surface content from all your associated sites into one place, allowing the flexibility for you to shift your content and associate it where it makes the most sense, unlike rigid hierarchy.
Content is pushed up to the hub site level with news aggregation, combined site activities, and scoped search.
News Aggregation: After creating and publishing a news article on an associated site, the news article will surface on SharePoint home, in the SharePoint mobile apps, and on the hub site’s home page.
Combined Site Activities: Site activities are visible on a team site’s home page as well as on the site’s card on SharePoint home. Site activities will roll up from each associated site, becoming visible on the hub site’s home page. This provides the ability to see what is happening across related sites in one view rather than going site by site. With this information, you can now prioritize and focus your time.
Scoped Search: Searching content from a hub site will result in content from all associated sites which in turn increases relevance and enhances content discovery.
Creating SharePoint Hub Sites
Hub sites can either be created by Administrators who then associate existing team and communication sites to the newly created Hub Site from SharePoint home in Office 365. You can also create an associated site directly from within the hub site itself.
The site owner can associate an existing team site or communication site within a hub site by following these steps:
1. Click the gear icon located on the upper right of the site
2. Click Site Information
3. In the Edit Site Information, click Hub Site from the drop-down menu. Choose the right hub site to join.
It is important to note that team sites and communication sites can only be associated with one Hub Site.
As intranets are dynamic, associations may change as projects come to completion and new projects added. It is easy to un-join a Hub Site as it is to join it, allowing you the flexibility to adapt to the ever-changing landscape of the intranet.
SharePoint Hub Sites and SharePoint Mobile App
Team collaboration and the sharing of information launched itself off the desktop onto mobile devices and SharePoint Mobile App is being updated to render hub sites, their pages, news, and content with smooth navigation between associated sites and scoped search. SharePoint Mobile App will continue to provide quick access to all your sites, news and team members you work with but now with added, enhanced search for content and people across your organization.
The building blocks for your intranet have now expanded from the classic publishing sites and sites for application to include team sites, communication sites, and hub sites. Sharing, managing, finding content, knowledge, and apps, on any device, is easily accomplished with SharePoint, the solution that connects your workplace with its people.
This year’s Microsoft Ignite unveiled exciting new products and innovations that span across its entire business software and cloud spectrum. Focusing on empowering the modern workspace, Microsoft has made advancements in management, security, and intelligence as well as recognizing new groups of users.
Office 365 targets two new groups of users through its two special packages. The first is for education, Microsoft 365 Education, and the second, Microsoft 365 F1, for first-line workers.
Microsoft 365 Education
Microsoft 365 Education provides the tools for students, faculty, and staff to create and work together securely in the classroom. Office 365 brings its productivity applications and combined with Enterprise Mobility + Security, Minecraft: Education Edition and Windows 10, students and teachers alike have a powerful system to create, learn and grow together in the classroom. Microsoft 365 Education is offered in three different plans as Microsoft 365 A1, Microsoft 365 A3, and Microsoft 365 A5. The fourth plan for non-profit organizations is in the works. There are price point differences between the plans, and the differences between each are compared below.
Microsoft 365 F1
Who are first-line workers? Any staff who has direct contact with a customer while providing a service or care to the customer is a first-line worker. First-line workers account for nearly 2 billion workers worldwide. Microsoft 365 F1 promotes the growth and development of the community and culture amongst first-line staff. It also trains and upskills employees, digitizes business processes, delivers real-time expertise with minimized risk and cost. Many first-line workers work shift work and to help manage their schedules, Microsoft 365 F1 offers a new feature – StaffHub. Combined with Windows 10, front-line staff is now able to stay connected, automate device deployment and manage single-purpose devices. In response to the need for devices for first-line workers, Microsoft is offering through its OEM partners HP, Lenovo, and Acer, streamlined and secure devices loaded with Windows 10S. Through its OEM partners, the total cost of ownership is reduced, and these select entry-level devices (HP Stream 14 Pro, available in October, and the Lenovo v330, available in February) will provide cloud-based identity and management for the first-line environment.
Office 365 continues to evolve, enhancing and supporting employee creativity. With the emphasis changing from routine tasks to creative problem solving, Office 365 is adapting, providing users the tools to express their ideas effectively and the ability to build upon the work and expertise of others, resulting in the creation of compelling content.
The Improved Excel
Harnessing the abilities of AI and combining it with Excel has resulted in a powerful, sleek, and fresh Excel that will understand new data types, beyond numbers and texts that are currently recognized, and augment these new data types based on public and enterprise information. For example, Excel will now recognize that “India” is a country and the acronym “MSFT” is a stock. Also, releasing in the spring of 2018, Insights, a service reserved for Office Insiders, will derive insights from complex data using AI to find and recommend patterns.
Searching with Results
Searching capabilities can now be initiated from SharePoint, Office.com, the Windows taskbar as well as Bing for Business. From so many sources to initiate your search, it becomes simplified to find your information from across your organization and beyond. Whether you are searching for a person, content or a site, Microsoft Graph powers the engine and provides consistent and personalized results.
Linking in with LinkedIn
From within Office 365, you can now view LinkedIn profiles in Microsoft apps and services. Currently rolling out to first release customers, this ability provides rich insights about the people who you work with, whether they are within your organization, or external to your organization.
Threats and Protection
With all the new and enhanced features of Office 365, security and protection have been addressed through advanced threat protection, including features that address phishing, impersonation and domain spoofing. Preventative measures including multi-factor authentication, including third-party access, expansion of conditional access capabilities, encryption of emails and documents when using consumer email services such as Outlook.com and Gmail, protection of information (detect, classify, protect and monitor your data wither it is stored or shared), and applying compliance measures as per regulations.
SharePoint and OneDrive
The biggest announcement at this year’s Ignite: SharePoint 2019 is coming! Productivity applications include Word, Excel, PowerPoint, and new versions of Skype for Business, SharePoint and more!
OneDrive is a powerful feature which provides the ability to securely share files across Office 365 not only with people who are within your organization but also with those who do not have an account and are external to your organization. Not only can you share content, but you can now see who has viewed the shared files in OneDrive. Web versions of Office now open faster than ever. Supported in the desktop version of Excel for Office 2016 is co-authoring. Thumbnails and previews have been improved along with the ability to connect existing sites to Office 365 Groups. There is also deeper integration with Microsoft Team.
The Combined Power of SharePoint and OneDrive
SharePoint and OneDrive are now integrated with PowerApps, Microsoft Flow, Power BI, and Microsoft Form, each of these provides the resources and capabilities to create and share custom forms, applications, and workflows that automate processes.
Within SharePoint, rich forms can be built from blended data, retrieved from lists with over 160 online and on-premises data sources. Custom forms with Power Apps provide solution‑creators the tools to build these forms within SharePoint. The Column Formatter allows power users to add rich formatting and interactivity to data in SharePoint lists and libraries. If your lists are becoming large and unwieldy, Predictive Indexing in SharePoint automatically sorts, queries and indexes your information into workable lists and libraries. Simple forms and interactive visualizations can be added to any SharePoint page with Power BI & Forms web parts. Finally, you can add PowerApps to any SharePoint page with PowerApps web parts.
Flow for OneDrive provides you the capability to build and launch Flows directly from within OneDrive to automate processes for your personal files. Triggering the Flow Launch Panel, an inline panel prompts the user to enter information that is used by the flow. Routing a document for review and feedback is built in Flow, ticketed as Document/Item Review. Finally, custom processes can be built with Flow with the Custom Approval Action, which requires formal approval check-in and approval before content for libraries can be published.
Microsoft Teams and Skype
As Microsoft Teams begins integrating voice and video capabilities, along with chat, to become the main workplace communications collaboration app, Skype continues to receive an enhanced infrastructure for improved video and voice communications. Microsoft Teams now has the added calling features of call transfer, calling to and from external phone numbers and voicemail as well as insights from Microsoft Graph. Teams will evolve as the primary client for communications in Office 365, and over time, will replace Skype for Business.
SharePoint and Yammer
The question of whether Yammer is a product that will stay or be replaced was partially answered at Ignite this year with the announcement of several new updates. These include new mobile-ready web part for integrating Yammer conversations into SharePoint Sites, SharePoint documents have an enriched preview and editing experience with Yammer, Yammer Groups connected to Office 365 will have default SharePoint file storage and OneNote services, launching video and voice calls directly from Yammer, and the ability to see Presence straight from Yammer.
In addition to all these great features, there is one last improvement that was announced at Ignite. This important piece of news is the new building block of the intranet – SharePoint Hub Sites, which we discuss in detail in this article.
Provisioning “Modern” Team Sites
There are four methods of provisioning “modern” team sites. These are: user interface, programmatically, PnP CSOM core component, and PnP PowerShell.
1. User Interface
One can provision from a user interface and can be done from:
a. SharePoint – provision direct from SharePoint Online; or
b. Office 365 Group – provision from an Office 365 Group from another location such as Outlook, which would then trigger the provisioning
The “modern” team sites in your tenant will have to be enabled by the administrator so that you can create “modern” team sites from the SharePoint home page. Additionally, you can create an Office 365 Group from Office 365 Outlook. By choosing the “site” tab of that group, you will be brought to the “modern” team site landing page. The SharePoint site creation process can be controlled from the SharePoint Online admin settings by choosing “modern” experience or “classic” experience.
2. Programmatically
The “modern” team sites can be programmatically created through Microsoft Graph. When creating an Office 365 group in Microsoft Graph, a “modern” team site is automatically provisioned for the group. The default structure for the “modern” team site URI is based on the mailNickname parameter of the Office 365 group: https://[tenant].sharepoint.com/sites/[mailNickname]
3. PnP CSOM Core Component
The PnP CSOM Core Component is available as a NuGet Package and has simplified methods for handling “modern” groups.
4. PnP PowerShell
Creating “modern” sites with PnP PowerShell provides the opportunity to authenticate with Microsoft Graph using Azure Active Directory. The following is a script that will create a “modern” team site and will return the actual SharePoint site URL for further manipulation. Through the URL of the created site, one can use either CSOM (with SharePoint PnP Core Component) or SharePoint PnP PowerShell to automate additional operations on the site. The script is as follows:
# Connect to Azure AD and get back an OAuth 2.0 Access Token
# This command will prompt the sign-in UI to authenticate
Connect-PnPMicrosoftGraph -Scopes "Group.ReadWrite.All","User.Read.All"
# Store the Access Token in a local variable
# This is not really needed for next steps, but is available $accessToken = Get-PnPAccessToken
# Create a new Office 365 Unified Group, together with the corresponding Modern Site in SPO
$group = New-PnPUnifiedGroup -DisplayName "Awesome Group" -Description "Awesome Group" -MailNickname "awesome-group" -Members "admin@contoso.onmicrosoft.com", "dan@contoso.onmicrosoft.com" -IsPrivate -GroupLogoPath .\logo.jpg
# Connect to the modern site using PnP PowerShell SP cmdlets
# Since we are connecting now to SP side, credentials will be asked
Connect-PnPOnline $group.SiteUrl
# Now we have access on the SharePoint site for any operations
$context = Get-PnPContext
$web = Get-PnPWeb
$context.Load($web, $web.WebTemplate)
Execute-PnPQuery
$web.WebTemplate + "#" + $web.Configuration[1]
Additional Considerations
1. Unlisted Sites in SharePoint Admin UI/Tenant API: As “modern” team sites are not visible in the SharePoint Admin UI; the list can be accessed from the Office 365 Groups admin user interface (located under Office 365 admin portal). Only “classic” SharePoint sites are listed on the SharePoint Online admin user interface. This limitation also applies to the tenant API. In other words, “modern” team sites cannot be listed by using this API but can be via programmatically by using the Groups endpoint from Microsoft Graph.
2. Sub-Sites and “Classic” Templates: Sub-sites provisioned under the root site of a “modern” site collection will use “classic” templates as there currently are no sub-site templates available for the “modern” sub-sites. There is the capability of transforming a “classic” sub-site to a “modern” sub-site. This can be achieved by creating a “modern” page on the site. Finally, updating the welcome page to the newly created page will result in a “modern” experience.
With “modern” team sites, managing, accessing and communicating is simplified, streamlined and productive. As SharePoint continues to work towards the “modern” experience, we can expect more templates and flexibility towards transferring to the “modern” experience.
[1]Provisioning “modern” team sites programmatically, (2017, March 27). Retrieved from https://msdn.microsoft.com/en-us/pnp_articles/modern-experience-customizations-provisioning-sites
Modern document libraries and lists were released in the summer of 2016 for SharePoint Online with the goal of creating better end-user experiences, including faster, better, and intuitive responses in a user-friendly environment. Not only is it highly recommended that one transitions to the “modern” list and library but customizations be converted to the “modern” experience as there are many benefits to the “modern” experience. Some of these benefits include the following:
– updated user interface: “modern” document libraries are similar to OneDrive, offering intuitive responses such as creating new folders and uploading files in the browser;
– pinned documents: pin documents so they are above the fold in any screen view for quick and easy access
– copy and move: unlike old copy and move commands, the “modern” experience is intuitive and allows one to create new folders on they fly as the architecture of your information is displayed
– decrease number of copies of document: “modern” document libraries are intelligent. They remember files that you have used in SharePoint which allows you to import files from other libraries as links rather than data files, thereby, decreasing the amount of storage space and duplicity numerous of files.
– organizing files: “modern” document libraries provide the ability to group files directly on the main page without having to go to a separate admin screen. In addition to this, there is the capability to click and drag columns to change their size plus sorting, filtering, and grouping can be done from any column header
– mobile browsers: whether accessing SharePoint Online with a keyboard, mouse, screen reader or touch, all mobile browsers will now have the same features as a desktop
– editing metadata: it is no longer necessary to click through multiple screens to apply an update as metadata can now be edited from the main view on the information panel
– integration: by integrating Office Online with SharePoint Online, SharePoint Online now provides a complete document preview at the top of the information panel and is completely navigable. The information panel displays pertinent metadata including history of recent activities, recipients of the file for sharing and updates to the file
It is important to note that the “classic” experience will not be deprecated but will co-exist with the “modern” experience.
There is an option available to the Admin to enable SharePoint to automatically detect when certain features are being used. This auto-detect automatically returns the “modern” experience back to the “classic” experience when certain features are used.
These features that are compatible to auto-detect include:
1. Navigation Features: all libraries on sites that have metadata navigation and filtering features enables are shown in “classic” experience;
2. Column Types: geolocation columns, external data columns, and publishing columns (including publishing HTML, Publishing Image, Publishing Hyperlink); and
3. Customizations: JSLink code on fields, and CustomActions that include ScriptBlock or ScriptSrc properties.
Auto-detect can be enabled, assuming the “modern” experience was not disabled under the site, web, or list levels, by following these steps:
1. Choose Admin Centres;
2. Choose SharePoint;
3. Choose Settings;
4. Scroll down to SharePoint Lists and Libraries experience; and
5. Choose New Experience (auto-detect) (the black should appear in the circle next to this).
Auto-detect is now enabled.
Customization Options
Unlike the “classic” lists and libraries, the “modern” list and libraries supports fewer customization options; however, the SharePoint Product Group is continually working towards supporting more options in the future. In the meantime, supported capabilities include Subset of User Custom Actions, Custom Branding, and PowerApps and Flow Integration.
Customizations that are not currently supported for “modern” lists and libraries include: JSLink based field and view customizations, custom CSS via AlternateCSSUrl web property, custom JavaScript embedded via User Custom Actions, Custom master pages, customization via InfoPath, Minimal Download Strategy (MDS), and SharePoint Server Publishing. For embedded Custom JavaScript, there will be controlled methods of embedding JavaScript on the pages through SharePoint Framework, and not only client-side web parts.
User Custom Actions
Not all user custom actions supported by “classic” mode are supported in “modern” experience mode. The following is a list of supported custom action locations and how they are surfaced in the “modern” UI:
1. User Custom Action Location: EditControlBlock will be visible and show up as custom menu items;
2. User Custom Action Location: CommandUI.Ribbon will be visible and show up as toolbar items; and
3. User Custom Action Location: Scriptlink and all other locations will not be visible and will not surface in the “modern” experience
Adding custom links to the context menu can be achieved by using the EditControlBlock as the location for your custom action. Likewise, to extend the toolbar in the “modern” list and library experiences can be achieved by adding a user custom action targeting the CommandUI.Ribbon location.
User Custom Action Limitations
It is important to keep in mind the limiting parameters when developing user custom actions. These limitations include the following:
1. Control of User Custom Actions: one does not have complete control of the order in which the user custom actions show up. The current API does not account for the sequence attributes;
2. Usage of JavaScript: user custom actions will not show up if JavaScript is embedded in the command actions as it is not supported;
3. ScriptLink and ScriptBlock: as ScriptLink is not supported, any user custom action relying on ScriptLink will not run in the “modern” experience; and
4. Image Maps: Image maps is not supported but you can specify individual images that are only 16 x 16.
Custom Branding
If your site employs a custom theme, then this custom theme will be respected in the “modern” list and library experience.
Configuring End User Experience
The “modern” or “classic” list and library experience can be controlled at multiple levels:
1. Tenant Level Configuration: Highly suggested for disabling the “modern” experience completely. In your tenant admin center, go to settings, select “classic” experience;
2. Site/Web Level Configuration: For preventing a web or site collection from using the “modern” experience, one can enable/disable features; and
3. List/Library Configuration: Control can be found at the library level by going to list settings, advanced settings, and then choose how you want to change the behavior. Optionally, it can also be done using CSOM.
As the SharePoint Team continues to add more supported features, it is highly recommended that one transitions to the “modern” list and library to take full advantage of the user-friendly environment which results in a satisfying end-user experience.
For better end-user usability and additional customization options, SharePoint Online as begun rolling out “modern” experiences. The modern experiences currently supported include Modern Team Sites, Modern List and Library Experiences, and Modern Site Pages. Each of these can be controlled at the tenant or site levels.
Adopting Modern Experiences
There are several recommended steps for preparing and deploying modern experiences, especially for those who have existing customizations that are business critical for your deployment. The adoption process recommended is as follows:
1. Readiness: It is important to thoroughly understand and comprehend the “modern” experiences, their features and, especially, which features are not currently available.
2. Assess: Assess your current customizations and determine which customizations and features can work within the “modern” experience and those that cannot. Those that cannot work within the “modern” experience should be updated or be retained in the “classic” format. For those that can work within the “modern” experience, determine to what extent they will work.
3. Solution Planning: Analyze, develop and finalize the plan on the requirements needed to prepare your custom solutions and sites to be used with “modern” experiences.
4. Develop and Test: Develop, apply and test the changes required for your customizations. Confirm that they will work, and if they do not, then repeat Steps 2, 3 and 4.
5. Deploy: Roll out the updated changes to your SharePoint environment.
Existing Sites and Converting to “Modern” Team Sites
Currently, existing collaboration sites cannot be converted to “modern” team sites with an associated Office 365 group. However, “modern” experiences can be used in the “classic” collaboration sites by enabling the capabilities at the tenant level, then, modifying the sites based on functional requirements.
For newly added pages in “classic” SharePoint sites, the default will be a “modern” page with the option of changing the welcome page to a “modern” page. Setting a new “modern” page for a “classic” SharePoint site can be done programmatically in CSOM or REST APIs. For “modern” lists and library usage, control is available at the tenant, site, web and list/library levels.
SharePoint On-Prem and “Modern” Experiences
Currently, “modern” experiences for SharePoint On-Prem are not available. They are planned to become available for SharePoint 2016 in an upcoming feature pack and will be available with a step by step guide.
“Modern” experiences in SharePoint Online focus on end-user usability and appearances and offers more centralized, easily accessible information from multiple platforms while on the go. In the next installments, we will discuss Modern UI and Modern Team Sites in greater detail.
What is SharePoint Framework?
SharePoint Framework is a new page and web part model that provides full support for client-side SharePoint development with easy integration of SharePoint data and Microsoft Graph through open source tooling which enables the building of SharePoint customizations for mobile, on-prem, online and OneDrive for Business. With SharePoint Framework, modern web technologies and tools provide a development environment to build experiences and apps that are ready and mobile-ready from the start.
In the next 3 blog articles, I will be shedding some lights on the new Framework and how you can start preparing to adopt the new development platform.
SharePoint Framework is written in JavaScript which allows developers, both inside and outside of Microsoft, to use their preferred web developer tools to develop SharePoint and customized solutions. This is an incredible leap as this allows developers on any platform to extend SharePoint’s standard capabilities. In addition, SharePoint Framework accompanies the new SharePoint UX, which is designed for the world’s mobile-first, cloud-first communication era. By moving towards open source resources, not only has a new door for developers has been opened, but it is also creating a new relationship between developers and SharePoint, resulting in a complete win for the client.
By moving to open source, will SharePoint Framework solutions work on classic sites? The answer is simply this: eventually, on existing team sites, it will and on new modern team sites, yes it will. However, classic solutions will not work on the new modern team sites. Moving forward, it is highly advisable to become familiar with SharePoint Framework and the tools to prepare yourself when SharePoint Framework is released.
Let's talk Framework, Development and Scaffolding tools in my next article!
One of the great enhancements in SharePoint 2016 and in the SharePoint 2013 August 2015 CU, is the Hybrid Search using Cloud Search Service Application (CSSA). The new CSSA will allow organizations to take advantage of the new hybrid capabilities, in order to create a unique search experience with one index, with crawled content from Office 365 and On-Premises data. Having one Index is huge step to better enhance the end user experience and making it easier to find results from different sources.
In this article, I will be showing step-by-step how to set up your CSSA . It is a pretty simple process if you follow the steps in order.
First of all, let's review how the CSSA indexing and crawling works. Picture 1 shows that crawling is initiated from on-premises, but the index is stored on your Office 365 tenant.

Picture 1
Picture 2 describes the flow of the search queries and the possibilities to send a query from the cloud or on-premises.

Picture 2
The following are mandatory requirements to get your CSSA working:
1. SP2013 with August 2015 CU or SP 2016
2. O365 Subscription
3. Azure Subscription
4. Synchronize users and groups from on-premises to Office365 Azure Active Directory (DirSync, AADSync, or AADConnect)
5. Create cloud Search service application
6. Install onboarding pre-requisites
7. Execute onboarding script
First you must synchronize your On-Premises AD with AAD. Follow these steps to install and configure your AAD Connect: https://azure.microsoft.com/en-us/documentation/articles/active-directory-aadconnect/
You can either use Central Admin or PowerShell. If you are using Central Admin, then you will see a new checkbox for the cloud search option. You must check it to make sure you are creating a CSSA and not a regular SSA. If you are like me, who prefers to use PowerShell, then you will make a small change to your existing script. If you don’t have one, you can download any SSA script, but make sure you add the following variables to the New-SPEnterpriseSearchServiceApplication:
New-SPEnterpriseSearchServiceApplication -Name $SearchServiceAppName -ApplicationPool $appPool -DatabaseServer $DatabaseServerName -CloudIndex $true
Then you need to set your SSA Property to true by executing this command: $Searchapp.SetProperty(“IsHybrid”,1), before you set your Search Topology.
Your Powershell Script should like similar to this:
SSADB = "SharePoint_Demo_Search"
$SSAName = "Search Service Application SPS Baltimore"
$SVCAcct = "<search Service account>"
$SSI = get-spenterprisesearchserviceinstance -local
#1. Start the search services for SSI
Start-SPEnterpriseSearchServiceInstance -Identity $SSI
#2. Create the Application Pool
$AppPool = new-SPServiceApplicationPool -name $SSAName"-AppPool" -account $SVCAcct
#3. Create the search application and set it to a variable
$SearchApp = New-SPEnterpriseSearchServiceApplication -Name $SSAName -applicationpool $AppPool -databaseserver SQL2012 -databasename $SSADB –CloudIndex $true
#4. Create search service application proxy
$SSAProxy = new-SPEnterpriseSearchServiceApplicationProxy -name $SSAName" Application Proxy" -Uri $SearchApp.Uri.AbsoluteURI
#5. Provision Search Admin Component
Set-SPEnterpriseSearchAdministrationComponent -searchapplication $SearchApp -searchserviceinstance $SSI
#6. Create the topology
$Topology = New-SPEnterpriseSearchTopology -SearchApplication $SearchApp
#7. Assign server(s) to the topology
$hostApp1 = Get-SPEnterpriseSearchServiceInstance -Identity "SPWFE“
$Searchapp.SetProperty(“IsHybrid”,1)
New-SPEnterpriseSearchAdminComponent -SearchTopology $Topology -SearchServiceInstance $hostApp1
New-SPEnterpriseSearchCrawlComponent -SearchTopology $Topology -SearchServiceInstance $hostApp1
New-SPEnterpriseSearchContentProcessingComponent -SearchTopology $Topology -SearchServiceInstance $hostApp1
New-SPEnterpriseSearchAnalyticsProcessingComponent -SearchTopology $Topology -SearchServiceInstance $hostApp1
New-SPEnterpriseSearchQueryProcessingComponent -SearchTopology $Topology -SearchServiceInstance $hostApp1
New-SPEnterpriseSearchIndexComponent -SearchTopology $Topology -SearchServiceInstance $hostApp1 –IndexPartition 0
#8. Create the topology
$Topology | Set-SPEnterpriseSearchTopology
Run the following PowerShell script to validate that your SSA is cloud based.
Add-PSSnapin Microsoft.SharePoint.Powershell
$ssa = Get-SPEnterpriseSearchServiceApplication
Get-SPEnterpriseSearchTopology -Active -SearchApplication $ssa
Get-SPEnterpriseSearchStatus -SearchApplication $ssa -Text |ft Name, state,Partition,Host -AutoSize
$ssa.CloudIndex
This should return True.
You must install the following, in order, before you proceed with the On-Boarding script:
1. Microsoft Online Services Sign-In Assistant: https://www.microsoft.com/en-ca/download/details.aspx?id=28177
2. Reboot the Server
3. Microsoft Azure AD PowerShell: http://go.microsoft.com/fwlink/p/?linkid=236297
If you do not install the above, then the next step will not work as it is needed to establish the trust between your Farm/CSSA and your Online tenant.
The On-Boarding script is a PowerShell, provided by Microsoft, that you must run as your last step to complete your CSSA configuration. You can download the On-Boarding script from GitHub. When you run this script, you will be asked to enter your O365 tenant credentials. The user must be a tenant admin account to be able to execute the script.
Once you have completed, you can start adding you content sources to your CSSA. Your content sources can be any SharePoint portal (2010, 2013, 2016, etc.), any folders, exchange, etc. Basically, it is the same content sources you used to crawl with a regular SSA.
When you are completed, then you can navigate to your SharePoint Online, search for a keyword and results should appear from Online and On-Premises.
Often, when we are engaged with new Office 365/SharePoint Online projects, we may have to create hundreds of subsites within a site collection. unfortunately, we still do not have PowerShell Cmdlets to create SharePoint webs, and we can only create SharePoint Online Site Collections using the New-SPOSite Cmdlet. However, it is definitely possible to create your subsites remotely on your SharePoint Online tenant using CSOM.
To make it more efficient, we are going to create an XML file, store all the subsites info in it, then read the XML file from CSOM to populate your Site Collection structure.
The script below describes all the steps you need to automate your SharePoint Online Site Collection.
First, let's create a new XML file and call it contoso.xml. The XML will have the URL of the Site Collection and the webs to be created within it (technically you can use the same XML to create multi level subwebs). The file will look like this:
<?xml version="1.0" encoding="UTF-8"?>
<Webs>
<Web>
<Url>https://contoso.sharepoint.com/sites/<Site Collection></Url>
<Sites>
<Site>
<Name>Site1</Name>
<Title>Title 1</Title>
</Site>
<Site>
<Name>Site2</Name>
<Title>Title 2</Title>
</Site> </Sites>
</Web>
</Webs>
You can download a sample of the XML document here: contoso.xml
There are few steps you need to take to get the CSOM code.
First, you need to add references to your SharePoint client assemblies.
Add-Type -Path (Resolve-Path "C:\CreatePublishingSite\Microsoft.SharePoint.Client.dll")
Add-Type -Path (Resolve-Path "C:\CreatePublishingSite\Microsoft.SharePoint.Client.Runtime.dll")
Add-Type -Path (Resolve-Path "C:\CreatePublishingSite\Microsoft.SharePoint.Client.Publishing.dll")
Second, you need to authenticate to your SharePoint Online tenant and load your XML file:
$userName = "username@contoso.onmicrosot.com"
$pwd = Read-Host -AsSecureString "Please enter your password"
Third, loop through the file and create the sites:
[XML]$Import = Get-Content "C:\CreatePublishingSite\PageList-min.xml"
Foreach ($objWeb in $Import.Webs.Web)
{
Write-Host $objWeb.Url -BackgroundColor Green
$ctx = New-Object Microsoft.SharePoint.Client.ClientContext($objWeb.Url)
$ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($userName, $pwd)
if (!$ctx.ServerObjectIsNull.Value)
{
Write-Host "Connected to SharePoint Online site: '$siteUrl'……" -ForegroundColor Green
}
else
{
Write-Host "Could not connect to SharePoint Online site: '$siteUrl'" -ForegroundColor Yellow
}
$rootWeb = $ctx.Site.RootWeb
$ctx.Load($rootWeb)
$ctx.ExecuteQuery()
$groups = $rootWeb.SiteGroups
$ctx.Load($groups)
$ctx.ExecuteQuery()
Foreach ($objSubWeb in $objWeb.Sites.Site)
{
Write-Host "Creating Sub Site…." $objSubWeb.Title -ForegroundColor Yellow
$WCI = New-Object Microsoft.SharePoint.Client.WebCreationInformation
$WCI.WebTemplate = "CMSPUBLISHING#0"
#$WCI.Description = "SubSite"
$WCI.Title = $objSubWeb.Title
$WCI.Url = $objSubWeb.Name.Replace(" ", "-")
$WCI.Language = "1033"
$subWeb = $ctx.Web.Webs.Add($WCI)
$subWeb.BreakRoleInheritance($false, $false);
$subWeb.Update()
$ctx.Load($subWeb)
$ctx.ExecuteQuery()
Write-Host "Sub Site Created…." -ForegroundColor Yellow
}
}
The shift from Microsoft’s proprietary framework to the open source SharePoint Framework will require learning and adopting of new technologies on the part of developers. Luckily, what knowledge the developer has gained will still be useful since the new API will not replace any of the existing models. In my previous installment SharePoint Framework: The Nuts and Bolts, an overview of what SharePoint Framework consists of and how it works was explained. In this installment, the focus is on how to prepare for the release of SharePoint Framework.
Understanding how SharePoint Framework is built is the key to determining which new technologies to learn. For each Microsoft tool, there is an equivalent web stack. The following table outlines the comparable of each web stack for each Microsoft tool:
|
Web Stack |
Microsoft Tool |
|
Node.js |
.NET framework |
|
npm |
NuGet |
|
Yeoman |
Visual Studio Project |
|
TypeScript |
C# |
|
Gulp.js |
MSBuild |
Each webstack, just like each Microsoft tool, has a specific role in SharePoint Framework. We can break the web stack down into frameworks and user and application interfaces. Each tool can be found in the open source community, and in the community, many developers have contributed their own customized tools that are made available for others to use. The open source community is very collaborative, supportive and innovative.
Frameworks for Developing Web Apps:
Node.js is a runtime environment used for cross-platform development of applications and it uses the Google Chrome V8 JavaScript engine to interpret JavaScript. It uses an event driven, non-blocking I/O model rendering it lightweight and efficient for data-intensive, real-time applications that run across multiple devices.
npm is a node package manager developed for Node.js and is used to install node programs. It also simplifies the process of specifying and linking dependencies. npm is the largest ecosystem of open source libraries in the world. Developers can either build their own packages or use ones that are already available in the community.
Yeoman is the SharePoint Framework template engine which runs on top of Node.js. The templates used by the framework are downloaded from GitHub. The project structure with all the files and folders are created in Yeoman.
TypeScript is an open source language which was created by Microsoft and it is maintained by Microsoft. TypeScript is a typed superset of JavaScript. In Node.js, it compiles to plain JavaScript on any browser, host, operating system and in any JavaScript engine that supports ECMAScript 3 or newer. TypeScript is suitable for either client side or server side applications. For developers coming from C#, concepts like classes and objects are available in TypeScript, which makes it the easiest way to start developing with script languages. Other JavaScript libraries like jQuery will also work with the SharePoint framework, but importing them into the project is required.
Gulp is a task runner to automate processes built on Node.js. It keeps complex tasks manageable and simple and can be used to compile TypeScript or Less files, build web parts or uploading to the CDN.
User and Application Interfaces
React is a JavaScript library. It is used for creating user interfaces and expresses how your app, at any given point in time, should look. It automatically manages all UI updates when underlying data changes. As data changes, React conceptually hits the "refresh" button and updates the changed parts. React is about building reusable components and these components make code re-use, testing and separation of concerns simpler and streamlined.
ReST API (Representational State Transfer) is an interface that is provided by SharePoint. ReST API allows the performance of basic operations including creating, deleting, reading and updating through the exposure of all of the SharePoint entities and operations that are available in other SharePoint client APIs.
Office UI Fabric is the front-end toolkit that blends add-ins or apps seamlessly into Office including all web components, icons, fonts and styles used by Microsoft SharePoint and other Office applications. It is important to note that Office UI Fabric is not directly related to the SharePoint framework and it is not mandatory to use this to build the web parts. The advantage of implementing Office UI Fabric is the provision of familiarity to the end user – the Microsoft style of layout and application components.
As SharePoint continues to move in the direction of mobile, cloud based collaborative communication, the move to open source JavaScript in SharePoint Framework enables developers to extend SharePoint capabilities with creative, innovative and customizable solutions on the client side that is mobile ready and readily available across various devices and operating systems. In this position, SharePoint has created the opportunities for developers to share, create, innovate and sculpt the look and feel of SharePoint Framework.