Microsoft Forms in Office 365 and SharePoint 2016

 

After Microsoft announced the deprecation of InfoPath Web Forms in 2014, there has been much speculation as to what would be coming forth to replace InfoPath.  As explained during this announcement, Microsoft was setting itself on a path to develop an integrated forms technology that allows the user to design and deploy intelligent forms across various platforms including tablets, smart phones and PCs all the while providing quick access to the data.  

In April 2016, Microsoft announced Microsoft Forms would be available in its early format in Office 365 but only for the Education module.  There has been some ability to access the preview, and from what can be seen, Microsoft Forms is not a replacement for InfoPath. Rather, it is an excellent tool for forms collaboration across platforms and audiences on both PC and mobile.

Once launched in the preview, Microsoft Forms has a look and feel like any other Microsoft application – top three dots in the top right corner provides the options to provide Feedback, ask for Help, navigate to your Office 365 Account Profile, or sign out. 

The site has integrated the look and feel of Sway with each created form represented by a tile.  If you’re not familiar with Sway, Sway is an application that allows the user to create and interactively share presentations, stories, reports and much more.  Similar to SharePoint Mobile App, Sway has the intelligence to provide suggestions for adding content like images, videos, and tweets that are relevant to your project without you having to exit and search on the web. 

Sway provides an organized and clean view of your forms.  Each form is represented by a tile and each tile clearly shows the title of the form along with its subtitle.  From this page, you have the ability to create a new form by selecting New Form

Once selected, you can begin creating your form by naming your form and providing a subtitle.  You are now ready for the next step – creating the form.  Creating the form is very simple.  You must decide upon the format of the form and there are three styles that you can choose: Choice, Text and Rating

Choice is set up as a question and answer form with choices.  You have the option of adding additional questions to the default two question slots. The form can be customized to an extent.  There is the capability of adding the parameter of “Answer Required” to ensure that the question is answered.  There is also the ability to add a subset question to the main question if more context is needed.  Quite often, the answer for a subset question is one that the responder answers in their own words, and this can be done through the Other option. 

Text is a simple and straightforward question and answer form.  You develop the questions and the responder is provided space to respond with their own answers. Answers can be limited or unlimited in character count. 

Rating forms provide your audience the opportunity to rate something such as skill, applicability, abilities, taste, or satisfaction.  The rating scale is set at either 5 or 10 with the option of expressing the rating with stars or numbers.

Microsoft Forms web app continually and automatically saves your work and once you have finished designing your form, you have the ability to either preview it before sharing or share without previewing.  If you choose Preview, then you will have the opportunity of previewing from two views:  a computer view and a mobile view. 

Once you are satisfied with your form, you can proceed to share it with your audience.  Sharing your form, or quiz, can be as simple as sharing in an email the URL, a QR code or the embed code.  There is also the opportunity to provide additional information to your audience such as whether they need to login to access the questions, whether it is a one-time only quiz or if they can answer the quiz multiple times, and the deadline to complete the quiz. Because this will be launched with the Education module, there is an excellent option that allows you to shuffle the questions when they load.  This is great for administering classroom quizzes. 

Providing a form for a quiz or survey is only as good as the information that can be gathered from it.  Microsoft Forms provides a summary of how your audience has answered the quiz or survey.  Under the Responses tab, one can find the results of the quiz including the number of responses, the average time to complete, whether the form is still active and open for submissions, a visual graph of the responses and the average rating.  Currently, there is the option to download your quiz to your PC with the Open in Excel option. Perhaps in the future, this option will be replaced with Save in OneDrive to maintain consistency with the direction of SharePoint Mobile App and Office 365.   

Though Microsoft Forms for Office 365 and SharePoint 2016 have not been released, it has been released as a preview for the Education Module.  From this preview, we can see that this application provides the user the flexibility to elicit information from a targeted audience, gather analytics, and based on this, provide solutions.  Microsoft Forms is another step towards the direction of integrated, cross platform, collaborative, and mobile applications.

SharePoint Everywhere, SharePoint Mobile App

 

Today, we are more on-thego than we have ever been and access to digital information has never been more critical with on demand immediate access.  Have you ever lost your smart phone or your tablet?  Been in a remote area without any connection?  Felt flustered and lost because you could not reach out to the digital world to grab the information that you require? Have you walked into a meeting ready to “wing it” because the updated information on the project was not accessible once you left the office? SharePoint Mobile App is the solution that has been developed to meet the need of keeping in communication with your corporation’s intranet while you’re on-the-go. 

SharePoint is evolving. Changing. Adapting. Meeting users’ needs.  SharePoint is now available for your smart phone or tablet with SharePoint Mobile App. SharePoint is now available in your pocket while you’re on the go, providing accessibility to your intranet from any location, 24/7 and across on all your personal mobile devices. 

The SharePoint Mobile App works with SharePoint Online in Office 365, on-prem with SharePoint Server 2013 and 2016 and your hybrid environment.  It is cloud based, working synergistically with OneDrive, and is available for iOS as well as Android and Windows (the latter two will be available later this year).  It is driven by Office Graph, a backend tool which facilitates searches across integrated applications in Office 365 including its content repositories and OneDrive.  The artificial intelligence of Graph allows the program to machine learn – analyzing, building and connecting people based on the content that each user accesses the most frequently.  As a result, it provides the most pertinent content, sites, portals, and contacts for given projects within a corporate enterprise with extreme ease of access.  SharePoint mobile has brought intranet corporate collaboration to a whole new level. 

On the Discover screen, one can quickly and easily access corporate news and announcements, most frequented sites, contact list of co-collaborators and search across the corporate structure for digital information through navigation tiles which resemble the Sway environment.  With Graph operating in the background, the tiles will feature the information that is most relevant to the collaborator based on their usage, assignments and hits in SharePoint 2016 and Office 365. 

With early release versions of SharePoint Mobile App, there will be smaller tiles, or tabs, and when touched, will open and provide details and specific information.  Let’s start with the first tab – the Sites tab. By selecting the Sites tab, a list of sites that the collaborator frequents and follows will appear.  The next level will provide additional information including recent activity, files and assets, which also include lists, documents, pages and subsites.  True to the definition of collaboration, these sites can be easily shared. 

As with all Microsoft products, SharePoint Mobile App is linked with other Office apps.  What does this mean for the collaborator?  This means that there is a seamless integration of Office 365, SharePoint Mobile App and other Office programs such as Word, Excel and the remainder of the suite.  For example, when the collaborator is looking at Recent documents and clicks on a Word document, SharePoint Mobile App will take the user directly into the corresponding mobile app so they can readily edit, manage, share or view the document and/or information.   

As SharePoint is an intranet collaboration app, having the ability to see who you are collaborating with and having the ability to communicate with them would be vital for a successful project.  By touching the People tab, you will be able to browse and find colleagues within your network.  By tapping on the individual, pertinent information including their contact information, projects they are collaborating on and team members of these projects will appear.  

Though Graph provides the most frequently used and accessed information on an individualized basis, there are instances when it is still necessary to find digital information manually. This brings us to SearchSearch in the SharePoint Mobile App provides a full enterprise search so that not only can you search for content, but you can also search for people by applying filters such as sites, files and people.  Search crawls across the corporate intranet including the SharePoint team sites, folders in OneDrive for Business, restricted to the ones which you have access to, company portals, and Graph’s recommended content. 

Though individual collaborators will see their recommended content, management requires the ability to make announcements, provide resource information, and provide standardized sites and programs that can be accessed by all members in the company.  Created by the SharePoint administrators in Office 365, the Links tab will provide corporate wide information for all employees. 

SharePoint Mobile App is an extremely powerful tool for on-the-go collaboration.  By integrating SharePoint, Office 365 and OneDrive, Microsoft is reshaping and redefining how intranet collaboration is done, what intranet collaboration should look like and why intranet collaboration is vital to the on-the-go corporate work style. 

Data Loss Prevention (DLP) in SharePoint 2016 and Office 365

 

With technology and the sharing of information, especially sensitive data, between staff, vendors and external companies, all corporations have become targets for hackers and criminals whose sole objective is to find an avenue to steal this information.  Quite common, it is the benevolent mistake of an employee who includes information about a client, such as a credit card number, a name or an account number, to the outside corporate world through email, social posting, lost portable drive with downloaded confidential information, or a photo of critical information that they took so they could access the information on the go without have to carry the document or file with them.  Breaches can include privacy (examples of companies include Sony, Human Resources and Skills Development Canada “HRSDC”, Adobe Systems, Corrections Canada), health and medical (examples include Health Net, Durham Regional Health, Kaiser Permanente), and identity theft (examples include JPMorgan Chase & Co, CIBC, Daimler Chrysler Financial Services Canada, Inc.).  These examples are all breaches of personal information and corporations are being held legally responsible and accountable.  Facebook Inc., Bell Canada and BC Provincial Health Services Authority have all faced class action suits and the plaintiffs have been successful in their cases.  As you can imagine, customer privacy and the ability to keep their information private, is not an option.  It is mandatory and DLP with SharePoint and Office 365 enhance the ability to keep this information from being shared with those who should not have access to it. 

DLP was first introduced in Microsoft Exchange Server 2010 and later expanded to include Outlook and Outlook Web App.  DLP has now been extended further to include SharePoint 2016 and Office 365, which allows a business to build a DLP structure across email and data, which is phenomenal news for all whether you are on-prem or in Office 365 (SharePoint Online being part of Office 365). 

There is a difference between document lifecycle management and DLP.  DLP does not replace the process for document lifecycle management.  Rather, DLP allows your business to build a policy model to discover, or find, confidential data and protect it in a way not previously possible.  With the integration of DLP over email and data, businesses now have a method to protect critical data from leaving the corporate premises in err through real-time monitoring of user activity, thus reducing and/or preventing critical data breaches.   

The DLP configurations for SharePoint 2016 and Office 365 have slight differences between them. 

Unlike SharePoint 2016, Office 365 is ready for you to start creating policies through the Security and Compliance Admin Console within the Office 365 Admin Centre.  Yes, it is as simple as that.

However, SharePoint 2016 is not as simple as that.  Before you can begin, you must configure the prerequisites for the DLP:

  1. Create your search service application and define a crawl schedule.  Once this is completed, perform a full crawl;
  2. Configure outgoing mail in order for policy notifications to be sent via email;
  3. Allow Usage Reports by turning it on.  This will allow incident reports and overrides to be logged appropriately;
  4. Create, either one or both, eDiscovery Centre and/or Compliance Policy Centre site collection.  Note that:

     

    1. each web application requires its own Compliance Policy Centre – you cannot have one that applies to all site collections across all web applications; and
    2. one eDiscovery Centre site collection can run DLP queries across all site collections in all web applications. 
  5. Determine the compliance team, risk team and information security team.  Permissions are granted by making these users members of the Site Collection members group so that they may access and manage DLP policies. 

It cannot be stressed enough that a healthy search and crawl configuration is critical as the core data source behind both Office 365 and SharePoint 2016 is the SharePoint Search Index.  If the content is not in the Search Index, the DLP engine will not find it.  In addition to this, you cannot apply DLP policies to sites or content that has been excluded from SharePoint.

In order for new content to be found, a crawl must occur so that the Search Index is updated with the content.  Additionally, in order to enforce DLP policies, four related timer jobs must run.  All this must occur before DLP policies can be enforced on confidential and critical information, and this can take up to 24 hours before the policies become effective in SharePoint 2016. 

We’ve mentioned DLP policies, so how do we create these?  It’s important to note that writing the DLP policy in Office 365 is different than in Office 365.

Before writing any policies and rules, one should determine how many data items in your organization’s SharePoint are in breach of your company’s compliancy regulations.  The discovery process relies 100% on the crawled Search Index.  You have the ability to conduct a DLP query based on specific DLP templates across your SharePoint data.  By conducting this query, you can quickly identify the policies that require management as well as the areas that are in breach.  In SharePoint 2016, a new eDiscovery site template called a DLP query allows a user, who must have read access to all data in SharePoint, to launch queries against all DLP templates or specific content in the SharePoint environment.  Read access to all SharePoint data can be granted via a Web Application Policy on-prem or by adding the user as a site collection administrator in SharePoint Online or on-prem.   Once Discovery has been completed, and areas of breach have been determined, you can proceed to write the DLP policies and rules. 
 

DLP Policy Creation in Office 365
 

1.  Specify locations where the policy may be applied for SharePoint Online and OneDrive for Business by listing all sites or specific sites;

2. Configure one or more DLP Rules.  Each rule consists of:

a.  Conditions

There are 80 templates specifying the conditions and these are the same ones used in Exchange.  The full list of templates can be found via the hyperlink.  You must:

  1. choose the applicable templates to apply as you cannot create custom data sensitive templates
  2. determine and set the maximum and minimum number of instances for each sensitive data type selected
  3. determine who the content is shared with.  This includes internal and external people and organizations
  4. metadata properties

  b.  Actions

  1. send a default or custom email notification
  2. show a default or custom policy tip
  3. allow an override with or without business justification
  4. block content to all users with the exception of site owners, document owners or last modified user

   c.  Incident Reports

  1. logging of report
  2. level of severity
  3. email notification with report attached

  d.  General Settings

  1. name of rule plus description for each rule
  2. name of policy plus description for each
  3. indication of whether policy has been configured or not

 

DLP Policy Creation in SharePoint 2016 


The DLP policy creation in SharePoint 2016 is similar to Office 365, but there are some notable differences:   

1.  Specify DLP Policy name;

2.  Select 1 of the 10 possible policy templates.  Each policy template consists of a combination of 10 sensitive data types.  These relate only to US and UK sensitive data types;

3.  Determine and set the number of incidences of the sensitive data type which will, in turn, trigger the policy;

4.  Provide the specific email address for the incident report to be emailed to;

5.  Determine to display a default policy tip or not;

6.  Determine who will be blocked access to the content – all users except site owners, document owner or last modified user;

7.  Assign the policy to a site collection where you wish it to be enforced.  Each site collection must be specified one at a time as there is no overall site collection ability.  Also note that you cannot specify the application of a policy down to the subsite level. 

Remember, a search crawl and four timer jobs must be completed before the new data and policies are enforced.   

With SharePoint 2016 and Office 365, the integration of DLP policies and rules spanning data in SharePoint and Exchange provide corporate entities more power in technology to combat the onslaught of hackers who try to steal and misappropriate sensitive data.  By having control over DLP protocols, corporations now have the ability to audit their data and their users in real time to proactively prevent the loss of sensitive data.  Data Loss Prevention – this is what SharePoint 2016, Office 365 and the future of security software are focused on. 

The Future of SharePoint

 

On May 4, 2016, Jeff Teper Corporate Vice President for the OneDrive and SharePoint Teams, unveiled the new cloud-first, e-mobile version along with the vision and roadmap for SharePoint as well as updated and new features which will empower end users to collaborate, stay organized and communicate from anywhere and on any device. 

What is the future of SharePoint?  Simply put – it is all about people like you and me!  SharePoint was created and developed as a platform to share information amongst team members within an organization in a live environment, thereby removing redundant versions of the same document by allowing collaboration in real time. 

Microsoft has not lost its focus on this point.  In fact, it has been working on strengthening the foundation for collaboration and in-the-moment information accessibility.  Truly, SharePoint was designed with people in mind and continues to be developed with people, work productivity and ease of use as focal points.

There are many new features of SharePoint, but the most notable is the ability to access SharePoint from any device – whether it be your mobile phone, tablet or computer.  You will have access to the documents that you need, in real time, no matter where you are and no matter what platform you are using. 

Naturally, mobile access has been focusing on the Cloud based systems, so what about those who need to remain on-prem?  Microsoft is addressing this issue by acknowledging that some customers must remain on-prem and has shifted gears to work with these customers to develop solutions which will allow them to stay on-prem.  For others, transitioning may take a bit of time. Again, Microsoft is working with these customers in developing transitioning packages that are tailored to their needs. 

SharePoint 2016 brings a lot of new features around hybrid solutions. As the end user, you will not know whether your assets are being accessed in the Cloud or from the on-site server.  The Windows experience is seamless – Office 365, OneDrive, Outlook and other business/personal productivity tools have been flawlessly integrated to provide an exceptional product and resulting in many user interface updates.

One of the most useful implementations of software is Discovery view. There is nothing more frustrating than hunting for a document amongst a sea of hundreds or thousands.  Instead, in Discovery view, all you need to do is type in the information you are looking for, and the search engines in the background will pull up possible matches based on the people you are working with, the project and the number of hits.  Microsoft has incorporated this into SharePoint which only enhances its power of collaboration. 

Trying to find a document in the library list?  It was cumbersome, time intensive and caused frustrations when you had a lot of documents in the library.  The second most useful update in SharePoint 2016 is the ability to pin a document that you use frequently so it stays at the top of your library list.  As if this isn’t cool enough, you can also pin links to a file or folder located in a different document library or website. 

True to heart as being a collaborative operating platform, SharePoint has aligned SharePoint Team Sites with Office 365 Groups for ultimate collaboration between products.  How will this work?  Every group will have a team site and every team site will have simple membership management which, in turn, gives groups the benefits of metadata which will be used for compliance and information classification.  This alignment is win-win!

Sometimes, it’s not always a win-win.  Even though SharePoint is a collaborative platform, it does have a single weakness:  it is not aligned to the way that we work.  Let me elaborate on this.  For example, how many of you actually write and publish within SharePoint?  If you are like the average contributor, you will actually write off-line, save off-line and then, when ready, copy your document to SharePoint and then publish it.  Sound familiar?  This methodology completely undermines the goal of SharePoint and collaboration.  Not only are there multiple versions floating out there on hard-drives, but the very idea of collaborating on one document in real time is thrown out the window.  Why are we doing this?  It is because moving the document is not easy and when we try to move cross platform, it is even more difficult.  Our solution:  write, save offline and then copy it into SharePoint, or use an external solution to circumvent the issue.  Microsoft recognized that is an issue, a major issue, for their users.  To align SharePoint to the way we work, Microsoft’s response is the alignment of Office 365 Groups and SharePoint Team Sites.  In addition to aligning these two features, SharePoint will be improving the capability of moving files from OneDrive Business to SharePoint, thereby reducing redundancy in duplicate files and use of external solutions. With these key updates, and the ease of simple page authoring within SharePoint, one will be able to create and publish within SharePoint with ease and confidence. 

The future of SharePoint is about the now with your team.  The ability to have intranet in your pocket, easily accessible from anywhere from any device.  The ability to communicate, update and contribute with ease despite time, distance or place.  SharePoint 2016 will provide you the ability to make key decisions in real time on any device.  This is the future of SharePoint 2016 – on the go connection, collaboration and key decision making on any device, in any place and at any point in time.    

Content Search Web Part Results Issues

 

Content Search Web Part (CSWP) is one of the great web parts introduced in SharePoint 2013 and Office 365. This web part uses the Search API and index to dynamically display results based on specific queries and rules on a content page.

The way it works is pretty simple; when a user navigates to a page, the web part initiates a query based on different inputs such as search box keyword, URL parameter, token, etc. You can also apply filters, refiners, and apply relevancy to the search results to make your SharePoint experience much more enjoyable.

I have spent a lot of time building dynamic portals, and, of course, at the same time troubleshooting issues why results do not show up. Let’s take an example where you want to build an image slider that loads the content from an image library. It’s pretty simple to build this in CSWP, where you pass the URL where you want to display, add some filters and voila, the results should show.

CSWP Query Builder

The Query can look like this:

path:"<URL of the library>“(IsDocument:"True" OR contentclass:"STS_ListItem")

CSWP Refiner

In the above example I am submitting a query to load from a specific URL and return only the items. This will exclude for example, the AllItems.aspx page.

Let’s say you can build a complete portal based on CSWP, however, our topic here is not how to build a CSQP, but to troubleshoot why CSWP does not display results for you.

But wait, what if you are not getting any results back? Here are few tips to help you troubleshoot the issue.

  1. Is the content crawled? Make sure the content you uploaded has been picked up by search. You need to wait before the content is indexed. A good test is to use the general search to check if your content is indexed. If it is, then the issue is something different.
  2. Too many filters in your query refiners. If you have too many refiners, start removing them and check if your query is returning results or not.

In my recent scenario, my content was indexed, showing up in the default search results, and I had no filters. In fact, just adding the CSWP with no extra queries in it did not return anything. Typically, when you add the CSWP, it will automatically show you this:

Default CSWP

After further investigation, looking at the way the portal is configured, I noticed something not adding up in the Alternate Access Mapping (AAM). The default AAM of the portal was not the same as the one it is being crawled. In my case the default AAM was http://portal and in the search content source I had http://portal.contoso.com.

Here’s the AHA moment! AAM did not match the content source; once I made sure that the default AAM and content source are a match, the content started showing up in my CSWP.

Prepare for SharePoint 2016

 

On March 14, 2016, Microsoft announced the general availability for SharePoint 2016. We have been testing it, along with many companies for the past year or so, and it offers great features and enhancements to the previous versions. If you have done so, I encourage you to download the software, test it out, and start preparing to move to it.

In this article, we will review some of the great new and improved features in the new SharePoint 2016 release:

Hybrid in SharePoint Server 2016

In SharePoint Server 2016, hybrid attributes are available to empower options for organizations:

  1. Hybrid Sites: Hybrid sites characteristics allow your users to have experience that is integrated while using SharePoint Server and SharePoint On-Line portals. Users see them consolidated in one list, and can follow SharePoint Server and SharePoint On-Line sites.
  2. Hybrid OneDrive for Business: Organizations can use profiles in Office 365, instead of on-premise; this is great feature if companies want to save on-premise storage.
  3. Hybrid Cloud Search: With cloud hybrid search, all this stated functions can be carried out:

    1. You index each of your crawled content, including on-premises content. You can create the crawler in SharePoint Server 2016 Release Candidate. Use the exact same search connectors in SharePoint Server, and Office SharePoint Server 2007, SharePoint Server 2010 and to crawl the same content sources 2013.
    2. When your search index is queried by users in Office 365, they get search results that are incorporate from both on- premises and Office 365 content.

App Launcher and UI changes

SharePoint 2017 and Office 2013 are pretty much identical now with the enhanced UI changes to 2016 and the introduction of the AP Launcher.

MinRoles

You can now select the role for the server when you configure SharePoint. By selecting the role, it will only install what’s required for this role, and nothing else, but it does better than that, it will make sure that all servers that belong to that role are compliant. But if you change your mind later, you can convert the server to a new role if needed.

Zero downtime patching and feature packs

No more downtime when patching your farm, but it requires high availability of each role. The updated bits will be much smaller and faster to install to allow the support of zero downtime. Also, Microsoft will be moving into more Feature Packs rather than Service Packs, to make the on-premise version as close as possible to Office 365 when applicable. And no, you will not have an on-premise Delve J. Expect the first feature pack to be ready for us in 2017.

List Threshold

The 5,000  view threshold has been removed; kind of J. SharePoint has always supported 30,000,000 items, but there was a limit not to have more than 5,000 items in a view, to prevent SQL locking that can affect your entire farm.

The 5,000 limit is necessary, but now the index will automatically be created, so technically, the limit is still there, but you don’t have to worry about it.

File Size Upload

Although I don’t recommend uploading large files for performance to store then in a SharePoint database, but the you can upload files beyond 2 GBs now.

Fast Site Creation

You can now create site templates to be used to create site collections in less than 1 seconds (compared to about 60 seconds in some cases). Using a PowerShell command, you will enable this feature and will allow you to start using the Fast Site Creation feature.

Data Loss Prevention (DLP)

With this particular new capability, you can:

  1. Search for Company across SharePoint Online SharePoint Server 2016, and OneDrive for sensitive content.
  2. Leverage 51 built-in sensitive information types (credit cards, passport numbers, Social Security numbers, and more).
  3. Use DLP Queries in the site collection that is eDiscovery to find sensitive content relating from the SharePoint eDiscovery Center to business regulations that are common, identify violating files, and export a report.
  4. Turn on DLP Policies from the Compliance Policy Center site group when documents with sensitive information are stored in SharePoint to notify administrators and end users and mechanically shield the files from improper sharing.

 

Create Publishing Sites with PowerShell

 

Often, we want to provision publishing sites within a site collection without using the interface. Adding publishing sites to a site collection is time consuming, and it gets more complicated if you are using SharePoint Variations. If you are using the Out of the Box Publishing Site template, you have no choice to pick any custom Page Layout you have created, but it uses the default out of the box Page Layout. Of course, you can create your own Publishing Site template and use it, but this takes some time to develop and you will need to deploy it across your WFE servers. Also, creating your own Publishing Site template will not work if you are using Variations. The target site during the Variation site provision will always use the default Publishing Site or Publishing Site with Workflow template.

This becomes very frustrating if you are creating many sites and you have to do it manually. Typically, in a variation site, let’s say we are doing an English and French variations, the site URLs for English and French are different. For example, the English URL of a specific site will be http://contoso/en/EnglishSite and in French, you may want it to be http://contoso/fr/FrenchSite. This different URLs is, most of the times, required in global organization where they need to have localization I their URLs. This process can very time consuming after creating the site because you have to perform many manual steps like:

  1. Changing Page Layout of the welcome page
  2. Changing the Title of the welcome page
  3. Adding any custom list to the sites
  4. Changing the URL of the target site
  5. Changing the Page Layout of the target site welcome page
  6. Changing the Title of the target site
  7. Changing the Title of the target site welcome page
  8. Adding any custom list to the sites

In one of the cases I have encountered, the number of steps were up to 40, which is insane if you have to repeat it 500 times. So, I came up with a script that can eliminate all of these steps with one single PowerShell script that read the info from a CSV file, provisions the site, then configure the sites in English and French. The CSV file has 5 main variables (of course you can/remove as many as you want):

  1. Provide the full path to the site to be provisioned
  2. Provide the title of the site
  3. Provide the Page Layout for the landing page
  4. Provide the unique URL of the French site
  5. Provide the French title

The script will perform the following actions:

  1. Create a log file of every action, in case there is an error
  2. Create the site
  3. Modify the page layout
  4. Change the title of the welcome page
  5. Wait until the Variation French site has been created to resume
  6. Change the French URL
  7. Change the French Title
  8. Change the Title of the welcome page

Here is the script, but you can download the script here along with the CSV file.

#Load sharepoint snapin

$snapin = Get-PSSnapin | Where-Object {$entry.Name -eq 'Microsoft.SharePoint.Powershell'}

if ($snapin -eq $null)

{

    Add-PSSnapin "Microsoft.SharePoint.Powershell"

}

#Define variables

$logMessage =""

$siteURL = "http://contoso"

$site = Get-SPSite $siteURL

$sitesCSV = Import-Csv C:\Publishing-Sites.csv

#sort the object so that top level sites get created before lower level ones in order to avoid errors

$sitesCSV = $sitesCSV | Sort-Object {$_.EN_URL}

#array to contain the sites that are created

$added = @()

#CSV file is now in memory delete the original so that a new one can be added.

Remove-Item D:\Hub\Hub-Sites.csv

$currentDate = get-date

$logFile = "C:\CreationLog.csv"

foreach($entry in $sitesCSV){

                $WebURL = $entry.EN_URL

                $WebURLFR = $entry.FR_URL

                $WebTitle = $entry.EN_Title

                $WebTitleFR = $entry.FR_Title

                $PageLayoutName = $entry.Template + ".aspx"

    #check row values for proper input

    #check if blank fields

    if(($webURL -eq "") -or ($WebTitle -eq "") -or ($PageLayoutName -eq ".aspx") -or ($WebURLFR -eq "") -or ($WebTitleFR -eq ""))

    {

        #blank fields found

        $row = "$currentDate,ERROR,Blank fields found,$entry"

        $row | Out-File -Append $logFile

        continue

    }

    #check if french URL is full URL or more than one level

    if($WebURLFR -contains "/")

    {

        #french URL is bad

        $row = "$currentDate,ERROR,Bad French URL,$entry"

        $row | Out-File -Append $logFile

        continue

    }

    #check for over 256 characters for title and truncate

    if(($WebTitle.length -gt 254) -or ($WebTitleFR.length -gt 254))

    {

                $WebTitle = $WebTitle.substring(0,253);

                $WebTitleFR = $WebTitleFR.substring(0,253);

    }

    #check if english URL is full URL

    if(($WebURL -like "http*") -eq $false)

    {

        #french URL is bad

        $row = "$currentDate,ERROR,Bad english URL,$entry"

        $row | Out-File -Append $logFile

        continue

    }

    #check if URL contains special characters

    if(($WebURL.Replace("http://","") -notmatch "^[a-zA-Z0-9\s-]") -or ($WebURLFR -notmatch "^[a-zA-Z0-9\s-]"))

    {

        $row = "$currentDate,ERROR,URL contains special characters,$entry"

        $row | Out-File -Append $logFile

        continue

    }

    #check if site exists

    $exists = (Get-SPWeb $WebURL -ErrorAction SilentlyContinue) -ne $null

    if($exists -eq $true)

    {

        #site exists. Write to log file and move to next entry

        $row = "$currentDate,WARNING,Duplicate Site,$entry"

        $row | Out-File -Append $logFile

        continue

    }

    try{

                #Create English Site

        $logMessage = "Creating site"

                New-SPWEB -Url $WebUrl -Template CMSPUBLISHING#0 -Name $WebTitle -AddToQuickLaunch -UseParentTopNav -erroraction stop

                $web = Get-SPWeb $WebUrl

                #Enable French alternate language

        $logMessage = "Setting english alternate language"

                $web.IsMultilingual = $true;

                $web.AddSupportedUICulture(1036);

                $web.update();

                #Get Publishing Site and Web

        $logMessage = "Getting english publishing site"

                $PublishingSite = New-Object Microsoft.SharePoint.Publishing.PublishingSite($Web.Site)

                $PublishingWeb = [Microsoft.SharePoint.Publishing.PublishingWeb]::GetPublishingWeb($web)

                #Get New Page Layout

        $logMessage = "Getting english page layout"

                $SitePageLayouts = $PublishingSite.GetPageLayouts($false)

                $NewPageLayout = $SitePageLayouts | ? {$_.Name -eq $PageLayoutName}

                #update landing page Page Layout and title

        $logMessage = "Setting English layout and title"

                $PublishingPage = $PublishingWeb.GetPublishingPage($WebURL + "/Pages/default.aspx") 

                $PublishingPage.CheckOut()

                $PublishingPage.Title = $WebTitle

        if($NewPageLayout -eq $null)

        {

            $row = "$currentDate,WARNING,Bad Template name,$entry"

            $row | Out-File -Append $logFile

        }

        else

        {

                    $PublishingPage.Layout = $NewPageLayout

        }

                    $PublishingPage.ListItem.Update();

                    $PublishingPage.CheckIn("Page layout Updated via PowerShell")

                $web.Update()

        #add the row to the added array

        $added += $entry

        #log site creation

        $row = "$currentDate,INFO,English Site Created,$entry"

        $row | Out-File -Append $logFile

    }

    catch

    {

        #there was an error.  Log error message to log file and move to next entry

        $row = "$currentDate,ERROR,$logMessage,$entry"

        $row | Out-File -Append $logFile

        continue

    }

    finally

    {

                $web.dispose()

    }   

}

if($added.length -le 0)

{

    return

}

#wait 5 minutes for variations to be created

Start-Sleep -Seconds 300

#start french site creation

$logMessage = "Start french site creation"

$siteURL = "http://contoso"

$RelationShipListName = "Relationships List"

$FieldName = "ObjectID"

$site = Get-SPSite $siteURL

$spWeb = Get-SPWeb $SiteURL

#iterate through @added as it now contains all the sites that have been created

foreach ($frenchRow in $added)

{  

                try{

        $numberOfTries = 0

        $exists = $true

        do{

            $spRelationshipList = $spweb.GetList($RelationShipListName)

            $ENUrl = $frenchRow.EN_URL

                    $FRTitle = $frenchRow.Fr_Title

                    $NewFRUrl = $frenchRow.FR_URL

                    #Get French site URL

                    foreach($EN_Item in $spRelationshipList.Items)

                    {

                                $EN_hyperlink = New-Object Microsoft.SharePoint.SPFieldUrlValue($EN_Item[$FieldName])

                                if ($EN_hyperlink.URL -eq $ENUrl)

                                {

                                                $GroupGUID = $EN_Item["GroupGuid"]

                                                $ID = $EN_Item[“ID”]

                                }

                    }

 

                    foreach($FR_Item in $spRelationshipList.Items)

                    {

                                $FR_hyperlink = New-Object Microsoft.SharePoint.SPFieldUrlValue($FR_Item[$FieldName])

                                if (($GroupGUID -eq $FR_Item["GroupGuid"]) -and ($ID -ne $FR_Item[“ID”]))

                                {

                                                $CurrFRUrl = $FR_hyperlink.URL

                                }

                    }           

            #has variation been created? 

            #if not we wait 5 minutes for up to two tries in order to let the variation timer job do its thing

            $exists = (Get-SPWeb $CurrFRUrl -ErrorAction SilentlyContinue) -ne $null

            if($exists -eq $false)

            {

                Start-Sleep -Seconds 300

            }

            $numberOfTries++

        }while(($numberOfTries -le 6) -and ($exists -eq $false))

        if($exists -eq $false)

        {

            $row = "$currentDate,ERROR,Variation does not exist,$entry.ToString()"

            $row | Out-File -Append $logFile

            continue

        }

                    #Change the site Title

            $logMessage = "Change french title"

                    $web = Get-SPWeb $CurrFRUrl

                    $web.Title = $FRTitle        

                    #Enable English alternate language

            $logMessage = "Enable French site alternate language"

                    $web.IsMultilingual=$true

                    $web.AddSupportedUICulture(1033)

                    $web.Update()

                    #Get Publishing Site and Web

            $logMessage = "Get french puglishing site"

                    $PublishingSite = New-Object Microsoft.SharePoint.Publishing.PublishingSite($Web.Site)

                    $PublishingWeb = [Microsoft.SharePoint.Publishing.PublishingWeb]::GetPublishingWeb($web)

                    #update landing page  title

            $logMessage = "Update french landing page title"

                    $PublishingPage = $PublishingWeb.GetPublishingPage($CurrFRUrl + "/Pages/default.aspx") 

                    $PublishingPage.CheckOut()

                    $PublishingPage.Title = $FRTitle

                    $PublishingPage.ListItem.Update();

                    $PublishingPage.CheckIn("Page layout Updated via PowerShell")

                    $web.Update()

            $row = "$currentDate,INFO,French Site Customized,$entry"

            $row | Out-File -Append $logFile

    }

    catch

    {

        $row = "$currentDate,ERROR,$logMessage,$entry.ToString()"

        $row | Out-File -Append $logFile

        continue

    }

    finally

    {             

                    $web.dispose()

    }

}

#sort the @added array so that we can change the URL without breaking

$added = $added | Sort-Object {$_.EN_URL} -Descending

$logMessage = "Change French URL"

#iterate through @added a second time in order to change the URLs of the french sites now that they have been customized

foreach ($frenchRow in $added)

{

    $spRelationshipList = $spweb.GetList($RelationShipListName)

                try{

        $ENUrl = $frenchRow.EN_URL

                    $FRTitle = $frenchRow.Fr_Title

                    $NewFRUrl = $frenchRow.FR_URL

                    #Get French site URL

                    foreach($EN_Item in $spRelationshipList.Items)

                    {

                                    $EN_hyperlink = New-Object Microsoft.SharePoint.SPFieldUrlValue($EN_Item[$FieldName])

                                    if ($EN_hyperlink.URL -eq $ENUrl)

                                    {

                                                    $GroupGUID = $EN_Item["GroupGuid"]

                                                    $ID = $EN_Item[“ID”]

                                    }

                    }

                    foreach($FR_Item in $spRelationshipList.Items)

                    {

                                    $FR_hyperlink = New-Object Microsoft.SharePoint.SPFieldUrlValue($FR_Item[$FieldName])

                                    if (($GroupGUID -eq $FR_Item["GroupGuid"]) -and ($ID -ne $FR_Item[“ID”]))

                                    {

                                                    $CurrFRUrl = $FR_hyperlink.URL

                                    }

                    }

                    $web = Get-SPWeb $CurrFRUrl

        #Change the French Site URL

                    Get-SPWeb $CurrFRUrl | Set-SPWeb -RelativeURL $NewFRUrl -ErrorAction Stop

        $web.Update()

        $row = "$currentDate,INFO,French Site URL Changed,$entry"

        $row | Out-File -Append $logFile

    }

    catch

    {

        $row = "$currentDate,ERROR,$logMessage,$entry.ToString()"

        $row | Out-File -Append $logFile

        continue

    }

    finally

    {

                    $web.dispose()

    }

}

SharePoint 2016 Release is Q2 of 2016

 

Last week, the Microsoft Office Team announced the general availability date of the SharePoint 2016 server to be in Q2 2016, and the beta version should be available later in Q4 2015. This is a change of a previous anticipated date of the RTM in Q4 2015, however the product team hints about the new features of the SharePoint 2016 servers and what the product will offer in the vNext.

Just to be clear here, that Q2 2016 is the calendar 2016 year and not Microsoft’s 2016 fiscal year that starts July 1st, 2015.

We can have many predictions or assumptions why this push of the release date to the spring of 2016, but all we know that the product team has given us some high level headlines of what’s coming up next year:

  1. Improved User Experiences to enhance:
    1. Mobile Experiences;
    2. Personalized Insights; and
    3. People-Centric File Storage and Collaboration.
  2. Cloud-Inspired Infrastructure that includes:
    1. Improved Performance and Reliability;
    2. Hybrid Cloud with Global Reach; and
    3. Support and Monitoring Tools.
  3. Compliance and Reporting to offer:
    1. New Data Protection and Migration Tools;
    2. Improved Reporting and Analytics; and
    3. Trusted Platform.

You can refer to the product team blog for a brief explanation of the new and enhanced experiences with SharePoint 2016.

Also, there is a Technology Adoption Program (TAP), available for organization to get enrolled in. The TAP program allows companies to have early access to the SharePoint product that gives partners number of advantages, such as providing input and feedback for future releases of SharePoint; developing a close relationship with the product teams; and receiving Pre-Release information about SharePoint.

We should know more about the SharePoint 2016 server at the Microsoft Ignite conference in Chicago from May 02-08, 2015.

More info to share in the upcoming weeks.