Simple SharePoint Workflow - Supplier Invoice Approval

SharePoint comes with powerful built in workflow functionality, but to use it you need to be able to use SharePoint designer or Visual Studio. For many users this is just too complex.

So, for simple workflow, when you don't need the complexity of SharePoint Designer or Visual Studio, use SharePoint Reminder to quickly and easily set up simple workflow on any list or library with an Approval column or a custom state/choice column. Uses could include:

  • Vacation approvals
  • Expense claims
  • Timesheet approvals
  • Invoice payment approvals
  • Helpdesk escalations

For this example we are going to look at an invoice payment approval work flow which you might use in your accounts payable department. In many organizations, a supplier invoice arrives in the accounts department then gets emailed, or worse still printed and "snail-mailed" to the purchaser for approval, then possibly the budget holder, getting lost and forgotten on the way, causing late payments, damage to supplier relationships and to credit terms.

Using SharePoint and Reminder we can keep one copy of the invoice, in one place and automate the approval process, saving time, paper and hassle.

In our example, we are using a 2 stage approval process, and we are assuming that the person who initially creates the "New Invoice" item in the document library will be responsible for that invoice until it is paid.

So, the process is this:

  • Supplier invoices are received by the accounts payable department, scanned and uploaded into a SharePoint Document library.
  • They are then approved by the person who placed the order for goods/services
  • Then by the head of department or budget holder.
  • Before being scheduled for payment by Purchase Ledger.

And with Reminder we will:

  • When a new invoice is added to SharePoint, send an email to the person who ordered/purchased the goods, asking them to approve the invoice.
  • If the purchaser approves the invoice, email the budget holder for approval, copying in accounts payable to keep them informed.
  • If the purchaser queries the invoice email accounts payable, who created the record.
  • When the budget holder approves or queries an invoice email accounts payable, either to schedule the invoice for payment, or to raise a query.
  • For the purposes of this example, oncean invoice has been queried the automated approval process is halted, though you will see that it would be easy to build in additional stages to cater for this.


Set Up Library and add Custom Fields

First then, we need to set up a standard document library [image #1]
and add some additional fields.
[images #2 and #3]
  • Add an "Purchased By" field, which is a person or group field type
  • Add a "Purchaser Approval" field, which is a choice field, with choices "Pending. Approved, Query" - make sure the default value is set to "Pending".
  • Add a "Purchasers Notes" field, which is a multi-line text field, to be used when rejecting or holding an invoice.
  • Add a "Budget Holder" field, again, person or group.
  • And a "Budget Holder Approval Field" as a choice field, with the same choices as Purchaser Approval above.
  • And finally a "Budget Holder Notes" field.
  • Although they won't be used to drive the workflow you might also like to add some information fields such as "Supplier" and maybe "amount" to add some detail into your approval request emails
[images #2 and #3]


Set Up Filtered Views

Now, we need to set up some filtered views for Reminder to look at.
[image #4]

It is important when working with Reminder that you choose a standard view

[image #5]

And when configuring choose to keep it as a public, not personal view. Reminder will only work with standard, public views.

[image #6]

First, the view that will trigger an initial request for approval email to the person who has ordered the goods.For this we will set up a view called "Purchaser Approval Pending".And we will show records where field "Purchaser Approval" is equal to "Pending"

[image #7]

Now for the view which will trigger a Reminder to the budget holder once an invoice is approved by the Purchaser. Call it "Budget Holder Approval" and have it show records where "Purchaser Approval" is equal to "Approved" AND "Budget Holder Approval" is equal to "Pending".

[Image 7.1]

Now a view for those times when the Purchaser queries an invoice. For this we want to show records where "Purchaser Approval" is equal to "Query"

Now the view for occasions when the budget holder queries an invoice. "Budget Holder Approval" is equal to "Query"

Finally, to trigger payment, once the budget holder has approved an item. "Budget Holder Approval" is equal to "Approved".

Phew! Glad we only have to set those up once.

Set up the Reminders

First, create a new page for your Reminders - either a web part page or a wiki page will be fine, put it somewhere out of the way of general users, as you will want to keep the management of these Reminder to yourself.

The important thing to remember here is that you will need to set up a Reminder for each stage of your workflow - so in this instance we will have 5 Reminders in all.

[image #8]

Workflow Stage 1 - Purchaser Approval

First we are going to set up the email that notifies someone who has purchased goods or services that the bill has arrived, and ask them to review and approve or query the payment.

Add the first Reminder web part to the page:
[image #9 and 10] [image #9 and 10]

Open up the Configuration panel (edit shared web part) and open the Appearance tab at the top.

The only thing you really need to do hear is give the Reminder a meaningful name, you are going to have quite a few of these on the page so it will help if you can easily distinguish which Reminder is doing what. So let's call it "Purchaser Approval Request".

[image #11]

Now scroll down to the Reminder configuration section. We want to watch the "Purchaser Approval Pending" view of the Supplier invoices list, and send an email to the person named in the "Purchased By" column.

[image #12]

Choose a subject line for your email - you could use merge text from the library here, or just keep it simple and call it something like "New invoice for approval".

[image #13]

Now create the body of your email. Once you click on the "Edit Message" button you will see that you have a rich text editor to work with that will be very familiar in feel to anyone who uses Microsoft Word. In here you can use rich text, bold, colors, highlighting etc. to emphasize, and you can use merge fields from the library, just as you would with a Word mail merge.

Checking the "include hyperlink" box just under the Edit Message button will ensure that a direct link to the library item is included in your message, making it dead easy for your recipients to go off and do the necessary.

[image #14]

In the ""Send When" section simply leave the "Always" box checked. This will mean that Reminder will send an email out every time it sees an item in the "Purchaser Approval Pending" View.

[image #15]

Now choose when and how often you want Reminder to look at the list.

We know approving supplier invoices is not top of everyone's "to do" list, so we are going to go for full scale nagging here and send a Reminder every day until action is taken.

So, in the "Send Email" section check "Always". This will mean that Reminder will send an email every time it checks the list and finds an invoice in the "Purchaser Approval Pending" view. We could have set this up to send once, or send a specified number of times, but in this case we are going to just keep on nagging until the invoice gets sorted.

In the "Check List" section we are going to tell Reminder when we want it to check the list, and on this occasion we are going for daily, Monday through Friday, at 9 am.

[image #16]

And that's it for the first one. Apart from - you might want to open up the Reminder Testing section and to avoid annoying everyone whilst you are getting this up and running, divert all emails to your own email address whilst testing - just a thought!

[image #17]

Workflow Stage 2/1 - Purchaser Approves

Where the person who purchased the goods has approved the invoice we are going to send an email to the relevant budget holder, asking for their approval, and cc this to the responsible person in accounts payable, to keep them informed.

[Image #18]

So, we need to set up a new Reminder web part for each stage of the process. Add another Reminder web part to your page, open up the configuration panel and call it something like "Budget Holder Approval Request".

Set it to watch the "Budget Holder Approval Pending" view of the list.

Other that cc-ing in accounts payable your setup is going to be pretty much the same as the previous reminder. Since the budget holder may be a little more senior than the purchaser you may want to be a little less naggy with the emails. So maybe set "Check List" to once or twice a week.

Workflow Stage 2/2 - Purchaser Query

Where an invoice is queried at this stage we want to refer it back to the Accounts Payable department for review.

Add another Reminder to the page. Call it "PurchaserQuery". Set it to watch the "Purchaser Query" view of the list, to email "Created By", who is the person in Accounts Payable responsible for the invoice. Leave Send When as Always, then choose how many Reminders you send, and how often you have Reminder check the list really depends on how much nagging you feel Accounts Payable need.

Workflow Stage 3/1 - Budget Holder Approves

Now for your 4th Reminder, which is going to go to Accounts Payable, when an invoice is approved for payment by the budget holder.

Set up a new Reminder and have it watch the "Budget Holder Approved" view of the list and email to "Created By" - you might want to cc in the purchaser to keep them informed, particularly if the purchaser is likely to be a main point of contact for the supplier. Set the Reminder to "nag" as much, or as little as you feel is needed, and you're done with this one.

Workflow Stage 3/2 - Budget Holder Query

This is the final one, set up your new Reminder to watch the "Budget Holder Query" view and send to "Created By", again, you might want to copy in the Purchaser to keep them informed.

The System in Action

So now, add a new invoice to your library and watch it all work! [image #19]

Click on the link to review and approve the invoice,  and the next stage in the process is triggered.


[image #20]

So there you have it - automated invoice approval with no bits of paper flying round the building and getting lost in in-trays, and minimal effort from the accounts payable department.


So what about dealing with things that have been queried?
This is easy enough to do and follows the same principles. You have 2 choices. The easy option would be for the person who has dealt with the query to simply add some notes, change the status of either Purchaser or budget holder approval (depending on who has raised the query) back to "Pending" and let the Approval request Reminder you already have set up pick it up and run it back through the system.

Alternatively, you could go for an additional status "Query Resolved" in the Purchaser and Budget Holder Approval Status columns, have a new Reminder watch a view of the list for items with this status, and set this up with a differently worded email - something like "Your invoice que[image #21]ry has been reviewed".

What if the Purchaser and the Budget holder are the same person?
Don't want to send the duplicate emails right? So, just check the "Don't email the last modifier" box in the Reminder config panel, and this will stop people getting multiple emails about the same thing.

I want to inform my Purchasers and Budget Holders when an invoice has been paid?
Easy done, just add an extra column "invoice Paid", make it a Yes/No column - which is basically a tick box, have its default value set as "No". So accounts payable will go in and tick the box when the invoice has been paid.

Then create another filtered view, to show records where "Invoice Paid" is equal to "Yes" and set up a Reminder to watch this view, and email to the Purchaser/Budget Holder as you wish.

What about security?[Image #22]
This is a simple workflow and does not have any built in security - in theory anyone could go into the list and approve supplier invoices, if for some reason that was how they wanted to spend their time.

We don't have any way of preventing this without making the system far more complex. However we do have an audit trail in the shape of the Version History:
This shows you exactly who has done what to the library item when, so will allow you to pick up on any unauthorised activity. You will need to switch Version History on within Library Settings on the ribbon in order to make use of this feature.

SharePoint Reminder Webpart Download