One Stop Shopping Plus Mail Order

imageA few weeks ago, I received an email about an old post about managing a walking contest in SharePoint. Ironically, we are preparing to kick off the 2014 version of that contest in about 2 weeks and once again, we are managing it in SharePoint. I like to use these little side projects to demonstrate what SharePoint can do out-of-the-box. Some might ask “why focus on out-of-the-box? SharePoint can be so much more.

Their question is not quite correct and I am lying just a little bit.

The problem with their question is that “SharePoint can be made to be so much more” but the making can take a lot of time.

The lie that I’ve told is a lie of omission. I didn’t tell you that my box is bigger than Microsoft’s box. My box includes things like HarePoint Workflow Extensions and Nintex Workflows. HarePoint’s extensions add some very cool features to SharePoint Designer workflows and Nintex, well Nintex Workflows are like a slice of SharePoint Heaven here on Earth.

So, truth be told, I like to show people what we can do very quickly in SharePoint with the tools that we have available to us. That’s important for a reason that most IT departments don’t consider often enough.

Sometimes, people don’t ask for things because they think those things will be hard to build or expensive or that they will take too long.

They aren’t trying to save my time or my budget; they’re just trying to avoid being told “no, you can’t have that.

In the 2014 version of our SharePoint-driven walking contest, we have added two new features. Both are aimed at improving the user experience and both came at the request of my new young colleague Stacy. Stacy is not only the architect on this project, she’s the user. She’s managing the walking contest and she’s building the site with some help from me.

For those of you who are unfamiliar with a walking contest, it’s pretty much what you would imagine:

  • Our company is divided into teams.
  • Each person tracks and records their steps each day during the contest.
  • At the end of the contest, the team with the most steps wins a team prize and the person with the overall highest number of steps wins an individual prize.

Stacy wanted to make two improvements to the accounting process for the contest. She wanted to add options for mobile entry and she wanted a dashboard of sorts for reporting progress.

Mobile entry was easy but, again, it uses a few tricks from our bigger box. You can send your entry into a SharePoint Remote Entry library by including the subject line “10-11-2014 8,996” i.e. the date and the number of steps. A SharePoint Designer workflow, aided by HarePoint’s Regular Expression actions parses the subject line and adds the steps to your step count. A second workflow adds your step count to your team’s total.

We could do all the processing in one step, but I like breaking things into small chunks. That is a carryover from my history of coding in Smalltalk, but it’s a good practice for SharePoint. Small workflows are easier to test and they are easier to “debug” since there really isn’t a “debugger” available in SharePoint.

Employees with iPhones can also easily enter their steps via a mobile view of the Steps Entry form. Actually, anybody could do this, but “iPhone” is linked with “easy” because our MaaS360 mobile device management software allows us to push that mobile form through our firewall without the need for a VPN connection (which people hate to make on their phones).

Finally, we needed to build that dashboard, but we decided to make it functional instead of just informative – that’s where the “one stop shopping” comes from. We started with a Web Part Page and we added an Announcement part and an Instructions part in those top-of-the-page whole width zones. Then we added three useful parts. On the left, we have “My Steps” which is a view of the Steps list filtered on the current user. In the center, we added a view of Team Status that shows the current ranking of teams and on the right; we added a simple entry form for steps.

image

I have to admit, this is the first time I have ever put an entry form on a dashboard. It works. Having the entry form on the page makes this page the only thing people actually have to look at. My Steps, My Team and, as I look at my steps and realize that I forgot to enter yesterday’s value, I can do it without leaving the page.

Stacy’s homework assignment is to add a chart to graphically display some of these statistics and to make the page a little prettier. Mine is to start walking.

SharePoint Joinery

clip_image002One of the challenging things about working with wood is learning all of the different ways that wood can be joined together. As I said a few weeks ago, it’s not like you can weld it. Joinery is fascinating, labor intensive and meticulous work. The goal is to maximize the surface area for glue and if possible, include a mechanical connection for added strength. I know how to make almost every type of joint, but sometimes I cheat.

If you look at the picture to the right, you will see that it features an interesting joint. With a little fancy cutting, I can create the illusion of a door and a face frame in what is really a solid panel. But, if you look down and to the right, you’ll see a pocket screw.

Pocket screws are a wonderful little cheat. No fancy cutting involved. Drill a hole by running a special kind of bit through a jig, add a bit of glue and whirr whirr whirr, screw the thing together. Fast, easy and ridiculously strong, they only feel like cheating to the guy who knows how to cut the other kind of joints. Email is the pocket screw of SharePoint (see, I do know which blog I’m writing).

Apparently, the fitness freaks in our Human Resources department want us to get healthy. We are going to have an exercise contest where we will form teams, count steps and track calories and the winners will get something like a gift certificate at Dick’s Sporting Goods. Personally, I think that’s like dieting in order to win a case of Tofu, but that’s beside the point. The point is, they want to track this all in SharePoint, which is very cool. Even better, the young woman running the contest wants to build the tracking solution herself. Now that’s exercise I can support.

She will be using a couple of custom lists, some connecting gear and a widget or two:

Team Members – I.E. those of us inclined to walk, run, bike, swim or climb our way to a healthy heart.

Teams – Because some people need a better reason to exercise than living longer. For those people, we introduce peer pressure and the fear of letting your friends down.

Steps – Who, when and how many.

Workflows – She has one that enrolls a person onto a team, and one that adds an individual’s steps to the team total.

Widget – Sooner or later, she’s going to want to make this pretty.

Before we get to making this pretty, she wants to make it easy. I like that. SharePoint should be easy. The problem is that she wants us to walk every day! If we have walk on Saturday and Sunday, we have to have a way to record the steps. We have several:

VPN – Fire up your laptop, connect with VPN, go to the SharePoint site and enter your steps.

Mobile Browser – She’s going to make a nice looking mobile version of the entry page and we will publish that through the MaaS 360 browser. That way, people with iPhones or iPads can enter their steps without having to log in. That’s easy.

Email – Email? Yes, email. SharePoint can receive email. SharePoint workflows can “read” emails and I can enter my steps in a dirt-simple process.

To: TheSharePointLibraryAcceptingSteps@ourDomain.com
From: Me
Subject: Steps 06/01/2014 12,500

I’m going to walk a lot in June.

clip_image004That’s easy to do, and with the help of those HarePoint Extensions for SharePoint workflows, it will be easy to build. HarePoint is like the jig that helps me angle those pocket screws into position.

We use email in several processes where connecting something to SharePoint would otherwise require the equivalent of a hand-cut dovetail. For example, we have a process where SharePoint needs to know about a status change that results from a SQL Server stored procedure. Connecting SharePoint to SQL Server is possible, but running workflows on External Lists is not – the data isn’t in SharePoint. Fortunately, SQL Server can send SharePoint an email and we can read that email.

Of course, SharePoint can send email too. So, if one of our employees doesn’t include enough information on the subject line of that email, our workflow can write them back:

Yo, Stepper. We’re thrilled that you’re getting some exercise, but we do need three things to make those steps count. Please include the word ‘step’ (or steps, or Steppenwolf), an mm/dd/yyyy formatted date and the number of steps on the subject line of your email. They can be in any order, but we need all three.

Thanks,
Step counting robot

Sure, there are other ways to connect SharePoint to the rest of the world, but email works well enough in this case. People like email. People understand email. People can send email from almost anywhere using almost any device. Besides, the goal isn’t to show off our SharePoint prowess, the goal is to make life easy. I think I’ll go walk me some steps.

It’s Alive

iPad Screen shotWell I guess the phrase is actually “it’s now gone live” but that just doesn’t invoke the same emotional response. We have a business process that is now partially running in SharePoint. Even better, the right portion is running in SharePoint and the stuff that shouldn’t be in SharePoint is running somewhere else.

The business process is “payables” – something everybody has to do but something most people do differently than we do. See, we’re small, we don’t have a lot of vendors, we don’t have a complicated (no you can’t have that) procurement process and we don’t have a receiving dock. We buy things. We hire contractors. We incur professional fees. We refund premium on occasion and we reimburse people for things. We do this a bunch of ways. We have Concur (shudder and cue the foreboding music) which I actually kinda like. We do ACH transactions. We do wire transfers and we write checks. We also periodically reimburse people for small purchases with something called cash. I’m sure some of the younger readers are Googling that term.

The payables process, in addition to resulting in many financial outcomes, begins with a variety of financial transactions. Eventually, we will lasso all of these transactions and pull them into the same ring, but we decided to start with Check-Requests and checks. The process is pretty simple. We buy something from a vendor. They send us an invoice. We send them a check. In between step 2 and 3, someone studies the invoice, makes sure it’s legitimate, prepares a check request and then somebody else approves that request. That whole process, the stuff between step 2 and 3, is now done in SharePoint. Below are some of the cool things we (remember ‘we’ now means ‘they’ and stands for the shy people on my team) were able to include:

  • Maintaining a list of vendors that are automatically checked to make sure they aren’t on the US Treasury’s list of bad guys, and then approved by someone in authority in accounting.
  • Create a check request for an invoice(s) from an approved vendor.
  • Attach the image(s) of the receipt(s) to that check request.
  • Allocate the amount of that/those invoice(s) across multiple departments or multiple accounts within a department. For example, I buy a server, but some portion of the invoice is for the warranty.
  • Route the check request to one or more people for approval.
  • Do all the little checks and balances like making sure that the total of the allocations equal the total of the request.
  • Approve individual check requests for payment.
  • Allow the approvers to send the request back to the previous person to correct an error.

The tools used to make this happen include:

  • SharePoint external lists and the ability to impersonate users when working with them
  • InfoPath forms
  • Custom lists and views
  • Data View Web Parts to put the forms, lists and view on a single interactive page.
  • SharePoint Designer workflows to respond to the various activities a user did and to validate the transaction while it is in process
  • HarePoint’s Workflow Extensions to do some of the tricky stuff that SharePoint Designer doesn’t seem to do, like execute SQL Statements or use Regular Expressions to evaluate a sting.
  • Nintex Workflow’s “for each” capability to cycle through each Paid request in an external list to update our detailed custom list with the payment details.
  • All the various widget to widget connections you can establish in SharePoint Designer to get web parts to respond to other web parts.

We decided to use InfoPath instead of other techniques because we wanted a more functional form with less code buried behind it. I’m not sure that we saved on the coding effort, but I like the mix we are left with. We are trying to stay very close to the level where we can establish the action we want by “configuring” parts instead of writing code. It’s a fine-line kind of balancing act, but it works for us.

This just in, yes I know that Microsoft has put InfoPath on the short-line track to obscurity, but it will be around for a while and I feel that we risk very little by using it the way we do.

The reason I said that the right stuff is and isn’t running in SharePoint is central to our use case for having SharePoint and it is something that I think people often overlook – SharePoint runs in a browser. By building the front-end of this application in SharePoint, I can let people who are traveling submit invoices to be paid, approve payment requests and manage their budgets without having to write any web stuff. Also, since we have that Mass360 browser I talked about, I can approve payments on my iPad without a VPN connection.

The stuff that’s not running in SharePoint are those back-room accounting processes that nobody sees and everyone is content just knowing that they get done. Nothing to see here, move along.

Leaving SharePoint

imageNo, we’re not leaving SharePoint. We are reducing our SharePoint footprint though and I thought that I’d start a periodic mini-series on this subject. The mini-series appeals to me because I don’t think I can cram enough material into a single post and still squeeze under that self-imposed 800-word limit. Raise your hand if you want me to abandon that limit…yeah, I thought so.

So, what is it exactly that we are reducing about the way we use SharePoint? We are beginning a project that will gradually eliminate our Internet-facing SharePoint site. Why are we doing this? There are lots of reasons, but I’ll limit this post to three:

It’s Complicated – Not the answer, the answer is pretty simple, but having an Internet-facing SharePoint server is complicated. That SharePoint server runs under a separate domain, so we had to build a Trust between our in-house server and the outside server. Even though this allowed us to let our employees have access with their in-house domain credentials, they still have to log in. We could eliminate that step if we designated our in-house domain as the primary domain, but then our business partners, the people we built this server for, would have to include the domain in their user name. We tried that and the results were terrible.

While we can tell our employees to “suck it up and include the domain name and the forward slash, you know, the one over the Enter key, with your user name” we can’t really tell our customers to do that.

It’s not just complicated for people, it’s complicated for software. MetaVis, Harmon.ie, Muhimbi and HarePoint all had to make tweaks to their product to let us work across the two farms. I think it’s pretty cool that they all made those tweaks, but we quickly learned that it is one of the things we have to ask vendors about their products. I look forward to not caring about that capability in the future.

It’s Expensive – When we started out, the outside SharePoint server was a separate physical box. In addition, we had a separate server acting as the domain controller for that domain. These are both virtual servers now, but they still represent two Windows Server licenses, as well as a SharePoint license as well as, well I think none of us actually we all understand Microsoft licensing. Of course there’s more to buy than licenses, those servers have to be maintained, upgraded, backed-up and tended to during power outages.

It’s not just expensive from Microsoft; it’s expensive for some of that other software as well. Add-on software vendors seem to follow weird currents in the industry. Some drift toward the “pay enough money and you can use this anywhere” model and some like the À la carte approach. Unfortunately, when stuff is priced at the “enterprise” level, the companies who benefit are the companies with hundreds of servers. Having 2 servers and paying enterprise prices is a budget story that never ends well.

It’s not what people want – This is the most significant reason of all, our business partners do not want to use SharePoint as a way to get the information they want from us. It might be a sad commentary on the state of ECM. It might be a reflection on what we did or didn’t do with SharePoint. It might just be that SharePoint was overkill, but it’s not wanted. Most of our historic (we’ve been doing this since 2006) use of SharePoint can be filed under the category of “file sharing.” People go to our site to get documents that we have, or they use SharePoint as a conduit to move documents between themselves and our employees. SharePoint worked, but there are other products and / or services that work just as well, perhaps better. These alternatives are less complicated and they are less expensive and they work the way our customers want to work.

Next up in this series, I’ll talk a little bit more about what our customers want and about some of the solutions we considered and some of the reasons we did or didn’t like them. I started off by saying that this would be a periodic series, meaning that you shouldn’t expect to see that story next week. Every time I try to plan the story I want to share next week, something interesting happens and I end up pre-empting the scheduled subject.