Using Data to Mitigate the Impact of COVID-19 on Today’s Businesses

As the concern over COVID-19 continues, companies globally are exploring actions they need to take now to maintain their business. This crisis has hammered organizations forcing layoffs, reducing services, and creating anxiety among leaders and employees alike.

The C-suite has a vital role in making sure the organization can function as concern mounts over the scale and impact of the pandemic. They are being forced to make tough decisions about how to operate amid the chaos. What should they focus on, where can they cut, and how to prepare for the new world as the crisis eventually lifts – these are the thoughts weighing heavy on leaders’ minds today. Pairing high levels of uncertainty with mass amounts of new information mean they have to forge ahead without the luxury of past experience to help navigate.

There is a reason for hope, however. Information, data insights, and technology have fundamentally changed our capacity to successfully manage a threat like this pandemic and adapt for the future. Taking advantage of your data effectively to guide business practice and improve the well-being of the organization and its employees is the single best option to mitigate the impact of COVID-19.

Transforming data into actionable information and analytics that drive business decisions will fast-track the return to normalcy. Volumes of raw operational data are just waiting to be turned into valuable business intelligence assets that will draw the path forward.

Business intelligence helps leaders frame their strategy in three ways:

Looking at today

Understanding real-time or near real-time data trends will help prescribe rather than predict scenarios.

Having complete visibility into cash flows and other operational metrics is a critical first step to understanding the current business situation and achieving working capital performance goals.

Gaining access to available government incentives and programs and recognizing expense-reduction opportunities are a couple of examples of responding to the immediate cash-flow management challenges. Focusing on current business needs is integral to a companies’ overall COVID-19 risk assessment and action planning in the near term.

Looking to the future

The most critical analysis is a forward-looking perspective. Foresight provides organizations with the business and operating capabilities they need to position themselves for a successful post-crisis recovery.

A detailed assessment of future working capital and cash-flow requirements along with key business and division unit metrics will help to understand at what point, if any, is the continuation of certain operations no longer viable and suspending business activities preferable. Alternatively, the metrics could indicate what variable measures should or can be taken to ensure healthy operation.

Run scenario planning to ensure financing remains viable and to understand how much cash is needed and for how long. This informs considerations around such things as determining what capital investments can be postponed and which are required for creating a competitive advantage in the rebound. Gaining insight into end-to-end supply chain visibility for future demand planning, inventory management, and production planning and scheduling can ensure you have a robust framework for managing supply chain risk. Depending on what the financial scenario planning reveals, you may need to consider alternative financing options to support the future success of the business.

Looking back

Does the past predict the future? Maybe not, but it is the best way to protect us from being blindsided by any future structural shaking scenarios like this pandemic. Monitoring and measuring how the business gets through this crisis remains the best way to forecast for the future. Now is an excellent time to measure and evaluate business efficiencies, or inefficiencies, stemming from the alternate models of work that have been adopted.

There are two ways businesses can come through this crisis. You can use data to tell the story about the past, the present, and the future, or you can use a personal perspective (from gut instinct to experience). The problem with using your personal view is that it is often filled with bias and assumption. Using data is the only objective way to measure risk and lessen the impact of COVID-19 on today’s businesses.

Organizations that gain insight into their business in new and innovative ways will outperform those that don’t by making data-driven decisions that mitigate risk, drive innovation, and take advantage of opportunities for efficiency.

New call-to-action

Automating Site Provisioning and Governance in Office 365

What is Site Provisioning? 

Site Provisioning is a process of creating SharePoint sites programmatically to meet business requirements.  

Site Provisioning deeply impacts both governance and site sprawl, and for that reason, it is one of the most important aspects of any Office 365 implementation. Nowadays, with more and more companies adopting Office 365, provisioning becomes increasingly relevant as it helps maintain structure in the digital workplace. This presents a whole new set of challenges for  IT and Office 365 administrators as they need to understand what are best methods for provisioning sites, teams and groups? How to ensure new sites, teams and groups fulfill governance criteria? And, finally how to automate the provisioning process? In this article we will address all of these questions.

Table of Contents

  1. How Site Provisioning affects governance 
  2. The benefits of automating site provisioning in Office 365 
  3. Automated provisioning: Real life example
  4. SharePoint site provisioning methods 
  5. How to automate the site, team or group provisioning process in Office 365 

How Site Provisioning affects governance 

Sites are the main structural element of SharePoint. There are different types of sites that organizations can use as a template to create their custom site structure. They may include classic sites, communication sites, team sites, publishing sites etc. In the previous versions of SharePoint on-premises, creating a new site was somewhat complicated. Nowadays, SharePoint Online lets us create a new site effortlessly through a simple 2-step process which, at least in theory, can be triggered by anyone in the organization. Users just need to navigate to the SharePoint site (/_layouts/15/sharepoint.aspxand click on + Create site” and that’s it.  

Create a site in SharePoint

However, this ease of use creates a problem. If users can create new sites on a whimeven a well-maintained internal site structure will soon turn into a messy, hard to manage bulk. 

Before we discuss the solutions, letexplain the difference between Site Provisioning processes in SharePoint on-prem and in Office 365 

In SharePoint on-premise, provisioning applies only to sites. However, in Office 365 this process applies to all structural elements of applications that make up the large modern work space: teams and channels in Microsoft Teams, channels in Microsoft Stream, and groups in Office 365. Considering the collaborative nature of all these tools, its easy to imagine that the sheer volume of Team, Channel and Group requests could quickly overwhelm the administrators.  

The benefits of automating provisioning in Office 365

There are numerous benefits to automating the provisioning process in Microsoft workplace collaboration apps, but the real game changer here is a truly enforceable governance. In a typical organization, governance policies live in a shared document. Employees refer to it from time to time, however the policies contained within are difficult to enforce across the organization. Keeping your governance documents up to date is rarely enough. By automating site provisioning processes with wizards or workflows, you’re helping employees do their jobs without worrying about non-compliance. 

Automated provisioning significantly reduces the chances of a human error. In fact, when automated, site or team provisioning on the front end is as simple as following an intuitive wizard that guides employees through the process, while ensuring business logic.  

Here’s how automated provisioning helps your organization: 

  • Sites, teams, channels are created by users in a self-serve system that follows business logic specific to your organization. 
  • Employees follow a step by step wizard that ensures new sites and teams adhere to corporate policies. 
  • Automation decreases the burden on your Office 365 administrators.    
  • The metadata that employees input during the process, helps manage the life cycle of the new site, team or channel. This means that deciding whether a site needs to be kept or retired becomes much easier.  
  • Automated site provisioning allows you to also automatically create reports, audits and site/channel directories.  
  • The process uses established APIs. 
  • Additional functionality (e.g. updating a site life cycle database) can be added easily. 

Automated provisioning: Real life example

Here we’ll show you a provisioning process we have been recommending to our clients. This particular process leverages PowerApps and Power Automate (formerly Microsoft Flow).  

  1. User requests a site and completes a form wizard filling it with required metadata. This information can include owner, purpose, description, related projects, cost centre, start date, end date, and template.  
  2. Application uses the metadata to create a team site based on the selected template. 
  3. Information from metadata helps manage the sites in the future. For example, information offered in the cost center is synced with internal accounting systems, end date and is used to ensure that there are no orphaned (or unused) sites. Team site owner becomes responsible for managing the team site’s life cycle. 

This approach lets you regain control over your Office 365 by ensuring that all sites, channels and groups follow the prescribed life cycle. By automating the process, you’re ensuring that new sites are added to a corporate site structure and, if needed, to a corporate site directory.  

This diagram explains a typical automated site SharePoint provisioning process we recommend:  

automated SharePoint site and Teams provisioning for Office 365

While our example focused on provisioning a SharePoint team sites, the same approach can be applied to provisioning Teams, Stream, and Office 365 Groups.  

SharePoint site provisioning methods 

Our automated provisioning process for Office 365 applications combines a set of provisioning methods that I’ll describe below. You can use each one of these stand-alone methods to provision sites in your organization. However, before you get started with any of them, consider you organization’s particular policies and restrictions to decide what’s the best fit for your organization.   

Provisioning a SharePoint Site using the User Interface 

There are a couple of ways to do this. The most obvious one is by enforcing Governance and applying settings to your tenant to limit the ways users can create a Team site (with or without an Office 365 Group). 

In this scenario, after clicking the SharePoint icon in the Office 365 App Launcher (often referred to as the Waffle Icon)the user opens SharePoint in a browser clicks on Create Site.
 App Launcher Office 365

Our next method is creating an Office 365 Group. User creates an Office 365 Group in Outlook by clicking on the New Group link. Each new Office 365 Group automatically creates a SharePoint site. 

Create a New group in Outlook

Good governance is critical if you’re using this method, as members of an Office 365 Group can soft delete a group (sometimes by accident). Without safeguards in place, the IT department won’t know this happened. To prevent this situation, you can set up a requirement to evaluate Office 365 Group deletions before they can be permanent. The deleted group is retained but not visible for 30 days from the deletion date. You can view and manage the deleted Office 365 groups that are available to restore by signing into the Azure AD Admin Center. 

Lastly, a SharePoint Admin can create a site in the new SharePoint Admin Center. 

 create a site in the SharePoint Admin Center

Provisioning using Microsoft Graph 

Using the Create Group API in Microsoft Graph will result in the creation of either an Office 365 Group. By default, an Office 365 Group is integrated with a bundle of Office 365 services. Currently, the Create Group API does not have the option to enable Microsoft Teams. If you require to include Microsoft Teams in your provisioning processthen you will need to execute an additional API in Microsoft Graph to enable Microsoft Teams on an Office 365 Group. When provisioning using the Microsoft Graph approach, you are creating a Team site via the creation of an Office 365 Group. 

Provisioning using REST API Operations 

If you’re looking for a more scalable Site Provisioning process, REST API Operations is one worth considering. With REST API Operations you create a SharePoint site based on a defined Site Template.  

SharePoint Admin Center - Site Template

Some of the most used site templates are Team sites and a Communication sites, but you can also apply other templates to provision a site using REST API Operations.  

Provisioning using PnP CSOM Core Component 

Another way to provision a site in SharePoint is by installing the Core library, which is available as a NuGet PackageThis method allows to develop the provisioning of a team site programmaticallyYou can get your core library NuGet packages for your SharePoint version below: 

Provisioning using PnPowerShell 

Like PnP CSOM Core Component, SharePoint developers can also provision sites using PnP PowerShell. With this approachyou create a PowerShell script to apply a provisioning template to a site. 

You can automate either of these approached with the help Power Automate (previously known as Flow), Logic AppsAzure Functionsand/or Web Jobs. Power Automate and Logic Apps are best for simple site provisioning operations, whereas Azure Functions and Web Jobs work well for more complex site provisioning operations. Here are some examples of complex site provisioning operations:  

  • Enabling web parts or custom actions (SPFx extensions) 
  • Creation of pages 
  • Creation of Content Types and Columns 

Automated Site Provisioning – The DevFacto Solution 

DevFacto has developed solutions that are constructed using all of the approaches listed above. One of our recent solutions developed for a client, calls APIs from Microsoft Graph and REST Operations automated via Microsoft Power Automate. Microsoft Graph is used to provision the Office 365 Group (which includes a site) and then the site is customized by calling additional REST Operations. 

Power Automate - Create O365 Group

This method allows to enable Microsoft Teams on the Team site. To accomplish that, we included it in the provisioning process by calling Microsoft Graph again. You can do that too by applying “/team” at the end of the URI to enable Teams to an Office 365 Group. Optionally, you can customize the Team by modifying the Body property (see next screenshot) with additional channels to be created, installation of apps, pinned tabs using delegated permissions, and defining Member/Guest/Fun/Messaging/Discovery settings for the new Microsoft Teams team. 

Power Automate -Enable Teams

Site Scripts and Site Designs are used to apply site artifacts and security principals to siteYou can determine the exact actions to be executed in the Site Scripts and Site Designs. Initiate Discovery workshops by analysing the business requirements of particular groups within your organization.   

ower Automate -Apply Site Designs

Alternatively, users can apply a site design to a site through the SharePoint UI. 

SharePoint Site Provisioning-Apply Site Design




Whether your organization is new to Office 365 or has been using it for quite some time, you will need a provisioning process to ensure that new sites, teams, channels and groups are created in an orderly fashion. There are many good ways to manage the provisioning process, including low-tech ones. Some smaller organizations can get away with using their established IT ticketing system and that’s completely fine. However, growing needs and complexity drive other organizations to automating the provisioning process as it significantly improves efficiency and significantly reduces management costs.  

Automated provisioning ensures that governance rules are followed, while greatly improving application security and user experience. It also provides you with a wealth of metadata that’s collected during the provisioning process making it easier to maintain and administrate sites, channels, teams and groups well into the future.  

Automating the provisioning processes requires an upfront development investment. However, you can significantly reduce the associated costs by leveraging the tools you already have. Power Platform (PowerApps and Power Automate) apps we used in our example are included in most Office 365 subscriptions. What’s more, these tools come with many preconfigured low-code and no-code elements that fit together like LEGO bricks to give you more flexibility and more custom experience. 

Looking to get started with automating your Office 365 provisioning process? Get in touch.   

This article was written by Oliver Wirkus and Adam Tobias


1) User Adoption Matters – How to Succeed with Your Office 365 Rollout 

2) Migration Pitfalls – Site-Provisioning 

3) Manage modern SharePoint sites using REST  

4) Choose the right integration and automation services in Azure 

5) Provisioning “modern” team sites programmatically 

6) Microsoft Graph  Create a team 


The Changing Shape of Digital Transformation

The moment of truth – will COVID-19 be the tipping point for digital transformation.


If “necessity is the mother of invention,” than COVID-19 has forced business leaders all around the world to rethink their digital transformation strategies.

At its core, coronavirus is disruption. What it really is, is a disruption frenzy, as nations try to slow the virus, this pandemic is impacting our political environment, our healthcare system, our economy, and the way we use technology. When disruption comes, businesses must adapt or die. And, not just adapt but adapt better and faster than competitors.

The truth is, even before COVID-19, the business world was changing at a pace that was hard to keep up. Those businesses that had already embraced a culture of change and realized their digital transformation goals might have been better prepared for this disruption than others. For others, it’s been a challenge. A recent survey by Gartner reports that only 12% of organizations are highly prepared for the impact of coronavirus. This does not mean you should hunker down and wait out COVID-19, it’s time to rev up your digital engine and position yourself for growth when the pandemic subsides.

Here are the areas you should be focusing on:

Cloud first

As COVID-19 pushes businesses to their limit, there has never been a better time to focus on cloud strategies. With the rapid response to the pandemic, millions of people have shifted remote work, pushing companies to adopt cloud-based solutions at an unprecedented rate. Rapid to deploy, cloud-based solutions are the reason organizations around the world remain productive during this time. If there was ever a good time to migrate to the cloud, this is it.

Boost process automation

Unexpected circumstances place an added burden on the workforce. Consider automating repetitive processes to free up teams and allow them to focus on more meaningful work. Extending automation throughout the enterprise can help mitigate disruption and offer stability in times of uncertainty.

Harness the power of data

Now more than ever, business leaders need to analyze risks and develop the best methods for mitigating them. They need to know the effectiveness of the current recovery processes. To do this, they need to use data effectively to guide business decisions and improve the well-being of the organization and its employees. Fostering a data-driven organization galvanizes the vision of faster, better-informed decisions to enable businesses to return to normalcy sooner.

Be champions of collaboration

No matter the industry, digital collaboration platforms are the foundation of work during the pandemic. The success of operations today highly relies on the ability to collaborate in real-time and from anywhere. Many businesses are recognizing the need to improve collaboration to ensure business continuity now and into the future.

Deliver valuable experiences

As the coronavirus crisis accelerates the transition to a digital future, the shift to digital customer experience also hits fast-forward. Empathic tools such as service design and design thinking seek to address customers’ acute needs and forge stronger ties with the market in the post-COVID-19 era. Reimagining customer experience to meet the changing needs should drive your next steps in your digital transformation journey.

The new era of business reinvention is upon us. For most industries, revenues will fall in 2020, that’s a given. But companies can emerge stronger, more innovative, and more purposeful. By creating a forward-thinking, customer-focused digital company, leadership teams can mitigate today’s threat and accelerate into an eventual recovery.


COVID-19 Business Intelligence

Working in the Cloud: Tips for Better Remote Work

I still remember the first time I heard the term, “cloud”. It seemed critical to the seminar I was attending, confused, I passed a note to my colleague “Cloud????” He stifled a laugh and passed the note back, it read “Internet.” Ohhhh. 

Fast-forward 10-15 years and I now work for DevFacto, where we make software that humans love to use. I am responsible for delivery of our consulting projects and Chris Buchanan is responsible for the technology on our consulting projects. I have come a long way, but I am still not “technical” and could notshould not, would not get into a debate with anyone about the pros and cons of different aspects of technology. 


As a people leader and an information worker, I can assure you that working in the cloud is the key to my productivity and success these days. 

Prior to working from home full-time, my days were filled with meetingsboth internal and client-facing, ad hoc discussions and independent work. Yet, I was able to transition to working from home seamlessly. I literally took my laptop home on a Friday and stared working again on Monday with very little fuss. Here’s how: 

Better Remote Meetings

Instead of meeting in-person, I moved all my meetings to Microsoft Teams. Many of my DevFacto colleagues use their laptop cameras so we can still see each other’s facial expressions while we video conference. I share my desktop for others to see, just like I would have shared it to a projector in a meeting room. Meeting attendees often share files, links and comments in the online “chat, which makes it easy to keep all the relevant information in a single place without having to switch back and forth between Teams and email. When needed, I record the meetings so that we can all refer back to the topics that were discussed.  

I keep my meeting notes in a Microsoft OneNote which automatically syncs between the cloud and my computer, so I can easily access it anytime.  

Finally, Teams makes it easy for others outside my organization to join a callAnd when I want to send a meeting invite, Microsoft Outlook adds a Teams link automatically, so I don’t need to worry about copying and pasting. 

Better Ad hoc Discussions

I also use Microsoft Teams to replace popping by someone’s office or stopping them in the hallway to ask a question. Teams has a chat feature that keeps an ongoing history of my discussions with someone. I can see their status and if it’s appropriate, send an instant message (IM). If I need to discuss something with a group, I just add new participants to the chat so that everyone is involved 

Occasionally my quick question requires more discussion and I can launch a voice or video call right from the chat window. Teams also has an app for my iPhone (and configurable notifications!), which has proven handy when I’m away from my desk and someone is trying to reach me. The app also syncs with many smart watches, if you want to get alerts even when your phone is out of reach. 

Better Independent Work

The independent work that I do usually involves the Office suite: Word, Excel, PowerPoint. Prior to working from home, I was already disciplined about storing my documents either in Microsoft SharePoint or Teams. The few things that are saved to my PC are synced to OneDrive. This means that I can always access all my documents, no matter what. If my work computer stops working or isn’t with me, I can still access the information from a different computer or my phone simply by logging into Microsoft. No VPN or other magic required.  

The administrative aspects of my work also involve a mix of cloud-based applicationsThat part of my work also remains unchanged – I still regularly catch up on corporate news via Sparrow, review timesheets and project progress in Mavenlink, approve time off requests in ADP Workforce Now, or submit personal expense reports in Xero. 

I recognize that I am fortunate to work for a technology company where cloud has been the way of way of life for quite some timeToday, these same cloud-based applications and workplace collaboration platforms are helping us weather the storm and continuously deliver software to clients just like before. We are working together almost as well as when we get to meet in person at the office (I say almost, because nothing beats the Friday Beer o’Clock with my coworkers) 

Looking to work better remotely

Tips for Engaging Remote Employees During the Coronavirus Quarantine

How to keep employee morale up when facing what will likely be the worst crisis in recent history? Remote work can wear down even the most experienced workers. It requires a different mindset than working in an office where employees interact with each other daily in person. Engaging remote employees is notoriously difficult. At the best of times, 20% of remote employees say they lose a sense of belonging and sometimes feel disconnected and lonely when they’re working from home. This number will most likely increase when more people join the ranks of remote employees due to the COVID-19 pandemic.  

As the pandemic grows, so does the pressure on internal communications.  

Your employees naturally have questions that need answering. They want to know how the coronavirus will affect their work and what’s the company’s plan for mitigating the risks brought by the pandemic. Finally, they want to know if they will get to keep their jobs.  

You inform your employees and answer their questions right away. You can’t leave their questions unanswered. And, although unintentional, this can mean your internal communications ends up sounding quite serious at timesHow do you avoid eroding your people’s morale and productivity in this difficult time? 

Since coffee with a coworker and water-cooler talks are off the table, internal communications should evolve too and include some casual fun posts to keep both engagement and spirits up.  

Make Internal Communications More Human 

Here are some ideas for less-formal internal communications to help your people feel connected and supported: 

Share Breakthroughs and Uplifting News about the Virus

Sharing positive news about what’s happening in the world and your community can help loosen up deep-seated fears. For example, our own CEO shared his story of getting tested (he tested negative, in case you were wondering). It humanized the experience, gave hope, and created an opportunity for those who might go through the same thing to reach out and connect with him. 

Sharing good news with organization during coronavirus pandemic

Shine the Spotlight on Your (Remote) Employees

This classic ‘get to you know you’ post, highlights something unique and unknown about an employee. Have an employee share a little-known fact about themselves; their identity is only revealed at the end of the post. This exercise proved to be a lot of fun on my team. I didn’t know that we had a former championship bowler and a former police officer. If your internal communications tool lets you include photo and video, you can leverage that to make the post even more fun.  

Good News from Within

Share a ‘good deed’ story that the organization or someone within the organization has done to help the community. Every company has inspiring stories that are waiting to be told perhaps someone volunteers their time to an important cause or the company raised money to support a charity. Including motivational or inspiring stories feeds the sense of being part of something good. 

Give a Shout Out

Recognize those who go the extra mile. This ask your co-workers: who’s been awesome this week?”. Employees can submit their responses via the comments section including the colleague’s name and a story about something that happened to them. It’s a form of kudos that’s less formal and more conversational.  

Having Some Fun: The Imaginary Commute

Share a fun post about a disrupted daily routine. Here’s one I shared with my team the other day about my encounter with fiery dragons and puppy dog stares.  

Engaging remote employees during covid-19 with fun posts

Break Thing up and Start a Story

This is a form of the kids’ game, Pass the Story. Post a short prompt and ask people to comment with the next piece in the tale. Who knows, your team could be writing the next NYT’s bestseller. You can think of other creative ways to engage your teams by helping them create fun content to share and interact with.  

Share Tips for Coping with the Crisis

The pandemic is affecting your employees differently. Those who are parents may be overwhelmed with keeping their kids engaged while schools are closed. Others, might be struggling with planning their life around remote work.  

Take this opportunity to highlight a resource or have someone share their schedule for one day so everyone can benefit from other’s creativity. You can embed video links to recommended content for kids, or help co-workers organize dinner plans by sharing recipes. At the bottom of the post, ask people to suggest the next day’s feature idea, while in the comments, they can discuss what’s been proposed.  

Set a Tempo 

Having a variety of posts is great, but you will also need to maintain a schedule of publishingWhen people see there’s a pulse of different types of content provided, without it being a merciless barrage of notifications, it builds a sense of pattern and structure. This helps underpin their day and week. 

Gather Instant Feedback 

Poll employees to get quick feedback. For example, you could ask them if they have all the resources they need to work from home.  

In Sparrow, you can use the compliance post feature to do just that. Compliance posts allow employees to check a box to reply to the post. Normally, this feature is for policy updates or to confirm understanding. But you can also use them to quickly find out who needs extra help. Here, is an example: 

Internal communications during coronavirus pandemic

You’ll get an automatic report with names of people who check the box making it easy to plan further follow-ups. The post can be set to expire after a day or two so that it’s not open-ended. 

Poll employees to increase engagement among remote employees

Surveys or polls, are another way to engage people. They can be used to measure the pulse of the organization and see how connected your employees are. They can also be used to understand how employees are doingHere are some questions you could ask your staff: 

  • How many departments have you connected with this week? 
  • How many people have you video called this week? 
  • What’s the best way to break up your day? A. Walk, B. Workout C. Coffee/tea break D. Howling at the moon (always provide one silly option). 

Lower the formality and increase the humanity 

Because much of our social interactions happen at the office, remote work comes with a higher risk of social isolation. Adding uplifting information and a touch of humor to your internal communications keeps your tribe engaged and connected through the crisis. 

Have you tried any of these methods? Are there other ones you recommend? Let me know in the comments.


Engage Remote Employees - Get Sparrow Free

Stay Connected During COVID-19 with Free Internal Communications Tool

Enhance internal communications during the Coronavirus pandemic, with Sparrow. Now available to all businesses for free.

In this time of uncertainty, businesses are facing unprecedented challenges in how they work remotely and stay connected during the ongoing COVID-19 outbreak.

As a growing business ourselves, we understand the importance of effectively communicating with the entire workforce in times of crisis and social distancing. Emails and intranets alone aren’t enough when your organization seeks dynamic updates, or when your employees are working remotely.

As such, we want to play our part in helping businesses stay connected, informed, and productive in the challenging months ahead. That’s why we are offering Sparrow’s mobile app for free through to June 30, 2020.

Sparrow is a rapidly deployable communications platform that’s capable of providing a layer of trust and assurance throughout the organization. Whether its issuing time-sensitive information or pushing out safety updates and ensuring they are read, Sparrow’s built to handle these critical communications.

We are seeing a lift in utilization in response to the pandemic and I’m happy to report that Sparrow is making a difference for many organizations. If you are not yet familiar with Sparrow, I encourage you to check it out.

Sparrow is an award-winning platform that elevates internal communications and engagement. Connects employees meaningfully when and where they engage the most. Ensures companies can reach every employee with the right information at the right time to drive engagement and productivity.

With employees around the world working from home to protect themselves from the pandemic, organizations need to extend the reach of their internal communications. Sparrow’s engaging mobile app connects with your entire team wherever they are. Its easy-to-use interface pushes communications to employees’ mobile devices.  Communications can be targeted to define the information most important to each user. Sparrow notifies users when relevant information becomes available with push notifications.

Sparrow’s mobile app is a solution our customers have valued for some time, but over the past two weeks, we decided to make it available at no cost to support businesses in this time of need.

Whether it’s a company-wide message, a quick safety update, or a post to gain feedback from the team, our goal is to enable your organization to share important information with remote workers securely and seamlessly.

Sparrow for Internal Communications: Free Through June 30

Sparrow’s mobile app will be offered at no cost to businesses until June 30, 2020. The solution provides the following capabilities:

  • Secure, mobile message delivery to groups inside and outside your organization
  • Mandatory and compliance post capabilities
  • Quick content creation, including image and video support
  • Audience targeting
  • Extensive measurement and analytics tools

What’s more, this service can be enabled for almost any organization in under 3 days.

Let’s Get Through This

These are challenging times for employees and businesses. It’s also a time to adapt to new ways of doing business and to discover new ways of thinking. The days ahead will be challenging for all of us, but hopefully, the Sparrow tool can help you and your team stay connected at a time when it matters most.

How to Export from Power BI to Excel – An Overview of Methods

Whenever we talk about data tools we always joke about the time-to-Excel. It stands for the amount of time a user will be in the tool before they choose to export to a more familiar software like Excel to customize the data exactly the way they want. This happens more often than many would like to admit, and it’s hardly something to be shy about. If you’re wondering how to export from Power BI to Excel we’ve got a handy chart for you to compare the available methods. Below, I explain how to get from different parts of the Power BI ecosystem back to Excel when preferred.

Power BI, as a tool, is primarily meant for data exploration and analysis within the tool – that is, Power BI Desktop, the Power BI Service (, or other parts of the Power BI ecosystem. Exporting for further analysis is not the primary goal of the platform.

Luckily for those who would much rather work with the familiar worksheet view, there are ways to manipulate data from Power BI in Excel. I’ve listed them below in order from the easiest and most complete to the most difficult and least complete.

Exporting from Power BI to Excel

MethodRequirementsOutput FormatRow LimitOther LimitationsPremium/
Connect to Data Mart/Warehouse Directly
(No Power BI)
View Access to Data Mart/WarehouseAny (as allowed by tool)NoneNoneNoNo
Export from Paginated Reports (Desktop)Paginated Report Builder, View Access to Data Source or Build Permission to Shared PBI DatasetCSV, Excel, Word, PowerPoint, PDF, XML, MHTMLNoneNoneNoNo
Export using DAX StudioView Access to Data Mart/WarehouseCSV, SQL ServerNoneLocal HardwareNoNo
Connect to Data Mart/Warehouse with Excel Power QueryView Access to Data Mart/WarehouseExcelExcel – 1,048,576None*NoNo
Analyze in Excel from Power BI ServiceView Access to Workspace or AppExcelExcel – 1,048,576NoneNoMaybe*
Export from Paginated Reports (Published to Service)View Access to Workspace or AppCSV, Excel, Word, PowerPoint, PDF, XML, MHTMLNoneUnable to change table structure from how report was builtYesMaybe*
Copy from Power BI Desktop Data View (Table View) to ExcelPower BI Desktop, View Access to Data Source or Build Permission to Share PBI DatasetExcelExcel – 1,048,576Local HardwareNoNo
Export from Power BI Service VisualView Access to Workspace or AppExcel or CSVExcel – 150k
CSV – 30k
Limited by Visual Summarization*NoMaybe*
Export from Power BI Desktop VisualPower BI Desktop, View Access to Data Source or Build Permission to Share PBI DatasetExcelExcel – 30kLimited by Visual SummarizationNoMaybe*

*Please note that the values above are for Import reports. DirectQuery reports have slightly different export limits when limited.

Further Reading:

Excel Power Query Limitations –

Paginated Report Limitations –

Paginated Report FAQs –

Helpful Links:

Power BI Desktop Download:

Power BI Paginated Report Download:

Excel Power Query Download:


Nintex Workflow – Get Users from Azure Active Directory Group


With more organizations moving to the cloud, a common question that we see from Nintex developers is: “I used to use Query LDAP to retrieve my users from Active Directory. Now that my users are in Azure, how do I retrieve them?”

Query LDAP is an out-of-the-box (OOB) action in Nintex Workflow for SharePoint on-premises. With minimal configuration, it allowed developers to grab users from an on-premises Active Directory (AD) group.

The problem a lot of developers face when they start using Nintex Workflow for Office 365 or Nintex Workflow Cloud (NWC), is that there’s no equivalent action to Query LDAP in a cloud environment (as of February 2020).

In this blog post we will learn how to leverage Microsoft Graph API to retrieve the members of an Azure AD group.

We will build our workflow using Nintex Workflow for Office 365. However, you can apply the same concepts you’ll learn today, if you’re building an NWC workflow.

Our Approach 

The end result of our workflow will be a collection of users’ principals, that you can use however you prefer. The collection will look as follows: 


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

Azure AD: 

  1. Get your Azure AD group’s ID. 
  2. Register a new Azure AD app. 
  3. Generate a new secret for the app. 
  4. Grant the app access to the Graph API. 

Nintex Workflow: 

  1. Use the Azure AD app ID and secret, and your tenant ID to get a bearer token. 
  2. Retrieve the access token from the bearer token. 
  3. Use the access token to call the Graph API and get the users from your Azure AD group. 
  4. The users will come back in a JSON object. 
  5. Parse the JSON object and generate a collection of user principals. 

Let’s get started

In this tutorial, we will retrieve the members of an Azure AD group in a JSON objectFrom the JSON object we will retrieve the userPrincipleName property of each memberOnce we have the members JSON object, it’s straightforward to grab any other user properties like display name, email, phone number etc. 

 Our group name is “sg-Engineering” and it has the following four members: 

Azure AD Group Members

Get your Azure AD group’s ID 

  1. Go to Azure AD: -> Azure Active Directory 
  2. In the left navigation bar, click Groups 
  3. Click on your group’s name 
  4. Save the Object Id to a text editor Azure Active Directory Group ID
  5. This is your group ID 

Register a new app in Azure Active Directory and grant permissions 

  1. Go to Azure AD: -> Azure Active Directory 
  2. Register a new app. In the left navigation bar, click App registrations -> New registration  Registering a new app in Azure Active Directory
    1. In the left navigation bar, click App registrations -> New registration
    2. Fill-in the fields as follows:
      1. Name: give a name to your app
      2. Supported account types: select the
        option that best suits your requirements. For this tutorial, we’ll select “Accounts
        in this organizational directory only”
      3. Redirect URI: Web – http://localhostRegister in app
      4. Click Register at the bottom
      5. Save the Application ID and Tenant ID to a text editorSave App ID and Tenant ID
  3. Generate client secret
    1. Click Certificates & secrets -> New client secretNew Client Secret Azure AD Nintex
    1. Fill-in the fields:
      1. Description: give a description to your client secret
      2. Expires: choose when you’d like the secret to expireAzure AD Secret
      3. Click Add at the bottom
      4. Save the Client Secret to a text editorGrant app permissions to Microsoft Graph
  1. Grant your app permissions to Microsoft Graph
    1. Click API permissions -> Add a permission -> Microsoft Graph -> Application permissions Grant app permissions to Microsoft Graph
  1. Select the following permissions:
    1. GroupMember -> GroupMember.Read.All
    2. Users -> User.Read.All
  2. Click Add permissions at the bottom
  3. You’ll need the Global Admin to click on Grant admin consent Grant admin consent
  1. You’ll need the Global Admin to click Yes for the confirmation pop-up
  2. The permission’s Status should change from “Not granted” to “Granted”
  3. Click Add a permission -> Azure Active Directory Graph (at the bottom)->Delegated permissions
  4. Select User -> User.Read
  5. Click Add permissions at the bottom
  6. You’ll need the Global Admin to click on Grant admin consent
  7. You’ll need the Global Admin to click Yes for the confirmation pop-up
  8. The permission’s Status should change from “Not granted” to “Granted”Permissions Granted

Build the workflow

  1. We’ll start by creating a new blank workflow
  1. Then we will set the variables to the values we saved from Azure AD:
    1. Add a Set Workflow Variable action and set the variables as follows:Variables
      1. varTxtAppIDApplication ID you saved earlier
      2. varTxtTenantID: Tenant ID you saved earlier
      3. varTxtAppSecret: Client Secret you saved earlier
      4. varTxtGroupId: Group ID you saved earlierSet Workflow Variables
  2. Now we will get the bearer token
    1. Add a Web Request action
    2. Set the properties as follows:
      1. URL:‍{Variable:varTxtTenantID}‍/oauth2/token
      2. Method: POST – content type: application/x-www-form-urlencoded
      3. Body: Content radio button – grant_type=client_credentials&client_id=‍{Variable:varTxtAppID}‍&client_secret=‍{Variable:varTxtAppSecret}&resource=
      4. Username: your username
      5. Password: your password
      6. Store response content in: varTxtBearerTokenJson
      7. Store http status code in: varIntgrResponseCodeGet Bearer Token

Once this action runs, we will have retrieved the bearer token in a JSON format and saved it to our variable varTxtBearerTokenJson.  This is how the bearer token will look:

Bearer Token

From the bearer token, we want to retrieve the access token.  The easiest way to do this, is to store the bearer token in a dictionary, then retrieve the value for the key “access_token”

  1. Add a Set Workflow Variable action and set it as follows:
    1. varDctnryBearerTokenJson: varTxtBearerTokenJsonSet Bearer Token Json
  1. Add a Get An Item From A Dictionary action and set it as follows:
    1. Dictionary: varDctnryBearerTokenJson
    2. Item name or path: access_token
    3. Output: varTxtAccessToken
  2. Log access token – to make sure we retrieved it successfully
    Note: You will not see the full access token in Workflow History due to the character limit. You can Email it to yourself to see the full token.Log Access Token
  1. Now, let’s call the Graph API and get the members
    1. Add a Web Request action
    2. Set the properties as follows:
      1. URL:‍{Variable:varTxtGroupId}‍/members
      2. Method: GET
        • Header name (key): Authorization
        • Header value: Bearer ‍{Variable:varTxtAccessToken}
      3. Username: your username
      4. Password: your password
      5. Store response content in: varTxtUsersJson
      6. Store http status code in: varIntgrResponseCodeGet Users Json

Once this action runs, we will have retrieved the group members in a JSON format and saved the object to our variable varTxtUsersJson.  This is how the users’ JSON will look:

Retrieved Users Json

  1. Now that we got the users, we need to extract the property userPrincipalName, we will retrieve it
    using Regex.

    1. Add a Regular Expression action
    2. Set the properties as follows:
      1. String: ‍{Variable:varTxtUsersJson}
      2. String operation: Extract
      3. Pattern: (?<=(userPrincipalName\”\:\”))[^”]+
      4. Output: varCollUserPrincipalNamesRegular Expression Json
  1. Let’s confirm that we retrieved the users successfully
    1. Add a Send an Email action
    2. Set the properties as follows:
      1. To: your Email address
      2. Subject: Users
      3. Body:Response Code: {Variable:varIntgrResponseCode}Users Json: {Variable:varTxtUsersJson}‍Users Collection:{Variable:varCollUserPrincipalNames}Send Email
  1. That’s it! Now run the workflow.
  2. You should receive an Email with the following:
    1. Response Code of 200
    2. Your AD group members in a JSON format
    3. A collection of your AD group members’ user principal names

Received Email


Microsoft Graph API allows you to access tremendous amount of data in Microsoft 365. In this tutorial we used the API to retrieve Azure AD group’s members. However, the API can be used for a lot more than that. The tricky part here was to get the access token. Now that you know how to get the token, check out the Graph API and see all the cool things you can do.


Microsoft Graph API – Get access token without a user.

Microsoft Graph API – List members end point.


A version of this article also appears on Wisam’s blog Consultant Diary.


Good Process First, Effective RPA Later.

More and more technology leaders are turning to Robotic Process Automation (RPA) to help accelerate time to value, reduce human error, and free employees from highly repetitive, manual tasks allowing them to focus on higher value work.   

RPA has great promise in transforming how organizations can approach and perform work. But to get the most out of your automation investment, look at conducting a process assessment prior to starting a project.  

Process reviews have numerous benefitsAbove alla review will ensure that your blueprint for RPA (aka your process documentation) reflects the wayour process is performed and help you optimize it for automation. During a review, it’s good to keep in mind that RPA works best for well defined, linear processesKnowing this ahead of time will help you avoid unexpected stand stills later. 

Surprises take the fun out of RPA 

To understand why a well-defined process is so critical to robotic process automation, we need to discuss how RPA works.   

RPA bots are designed to mimic or replicate user interactions with the desktop, but with added efficiency. Mouse clicks, key combinations (e.g. ctrl + S, F2 etc.), copy paste procedures are capturestep by step into what is called a bot script. Those are instructions that an RPA bot will execute. When applied to optimized processes, RPA bots can achieve multiples in output over a human worker doing the same task. Amazing, right? 

However, as mentioned above, bots work best with processes that are both well-defined and linear. RPA bots aren’t that good at dealing with surprises. This means that any deviation from what you captured in your RPA bot script will cause trouble. Most RPA bots default to a full stop when they encounter an unexpected condition. When you have a lot of undocumented variations (or surprises) in a process, and then try to apply an RPA bot to automate it, you can expect your RPA bot to stop… a lotThere goes all that promised efficiency! 

Let’s circle back.   

So, the question becomes, how to leverage the power of RPA when you don’t know the variability of your process? 

One option is to budget for enough bot development time so you can handle the variations you know about and continue to add complexity as you uncover new variations. However, this approach tends to be costly and unsustainable in the long run.   

A much better (and cost-effective!) alternative is to start with a process review to simplify or re-engineer the variability out of the process. Although this approach will likely take more time upfront, you get the benefit of an accurate, updated and improved process and a much better RPA outcome. 

Eager to get started with robotic process automation?

Get in Touch

Using Power BI for SharePoint Analytics

Here at DevFacto, we love SharePoint. But we also believe that its the value is fully realized only when users leverage it in their daily work.

The thing is that organizations don’t always know how their employees are using SharePoint. Luckily, there are various tools that can help you track SharePoint user adoption – in fact, Microsoft provides some valuable SharePoint Analytics right out of the box. However, if you’re looking for a more robust SharePoint reporting solution, you might want to consider integrating your SharePoint with Power BI. In this article we’ll show you how the built-in SharePoint Analytics stack up against Power BI, and which solution might be optimal for your organization.

To start, let’s take a look at the reporting capabilities that come with SharePoint out of the box.

Built-in SharePoint Reporting Capabilities

Depending on whether you are using SharePoint Online or On-Premise, your solution will have some form of built-in analytics:

Usage Reports

Usage reports are meant to show statistics about how visitors have interacted with SharePoint content. All usage reports are broken down per event usage. This means, for example, that you are able to see the number of views or number of recommendations displayed for an item. The two main reports included are the Most Popular Items and Popularity Trends. This offering is only available in SharePoint On-Premise.

Site Usage

Site usage visuals are available to all users on your SharePoint site. The site usage visual shows information such as unique viewers, total site visits, site traffic insights, as well as what’s being shared with external users. These reports don’t offer details, serving rather as a quick snippet of very high-level information. Here is an example of what a Site Usage report looks like:

SharePoint site usage report

Click to enlarge. SharePoint site usage report

Site Activity Web Part

The site activity web part can be added to a modern web page on your SharePoint site. It shows documents that are being edited, added or deleted within your SharePoint site.

Audit Log Reports

The audit log reports are meant to track who is opening SharePoint files and folders in any site, and what they are doing with those files. Not all information tracked is available in SharePoint On-Premise and SharePoint Online. These audit log reports are very detailed and display information in a line-by-line format.

Office 365 Admin Center Reports

The Office 365 admin center reports are only available for SharePoint online. In the O365 Admin Center you can view application usage on a user-by-user basis, however the information is limited and does not offer usage insights. This is a high-level report that is only available to administrators of Office 365.

For us at DevFacto, this is what an Office 365 admin center reports looks like:

SharePoint Admin Center Report

Click to enlarge. SharePoint Admin Center Report – Site Usage by User

Office 365 Adoption Content Pack

The Office 365 Adoption Content Pack is a detailed Power BI report created by Microsoft. It visually shows summary analytics about Office 365 adoption. However, it is only available for SharePoint Online with Office 365. While only Office 365 administrators have full control over the information, they are able to grant permissions to various people within the company. This is what an out of the box Microsoft 365 Power BI report looks like:

Microsoft 365 Usage Analytics - O365 Adoption Content Pack

Click to Enlarge. Microsoft 365 Usage Analytics – O365 Adoption Content Pack

Limitations with built-in SharePoint Analytics

Although the out of the box offerings for SharePoint Analytics provide a lot of information, they do come with some limitations:

1. The data isn’t quite what you need to make quick decisions

All these offerings are presented either as a generalized summary analytics or as un-summarized information. For example, the Site Usage visuals show quick summary charts that don’t give you in-depth detail, while the Audit Log Reports show line-by-line data but no summary analytics. Depending on your situation, you may want to view summary and drill-down into detail, or vice versa.

2. The most detailed data available isn’t the right detail

Understanding how the users interact with SharePoint content is the most important aspect of adoption monitoring. You may want to know which users are visiting which sites, which users are not using any sites, which sites are visited the most, which devices are being used to access your site, etc. However, none of the OOTB offerings show the detail that you might be searching for, which likely means you will have to come to conclusions on your own or summarize the data yourself.

3. No single spot for conclusive insights

Since the six built-in offerings all show different data, you may find yourself going to different spots track down information. This means sifting through large volumes of data, just to find relevant insights. In addition to that, some of the offerings are available only on SharePoint Online or only on SharePoint On-Premises, but not both.

4. The data comes in all forms

Some of the data comes in the form of excel spreadsheets, while other in the form of online charts or visualizations. For this reason, it becomes impossible to combine all sources of data together and to get a quick picture of the situation.

5. There is no ability to set permission levels

Companies often want to set up SharePoint reports based on permission levels. For example, your CIO may want to view all summary information to understand how the company is adopting SharePoint. On the other hand, your Operations Manager may want to view a slice of detailed information related to everyday operations. Unfortunately, this kind of functionality does not currently exist in SharePoint out of the box. While some reports (such as the audit reports) are only available to admins, they aren’t easily accessible to others in your organization.

Automating SharePoint Analytics with Power BI

So, is there a better way to report SharePoint usage? And, ideally, can you do it using the tools you already have? Being huge fans of simple, user-friendly Power BI dashboards we developed a solution that integrates these two applications giving you full visibility of your SharePoint metrics in one centralized location. By far, the best thing about it is the ability to monitor all your key SharePoint metrics at a glance and drill into detailed data when needed. The dashboard makes it easy to understand you organization’s SharePoint usage and to make quick, informed decisions based on your own data. What’s more, our reporting solution works for both SharePoint Online and SharePoint On-Premise which means that you can get the insights you need no matter which version you’re using. This solution combines Power BI and Azure Application Insights to automatically deliver reliable SharePoint usage information.

What kind of data can you track with by integrating SharePoint with Power BI? Here are some examples of insights you can get from this automated SharePoint analytics solutions:

  • The total number of users per day;
  • Users are using or not using your sites, folders and files;
  • Sites that are used the most and/or the least;
  • Browser types used to access SharePoint;
  • Types of devices that connect to your sites.

In addition to that, the solution can collect other usage data that are important to your company.

Here is what our DevFacto SharePoint usage dashboard looked like at a point in time:

SharePoint Site Usage Report in PowerBI

Click to enlarge. Reporting SharePoint Usage in Power BI

Benefits of Using Power BI for SharePoint Reporting

Here is how you can benefit from leveraging this Power BI and Azure App Insights based solution in reporting your oranization’s SharePoint usage.

1. Get the right depth out of your data

By integrating SharePoint with Power BI you can access both summary statistics and in-depth data about your SharePoint adoption. You can choose which view is the most important to you and dive deeper when you see appropriate.

2. Only see the data that is important to you

Unlike the OOTB offerings that show you all of the available data regardless of your needs, Power BI dashboard is easily tailored to your actual usage. This means that you can choose to see only the data that matters to you, and nothing more.

3. Automate SharePoint Reporting

Thanks to Azure App Insights, your data updates automatically, which means your reports are available on-demand anytime.

4. Set permission levels and change views

With different user types you can tailor access to data based on job needs giving the right data to those who need them.

5. Access all SharePoint usage data is in one place

By using Power BI for SharePoint analytics you can access all your reports in one central location eliminating redundancy.

6. Leverage the Microsoft Stack

All technologies involved in this solution are a part of the Microsoft stack. This means no additional enterprise agreements and little to no added ongoing costs.

Best of all? This solution is simple and inexpensive, so you can get started quickly.


Need help with gaining deeper business insights from your SharePoint analytics? Get in touch. We can help you integrate your SharePoint with Power BI for reliable and accessible SharePoint usage metrics.