Archive for Brent Harvey

Send Custom Emails Using Azure Functions as Scheduled Tasks in SharePoint Online

Recently, a client of ours was looking to have a daily email sent to each user that has an overdue task, or a task that is set to expire. The email had a specific format. Each task needed direct links and had to be grouped by the date that it was due. Since it was an on-premises Project Server and SharePoint 2013 farm, it was not too difficult to build and embed the solution into the farm. I took care of this by building a SharePoint timer job, which leveraged a SharePoint search to retrieve all tasks where the due date was before the next business day. Once deployed, and activated, this timer job was automatically scheduled to run every morning, and the SharePoint admins could trigger it manually.  Everything worked great.

Another client of ours was looking for a solution exactly like this, except they were strictly SharePoint Online / Project Online. They had no on-premises farm, there were no real servers to even speak of. One option would have been to create a PowerShell script or .NET executable to run the code, and have that process run as a Scheduled Task on some server. However, there were no servers. Even if they did, what was the point of being in the cloud, if you are still stuck with a foot (or process) on the ground?

So, I turned to Microsoft Azure, and that’s where Azure Functions came into play.

Azure Functions

Azure Functions are programs or code snippets that run in the cloud. They can run on schedules or can be triggered by different types of events (HTTP request, item added to Azure Blob Storage, Excel file saved to OneDrive, etc.). Think of this as a Windows Scheduled Task that can be triggered by modern events and activities.

The programs or code snippets can be created and edited within the Azure Portal, making it easy to get up and running with an Azure Function. The languages supported by Azure Functions are more than adequate: PowerShell, C#, JavaScript, F#, Python, PHP, Bash, and Batch.

Note that I could have also used Azure WebJobs to accomplish this, but I felt that Azure Functions had many positives. Azure Functions are easy for the client to maintain, it has automatic scaling, they only pay for how long the code executes, it supports WebHooks and can be easily triggered via an HTTP request.

Send Custom Emails from SharePoint Online

For this solution, I created the Azure Function in Visual Studio pre-compiled with the SharePoint Online client-side object model (CSOM) DLLs. The solution was straightforward, as it would use CSOM to query SharePoint Online’s search service for all overdue tasks and tasks due within the next business day. It would then do some logic to build the email content based on the assigned users, and then send out emails using SendGrid. SendGrid is built into Microsoft Azure, so configuring it was a breeze, and you get 25,000 free emails a month!

Once deployed, I configured the Azure Function to run on schedule (like before), and it can even be triggered by an HTTP request, so putting an HTTP request in a SharePoint site workflow or Microsoft Flow means that any site user would be able to trigger this function as needed.

Long gone are the days where there are integration servers laying around in the data center waiting to get more processes to help them consume more of their over-allocated resources. Most servers, virtual machines, really, are now dedicated to a specific application, and shouldn’t share their resources with one-off processes.

Azure Functions is a great server-less architecture solution to these problems. Whether you need to send emails, calculate metrics, or analyze big data, Azure Functions can be a solution for you. Learn more about how BlumShapiro can help your organization with issues like this.

About Brent:

Brent

Brent Harvey has over 10 years of software development experience with a specific focus on SharePoint, Project Server, and C #and web development. Brent is an Architect at BlumShapiro Consulting. Brent is a Microsoft Certified Solutions Expert in SharePoint 2013, Solutions Associate in Windows Server 2012, Specialist in Developing Azure Solutions and Professional Developer in SharePoint 2010.

How Non-Developers Can Use Microsoft Flow to Create Automated Workflows

In my previous article, Develop Workflows and Business Processes without Developers, I mentioned how there are numerous options for creating workflows without the need to write actual code. In my second article on workflows, I’m going to go a little deeper into one of the options I discussed: Microsoft Flow. As I mentioned, Flow is a drag and drop service solution used to create automated workflows within Office 365. These workflows can connect different applications and services; including enterprise apps (Office 365, SharePoint Online, Salesforce, CRM) and social apps (Twitter, DropBox, MailChimp), to name a few. The drag and drop interface allows for a relatively simple solution for creating an automated workflow.

Getting Started with Microsoft Flow

To get started with Flow, it’s as simple as going to the Microsoft Flow site and then starting to build new applications within the browser. Other options and software require separate applications for you to install to get going. Flow is completely browser-based, so no need to download anything else! Once you are logged into the site, you have the option of using any of the hundreds of templates already built, create a new process from a template or even start out with a blank canvas to create your new workflow. Some templates available with Flow can help with tasks such as:

  • Sending yourself a reminder in 10 minutes
  • Sending a “Working from home today” email to your manager
  • Blocking out your Office 365 calendar for an hour

Note: If you do not have an O365 plan that includes Flow, you can sign up for a free 90 day trial.

Automated Workflow Integrations and Templates

In addition to the many triggers and steps Flow has to offer, there are a lot of different services that integrate with Flow. There are too many to list, and it keeps growing, so follow the URL to see the latest services that integrate with Flow.

Some of the services and templates available can truly make your day to day office tasks easier. For instance, of the out-of-the-box templates, there is a flow to send a “working from home today” email to your manager. You can even take that template and tweak it so that it’s also a “don’t forget to submit your timesheet” button that you press once a week to your direct reports. Anything that is repeatable can easily be made into a Flow process.

Some more advanced templates integrate with other third party services. For instance, there is a template which automatically creates a Dynamics CRM entry from a SharePoint list item. Imagine having a SharePoint list which allows users from across the company to add in potential sales contacts. Not all users in your organization may have access to CRM, so when they create an entry using the SharePoint list, Microsoft Flow will automatically trigger and enter the sales contact entry into CRM without any action. You can easily configure this template to have an approval step if the process feels too automated!

Microsoft Flow on the Go

For remote workers, there is a mobile app for iOS and Android that allows you to trigger the workflows or get notifications by the press of a button. So you can open the Flow app, and trigger your email without the use of your computer. You even have the ability to send SMS (text messages) from the flow itself. So, if you are out-of-the-office, enable the Flow which texts you anytime your favorite client emails you, and you will be ahead of the game.

By using Microsoft Flow, your users can create workflows into back-end systems to help run business processes – all without having to call IT! Flow has provided users with the empowerment to work and create their own automated workflows. Still need help implementing automated workflows for your organization?  Looking for help with a workflow that is too advanced for Flow or need to integrate with systems not yet available with Flow? Contact us and see how BlumShapiro Consulting can help get you started on your way and assist.

About Brent:

Brent

Brent Harvey has over 10 years of software development experience with a specific focus on SharePoint, Project Server, and C #and web development. Brent is an Architect at BlumShapiro Consulting. Brent is a Microsoft Certified Solutions Expert in SharePoint 2013, Solutions Associate in Windows Server 2012, Specialist in Developing Azure Solutions and Professional Developer in SharePoint 2010.

Develop Workflows and Business Processes Without Developers

Companies are beginning to embrace technology at a higher level. However, there are still a number of businesses that have processes, a.k.a. workflows (an automated process) that rely on a user to manually enter information into an Excel spreadsheet. This spreadsheet can range from a simple list to one which has “complex” calculations that accounts for crazy exceptions (like adding 2% to the total if the month ends on a Tuesday while raining). These lists usually have one or two gatekeepers who know their calculations by heart, so if they leave the organization, the process becomes a headache for someone else or worse—grinds the business to a halt. Bottom line, it could be bad for a company.

Imagine taking your complex process and developing an application to take it over. This may seem like a steep challenge, but in today’s technological marketplace, there are services and apps that can help users create workflows and apps. Taking advantage of the technology to create these apps and workflows provides a huge benefit by getting the process knowledge and logic out of one person’s hands and into an automated process—making it accessible by anyone. This will also help to document the process and uncover any inefficiencies and deficiencies.

Microsoft, among other companies, are gearing application and workflow development toward power users and away from developers. These products are built with users in mind first, using a drag and drop interface. Most of the software tools are intuitive so little direction is needed to develop these workflows. These users already know the process intimately and don’t need to learn C# or Java or whatever language they have never heard of. However, having a technology specialist can still provide insight into workflows that might not have been thought of in the first place.

Workflow Automation Products

Below are a few Software as a Service (SaaS) workflow products that are geared towards power users.

Microsoft Flow

Flow is a drag and drop service solution used to create automated workflows in Office 365. These workflows can connect different applications and services; both enterprise (Office 365, SharePoint Online, Salesforce, CRM) and social (Twitter, DropBox, MailChimp). For example, you can easily create a Dynamics CRM entry from SharePoint list items. This happens to be a preconfigured template; requiring little effort to implement. Flow also has the ability for you to create your own custom workflows using their drag and drop interface.

PowerApps

PowerApps is a service that allows users to build Android, iOS and Windows apps without writing any code. This SaaS allows you to connect custom APIs, SharePoint, Excel, etc., and turn this data into an app. You can easily create an app to list and fill out information. Users outside of the office can use these apps on their phones and all of the data would be up-to-date in a SharePoint Online list, Excel, etc. Like Microsoft Flow, it is also hosted in Office 365 and has pre-built templates.

Power BI

Power BI is a service which can be used to build dashboards and data analytics reports using data from different sources within your organization. There are out of the box connectors to programs like Excel, Project Online, Adobe Analytics, Salesforce, CRM and others. Power BI can improve processes, even when data is in different locations that requires someone to pull together data from different places into one location. For example, say all project financials are located in an Excel spreadsheet over in Finance, yet the actual project costs are tracked by each individual team. To get all of this data into one report, someone would need to get the data from at least two different sources and merge them into one report. Power BI can automate that. Power BI is used to aggregate data from different sources into one location. In our example, instead of an executive calling on someone to get the numbers, compile them and produce a report; those numbers are displayed in Power BI, which is always up-to-date, and can even be drilled into or associated with key performance indicators (KPIs).

SharePoint Workflows

SharePoint workflows are also designed for a power user to create business processes (workflows). These can run on either SharePoint on premise or online. These workflows work well for approvals and processes that reside in SharePoint. External site integration is possible out of the box, but it does take some technical knowledge to do this. Some products fill that gap and have created a usable drag and drop interface with pre-built connectors. Two top vendors are Nintex and K2. Just like Microsoft Flow, users can build workflows by dragging actions onto a canvas.

Which Workflow Tool is the Best?

We recommend that organizations evaluate all software and services that are available to determine which product would best suit their unique business needs. They should look at features such as which product might integrate best with their existing software and what is the future software/technology strategy of the organization?

How can we help?

All organizations can benefit from streamlining processes or eliminating manual tasks. Workflows are easier to create than ever before, however, having the technical expertise of a consultant can be extremely beneficial. By being able to leverage our past experience and intimate knowledge of the products you need, we can determine the best technology for your project and implement the process along with guiding and training your users to do this themselves.

About Brent:

Brent

Brent Harvey has over 10 years of software development experience with a specific focus on SharePoint, Project Server, and C #and web development. Brent is an Architect at BlumShapiro Consulting. Brent is a Microsoft Certified Solutions Expert in SharePoint 2013, Solutions Associate in Windows Server 2012, Specialist in Developing Azure Solutions and Professional Developer in SharePoint 2010.

Workflow Automation CTA

On the Leading Edge of New Technology

Being on the leading edge of any technology can be exciting, but it’s often frustrating and even costly. There is an inherent risk associated with adopting technology that is new. Lack of community support or documentation if something goes wrong are just a couple of the issues that can arise. However, there are benefits to being an early adopter. For example, working hands-on with a new technology is the best way to understand how it works. As technology consultants, we view it as our job to understand what’s coming so we can advise our clients with a clear eye to the future.

Scenario

A client asked us about alternatives to their current Remote Desktop Services (RDS) implementation which was being hosted by a third-party vendor. There were a few issues with their current setup, namely cost and maintaining multiple logins, and they didn’t have any type of domain or user directory. After exploring a few different RDS deployment scenarios, they ultimately decided on using a preview version of Azure Active Directory Domain Services (AD DS) on Azure virtual machines.

They really liked the idea of using Azure AD DS because of the promised benefits; no servers (on-premises or in the cloud) to maintain, simplified user interface, etc. We shared our assessment of the risks and unknowns of using an untested technology, but the client whole heartedly accepted these risks because there were so many more upsides to using Azure AD DS for their specific setup. So, we set out to implement Remote Desktop Services using Azure Active Directory Domain Services…and we learned a couple of things along the way which we are happy to share with you.

Sometimes the Leading Edge is the Bleeding Edge

The first lesson learned was that with Azure AD DS, you cannot be added as a Domain Admin or Global Admin. They have their own security group called AAD DC Administrators that you have to create yourself. A good thing to note when dealing with Azure AD DS. Which lead us right to our second lesson learned.

When trying to add the Licensing Manager as a member of the AD group Terminal Server License Servers group, a permissions error popped up:

The computer account for license server [ServerName] cannot be added to the Terminal Server License Servers group in Active Directory Domain Services (AD DS) because of insufficient privileges.

Leading Edge

Thinking back to that security group, I thought, “I am not a Domain Admin, I cannot be a Domain Admin.” I felt a little helpless. Thankfully the computer didn’t need to be added to the group since all RDS servers were on the same domain. But still, I couldn’t help feeling like something might be a miss later.

As a Microsoft partner we have top tier access to Microsoft support, who recommended a few solutions to this issue…which resulted in the same permissions’ roadblock.

When the Microsoft support engineer mentioned this was the first he has heard of someone trying this, I thought, I must be a pioneer attempting this while AD DS was still in beta. But one thing was for sure, the Azure AD DS team liked the idea that someone was trying out an RDS implementation with it.

When you work with a beta version or when you install something without waiting for Service Pack 2 to be released you are blazing a new trail. When you do something new there is a thrill of being the first person to try something, and a long-standing honor in the tech world to be the first to figure something out.

In the end, after another hiccup or two, the rest of the Remote Desktop Services deployment went well, without any additional permission issues. And the result showed us that Remote Desktop Services does work well with Azure Active Directory Domain Services and was able to accomplish the client’s goals.

Once the beta for Azure Active Directory Domain Services is complete, I’m wondering if RDS will be on the list of supported technologies. Then I will feel like a true trailblazer cutting a path for others to follow.

Our experience with Microsoft tools gives us an inside track and an ability to work with these new technologies because we deeply understand the underlying platform. While being on the bleeding edge of technology can be risky, having experts to help guide you, navigate any issues and provide needed support can help mitigate some of these risks. And in the end, the benefits to your organization will outweigh any roadblocks encountered along the way.

About Brent:

Brent

Brent Harvey has over 10 years of software development experience with a specific focus on SharePoint, Project Server, and C #and web development. Brent is an Architect at BlumShapiro Consulting, working on projects across varied industries (banking, manufacturing, health care, etc.). Brent is a Microsoft Certified Solutions Expert in SharePoint 2013, Solutions Associate in Windows Server 2012, Specialist in Developing Azure Solutions, and Professional Developer in SharePoint 2010.

Technology CTA (3)