Connecting SharePoint to Xero with Azure Logic Apps

Like many businesses with Office 365, we use SharePoint Online quite a bit for business intelligence, process automation and document/data storage.

We also use other cloud applications like Xero for cloud accounting. Though we were looking for a way to connect our separate cloud tools together to cut down on double handling of data and automate our invoicing.

We first tried to get the solution working entirely via a SharePoint workflow in SharePoint Designer. It wasn’t long before we gave up on this approach because we didn’t know how to do the initial authentication of the web service calls to Xero from SharePoint Designer.

The Xero Developer Center provides some good documentation and guides on configuring apps to connect to Xero organisations, so we decided to build a web API on Microsoft Azure in conjunction with a SharePoint workflow to pull this off.

Here’s what the solution looked like:SharePoint Workflow Idea



  • All the OAuth authentication work is done by the API, and we can send all our calls with a client ID and Secret from SharePoint Designer with a web service call.
  • The API is designed to service multiple customers, so we can provide this as a service to our customers who want to connect SharePoint to Xero.


  • We weren’t too fussed on the idea of storing the Xero Client ID and secret in SharePoint Designer, where it can be viewed by any user who can open workflows.
  • Configuring the solution for multiple customers would mean setting up and supporting these SharePoint Designer workflows across multiple organisations.

Ideally we would have a way to coordinate the flow of data between SharePoint and our API from a secure, centralised location – and, although we’re messing about with the Office 365 APIs, we’re not the most experienced developers.

Enter Azure Logic Apps

The solution to our problem came with the announcement of Azure Logic Apps back in March. This gave us the perfect way to orchestrate the authentication and flow of information between the services.


Our Azure Logic app monitors a designated SharePoint list for a new item (invoice), and once triggered, will initiate a HTTP call against our API with the relevant invoice information. We also added in a notification email step using the built-in Office 365 API app.



Here’s how our invoicing process works now:

  1. Remote support technicians complete a job.
  2. If the customer is not on a support contract, a SharePoint workflow creates a new item in a separate SharePoint list for processing with all the information required for invoicing.
  3. The Azure Logic App checks the list every minute, and when it finds a new item, pulls the information and populates a HTTP POST call in the format required by Xero. This creates a draft invoice in Xero, where it can be approved later.
  4. After an invoice is created successfully, a notification email is sent to let us know there’s an invoice awaiting approval.




  • Since it’s running in Azure, we can set this solution up for other customers, and manage everything from the Azure Portal.
  • The Xero Client ID and Secret is stored in a central, secure location.
  • Azure Logic Apps provide detailed reporting on the success/failure of previous runs. This was extremely helpful during the initial setup.
  • No double handling of data between clouds and no missed invoices!

Azure Logic App History

Invoices processed by the Azure Logic App:

Invoices Processed by the Azure Logic App

Here’s a draft invoice created in Xero by the Logic App and our custom API. We’ve also set it up to work with our custom tracking fields, so that the technician who completed the job in SharePoint is recognised in Xero.

Invoice Created in Xero using SharePoint List Data

Invoice created in Xero using SharePoint list data


More reasons to connect SharePoint to Xero with Azure Logic Apps

The invoice creation workflow is the first that we’ve setup using our custom API, though there are other possible use cases for this service. For example:

  • Pull overdue invoices from Xero, assign task to SharePoint users to follow up
  • Get list of contacts from Xero in a SharePoint List
  • Add New contacts to Xero from SharePoint List
  • Use Excel services to create business intelligence dashboards, extending the functionality of Xero reporting

Have some other ideas? Get in touch!



What is Azure RemoteApp and why should I care?

If a custom application is holding you back from completely transitioning to the cloud, then RemoteApp might be the answer.

What can RemoteApp do for me?

RemoteApp can serve individual applications from the cloud via the Remote Desktop Protocol. This means that users can access custom and legacy line of business applications from anywhere and almost any device – without the need for a server.

Microsoft Azure RemoteApp is currently in preview and it looks like a great alternative to hosted desktop for many organisations.

How is this different from standard Remote Desktop?

Technically, it’s not so different. Azure RemoteApp runs on the remote desktop protocol and it’s built into the Remote Desktop apps on iOS and Android devices. The difference between RemoteApp and Remote Desktop is that you are only serving a particular application, or set of applications, to the end user. You don’t have to worry about maintaining a server, configuring complex permissions or setting up remote access. Everything can be managed simply via the Azure Portal.


How do you give access to users?

The coolest thing about RemoteApp is how easy it is for users to access, and administrators to administer. Azure RemoteApp lets you assign programs to users via their personal Microsoft Accounts (their own email, Hotmail, Live, etc), or their Azure Active Directory credentials.

Side note: If you’re using Office 365, then you already have Azure Active Directory setup. When you sign up for Azure using an Office 365 admin account, you’ll be able to administer your Office 365/Azure Active Directory from the Azure portal. This is really handy if you want users to be able to access their Azure RemoteApp programs using the same credentials that they use for Office 365.


What sort of applications can it serve?

Azure RemoteApp is perfect for those custom line of business applications that would usually require their own server.

The current preview gives us a standard set of Microsoft Office Applications – but what if you want to provide your own custom industry-specific application like MYOB, Handisoft, Console, Realworks, Medical Director or Best Practice?

RemoteApp requires that we upload our own custom image with the programs preinstalled and configured. Once it’s uploaded, RemoteApp will search the image for applications that you can publish.

It’s as easy as ticking a few boxes and typing in the email addresses of the users that need access.



How do I access my RemoteApp Programs?

RemoteApp programs can be accessed from anywhere with an internet connection on PC, Mac or almost any device.

You can download the RemoteApp Client for PC and Mac here. iOS and Android users can use the Remote Desktop App to access their RemoteApp applications by signing in.

MYOB running via RemoteApp on iPhone, iPad and Surface Pro 3

MYOB running via RemoteApp on iPhone, iPad and Surface Pro 3

How much does it cost?

Azure RemoteApp is currently in preview, which means it’s free to try right now. I’ll update this post when pricing information becomes available.

RemoteApp Pricing

What if I need help setting it up?

Contact us! Type your question into the Enquiry form below and we’ll be in touch!

  • This field is for validation purposes and should be left unchanged.



Are the Australian Azure Datacentres available now?

Not entirely, but soon! The official word at the Microsoft Australian Partner Conference was that the Australian Azure Datacentres would be online before Christmas. The unofficial word was early October. I also heard someone say the sixth of October, but that could have been a lie.

Today I caught a glimpse of them in the wild when spinning up a WordPress site on Azure. (I’m not sure if ‘spinning up’ only refers to virtual machines, though let’s assume that it doesn’t.)

When the time came to choose the location of my MySQL database, I was presented with the following options:

Azure's Australia East and Australia Southeast Datacentres

Note the presence of Australia East and Australia Southeast!

Azure’s MySQL databases are actually managed by a company called ClearDB, though they still run on Azure’s hardware. I’m not sure what’s happened here – it may be intentional, though perhaps ClearDB has let the cat out of the bag a little early.

It might just be limited to MySQL databases. I tried creating a Virtual Machine straight away, though the closest datacentre is still Southeast Asia.