Information Barriers for Office 365: Enhancing Control over Communications

Employees are the source of corporate information. They constantly create documents and data records, generating gigabytes of corporate information every single day. And this corporate information needs to be protectedMany organizations trust Office 365 and SharePoint Online as a secure platform to run their corporate intranet. This puts some pressure on Office 365 to ensure that sensitive corporate information is not just securely stored, but also that it complies with stringent regulations and laws (like FINRA). The new Information Barriers policies for Office 365 (Microsoft Teams and soon SharePoint) help administrators achieve just that.

Information Protection in Office 365

Before we dive into the new Information Barriers feature in Office 365, let’s first spend a few moments on Information Protection and examine what it means for organizationsThe obvious choice to protect information within a corporate intranet is using access permissions. With access permissions, organizations can decide which user has access to which siteFor example, in an organization with a legal department, only a narrow group of users will need access to the sites of this department 

Besides access permissions, Office 365 and SharePoint Online provide additional options to protect sensitive corporate information such as Retention PoliciesData Loss PreventionAzure Information Protection, and Compliance Sensitivity LabelsThese features ensure that corporate information stays protected within the organization and control access to specific documents. 

When they are well configured, organizations are in an excellent position to keep data and documents safe. However, for some organizations, that might not be enough. 

Limitations to information security

Although security options provide a significant level of protection, there are some limitations you need to be aware ofThe most apparent threat to Information Protection is what I like to call the human factor. For instance, there is no technical way to protect corporate information if employees meet outside of the organization and, for example, verbally share sensitive information.  

And even when it is available, technology comes with some limitations too.  

For instance, a user who does not have access to specific site may obtain sensitive files from a user who does. And while a sharing invite does not provide access to the entire site, the user who receives an invite can open, download or potentially edit the document. This means that even though strict compliance policies regarding access permissions are in place, the SharePoint Sharing mechanism can be used to bypass those policies quite effortlesslyOf course, external sharing can be disabled in SharePoint Online, but since SharePoint was built around sharing information initially, internal sharing can’t be disabled. This is just one example of how corporate compliance policies can be sidestepped 

Another example is online chats and remote meetings initiated via Microsoft Teams. Even if a user does not have access to a particular site, this user may still be invited to join the team chat, thus getting information that shouldn’t be shared with anyone else outside of the defined team. 

Finally, access permissions can sometimes be accidentally given to the wrong person. This happens surprisingly often when a couple of people in the organization share the same name. Mistakes are a part of human nature, and sometimes, they are hard to avoid.  

Need for additional layers of security 

For many companies, these restrictions are not necessarily critical. If there are trust and appropriate employee education about the importance of the company’s compliance policies, companies can do a lot to protect their sensitive information. However, some organizations need to follow stringenCompliance and Security stipulations and laws. For those, being able to bypass policies by just sharing a document is a severe threat.  

Information Barriers Policies in Office 365

This is when the new Information Barriers come into play. With Information Barriers, organizations can encapsulate or separate specific corporate entities from the rest of the organization, even though all corporate entities share the same corporate intranet and technically, the same Office 365 tenant. 

Let’s see what this means. At the beginning of this blog post, I explained why even strict access permissions might not be enough for some organizations. Sharing, the feature that makes SharePoint great, can be used as a loophole to bypass policies.  

Information Barriers policies in SharePoint and OneDrive for Business go much furtherSpecifically, because they prevent users from sharing documents with others outside of a specific corporate entity. But that’s not all. Users of an encapsulated corporate entity won’t even be able to lookup users of a different department.  

This is because Information Barriers in SharePoint and OneDrive for Business acts as a separate (logical) tenant, even though the organization technically uses just a single tenant. The following screenshot shows an example of how this might look like in SharePoint: 

Limiting file sharing in SharePoint with Information Barriers Policies

 

Configuring Information Barriers Policies in Office 365

Now that we know how Information Barriers will work in SharePoint and OneDrive for Business, let’s see how these Information Barrier Policies can be configured.  

Information Barriers rely on user account attributes defined in Azure Active Directory. These attributes can include information like department, job title, location, and team name. Organizations can create segments based on these user account attributes. Those segments can be entire corporate entities, but also groups of users (like all users with the job title ‘Financial Advisor’). The concept of segments is very flexible as it is based on user account attributes. User account attributes are defined in Azure Active Directory, but segments will be defined in the Office 365 Security & Compliance Center. With segments defined, Information Barrier policies can be created based on two kinds of policies. Companies can create policies to Block access or to Allow access. There is a significant limitation, though: a user can only be part of one (1) segment (as of December 2019), and the segments must not overlap. 

Creating segments and Information Barrier policies require thoughtful and thorough planning as Information Barriers are rigorous policies, which have a massive impact on users and the entire organization. Microsoft provides an Excel-based workbook, which organizations can use to create and configure policies. The workbook also offers support for managing policies via PowerShell. You can download the workbook here  

The following two screenshots show how you can create segments and policies in the Office 365 Security and Compliance Center: 

Create segments in Office 365 Security and Compliance Center

Blocked File Collaboration based on Information Barriers settings

Information Barriers in Microsoft Teams 

In the previous section of this blog post, we looked at options to secure SharePoint and OneDrive for Business. Still, more applications in Office 365 allow communication and collaboration within users of different corporate entities – like Microsoft Teams. Since Microsoft Teams uses SharePoint Online technology under the hood, some protection already exists therebut it may not be enough. Information Barriers in Microsoft Teams offer added security. 

Microsoft Teams allows users to communicate with each otherBut in a strictly regulated environment, this kind of electronic communication needs to be secured by policies. Information Barriers in Microsoft Teams can be used to prevent team members from communicating with other teams and sharing documents. Also, Information Barriers can be used to encapsulate a team in Microsoft Teams entirely, restricting communication to that team only. All communicationincluding sharing with anyone outside of that team, can be blocked.  

But, there’s more you can do to secure and monitor information exchange in Microsoft Teams. Information Barrier policies can also be applied to the following: 

  • Adding members to a team 
  • Requesting a new chat 
  • Invited user to join a meeting 
  • During screen-sharing 
  • During VOIP calls 
  • Guest access in teams (includes guest users) 

The next screenshot shows how Information Barrier policies are activated in Microsoft Teams: 

Activating Information Barriers policies in Microsoft Teams

User Experience 

Information Barriers can be very restrictive, and organizations should be fully transparent regarding the implementation of Information Barriers in Office 365. The entire staff (including new hires) need to know about the existence of Information Barrier policies and how these policies will affect their daily business. Educational workshops, recorded training sessions and tailored communication are an absolute must. Regarding the user experience, there are many areas where Information Barriers affect the regular usage of SharePoint. Here are some examples: 

  • Users cannot see blocked users in the People tab and People Picker. 
  • Posts of blocked users won’t show up in the activity tab. 
  • Blocked users won’t show up on the org chart and the list of suggested contacts. 

Technically, Information Barriers will affect employees when they are collaborating and trying to get in touch with each otherBasically, mostif not all, of the collaboration and information sharing possibilities in SharePoint, OneDrive for Business and Microsoft Teams will be affected or restricted by Information BarriersA full list of what users will experience if another user is blocked by Information Barrier policies can be found here. The following screenshots show how this looks like in Microsoft Teams. The left screenshot shows the user experience when trying to add blocked user to a channel, the right screenshot shows the user experience if you try to send a message to a blocked user directly: 

Couldn't add member to team due to Information Barriers policy

Requirements and Roadmap 

To be able to use Information Barriers, organizations require an Office 365 E5 license. The following roles can create information Barrier policies: 

  • Global Administrator 
  • Compliance Administrator 
  • Information Barrier Compliance Management (new role) 

My recommendation is to split administrative tasks in Office 365 to multiple roles. Each role in Office 365 (including the new Global Reader role) is supposed to be used for a specific task only. This is done to provide an additional layer of security to sensitive administrative activities in Office 365. I know that many organizations utilize the Global Administrator role for all configuration tasks, but that is definitely not best-practice and it threatens security. Organizations should associate the Compliance Administrator role or the IB Compliance Management role to specific users and use only those roles to manage Information Barrier policies. 

Information Barriers are rolling out now, but they will only be available in Microsoft Teams for now (as of January 2020)Information Barriers for SharePoint and OneDrive for Business are still in development and are expected to roll out later in Q1/2020. If you are interested, there is a Preview Program you can subscribe to. 

Conclusion 

Information Barriers are a great addition to the existing Security and Compliance policies in Office 365. While they do contradict the original idea behind SharePoint (after all, it is called SharePoint), they come in response to a growing demand for advanced security policies. Once Information Barriers are fully supported in Office 365, they will be welcomed by organizations that need to follow strict Security and Compliance regulations. 

Organizations should not underestimate the implications of Information Barriers as they will drastically impact the daily tasks of the entire staff. Reason enough to start planning now – even though Information Barriers won’t be available in SharePoint and OneDrive for Business until later in Q1/2020. Planning means not just thinking about potential policies. Implementing Information Barriers comes with an entire process of activities – beginning with checking potential legal regulationsThe implementation process also includes roles and responsibilities, identifying segments, communication to the staff, reviewing existing business processes, defining policies, training, user adoption, change management, etc.  

If your organization needs to implement Information Barrier policies, I recommend starting now to ensure, you have enough time to carefully and thoughtfully plan the entire implementation as Information Barriers will change how your organization is working today 

At DevFacto we are already working on guidelines, best practices, and recommendations to support our customers regarding Information Barriers in Office 365. Want to know more about ensuring compliance with Microsoft tools? Reach out to us. 

References 

Information Barriers Preview thread 

Information Barriers in Microsoft Teams 

Information Barrier Overview 

Define Information Barriers Policies 

User Adoption Matters – How to succeed with your Office 365 rollout 

Getting Started with Power Apps Portals – Tutorial

Introduction 

In late 2019, Microsoft released the new Power Apps Portals, joining Canvas Apps and Model-Driven Apps in the Power Apps family.   

Power Apps Portal was a long-awaited addition to the suite. While Canvas and Model-driven apps have made building applications a lot easier than InfoPath, they couldn’t be used to build public apps for anonymous users. Power Apps Portals now fills this gap.   

What’s Power Platform? 

To understand the big picture, the Power Platform is a suite of no-code/low-code tools. The Platform contains a set of tools that include Power Apps, which in turn is made up of Power Apps Portals, Canvas Apps and Model-Driven Apps.  

Microsoft Power Platform Apps

The Power Platform tools are: 

  1. Power BI – for building business intelligence dashboards and reports 
  2. Power Apps – for building custom applications to capture information
    • Canvas Apps – for building apps starting from a blank canvas
    • Model-Driven Apps – for building apps generated from your data model and business process
    • Portals – for building websites for external and/or authenticated users
  3. Power Automate – for building workflows to process information
  4. Power Virtual Agents – for building chatbots

What are we learning today? 

 In this blog post we will learn the following: 

  1. When to use Power Apps Portals. 
  2. Power Apps Portals Architecture. 
  3. How to build your first Power Apps Portal.  

When to use Power Apps Portals 

There are two main uses for Power Apps Portals:  

  1. You want to build a publicfacing website that can be accessed by anonymous and/or authenticated users. 
  2. You want to create an integrated experience with other Microsoft technologies like: 
    • Embedding a Power BI dashboard and/or report into your website.
    • Triggering a workflow when a user submits a form on your website.
    • Leverage Azure Blob Storage and/or SharePoint to store documents.
    • Use Application Insights to track solution usage.

Power Apps Portals Architecture 

Power Apps Portals isn’t completely new.  It has been around for some yearsbut it was previously marketed as Dynamics 365 Portals and offered only as an add-on to Dynamics 365 model-driven applications. Portals use the Bootstrap 3.3.x framework to control the appearance of the solution, as well as the template language Liquid.   

Power Apps Portal is built on top of Common Data Service (CDS). The CDS database will host all your portal’s data like pages, page templates, forms, forms’ data etc.   

Important Note: You can only create one portal per Power Apps environment.  If you need to create a second portal, then you will need to create a second environment. 

 Before we can create a Portal, we will need two prerequisites: 

  1. A Power Apps environment
  2. A CDS database 

Power Apps Environment

Build your first portal in Power Apps Portals

In this tutorial I’ll combine my passion for personal wellness with my passion for the Power Platform. We will build a gym signup form on top of Power Apps Portal. When the form is submitted the data will be saved to our CDS database. Here’s what the end result will look like:

Signup Form in Power Apps Portal

To get there, we’ll follow the steps below: 

  1. Create a new Power Apps environment with a CDS database. 
  2. Create gym signup form as a CDS entity. 
  3. Create Power Apps Portal. 
  4. Embed the form in the Portal. 

Create a new Power Apps environment with a CDS database 

When you can login to https://make.powerapps.com, you will already have at least one Power Apps environment. If you haven’t created a Portal on that environment, then you can leverage your existing environment to build a new portal. However, if you need to build a new environment, then follow the following steps: 

  1. Go to https://make.powerapps.com 
  2. Click on the gear at the top right corner of the page 
  3. Then click on Admin center
    Setting up a new Power Apps environment
  4. Click on Environments in the left navigation bar
  5. Click on + New in the top navigation bar
    Add a new environment
  6. A New environment form will show up
    New Environment Dialog
  7. Fill-in the fields:
    • Name: pick a name for your environment
    • Type: Trial
    • Region: pick your region
    • Purpose: fill-in the purpose of your environment
    • Create a database for this environment?: Yes
  8. Click Next
  9. An Add database form will show up.
  10. Fill-in the fields:
    • Language: choose your language 
    • Currency: choose your currency 
    • Enable Dynamics 365 apps: No (this option should be greyed out, since we selected “Trial” for the environment type) 
    • Deploy sample apps and data No 
  11. Click Save
  12. Your environment should soon be ready

Create gym signup form as a CDS entity

Now that we have the Power Apps environment ready, the next step is to build our gym signup form. We’ll start by creating a new CDS entity named Gym Membership. Next, we will add our fields to the entity, and finally we will create the form. You can think of the entity as a database table.

Create Entity

  1. Go to https://make.powerapps.com
  2. On the left navigation bar, click on Data -> Entities
  3. In the top navigation bar, click + New entity
    Create a new entity in Power Apps
  4. Fill in the fields as follows:
    • Display name: Gym Membership
    • Primary Field
    • Display name: Full Name
  5. Click Create at the bottom

Add fields

  1. Add the rest of the fields. For each of the following fields,
    • Click + Add field in the top bar,
    • Then fill-in the fields as shown in the table below
    • Then click OK at the bottom
      Display NameData TypeComment
      Membership NumberAuto Number• Autonumber type: String prefixed number
      • Prefix: blank
      • Minimum number of digits: 4
      • Seed value: 1
      First NameText
      Last NameText
      GenderOption Set1. Click on the Option set drop down
      2. Click on + New option set
      3. Add the following items:
      a. Male
      b. Female
      c. Prefer not to say
      Birth DateDate Only
      Phone NumberPhone
      Email AddressEmail
      AddressText
  2. Click Save Entity at the bottom right corner

Create Form

  1. Click on Forms
    Create a Form in Power Apps Portal
  2. Click Add form -> Main form in the top bar
  3. In the left bar,
      • Change Display Name to Signup form
      • Change Description to: A form for gym membership signup.
  4. Drag the fields we added above from the left side bar to the canvas
  5. When you are done, the form should look as follows:
    Form settings in Power Apps Portals
  6. Click on the Membership Number field, then click Hide field from the right bar
  7. Click on the Owner field, then click Hide field from the right bar
  8. Click Save then Publish in the top right corner of the page

Create Power Apps Portal

  1. Go to https://make.powerapps.com
  2. Click on Portal from blank
    Create Power Apps Portal from blank
  3. Fill-in the new portal form:
    • Name: Hercules Gym
    • Address: HerculesGym
      Create a portal from blank
  4. Click Create. Note: It usually takes 5 to 10 minutes to create the portal
  5. Once the portal is created, it should look like below:
    Basic page template in Power Apps Portals

Embed the form in the Portal

  1. Click on the pages icon in the left bar
  2. Right-click Services, then click Add a child page
    Power Apps - add a child page
  3. Once the page is added, in the right bar:
    • Change Name to: “Signup”
    • Change Partial URL to: “signup”
      signup component on the webpage
  4. Click on the components icon in the left bar, then click on One column section
    Select One column section in Power Apps portal
  5. Click inside the column you just created
  6. Then click on the components icon in the left bar, then click on Form
    Section layouts
  7. In the right bar:
    • Set Name to “Signup form”
    • Entity to: “Gym Membership”
    • Form layout: “Signup form”
    • On Success: “We’re so excited to have you on-board!”
    • Uncheck the captcha fields

Note: Unchecking the captcha is fine for a demo form.  However, when building a production form keep the captcha to keep bots away from submitting your form.

Final form settings

Preview your portal

  1. Click on Browse website in the top right corner of the page. Note: If you get an “Unable to clear cache” message, click Retry
  2. Your form should show up as follows:
    Signup Form in Power Apps Portal
  3. Fill-in the fields and click Submit
  4. You should now get the success message

    Success Message

Confirm a record has been added to your CDS Entity

  1. Go to https://make.powerapps.com
  2. On the left navigation, click on Data -> Entities
  3. Click on Gym Membership
  4. Click on Data in top bar
  5. You should find your record
    Find your record
  6. Click on the record, then click Edit record
  7. You should now see all the info you entered in the form

Conclusion

Microsoft has made it so easy to spin up an external website that integrates with the different Microsoft technologies. Now that you know how to build basic sites in Portals, you’re ready to learn how to customize the look and feel of your site. So stay tuned, because in my next post I’ll show you how to  allow users to login using their LinkedIn, Facebook and Twitter accounts, limit access to certain pages and add a custom domain name.

Power Apps Portals is very powerful, and together we’ll learn how to make the most of it.

This article was originally published at Consultant Diary, Wisam’s personal blog.

Boost Productivity with IoT Smart Buttons and Power Automate

Enterprises today look to new ways to automate and extend their business processes. Many find great success with using Power Automate (formerly Microsoft Flow) or by leveraging a collection of apps and services in the Power Platform and Office 365.

IoT platforms are slowly becoming a part of this frontier. As companies look to scale their operations, the increasingly look to IoT for modern solutions.

Although IoT systems are still relatively new and often riddled with technological challenges such as connectivity, security and longevity, there are devices available on the market that can help enterprises carry-out a wide range of actions in just a few easy steps.

Smart buttons are one of those relatively low-cost and programmable IoT devices that can be set-up in 5 minutes! These buttons typically offer three events: single push, double push and hold. Each event can perform multiple actions such as running a Power Automate workflow.

I’ve been chasing these small IoT devices since 2017 and in that time I’ve explored a number of options made by various brands. There is a good selection of brands that make smart buttons including Flic, goButton, AWS IoT Button and others. Out of all of these, Flic certainly stands out by offering a Power Automate (Flow) integration. Their buttons are easy to use and I’m impressed by how quickly they can be hooked-up to a Flow action.

Set up smart buttons with Power Automate actions

Setting up a Flic button is self explanatory: just buy one, install Flic App on your mobile phone, create an account and follow the steps below to assign a Microsoft Flow trigger to your button.

Flic smart button

Select your button to setup actions

My Flic Power Automate Trigger

Select the desired event

Smart Button - add flow to your event

Add Flow to your event

As your final step, you will create a flow to respond to your preferred event. Flic’s trigger action, “When a Flic is Pressed”, links button with a desired action and triggers the workflow:

When a Flic is pressed action

What are the uses for smart buttons?

Easy enough? Let’s delve into some possible scenarios for using these little IoT devices in enterprises:

Replenish and re-order

Assign a serial number for a consumable product or a spare part to each button and place an order with a single click.

Send emergency alerts

Place buttons in various locations around the worksite and notify others of an emergency with a push of a button.

Book a meeting room

Place a button in a meeting room and automatically create a Microsoft Teams meeting with a push of a button.

Track employee happiness or customer satisfaction

Monitor sentiments around the office by placing two buttons in a single location to track happy/sad faces.

There are many more ways these IoT switches can bring functional intelligence to enterprises. Is your company considering adding smart buttons? I’d like to hear your thoughts on how these devices can bring value to your organization.

 

From Document Management to Knowledge Management: How AI is Changing the SharePoint Landscape

Towards the end of 2019, Microsoft announced it’s first new service since the launch of Microsoft Teams: Project Cortex. This new initiative has the potential of becoming a game-changer in how we contextualize corporate content. Most notably, Project Cortex focuses on creating Knowledge Networks that will help organizations enable true Knowledge Management across the enterprise.

Now, if all of that sounds like a whole lot of buzzwords, you’re not alone. In this article, I’ll explain how AI (Artificial Intelligence) will soon help us turn corporate information into knowledge and what you can do to prepare.

From Data Management to Information Management in SharePoint

Before we dive into the subject of AI in SharePoint, let’s take a moment to appreciate how far SharePoint adoption has evolved.

It wasn’t that long ago when we were all over Document Management. Back in those early SharePoint days, organizations saw the potential to use the Microsoft-powered technology as a considerably improved file share replacement. Full of anticipation, they created document libraries, added folder structures and uploaded their corporate documents from other platforms (for instance, Lotus Notes) to SharePoint. For some, this approach paid off because SharePoint Search was powerful enough to index documents and search based on keywords.

Others soon realized that the real power of SharePoint lies elsewhere. Once they went beyond simple keyword search and explored the metadata, classifications and information architecture, they often found that they were able to achieve much more than just managing documents. They started to manage information.

That’s how we arrived at Information Management: the next logical step after tackling Document Management. Where Document Management concentrates on the administration of documents in an enterprise, Information Management goes far beyond that. It covers not just documents, but news, articles, announcements, as well as items in a knowledge base and data records. You can look at Information Management as a kind of umbrella item that includes Document Management.

What information management looks like in practice

Today, when an organization publishes an article or an announcement, it usually does so by publishing a new modern page in SharePoint rather than a document. As the article or announcement is based on a modern page, it uses a specific Content Type (for example, Corporate News) and metadata to tag content.

Here is an example. The metadata used to tag a news article announcing the hire of a new HR Director could look like this:

  • Audience: All staff
  • Type of Content: News
  • Scope: Internal
  • Location: North America
  • Department: HR
  • Publisher: HR
  • Confidentiality: Public
  • Valid until: February 28th, 2020
  • Responsible: Mark Hammond (CEO)

Ideally, all of the content you publish in SharePoint contains tags and follows a document structure. Tagging ensures that your organization can work with information it stores. For example, the organization can create rules to prioritize this HR announcement to employees it is most relevant to, in this case, those located in North America and those working in the HR department. Tagging with metadata is the only way to ensure that the organization can create rules or business processes that use the information, like a tailored publication process regarding corporate news or applying information protection policies to corporate business reports.

Technically, rules can be based on queries and those queries rely on Content Types to determine that a document is (for example) a business report. Humans can recognize a business report by looking at the document, rules and queries can’t.

 

How AI turns Information Management into Knowledge Management

If you have been working with SharePoint for a long time, this is probably nothing new. What I just explained is the established best practice for Information Management. And that’s part of the problem! Organizations have been doing this for years, but the working style has changed. Many requirements of the modern Information Management systems just can’t be accomplished by just following the established best practice. That’s because Information Management is transitioning to Knowledge Management. What’s the difference between those two, you might ask? Information Management connects content to structures such as Content Types or metadata. On the other hand, Knowledge Management connects content to people.

The goal of Knowledge Management is to make knowledge sharable and actionable within the organization. From a technical standpoint, Information Management utilizes SharePoint Search, Content Types and metadata to help employees find information quickly.

Knowledge Management goes far beyond that by making information digestible and shareable, and not just searchable. It builds connections between information items to create a complex knowledge network. Interweaving content this way often is far too complex and time-consuming for humans, so Project Cortex will use AI to do it.

And here we’ve come a full circle! As the complex knowledge network takes shape, information, which is the foundation of knowledge, needs to be machine-recognizable. Even smart AI-powered bots rely on criteria to identify content, which is why Project Cortex’ AI model needs training.

Project Cortex - AI model training

SharePoint AI models require training

 

Adding context to SharePoint information with AI

Here is an example of how this will look like in real life. The following screenshot shows a draft of a Corporate News article about a new project called Planet Blue. Since our corporate team has already created a project site and started to work on that project, a bot equipped with Artificial Intelligence can link the News item with the corresponding Planet Blue project site, the members and the associated resources. Readers can hover over the word Planet Blue to automatically get additional insights on a topic card. But there is more. The AI bot not only creates a link between the keyword and the project site but also generates a topic page around the project including a description, a list of project members, resources etc. This topic page will update on ongoing basis.

Topic Card in Project Cortex SharePoint

Topic Cards add context to articles and documents published in SharePoint.

As AI-powered bots create a knowledge network (the previously mentioned interweaving of content), a topic page will also display related items and topics, helping humans understand the context, the scope of information and how the information relates to other information items. You can see an example of that below:

SharePoint Knowledge Network

Knowledge Network adds context to documents.

This is just one way to make knowledge more digestible for employees. Project Cortex combines knowledge from many different sources and automatically summarizes it in a way that’s easy to digest by humans. It links related pieces of information and puts it all in context. A single piece of information becomes a part of a complex knowledge network that clearly shows the full context and scope. That’s how companies will be able to turn information into employee knowledge.

Auto-populate document metadata

Project Cortex uses information from different sources to build complex knowledge networks, and one of those sources are documents. Project Cortex will be able to extract information from uploaded documents and fill-in metadata automatically (up to a certain extent). This is what you can see in the screenshots below.

Here’s what a document with no distinct metadata might look like when uploaded:

Adding metadata to documents recently uploaded to SharePoint

Recently uploaded document with no metadata

A few seconds later, the smart AI automatically adds metadata:

Project Cortex automatically adds metadata to files

AI autofills document metadata

While this does not mean that adding metadata (which is an unloved task of many Information Workers) will become obsolete once Project Cortex is available, it shows that even modern technology like Project Cortex still relies on existing technology akin to metadata tags and Content Types.

To achieve this, Project Cortex and the underlying AI technology requires training so that it can recognize new information (for example, which documents belong to a specific project). This is done by creating a model in the new Content Centers, which uses the already existing AI Builder functionality in PowerApps and Power Automate (formerly Microsoft Flow).

Project Cortex - Content Center

AI-powered Content Center

How to prepare for Project Cortex?

The interesting question is, what can organizations do to prepare for Project Cortex launch?

Project Cortex uses AI (Artificial Intelligence) to extract information from documents and to build a knowledge network. However, it can’t work miracles! Under the hood, Project Cortex still relies on metadata and presumably Content Types. Once Project Cortex is available, likely in Q1/2020, I assume that many organizations will import their existing documents to see how Project Cortex can help them with Knowledge Management. And that is exactly where organizations can start today. The better your current information is structured and tagged, the easier it will be to train the AI bots of Project Cortex.

But don’t get me wrong: I’m not suggesting to update your Content Types and metadata terms just to be prepared for the launch of Project Cortex. It is actually the other way around. If you keep your Content Types and metadata terms up to date and tag your documents accordingly, there will be an immediate benefit for your organization and your staff – and your start with Project Cortex will be much smoother.

At the time of writing this (January 2020), there is still too little information available to provide more detailed recommendations. The only thing we know for sure is that Power Automate, PowerApps and AI Builder will be used to do the heavy lifting under the hood. Based on the videos shared during and after Microsoft Ignite, I’m guessing that Project Cortex will take advantage of Managed Metadata as well. And because it is established best practice to use Content Types to ensure consistent usage of metadata, I assume Project Cortex will take advantage of Content Types as well. Hopefully, Microsoft will also use this opportunity to modernize the Term Store and the Content Type hub.

Best Practices regarding metadata and Content Types

Whenever I support customers who are migrating to SharePoint, I conduct at least two (2) workshops at the very beginning of the projects. The first one is around best practices for metadata and the second focuses on Content Types. My recommendation is this: work with your corporate entities and departments to identify the types of documents in use. When compiling your list, consider all document types such as manuals, invoices, reports, contracts, announcements or news. Create a corresponding Content Type for each identified type of document and take advantage of Content Type inheritance. Your corporate Content Types should be stored in the Content Type hub to ensure they can be used throughout the entire organization.

Once you’ve identified all document types, continue working on identifying corporate metadata terms and structure them within Term Sets and Term Groups. Next, assign Term Sets to Content Types and configure your document libraries to use Content Types.

There is one question that comes up each time I deliver my Content Type workshop. I am asked how many Term Sets should be used per Content Type and how many of those should be required. Unfortunately, there is no definite answer to this question. As a rule of thumb, I recommend not to use more than 10 Term Sets per Content Type.

There are also no definitive answers regarding the number of required metadata. I recommend to use  only as much metadata as necessary. Ultimately, your metadata needs depend on the types of documents and on how those documents are used. For example, a corporate handbook usually needs less required metadata compared to a contract or an invoice. Also, be mindful of user experience. The more required metadata users need to provide when uploading a document, the more annoying the activity.

Summary

Project Cortex will be an exciting addition to Office 365, and I admit that I can’t wait until it is available. You might know that I am an advocate for Document Management, and I have been promoting Document Management since I became a SharePoint consultant many years ago. Project Cortex will definitely support organizations in transitioning from Information Management to Knowledge Management, but this will come with a price tag. Information still needs to be structured, and AI will require proper and thorough training. The better the training, the better the results, but if the AI model is trained poorly, you can’t expect stunning results.

If you want prepare for the launch of Project Cortex, start by assessing how metadata and Content Types are used in your organization. If you encounter gaps or areas in need of improvement, update your Managed Metadata structure and/or your Content Type structure and configure document libraries to use Content Types!

The DevFacto team is closely monitoring the progress of Project Cortex, and we are already working on guidelines and best practices to support organizations once Project Cortex is available. If you have questions or want prepare your organization for the Project Cortex, launch, get in touch with us.

References

Project Cortex – Your knowledge network in Microsoft 365

Introducing Project Cortex

Mastering the Art of SharePoint Document Management implementation

Are folders in SharePoint Ancient Technology?

DevFacto Community Foundation: Software Innovation for Charities

We’re excited to announce the start of the DevFacto Community Foundation, a program that connects talented young developers with not-for-profit organizations to create software solutions that make a difference. Through the foundation, we want to help our local communities innovate the best way we know how – by building software that humans love to use.

The DevFacto Community Foundation works in two ways: it offers promising developers a chance to hone their skills while working on a real-world projects, and it helps not-for-profits fulfill their mission with modern tools and apps. The foundation has already completed its pilot project and released the first mobile app called Missions. The app was built in partnership with the Edmonton Skills Society and Lethbridge-based Southern Alberta Community Living Association (SACLA), two not-for-profits that help people with disabilities experience meaningful lives as valued citizens.

Here is a snapshot of what Missions looks like:

Missions App Demo

A bit of history

For the last twelve years, we have supported numerous charities in our communities. We fundraised, donated and contributed employee time to numerous causes which include United Way, Stollery Children’s hospital, and Movember Foundation.

Over the years, we noticed that charities have a hard time keeping up with technology. In particular, they struggle with building custom solutions, apps and portals that empower their missions and enable unique experiences for their sponsors and supporters. Charities cannot afford standard consulting rates, and even at a discount the amount of money spent on a software solution is hardly justifiable when faced with other priorities. As one of Canada’s premier consulting companies, we wanted to empower charities through technology. As it turns out, almost by happenstance, we might just have found the way to do it.

Putting skills to a good use

Young developers rarely get the opportunity to apply their hard skills in real-life projects. They know how to code, but they lack the experience that comes from designing and building enterprise-grade solutions. Applying project methodology or mastering communication and teamwork can’t be fully taught in a classroom setting. But without that know-how, it can be difficult for developers to progress their skills.

At the same time, there is a strong demand for modern tools and technology among not-for-profits that look to support local communities in new ways. They want to leverage software and mobile applications to reach those in need of help. While custom built solutions can bring these organizations closer to their communities, limited budgets often stand in the way of achieving this goal.

Aware of these challenges, we wanted to make a difference in a meaningful way, and we found just the way to do it.

High school students build an app

While judging a Skills Canada competition, Matt Waggoner, one of our star developers, met some highly capable highschoolers. Ben Lehmann and Shashank Bhat, Grade 11 and Grade 12 students at the time, who took the top spots at Skills Canada were certainly ready for the next challenge.

You may already know that here at DevFacto we’re seriously committed to empowering the next generation of software developers and we even run a co-op program in partnership with the University of Alberta and the University of Calgary. However, as high school students, Ben and Shashank, wouldn’t qualify for it.

So, when Matt got back to the office the following Monday, he knew there was something he could do. With the support from DevFacto, he set out to find the right project for the students to work on. He connected with SACLA and Skills Society, two not-for-profits who were looking to build a mobile app that helps people with disabilities fully explore their community.

Under Matt’s watchful eye, Ben and Shashank spent their summer at DevFacto developing Missions, an app that makes it fun for people with disabilities to discover new interests and build a sense of inclusion with their community. Users select missions from a list of specially pre-designed activities and then complete them with their families or allies. The app offers them a chance to explore exciting things to do in their neighbourhoods and to reflect on their experiences. Skills Society and SACLA will use Missions app to empower people with disabilities and help them achieve their individual goals.

See a complete demo of user functionality in Missions:

DevFacto Community Foundation: how does it work?

The DevFacto Community Foundation offers not-for-profits a chance to build custom applications at a fraction of the cost. Talented young developers do the coding while seasoned DevFacto consultants manage and guide their work. As DevFacto, we provide methodology, on-going mentoring, and project management throughout the engagement. We also closely guide the students to ensure that the final product meets the business needs of our not-for-profit partners.

All the proceeds from the project go exclusively towards student’s wages. DevFacto offers its services pro-bono. In the future, any money left from the projects delivered by the foundation will be put towards a scholarship fund for students who participated in the program. We trust that this will further support young developers and encourage them to pursue education in STEM fields.

And now, the good stuff! DevFacto Community Foundation will build more apps in 2020. If you represent a registered charity that needs a consumer-grade application, we would love to hear from you. Let’s find a way to empower your organization with technology – get in touch.

A Guide to Managing SharePoint Migrations

Clients often ask me how to get the most business value out of SharePoint migrations. This topic is near and dear to my heart and I speak about it often at various SharePoint events, most recently at the SPFest in Seattle and SharePoint Saturdays in Calgary, and Toronto. If you’re considering a SharePoint upgrade or a SharePoint migration, this guide is for you. I’ve put it together to help you fully realize the potential that’s hiding in your intranet. In it, you’ll learn how to plan for a migration to maximize the opportunities from modernizing your SharePoint environment.

Why is Migrating SharePoint so important?

SharePoint Online (part of the Office 365 family of applications) has been for around 8 years. It launched globally on June 28th, 2011, and almost a decade later it is certainly a success story for Microsoft. Over that time, many organizations bit the bullet and migrated their corporate intranets to SharePoint Online. Others had good reasons for staying on-premises and kept their existing SharePoint environment away from the cloud. But with ageing intranets and end of extended support in sight (SharePoint 2010 end of life is coming in October 2020), those organizations have been reconsidering their options: upgrading to SharePoint 2019 on-premises or migrating to SharePoint Online. No matter which route you take, one thing is certain – you’re about to embark on a SharePoint migration.

While this might sound overwhelming at first, but don’t worry. This is a chance to go beyond just a lift-and-shift and modernize the way your organization works. If your organization is still using older versions of SharePoint, it’s structure likely needs an overhaul. That’s because the way we worked 5-10 years ago is quite different than the way we work now. The new connected, adaptable workplace depends on modern environments like SharePoint Online that bring a modern digital workplace experience to the entire organization.

Build your SharePoint Migration Team

In any SharePoint migration someone needs to do the planning, and someone needs to do the work. Migrations are managed like common IT projects, and this is the ideal Migration Team should consist of:

  • Migration Lead: Responsible for leading the migration and the migration team, usually reports to the executive board.
  • Project Manager: Responsible for managing staffing, roles and the project plan.
  • Information Architect: Responsible for creating the IA in the target environment. Information Architect needs to be a member of each team dealing with intranet modernizations; works closely with the Solution Architect.
  • Solution Architect: Responsible for migrating business solutions; needs to be a member of each team dealing with intranet modernizations; works closely with the Information Architect.
  • Migration Expert: Responsible for performing the migration and/or supporting teams during the migration; provides expert knowledge regarding using the designated migration tool.
  • Site Owners: Owners of the most important sites stay informed on migration planning and migration execution; sometimes they migrate their sites on their own.
  • Communication Expert: Responsible for any kind of communication, news and announcements regarding the migration. This person should be an expert in corporate communication. They’ll tailor communication to the target audiences and drive user adoption.
  • Technical Trainer: If required, provides technical knowledge transfer to members of the migration team and/or support team.
  • Support Expert: Member of the corporate support team. Needs to understand the project, as her team will take over once the migration is finished.
  • Adoption & Change Management Expert: User adoption campaigns are a critical element in almost all migration projects. A change management expert will typically plan change management and adoption campaigns.

As I mentioned before, this is the idealized composition of a migration team. For your migration, you might not need all of those roles, but I highly recommend following this list. In my experience, underestimating the importance of a dedicated migration team jeopardizes the chance for migration success.

To sum it up: If you are planning a migration to a newer version of SharePoint or SharePoint Online, treat this move as a substantial internal project. Start by staffing your migration team. Its members should be experts in their respective areas and will work together to create the project plan and a detailed migration plan. Don’t underestimate the importance of internal communication. Proper and tailored communication is crucial. This part of the project has a significant impact on the user-acceptance and the success of the entire migration. Migrations managed just by the corporate IT team should be an absolute exception rather than the usual approach.

Refresh your Business Solutions

Many organizations use line-of-business solutions of different complexity. Examples range from a basic Request for Vacation process all the way to a sophisticated custom CRM system. Presumably, those business applications built around the time when the corporate intranet got launched. If that was between 5 to 10 years ago, it is likely that those business applications use a different user interface paradigm, an outmoded design and may lack some useful functions (i.e. enhanced security, artificial intelligence, media support, voice recognition, OCR, improved database support, enhanced integration with 3rd party systems) which were too complex to build at the time.

Today, modern environments like Windows Azure not only provide great options to host LOB applications, but also offer a tremendous amount of services that can be used to enhance most LOB applications. Most, if not all, Azure services offer an easy to use API which makes it relatively straightforward to integrate a specific Azure service with an existing LOB application. Even if no additional functions are needed, you can boost performance with Windows Azure’s tailored storage options. Also, most Azure services can be managed and configured through the Azure portal. This offers additional benefits since business logic, sensitive business data and administration can be separated to provide an extra layer of security. One of the modern security concepts propagates that data and content should be kept separate from administrative tasks.

Windows Azure can host your Line of Business applications for a seamless SharePoint Online experience

Modernize SharePoint Structure

If your corporate intranet is more than 5 years old, it likely doesn’t reflect your current organizational structure. Using a deeply nested subsite structure will result in a considerable amount of work to update the structure (e.g. sites need to be moved from one Site-Collection to another). Today, intranets are not using a subsite structure anymore. Microsoft’s recommendation favors multiple Site Collections with just a root site over Site Collections with a deeply nested subsite structure.

A modern site structure provides many benefits that support the contemporary working style of today’s workforce. Here are some examples: flexible content distribution (like corporate news) based on target audiences, clear separation of the physical (technical) architecture from the logical architecture (applied to the main navigation), SharePoint Hub sites, flexible creation of collaboration environments using multiple repositories (like a project site including a Microsoft Teams team or Office 365 group) and easier management of sites (even though there will be more sites and Site-Collections). If your teams still work with classic teams sites, you’d be amazed by the power, efficiency and user-experience of a modern collaboration environment that ties together SharePoint Online, Microsoft Teams, Office 365 Groups and Yammer.

Each time I perform an assessment of a corporate intranet prior to a migration, I thoroughly check the site structure. Whenever I find that the site structure is based on subsites or/and the structure hasn’t been updated for a long time, I strongly recommend adding a site structure modernization activity to the migration plan.

To sum it up: A modern workspace requires a modern site structure. The times we must be very careful with content database sizes are finally over. Today, a modern digital workspace needs to be flexible. A modernized structure based on modern site templates provides many benefits that organizations can use to reduce maintenance costs, improve efficiency, increase user acceptance and ensure that changes to the underlying structure can be applied without starting a substantial internal IT maintenance project.

SharePoint Online Modern Site Template

SharePoint Online Modern Site Template

Revisit Metadata and Content Types

Each organization works with documents of different kinds. Those that use SharePoint as their intranet platform recognize the power that comes from associating Managed Metadata and Content Types with types of corporate documents. However, most organizations don’t update their Managed Metadata structure or their Content Types very often.

Whenever I do my pre-migration assessments, I usually check the Term Store and the Content Type hub. Content Types can only show their full potential if Managed Metadata terms and Content Types are up to date. Structural changes in an organization, new teams, new products, or new projects often require updates to the existing Content Type structure (which includes metadata). In many organizations, a corporate governance committee is responsible for keeping them up to date. If you are planning a migration, check with your corporate Governance Committee and verify the status of Content Types.

Usually, dealing with updated Content Types (which can include an updated metadata structure) during a migration is much easier than re-assigning documents after the fact, especially if you utilize modern migration tools like Sharegate. Best of all, you’ll make a positive impact on user search experience, content distribution and line-of-business applications as they all heavily rely on metadata.

Why are Content Types so important?

You might be wondering why I still think proper metadata and an elaborate Content Type structure are important for organizations. After all, SharePoint Search appears to be smart enough to index content thoroughly and to provide relevant search results without applying metadata to documents. What’s more, the modern SharePoint Search results page doesn’t take advantage of custom search refiners as the classic search results page does.

That’s a fair statement and technically, this is correct. The SharePoint Search algorithm which indexes content is very smart and the OOTB search results that don’t use custom metadata are surprisingly good. However, a proper metadata structure isn’t used just to improve the SharePoint Search results. Content management, content distribution, workflows and line of business applications all rely on metadata. And if the organizations uses the so-called search-driven applications (like ‘My documents’ or ‘2019 Business Reports’), proper metadata tagging is required. While modern SharePoint Search results page does not support custom refiners yet, that is about to change soon!

To sum it up: A proper metadata structure and tailored Content Types are a must for any modern digital workplace. Existing AI isn’t yet good enough to do this reliably. Since metadata and Content Types are rarely updated in older SharePoint implementations, a migration is a chance to revisit their structure. This will help you ensure that your documents are associated with the right Content Type.

Take Workplace Collaboration to the Next Level

Looking back a few years ago, when collaboration was still in its infancy, organizations considered customized team sites based on a classic site template a great achievement. Don’t get me wrong – classic team sites had many benefits, but they won’t take collaboration to the next level. Younger generations, that are new to the workplace, expect usable and intuitive solutions. The top names in tech invest heavily in this area to attract the best talent. While the same isn’t always possible for all organizations, commitment to increasing workplace collaboration certainly is.

Modern environments like SharePoint Online allow to build custom collaboration environments tailored exactly to the needs of teams. When compared to classic team sites, they dramatically reduce distracting context switching and improve productivity.

MIcrosoft 365 Universal Toolkit for Teamwork

Microsoft 365: Universal Toolkit for Teamwork

To sum it up: If you’re using classic team sites or custom site templates to support collaboration in your organization, I highly recommend that you don’t simply migrate them to your new SharePoint environment, be it SharePoint on-premises or SharePoint Online. Instead, do a collaboration assessment and plan a collaboration environment that’s right for the way your organization works. Rather, migrate existing collaboration environments (i.e. classic team sites) “as is” but ensure that new ones are build based on your modernized approach.

Conclusion

There’s no doubt that a migration from an established corporate intranet to a new platform is a big move for any organization – and, as any big move, it comes with a price tag. Saving on maintenance costs holds a huge appeal for those who move their intranets to the cloud, but a migration can be so much more than that.

I highly encourage looking at various aspects of your intranet to ensure that the costs pay off quickly. Believe it or not, but most corporate intranets scheduled for migration have a high potential for modernizations. If I was to rank them, updated metadata and Content Types would be top of the list, closely followed by updates to the existing site structure, social features and targeting audiences with content distribution.

A pre-migration assessment will help you identify areas with the highest potential for positive business impact. Once you have the options clearly laid out, it will be much easier to demonstrate and value of a reimagined collaboration space to your leadership team.

Further reading:

 

 

The DevFacto Internship Experience

For several years now, we’ve been running a co-op program in partnership with the University of Alberta and University of Calgary. In that time, we’ve had the chance to mentor many bright and talented students from the departments of computing science and computer engineering who chose to kick-start their careers with an internship at DevFacto. Curious to know what an internship in software consulting and product development is like? Read on to learn what some of our recent and current co-op students have to say about their internship experience. You can also access our current co-op postings on PlacePro (UofA) and CareerLink (UofC).

Co-op students Darren Tran and Anas Mohamed attending DevFacto’s 2019 QualityConf

Darren Tran

Darren is a Computer Engineering, Software Option student at the University of Alberta and a bit of a fitness fanatic. He has just finished his eight-month long internship at DevFacto.

Why did you choose DevFacto for your co-op internship?

I wanted to get the most of my co-op experience and searched for opportunities at software consulting companies. The thing that stood out to me the most about DevFacto was the emphasis on employee happiness — and from what I have experienced here, it definitely holds true!

What kinds of projects have you worked on at DevFacto?

I’ve worked on a couple of different projects, the most interesting one so far is a game portal for a high-profile corporate client the name of which our marketing team won’t let me share. Essentially, the project is made up of four elements: a website, an admin site, a trivia game (which will be part of the website) and a back-end to support it all. The game drives visitors to the website, the central hub with information about the products our client is selling. Visitors will get to play games to earn rewards and win prizes.

One of the things I enjoyed the most about this internship is being able to work with brand new technologies that I have never been exposed to before. For example in my last project, I worked on the back-end with AWS and Serverless.

What skills did you get to develop and practice during your internship?

On the technical side of things, I have learned new programming languages, frameworks and libraries – React, Typescript, Serverless just to name a few. I have also learned to work with others in the agile/scrum process. In terms of soft skills, I feel like I learned how to better communicate my ideas with other project members. Having a daily stand up with the team opens communication and helps us keep track of the tasks between team members.

Can you share your favorite DevFacto experience so far?

Definitely Friday beer o’clock to wrap up the week! Aside from that, meeting and learning from all the amazing people around the office has been invaluable.

Anas Mohamed

Anas is a Computing Science student at University of Alberta and he’s currently completing an eight-month internship at DevFacto. When he’s not working with computers, he’s picking up new hobbies. His newest one is learning Japanese.

Why did you choose DevFacto for your co-op internship?

The biggest appeal of an internship is the experience. With that in mind, I chose DevFacto because I felt assured that there would be no lack of volume or variety in the experience that I would gain.

What has been the most interesting project that you have worked on so far?

Beacon, for sure. Beacon is an internal project focused on rebuilding a tool called TechRadar. The tool was used for discussing various tech DevFacto teams wanted to adopt, avoid, etc. In simple terms, it’s a website we use internally to discover, discuss and recommend tech. What made this project the most interesting one, is being able to witness and participate in the discovery process. We researched why the previous tool failed, what is the purpose of the new tool, and how it’s going to be used. The knowledge and skills I gained from this process, I feel, are hard to come by as a student.

What skills did you get to develop and practice during your internship?

I learned more about full stack web development, database management, and had my first encounters with agile project management as well as UI and UX. I also got to work with a wide variety of teams. Those experiences taught me how to handle working with remote team members, how to collaborate, and most importantly how to communicate (the answer is: often!). Too much communication, I found, is much better than too little.

Can you share your favorite DevFacto experience so far?

Best experience by far has been consistently uttering the same sentence, “Wow, I did not know/think of that”. Almost every day, I’m humbled by the experience and resourcefulness of the people that I work with.

University of Calgary co-op student Alexa Astorino

Alexa Astorino

Alexa is a software engineering student at the University of Calgary and currently completing her internship on DevFacto’s product development team. She discovered her passion for software after attending her first coding class at the university. Her interests go well beyond coding. She has impressive soccer skills and has been playing competitive soccer since she was 5 years old.

Why did you choose DevFacto for your co-op internship?

I chose DevFacto for my co-op internship because through the course of my job search, DevFacto was the only company I felt wanted to take me on not only because they valued my skills, but because they valued me as a person. I had the pleasure of interviewing with David (DevFacto’s CTO) and Zana (Talent Specialist), and I remember feeling very excited that they believed in what I could do, especially as a student, right off the bat. Something that really stood out to me was their desire to find someone that fit with DevFacto’s culture and team, so this was another deciding factor for me.

What kinds of projects have you worked on at DevFacto?

So far at DevFacto, my time has been spent on team Sparrow [Sparrow is an employee engagement platform and Devfacto’s flagship product]. I have been working on improving and adding brand new features to our Administration Portal. This includes contributions to the User Interface, Analytics, User Management and Post Management. We have a big release coming soon that we are all very excited about. Having my teammates by my side has really made working on Sparrow that much better.

What skills did you get to develop and practice during your internship?

In only 4 months here, I’ve developed so many new skills and improved upon existing ones as well. On the technical side, I have learned 4 completely new coding languages and become familiar with new database services. Additionally, I’ve been able to improve my time management and organization skills as I’ve gotten used to the concept of sprints. I’ve also improved my communication and teamwork skills significantly by constantly asking questions, which was very nerve racking in the beginning, and tackling daily problems or bugs with my coworkers.

Can you share your favorite DevFacto experience so far?

My favourite experience so far has been QualConf 2019 and the Summer Party. QualConf [DevFacto’s internal semiannual conference] allowed me to leave with new ideas regarding UX thanks to Figma 101 workshop, important knowledge of security from Web App Security Basics, and an understanding of personal branding. It was really fun and exciting not only to meet and get to know so many people across all of our regions, but also to learn from them during workshops and talks. I was able to bond with people I always hear about in the office and learn about their experiences at DevFacto. It was also a great chance to catch up with the Edmonton interns.

Co-op students Ben Ripka, Anas Mohamed and Jack Xia at a ski trip with fellow DevFactonians

Jack Xia

Jack is studying a Computing Science at the UofA and currently completing his internship at DevFacto. He’s a huge Pink Floyd fan.

Why did you choose DevFacto for your co-op internship?

The culture. DevFacto values people most.

What has been the most interesting project that you have worked on so far?

It was definitely a live auction portal. What makes it different from other projects is that it’s a real-time application, which means that users get real time and up-to-date notifications every time the state of an auction changes. My role involved developing new features for the site.

What skills did you get to develop and practice during your internship?

I gained considerable experience in full stack development – I developed for front-end and back-end and deployed apps to the server. In addition to the hard skills, I also learned how to effectively communicate with other developers and project managers and how to resolve problems.

What has been your best experience at DevFacto so far?

My favorite thing is that I can always get mentorship from experienced developers. Curtis has helped me all along this internship.

Co-op student Zach Drever at 2019 QualityConf

Benjamin Ripka

Ben is a Computer Engineering student at the UofA. Whatever free time he’s got, he spends it outdoors hiking, biking and snowboarding.

Why did you choose DevFacto for your co-op internship?

Consulting seemed to me as one of the best ways to get hands-on experience in the software development industry. I figured it would provide contextual examples of how software systems are created, used and maintained in businesses. Specifically, I decided on DevFacto because the people seemed fantastic and I thought the company culture would be a fit for me. I was right.

What has been the most interesting project that you have worked on so far?

My most significant project during this internship has been an end-to-end testing system I designed and developed for a webapp used by thousands of people every day. Our client has an in-house QA team that performs frequent manual regression testing to make sure all the features are up and running. This gets quite costly, and so they hired my team to automate the process.

I had a lot of autonomy on this project which lead to a massive increase in both my confidence and understanding of software systems. Through the process I also gained many new skills such as C#, .NET Core, NUnit, Selenium, React and Specflow.

What skills did you get to develop and practice during your internship?

First and foremost, I’ve built a set of skills required to work with cross-disciplinary teams. This includes skills like version control (git), sprint planning, demos, and general communication. Second, I’ve picked up more technical skills with C#, Javascript, .NET, React, etc. than I could have ever hoped for!

What has been your best experience at DevFacto so far?

My best experience at DevFacto would have to be the Beer O’Clocks after work on Fridays. It’s when all of DevFacto (or most) get together in the lounge for some drinks and snacks to hangout and play games after a full weeks’ work.  It is the perfect environment to get to know everyone and talk about everything from the weekend plans, to passions, to career goals, etc. I’ll never forget the feeling of such a lively bunch all jammed into the kitchen!

 

 

Getting Started with SharePoint Site Designs and Site Scripts

SharePoint Site Designs and Site Scripts are changing the way end-users interact with SharePoint. These relatively new SharePoint features let users create and deploy a site based on a customized template in just a few clicks. They reduce the time spent on site creation by introducing automation but also help standardize sites based on department or purpose use. If you’re curious about SharePoint Site Designs and Site Scripts and want to get started, read on!

But before we dive in let me take you back a couple of weeks.

SharePoint Sites Made Easy

It was a hot sunny afternoon and I was enjoying grilling burgers for a family gathering, when a thought came to mind: making SharePoint sites (my day job) isn’t all that different from making burgers. Weird, right?

Well, a burger typically contains two base ingredients: a patty and a bun. Past that, it’s all about customization and adding your personalized flavour: condiments, veggies, cheese and additional meat. This is in fact a lot like SharePoint. SharePoint’s base is made up of the Site and its Security Groups, while the individual flavours come from customizable elements like custom content types, custom columns, custom libraries, or custom lists.

As I continued to think about the similarities between making a burger and creating a SharePoint site, I recalled a capability that I used a lot back in SharePoint Server 2007 – SharePoint Server 2010. Those older SharePoint versions allowed you to save a site as a template. It was a relatively straightforward approach that helped jumpstart the site creation process and reduced the redundant configuration tasks of setting up a site. It was like picking up the perfect, customized straight from a production line.

In SharePoint 2007, when you navigated to Site Settings, and clicked the Save Site as a Template an exportable SharePoint Template (STP) file would be available. Whereas in SharePoint 2010, this approach created an exportable Windows SharePoint (WSP) file. Both methods were helpful in deploying packaged functionality to SharePoint. The difference between the two file formats was that Microsoft was moving towards a solution framework for SharePoint 2010 where were kept within a Site Collection gallery rather than in a Farm gallery. But there was a caveat to this templating approach. SharePoint Site Collection required the Publishing site feature to remain deactivated.

Fast forward to SharePoint Online with its Site Designs and Site Scripts. I like to think of them as an alternative to provisioning site artifacts to Modern SharePoint sites. Site Designsare a template of sorts. As of August 2019, you can create a maximum of a 100 Site Designs and 100 Site Scripts in an Office 365 tenant.

What are SharePoint Site Designs and Site Scripts?

A Site Design is created in PowerShell format. It can store multiple Site Scripts that contain sets of configuration actions. Actions or sub actions can involve operations such as creating lists, creating libraries, creating content types, creating columns, calling a flow, joining site to a hub site, and granting users to a security role. They can be selected and applied to a site by a Site Owner. When creating a Site Design, you’ll specify the Title, Description, Thumbnail Picture, and Web template (Team Site or Communication Site).

A Site Script is created in a JSON format. JSON stands for JavaScript Object Notation structures information in a way that’s easy to read at a glance. There are good examples of SharePoint Site Scripts on GitHub. You can review examples and combine them to create your own Site Script. You can also use  third party tools such as Site Designs Studio or SharePoint Site Designer to reduce the complex task to construct a JSON object.

Creating a Site Script

Creating a Site Design and Site Script can be a bit complex as it requires some upfront time to determine what configurable actions you want to perform. Actions are specified by the use of “verb” value. The JSON schema for Site Script is as follows:

{
    "$schema": "schema.json",
    "actions": [
        ...
        <one or more verb actions>
        ...
    ],
    "bindata": { },
    "version": 1
};

Below is a list of the actions that can be performed:

  1. Creating a new SharePoint list
  2. Add a new site column
  3. Add a new content type
  4. Add a navigation link (on the Quick Launch)
  5. Remove a navigation link (from the Quick Launch)
  6. Apply a theme to the site
  7. Set branding properties
  8. Set a site logo
  9. Join a hub site
  10. Install and add-in or solution
  11. Register an extension
  12. Activate a feature
  13. Trigger a Microsoft Flow
  14. Configure regional settings
  15. Add users to SharePoint Groups
  16. Manage guest access

If your requirements are complex, you can use Microsoft Flow to expand the capabilities of Site Designs and Site Scripts. You can learn more about the syntax on how to apply these actions to your Site Script, by reading the JSON schema reference.

I’ve created a sample below to demonstrate how to construct a Site Script. In my example, this Site Script will contain the following actions and for my use case scenario will be applicable for new sites created for the Information Services department.

  1. Create Custom Site Columns
    • Policy Owner (People Picker)
    • Policy Type (Choice)
    • Policy Expiry Date (DateTime)
  2. Create a Custom Site Content Type
  3. Add the Custom Site Columns to the Custom Site Content Type
  4. Create a Document Library titled as Deliverable Documents
  5. Create a Task List titled Tasks
  6. Create a Calendar List titled Calendar
  7. Add the Custom Site Content Type to the Shared Documents Library
  8. Create a Public View in the Shared Documents Library
  9. Add new links to the Quick Launch
  10. Join the site to a Department’s hub site
  11. Grant one user to the site as an Owner
  12. Grant another user to the site as a Member

Sample Site Script

{
    "$schema": "schema.json",
        "actions": [
            {
                "verb": "createSiteColumn",
                "fieldType": "User",
                "internalName": "PolicyOwner",
                "displayName": "Policy Owner", 
                "isRequired": false,
                "group": "DevFacto IS Custom Columns",
                "enforceUnique": false
            },
            {
                "verb": "createSiteColumnXml",
                "schemaXml": "<Field Type=\"Choice\" DisplayName=\"Policy Type\" Required=\"FALSE\" Format=\"Dropdown\" StaticName=\"PolicyType\" Name=\"PolicyType\"><Default></Default><CHOICES><CHOICE>Policy</CHOICE><CHOICE>Procedure</CHOICE></CHOICES></Field>"
            }, 
            {
                "verb": "createSiteColumn",
                "fieldType": "DateTime",
                "internalName": "PolicyExpiryDate",
                "displayName": "Policy Expiry Date",
                "isRequired": false,
                "group": "DevFacto IS Custom Columns"
                
            },
            {
                "verb": "createContentType",
                "name": "Policy",
                "description": "Policy Document",
                "parentName": "Document",
                "hidden": false,
                "subactions":
                [
                    {
                        "verb": "addSiteColumn",
                        "internalName": "PolicyOwner"
                    },
                    {
                        "verb": "addSiteColumn",
                        "internalName": "PolicyType"
                    },
                    {
                        "verb": "addSiteColumn",
                        "internalName": "PolicyExpiryDate"
                    }
                ]
            },
            {
                "verb": "createSPList",
                "listName": "Deliverable Documents",
                "templateType": 101,
                "subactions": [
                    {
                        "verb": "setDescription",
                        "description": "Project team can use this Deliverable Documents Library to store deliverable documents."
                    }
                ]
            },
            {
                "verb": "createSPList",
                "listName": "Tasks",
                "templateType": 107,
                "subactions": [
                    {
                        "verb": "setDescription",
                        "description": "Use the Tasks list to monitor and manage tasks within the Project."
                    }
                ]
            },
            {
                "verb": "createSPList",
                "listName": "Calendar",
                "templateType": 106,
                "subactions": [
                    {
                        "verb": "setDescription",
                        "description": "Use the Calendar list to track upcoming events and deadlines relevant to the Project."
                    }
                ]
            },
            {
                "verb": "createSPList",
                "listName": "Documents",
                "templateType": 101,
                "subactions": [
                    {
                        "verb": "addContentType",
                        "name": "Policy"
                    },
                    {
                        "verb": "addSPView",
                        "name": "By Policies",
                        "viewFields": 
                        [
                            "Name", 
                            "PolicyOwner",
                            "PolicyType",
                            "PolicyExpiryDate",
                            "Modified",
                            "Editor",
                            "Version"
                        ],
                        "query": "<OrderBy><FieldRef Name=\"Name\" Ascending=\"FALSE\" /></OrderBy><GroupBy Collapse =\"TRUE\"><FieldRef Name =\"PolicyType\"/></GroupBy><Where><Eq><FieldRef Name=\"ContentType\"/><Value Type=\"Computed\">Policy</Value></Eq></Where>",
                        "rowLimit": 100,
                        "isPaged": true,
                        "makeDefault": false
                    }
                ]
            },
            {
                "verb": "addNavLink",
                "url": "/Deliverable%20Documents",
                "displayName": "Deliverable Documents",
                "isWebRelative": true
            },
            {
                "verb": "addNavLink",
                "url": "/Lists/Tasks",
                "displayName": "Tasks",
                "isWebRelative": true
            },
            {
                "verb": "addNavLink",
                "url": "/Lists/Calendar",
                "displayName": "Calendar",
                "isWebRelative": true
            },
            {
                "verb": "joinHubSite",
                "hubSiteId": "18414d04-6d98-4295-a3e7-b92528130e5b",
                "name": "Information Services"
            },
            {
                "verb": "addPrincipalToSPGroup",
                "principal": "adam.tobias@devfacto.com",
                "group": "Owners"
            },    
            {
                "verb": "addPrincipalToSPGroup",
                "principal": "nameofsecuritygroup@devfacto.com",
                "group": "Owners"
            }, 
            {
                "verb": "addPrincipalToSPGroup",
                "principal": "nameofuser@devfacto.onmicrosoft.com",
                "group": "Members"
            }
        ],
            "bindata": { },
    "version": 1
}

Associate Site Script with Site Design

Next, we’ll need to then associate this to a Site Design. To do so, we can create Site Design and associate the Site Script by executing the PowerShell below:

 

$siteScriptFile = "\SiteScripts\IS-SiteScript.json"
# Source path where you stored your Site Scripts
$webTemplate = "64" 
#64 = Team Site, 68 = Communication Site, 1 = Groupless Team Site
$siteScriptTitle = "IS Project Site Script"
$siteDesignTitle = "IS Project Site Design"
$siteDesignDescription = "IS project site design with Content Types, Site Columns, additional libraries, lists, and creation of folders."
$previewImageUrl = "" # can be left blank or you can add a custom image.
$siteScript = (Get-Content $siteScriptFile -Raw | Add-SPOSiteScript -Title $siteScriptTitle) | Select -First 1 Id

Add-SPOSiteDesign -SiteScripts $siteScript.Id -Title $siteDesignTitle -WebTemplate $webTemplate -Description $siteDesignDescription 

 

If successful, the console will return the following result:

 

Console result for Associating Site Script with Site Design

 

Now that we have our Site Design and Site Script deployed in our Office 365 tenant, it can be programmatically executed by a user through PowerShell or REST. Users can create a new site by clicking Create Site and then selecting the right design.

 

Creating a new site in SharePoint based on Site Designs

 

Users can also apply the newly built site design to an existing site. To do so, the user would navigate to the site, click on the Settings icon on the top right corner, and click Site Designs.

 

Settings Menu in SharePoint Site design

 

A Site Design pane will appear on the right side of the screen showing you all the available site designs. Select a Site Design you want to apply to the existing site.

 

 

Then, click the Apply to Site button.

 

Available Site Dsigns - Progress Status

 

After clicking the Apply to site button, a progress bar will appear letting the user know what action was completed, is pending, or in the queue to perform.

 

IS Project Design Progress Bar

 

When all the actions are completed, the end user can click View updated site.

 

IS Project Site Desgin - Progress Bar Complete - SharePoint

 

The user will be directed to the updated site with configured actions applied from the Site Script that is associated to the chosen Site Design.

 

SharePoint Modern Site -Site Design

 

Another option mentioned earlier would be calling the Site Design programmatically through REST. Below is an example in Microsoft Flow using the Send an HTTP request to SharePoint action.

 

Microsoft Flow - Apply IS Site Design

 

This approach also makes it possible to restrict the users that can select and apply site designs to a site. Whether it’s a governance requirement or a security concern, whatever the reason may be, you can scope the Site Design to include defined users or security groups.

 

$adminSiteUrl = "https://tenant-admin.sharepoint.com"
$siteDesignId = " 8245449c-9d0f-4311-b2dc-8dcb2483cb01"
$principals = "Security Group Name", "user@mytenant.onmicrosoft.com"
$cred = Get-Credential
Connect-SPOService $adminSiteUrl -Credential $cred
Grant-SPOSiteDesignRights -Identity $siteDesignId -Principals $principals -Rights View
Get-SPOSiteDesignRights -Identity $siteDesignId

Why use SharePoint Site Designs and Site Scripts?

So, you’re probably asking yourself what are the advantages and disadvantages of Site Designs/Site Scripts? Let’s take a look below.

Benefits of using Site Designs and Site Scripts

  • They reduce time spent on effort intensive tasks by introducing automation
  • Once the Site Design and/or Site Script is published in your organization, the Site Champions or SMEs of the sites can apply it to their site. This means less time needed to configure a site.
  • The progress bar notifies the user about the stage the site provisioning is at. This is a better user experience than the past ‘Save site as a template’ approach.
  • Allows to define Site Designs/Site Scripts that have been configured by your IT personnel.
  • It can be re-applied to a site multiple times to ensure site is up to date to the latest Site Design/Site Script.
  • Allow to restrict a user or group that can see a Site Design/Site Script.
  • Allow the action to trigger Flow and expand from the limited actions.
  • Help standardize sites based on department use or purpose use.

Disadvantages

  • To create a Site Script, you’ll need to learn or understand JSON.
  • To create a Site Design, you’ll need to learn or understand PowerShell.
  • Depending on the IT policies in your organization, you might not be able to follow what was discussed in this blog post. You may need to consult your IT Administrator about setting up Site Scripts and Site Designs.
  • No out of the box user interface for a non-IT users to build Site Designs/Site Scripts.
  • Limited actions to handle complex provisioning needs.
  • Unable to create managed metadata columns that connect to the Term Store Management.

In conclusion, Site Designs/Site Scripts don’t replace SharePoint CSOM or PowerShell PnP, but rather bring another option to the table. You’ll need to determine if Site Designs and Site Scripts are right for your organization based on your requirements and how your organization addresses creating and applying changes to a site.

Personally, I think Site Designs and Site Scripts are quite powerful and love how the wizard-like interface makes it easy for users to apply to a new or existing site for easier adoption. The only thing that would make it better is a similar wizard-like experience for the creating Site Designs and Site Scripts. That way, users wouldn’t need to create JSON schema files for the Site Script and use PowerShell for the deploying of the Site Design.

I hope this post provided you with insights about the value of Site Designs and Site Scripts. If you would want to learn more about this topic, I’d love to chat over a perfect burger. Cheers!

Empathy: More Than Just Another UX Buzzword

One would think that as humans, we all come to this world with empathy as an innate quality. Then why is the term Empathy in both the software design and development worlds spreading like wildfire? Shouldn’t it be a given? Aren’t we, by nature, empathetic? Turns out, we are, but we’re also imperfect, forgetful and easily distracted. The 2018 Hawaii false missile alert and the Google Glass case are only examples of our lack of application of empathy.

As creatives, our job is to facilitate and produce solutions to continue to innovate and help real people. As user experience designers, practicing empathy is a great way to keep our own priorities in check and understand how our users really think and feel.

What’s Empathy then? (And what it is not)

A simple way to define Empathy is by understanding what it isn’t. Pity, sympathy and compassion are not Empathy. Here’s how designer Elizabeth Alli defines these levels of engagement:

Designer Frank Chimero has a point: people ignore design that ignores people. But how can we best relate to users’ pain points and design a useful solution?

Froukje Sleeswijk Visser’s empathy framework comes in handy when doing user research. Considering all of these stages is crucial:

1. Discovery

UX Design Empathy Framework - Enter the User's World and Make Contact

2. Immersion
UX Design - Immersion - Directly experience the lives, context, activities and environments of people.

3. Connection

Empathy Framework - Connection - Interpret the world through the lens of their values, history and culture.

4. Detachment

UX Empathy framework - Detachment - Come back to your designer role and begin to reflect on what you've learned and experienced in order to generate ideas

Practical toolkit

There are several methods to empathize with users such as ethnographic studies, interviews and bodystorming. One that stands out for its practicality is the Empathy Map, which allows teams to align on a shared understanding of users needs and wants. It’s a great tool to study users and guide design decisions.

So, what is the verdict on empathy? Jon Kolko, founder of the Austin Center for Design puts it best: “[While] absolute empathy is impossible, the pursuit of it, isn’t. The closer you get to your users, the more likely you’ll do something for them that they find usable, useful and desirable.” And that is undeniably the goal of great software design.

Related reading

UX design and empathy: are we doing it right?

4 Essential Steps to Designing with Empathy

 

Are folders in SharePoint Ancient Technology?

Over the last few decades, I’ve used many different types and brands of computers. I can still remember when I got my first one – it was a Sinclair ZX-81 – and my parents soon regretted the purchase because it monopolized our family TV set whenever I used it. While many things have changed in computers since then – from hardware, through operating systems, to storage – one thing has persevered: folders. Even now, decades later, folders are still commonly used to organize content. But, are they a relic from the past and is there still a place for them in the modern workplace? In this article, I will review the usage of folders in SharePoint, explore the reasons why they are discouraged and show you great alternatives to folders.

Regardless of the operating system and the implementation of folders, a folder is basically an empty container used in the file system. Users can easily add elements to folders such as sub-folders and files. In most cases, specific access permissions can be applied to folders. Since folders have existed for so long, we all are very familiar with them and use them intuitively on all of our devices and systems. Modern cloud-based environments – like SharePoint Online – also provide folders. They might be implemented differently under the hood, but the usage is almost the same.

If you are using SharePoint Online and Office 365, you may have heard recommendations to avoid using folders, and in my talks, I usually recommend avoiding folders as well. There are a lot of different options for when you want to phase out folders, and I’ve compiled them here to give you a one-stop guide to organizing SharePoint content.

Why do users continue using folders in SharePoint?

Before examining any options to reduce folders, let’s first look at SharePoint Online and the reasons why people continue to use folders. Here are some common use cases for SharePoint folders:

1. File share migration

Many organizations these days are migrating from corporate file shares to SharePoint Online. As a consultant, I am glad they do, because file shares don’t constitute a modern work environment. However, when corporate content is migrated from a file share to SharePoint Online, many users still think Folders. It’s what they are used to and it’s easy to imagine that switching to a different method of organizing content can be challenging as it requires a change of habit.

2. Lack of training and/or user-adoption

Some employees continue to use folders because they don’t know any better. Not all employees are tech-savvy or enjoy figuring things on their own. If nobody is telling them that there are different (and potentially better) methods for organizing content, why would users change their ways?

3. Established processes

Certain organizational departments (like Finance or Legal) tend to follow the same established processes for years, likely taking advantage of folders. For them, turning away from a dedicated folder structure requires altering their internal processes.

4. There are no better options for a specific use-case

Although I tell my clients to avoid folders whenever possible, I must admit that there are a few very specific use cases, where folders come in handy. Some reasons I have seen with customers include:

  • Metadata used to group content is by far too complex.
  • Temporarily grouping documents.
  • Assigning custom permissions to a specific set of documents.
  • Using external systems which rely on folders.

Why are experts discouraging the use of folders in SharePoint?

While there are many reasons why using folders in SharePoint Online isn’t a good idea, the following five are the most significant:

Technical issues

The URL length in SharePoint Online is limited to 400 characters, and any folder will add against this limit. Moving files from one folder to another will change the file’s URL will inadvertendly break links. Sometimes, documents can’t even be moved, because the new URL would exceed the limit.

Usability issues

To be honest, usability is my major concern. People can easily get lost in a nested folder structure. When a user navigates to the third or even the fourth level of folders, they quickly get lost. In addition, a nested folder structure is often the reason for an unintentional duplication of files because it’s easy for users to pick the wrong folder when uploading a file. What’s more, documents stored within a nested folder structure can cause confusion when listed in search results. The following example shows that only the folder navigation bar displayed next to the library’s name provides a glimpse of the current folder nesting level.

SharePoint nested folder usability

Inflexibility

A folder structure applied to a document library is what I like to call a hard-coded structure. Once users have created a nested folder structure within a document library, it is hard to change it. In most cases, this requires shifting documents from one folder to another or even moving a sub-folder. If you were ever tasked with changing an established folder structure in SharePoint, you know what I mean. Changing metadata tags is so much easier!

Security issues

Some users utilize folders in SharePoint to apply a customized set of permissions to specific files. Here is an example. A fictitious finance department stores all of its documents in a document library. However, access to some of the documents has to be limited to the department lead and the executives. So, the finance departament creates a folder with customized permissions to store those documents. If done in exceptional cases, this can be a viable option, but typically managing custom permissions in many folders quickly becomes a security nightmare that may lead to security breaches.

“Second offender”

One of the strengths of humans is to repeat and improve on what others did before. This also holds true for using folders. If a group of users starts to use folders and builds a folder structure, it is likely that other users will copy that approach without looking at better options. Often, this is called a bandwagon effect.

What are the alternatives to SharePoint folders?

Phasing out SharePoint folders requires considering internal structures and altering the way your organization works with content. While changes are often seen as disruptive to the daily business of employees, an organization that migrates to a modern work environment (like Office 365), should opt to leverage its benefits. Unfortunately, organizations won’t realize the gains from a modern digital workspace if the users continue operating as they did with the ancient technologies. That’s where user adoption campaigns come in to help employees adapt to change.

Use multiple document libraries/lists

Modern site templates in SharePoint usually provision just a single document library, but there is no reason why there couldn’t be multiple document libraries hosted within a site. In other words, don’t save all documents to a single document library. How? Let’s go back to the fictitious finance department from my previous example. Rather than adding a folder to the library, why not create a second document library meant exclusively for documents accessible by the department lead and the executives? This doesn’t take more time than creating a folder but provides a much clearer internal structure and reduces management efforts. The following image shows what this can look like on a modern Communication Site:Document Libraries in SharePoint

Use multiple sites

This suggestion is similar to the one above – this time, rather than adding a document library, we create a new site and link both sites via a hub-site. With this approach, you will be able to separate documents based on access policies, topics or target audiences. Instead of creating an internal structure within a site, think of broadening your structure by using multiple sites (i.e. Site Collections, not sub-sites). This approach would be my first choice if many additional document libraries are needed within a single site or if content has to be separated on a more global scale. Looking at our fictitious finance department example again, this approach would give us a site for common finance documents and an additional site for documents shared with the executives. As usual, managing access permissions can be done at the site level.

Use metadata

Folders are often used to group documents by topic, content or target audience. Rather than creating an internal folder structure, I recommend using Managed Metadata. Managed Metadata can be used to provide views within a document library allowing users to filter documents quickly. Certainly, this approach requires some planning of corporate metadata and content types, but in return, it offers many benefits such as improvements to search, LOB applications (e.g. workflows), and document management. The following image shows how this can look like:

Using metadata in SharePoint to organize content structure

Use document sets

Document sets are likely the most underrated feature in SharePoint. What are document sets? Think of them as a small containers for documents similar to the common file folder we use in offices to file printed sheets of paper. Although document sets are often used for the same purpose, they provide many additional benefits when compared to a folder.

Here is a quick list of benefits of document sets:

  • They let you define a list of allowed content types,
  • Metadata can be inherited from the document set to documents,
  • Welcome page can be used to provide an overview of the intended usage of the document set.

Those benefits allow organizations to ensure that corporate governance policies are followed. Folders do not provide these benefits at all. The good news is that document sets are available with modern sites and soon they will offer even better experience as they are currently being modernized. The following image shows the modern experience of a document set:

SharePoint Data Sets

Conclusion

Don’t get me wrong – I don’t want my clients to get rid of folders in document libraries and lists completely. Folders are not a bad thing per se and there are certain cases where it makes sense to stick with them. On the other hand, I encourage my clients to think of alternatives which offer better user experience and increased efficiency. I want my clients to put their existing routines, procedures and structure to the test and to actively work on alternatives that align with a modern digital workplace. Based on my experiences, usually there are better options out there than staying with ancient folders.

Changing established habits takes effort, and in the case of SharePoint folders, the effort is well worth it.

Going back to my initial question “Are folders in SharePoint Ancient Technology”? Yes, they are! They are an obstacle to using modern technology efficiently and quite honestly, an excuse to not think about alternatives. However, in the rare scenarios where the use cases have been vetted and folders were deemed to be the best option, there is nothing wrong with using them on a limited basis.