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.

Pardon the Abused Analogy

It’s summer and for me that always means DIY home improvement projects. That translates to short work weeks and limited blog fodder. I told myself “if I have nothing, I’ll write nothing,” but sometimes little things crawl into my head and seem important. This week’s DIY project produced just such a moment. Take a quick look at the three photos below.image

These are from three home improvement projects. The little support structure on the right was required to replace a badly worn outside faucet. It should have been replaced years ago, but having to work in the corner of the burner room, tucked uncomfortably between the oil tank and the main water supply, caused me to put it off as long as I could.

All three are photos of “platforms” – used to literally support the worker. In the early days of SharePoint, we were often quick to point out that “SharePoint isn’t a product, it’s a platform!” Yes it is, but just as all platforms are not the same, we are witnessing the fact that all SharePoints are not the same. Platforms, as those three pictures illustrate, need to be well-matched to the activity that they are supporting. image

At the risk of stretching this analogy to the breaking point, consider that the makeshift scaffold that I stood on while removing and rebuilding this complex bit of plumbing was an “on premises” platform. It was fixed, limited in functionality and accessible only by the “privileged” few or one in this case who were in the room with it. The platform on the left invokes a “cloud” mental image and fits that image quite well. It was flexible, scalable and was easily abandoned when no longer required. The middle platform is clearly (OK, not clearly) a hybrid model; perhaps the best of both worlds but suffering the limitations of each.

Just as none of these physical platforms could be used in all three home improvement projects, no one installation of SharePoint will be well suited to all of our business needs. In some cases, no version of SharePoint might be the right version. In fairness, you can substitute any other product name for SharePoint. As platforms evolve or change or de-evolve by shedding features we used to like, their appropriateness needs to be reevaluated. It can’t be as simple as saying “we use SharePoint so we’ll do what we have to do to continue using it.” Microsoft may like that, but I’m sure my boss wouldn’t.

Liking Nintex

imageSummer is a funny time in most small shops. Projects start and stop as people take time off and attentions get diverted to the periodic crisis or to fill-in for an absent coworker. The downside for someone trying to craft a blog entry at the end of each week is that there isn’t much to work with. Those of you that come here don’t come to hear about the meetings I attended or the fires I put out. The upside is that this post will be short.

One of the interesting things I did this week was to build a SharePoint Workflow using Nintex Workflow. I’ve used Nintex before, but this time, I was teaching someone else how to build a “proper” workflow. The workflow is another part of our Payables process and it allows our accountants to delete a payable that has been submitted and approved for payment. Yeah, sometimes people make mistakes. To prevent someone from making those mistakes worse, this workflow needs to verify that a series of conditions are true. The payable hasimage to be at a specific status. The person running the workflow has to be a member of accounting. A bunch of people have to be notified, the activity has to be logged and we also have to let people know if any of those conditions aren’t met and the workflow has to be stopped.

All of those things can be done using a SharePoint Designer workflow. So, why does the title point out that I like Nintex Workflows? Well, that’s the point of this post. Here is my list of the things I like about Nintex Workflows:

I can add multiple logical conditions into the kick-off point of a single “Run if” block. You can see that illustrated in the image at the top.

I can act against multiple list items in one step. For example, I can say “go find all the allocations that have the same payment_request_ID as this imageitem and delete them.” You can’t do that in SharePoint Designer in SharePoint 2010

I can give an intelligent name to each workflow step. So, the above example step can be called “Delete Allocations” – I like that.

I can copy steps. We need to create a log entry regardless of the imageend-state of the process. Since some of those states cause the workflow to stop, I need to have the “Create Log Entry” step in multiple places which is very easy to do. Copy. Paste. Configure. Done.

I can drag and drop steps in and out of Condition blocks and Impersonation blocks which is very helpful when you realize that you have the right action but that it’s happening in the wrong place.

I can export and import entire workflows. In fairness, I think I can do this in SharePoint Designer, but I have had problems with that process and this worked like magic. I built the basic structure of this workflow from an earlier workflow that lets the person who submitted the payable to delete it before it’s approved.

And, my favorite thing – you work in a browser as opposed to a somewhat finicky, somewhat unpredictable and somewhat predictably bad stand-alone product.

That’s it for today. Not much of a product review, but I think you can understand why I like Nintex. And, I said it in fewer than 600 words.

Proximity Revisited

imageEarly in the life of this blog, I wrote several posts about ‘proximity’ and how important that attribute is to the user experience. I was recently reminded of that fact, and I realized that I my previous examples were too limited.

I was talking about designing a home page or a site page with all the appropriate web parts and without any of the inappropriate web parts. So, if you need to see a task list and a calendar, both of those should be represented on the page, not just sitting over in the quick launch area. Conversely, if you don’t want to have a picture on your site, then you should delete the one of those pretty people.

I also mentioned proximity in association with building dashboards. Having everything that you need being available at a single glance is the key benefit of a dashboard, so I guess my emphasizing proximity wasn’t much of a revelation. I also talked about proximity in terms of business process automation. As our engineers work though the recommendations resulting from their inspections, we tried to give them a view of each recommendation’s life-cycle that was meaningful.

It sounds like I covered all the bases. But, you know that I’ve never written a blog post with less than 250 words, so I must have missed something.

Earlier this year we built a payables process in SharePoint. People can select a vendor, enter a payment request (invoice) and spread that invoice around (allocate) to all the various GL accounts that are affected by it. For example, when we buy a new laptop for someone, we might buy them a case. Those are different types of expenditures.

I have always looked at accounting from a “money in” or “money out” perspective but our accountants seem to be in agreement with my Management Accounting professor – you have to pay attention to stuff like this.

Anyway, the system does all of that stuff reasonably well but there are a few things that the accountants wanted it to do better. Fortunately, one of the women in accounting is also working part-time with my team. One of the things she told me that they want isbetter views of the transactions at all of the various points. They have a view that shows payment requests that are pending, requests that still need someone’s approval, payment requests that are approved but not processes, as well as requests that have been paid and requests that were voided. Seriously, money in / money out works a lot better.

When I sat with her to find out what they wanted, Iimage experienced that old familiar feeling. The presence of that gap – the gap between what people can imagine and what they can’t. In this case, that gap separated the end users from what we SharePoint folks know as Data View Web Parts. As we work together, we are bridging that gap.

She said that they need more detail in the view(s). When I asked “why?” she said “sometimes, we need to know things about the vendor, or we need to know what GL accounts had been affected by this payment.” That made sense, except for the “sometimes” part. I don’t like views that show things that are only needed sometimes. I prefer views that show what you need ‘all the time’ but can be made to show what you need ‘sometimes’ on demand.

I wired up a imagelittle example of one view with the addition of two Data View Web Parts. One web part contained more detail about the payment request and one contained more detail about all of the allocations. I connected those web parts – OK – I really want web part to be one word…webpart, why can’t we just call them webparts – Sorry, I just had to say that. I connected those web parts to columns in the view. SharePoint easily let me show those columns as links, and now when they want the additional detail, they can click on the link and populate the web parts. If they click on the payment request ID, they get its details and its allocations. If they click on the amount, they just get the allocations. Easy-peasy.

To keep all this stuff proximate, we also have to constrict the original view by limiting the number of rows it contains. Most people hate paging, so I gave her an array of options to consider. All Payments, All Payments This Month, All Payments this Quarter, and then of course, this year, last year, etc. I showed her how we can set the page limit and how we can dynamically filter the list to render things like All Payments for a specific vendor. Then, I gave her a homework assignment – go back and sketch out the perfect view. Next week, I’m going to help her build that perfect view. Maybe then I’ll have a better illustration.

Delete is a Form of Edit

imageIt’s summer, and despite the serious pile of work to be done and serious blog posts to be written, I’m finding more evenings filled with old movies, old songs, and old episodes of favorite shows. Unfortunately, due to that serious pile of work, the various threads get crossed. So, when I found myself in a meeting making the statement expressed in the title, I knew I was having an Office Space moment.

“I must have put a decimal point in the wrong place or something. I always do that. I always mess up some mundane detail.”

Oh! Well, this is not a mundane detail, Michael!”

If you say something like that, you’re either trying to avoid doing something that is difficult or you’re trying to avoid admitting having done something stupid. In my case, as of Friday afternoon, I was trying to avoid a difficult thing that might result in my doing something stupid.

I spent some time last week working on a series of workflows to delete entries in a payables process that we wired up in SharePoint. The problem with payables is that they have to be allocated and any one payable entry (invoice) can be allocated across several accounts. All of the allocations have to be deleted before the payable item can be deleted The inability to iterate over a list in SharePoint 2010 makes that impossible without a Rube Goldberg-type solution involving multiple shadow lists that allow you to work around the “a workflow can’t do anything that would cause itself to start” limitation. Fortunately, Nintex workflows can handle this limitation quite well.

In the case of ‘delete’ I have a simple workflow that checks to see that a payable item can be deleted (has been submitted but hasn’t been approved) and can delete payable items and the related allocation items. “Can” being the operative word – for now, the workflow is simply updating a text field with the string “this item would be deleted.” That’s a safe way to start, because I don’t have the luxury of a test environment with Nintex workflows running in it. I’m changing breakers with the power on, as it were. If I make a mistake, I could do some damage.

After I deploy the delete workflow, I have to modify it to create a delete workflow that the accountants can run even after a payable has been approved. After that, we need one final version that can delete an item even after the accountants have approved it. We are serious about not accidentally paying someone. Still, all forms of delete are just variations on a theme. The only differences are that some stop in the presence of a specific status flag and some don’t. After I get all the delete options working, I have to create an ‘edit payable’ option.

Deleting a payable is easy compared to preparing a payable for edit.

Preparing for editing requires making a payable entry, and its associated allocation entries look like they are at the point before they were submitted, or perhaps the point before they were approved or perhaps the point before they were cleared for payment. Since the approval process can involve multiple people, the items involved get quite messy. There are several workflows involved and they all set some value(s) and they all read some value(s) and they all work or don’t work based on those values. Get one value wrong and, if you’re lucky, something isn’t going to work. If you’re not lucky, you end up singing along with Jerry Lee Lewis “…she rolls but she don’t roll right.”

Michael Bolton (in Office Space, not the singer) and Jerry Lee hint at those mundane details causing problems, but John-Luc Picard encounters them directly. One of my favorite Star Trek Next Generation episodes is “Clues” and it’s based on the complexity of undoing the past to a point where you could start over. The episode involves a chance encounter with an alien race – a powerful alien race who would rather destroy the Enterprise than have the universe know that they exist.

As I crawl through the various workflows, looking for all the status indicators, I realize that resetting the status to a prior point is way harder than deleting it. I can see why those aliens would have been happy just deleting the Enterprise.

I decided to wait until Monday to wire up the delete option. In the meantime, I’ve been studying how to reset the items for editing and I think I’ll watch “Clues” this weekend.

I hope your summer is going well.

FDMI

clip_image002I began driving in the era when Interstate highways were beginning to replace the convoluted network of US and State highways interconnected by local roads. One of the first major bits of Interstate to open up in western PA was I-79 between Bridgeville and Washington, PA a.k.a. “little Washington” so you didn’t confuse it with Washington, D.C. I-79 was an alternative to, but did not replace US Rt-19. Unfortunately for me, my father stood by Rt-19 as his first choice for any destination between our house and little Washington. I can remember his arguments, which varied between: “Rt-19 is actually shorter” to “by the time you deal with getting to and from the ramps, the highway isn’t that much faster” – I call results like that a Failure Due to Marginal Improvement (FDMI).

I have recently been reminded of those conversations with my dad, as I try to replace an Excel spreadsheet with a series of SharePoint lists. The issue is that we aren’t talking about replicating data; we are talking about changing, and hopefully improving the process that the data is associated with. The question is, are we doing enough.

The spreadsheet works – The current “system” in Excel doesn’t work well, but has the advantage that people know how it works. This is often the reason why people want to just move what they have into SharePoint, the thought is that they will still understand it. When we are replacing a list, we are often changing the way items are created, maintained and viewed. The result should be a better overall experience, but will it be good enough to offset the change?

Several weeks ago, Marc Anderson raised the question of whether form or function was more important. I suggested that the form-function ratio should never be less than 4:3, and this little project is an example why I think that is true. SharePoint lists are about as close to a database solution as you can get without invoking SQL, but we’re still talking rows and columns, and rows and columns are Excel’s forte. When you start moving Excel data into SharePoint, you create one or two (in this case three) Custom Lists. If you show the user an All Items view of their data in SharePoint, it’s going to look worse than it did in Excel. SharePoint doesn’t use its screen real estate as efficiently as Excel, and people who like Excel will pick up on that immediately.

The Excel-based solution I am replacing is a collection of observations and recommendations. Each row has details about the observations on the left, a huge column of text containing the observations in the center, and a series of recommendations on the right side of an A-X layout. The text is nearly unreadable and it is hard to stay on the same row as you scroll right to left, but the process is easy to understand. Read the details, read the text, write the recommendation.

clip_image004
Moving to a data view web part of items, with options to expose the details in a second DVWP, the observations in another and the previous recommendations in a third, give us a composite view of each item in an easy to read format.

clip_image006
I am planning to add an entry part to write the new recommendations, but that can wait. What we have so far is based on the initial discussion, and it’s time to check-in and show the results.

I’ve got one more concern as I get ready to touch base with the future owner of this solution. Since the stuff isn’t in the same “row” (it’s not even in the same list) he needs to have an increased level of trust in the underlying process. Sometimes it’s hard for people to accept that everything on that page is everything there is. Again, you gain that confidence in the spreadsheet visually; it’s not a pretty sight, but you can see it. I plan to walk the new owner through the process of building an entry from the ground up. By the time we come back to the composite page, he will know exactly what he should see. I’ve made that trip eight times, so I know it’s going to be a sweet ride. In addition to making it work, the user experience needs to be clearly superior to Excel if we’re going to avoid FDMI.