I hope to see some of you this Saturday at SPS Kansas City, where I’ll be sharing an overview and demos on using workflows to improve business processes. Here’s what you can expect from me:
Let Microsoft Flow and SharePoint Designer Workflows Do the Work
Your team members would appreciate getting some time back. Give it to them in ten minute increments here, thirty minutes there by using Microsoft Flow and SharePoint Designer to build them thoughtful workflows that range from simple one-steppers to more complex and conditional multi-stagers, even across site collections. We’ll cover specific HR and Accounting scenarios in this session based on real-case experience at KU Libraries, including automation of some onboarding and off-boarding processes, simple automated management of otherwise complex item-level permissions, travel plan submission and approval, receipt submission and reimbursement tracking and more all through utilizing workflows to save you and your colleagues time.
When writing your own custom headers and footers, you probably don’t want/need that script showing in modal dialog windows too. It can look sloppy or accidental and may wrap oddly, as seen in my example above.
We’ve all been there. One location on a shared calendar will be referred to by multiple people as 20 different things. Johnson Building Room 214 can be entered as “214,” “Johnson 214,” or “J214” to name a few. Canceled events stay on the calendar, sucking up real estate and waiting for someone to delete it manually. Items copied from another calendar make you pay for the convenience of a simple copy and paste by adding the “Copy: ” prefix to the item.
But with a single workflow, we can fix all of these and make our SharePoint calendars look more professional and polished without making more work for end users. This post will cover how we can use workflow to standardize naming of locations with workflow, delete events once they’ve been canceled and get rid of Outlook’s “Copy: ” prefix. You will need SharePoint Designer and appropriate permissions to create workflows to complete the following steps:
SharePoint Designer 2013 workflows verify email recipients as valid SharePoint users. If they’re not on your site they likely won’t be able to receive an email from a 2013 workflow depending on your setup. Even though the workflow publishes, the recipient could be removed before the message is sent. You may also get this error message when creating the workflow:
“The selected user(s) may not be valid on the site this workflow is published on. If a recipient is not a valid SharePoint user, he or she will not receive workflow emails.”
More often than not, this will be triggered by any yahoo, gmail, hotmail, etc. address but can also sometimes occur with addresses within your organization if they’re not in your AD and properly part of your site. I recommend copying yourself in testing to be sure the message is sent to external users if you think you’ve successfully made external addresses valid SharePoint users.
But to be certain you get around this 2013 obstacle, simply use a 2010 workflow. SharePoint Designer workflows built on the 2010 platform do not verify addresses. And if you’ve already built a complicated masterpiece in 2013, no need to fret. You can always create a 2010 workflow just for the email and start it within your 2013 workflow.
Update 9/1/17: If that still doesn’t work…
Most likely your recipients, then, aren’t being looked up in an item field (perhaps the same address will be used for all workflow instances). In your workflow before the email step, “Create a workflow variable” and set it to the person(s’) email address(es). If multiple, type as semi-colon delimited. Set the variable type to string. Then for the To: line in the email, use a workflow lookup to that new variable.
If you’ve found this post by search, you’ve likely already gone into the workflow settings for a particular list or document library item and have clicked the info icon () next to “Internal status” and found that your workflow is “in progress”, but has an error: “Access Denied. You do not have permission to perform this action or access this resource.” Peering into the bulk of the message, you see a helpful tidbit that includes sp.utilities.utility.SendEmail. This could be from a number of causes, but here are the summaries of three possible solutions. Note that the first solution is still required even if you try B or C below. I’ve only included the second and third solutions as additional possibilities if the first doesn’t solve your problem.
A common question, before we begin, is what level of permissions any individual needs to be able to send an email or start a workflow generally. It doesn’t matter so much if you’re using Impersonation or App Steps, but the quick answer is a minimum of Contribute level permissions is good.
Sometimes you’ll into situations where a SharePoint Designer (SPD) 2010 workflow is the only way to go in order to make something work. In May 2017, I gave a presentation at SharePoint Saturday Baltimore and shared the following slide of functions only possible by using a SharePoint Designer 2010 format workflow.
Unfortunately, you may have loads of conditions and stages already built in a SPD 2013 workflow by the time you realize you need some of this 2010-exclusive functionality. No need to fret, however, because we can start that necessary 2010 workflow from wherever we need to within our 2013 workflow, as if it were just another ordinary step.
Lookup columns aren’t friendly to a lot of things. Power BI reports, calculated columns, creating new items via workflow when both lists have lookup columns, if/then statements, etc. Especially when your lookup column is looking up to a list from another site, not the same subsite in which you’re working.
A previous scenario required that I create a new item in a different site’s list when conditions were met in the origin site’s list item. Both lists used the same lookup column, and I received the “lookup is in another web” error when trying to do a direct copy via workflow, from lookup column to lookup column. The solution ended up being creating a new item in a temporary, lookup-free list that received the lookup values just as text. Then SharePoint Designer copied those over to the final list, which received the text and happily converted it back to the appropriate lookup values. See the full solution here.
This post will focus on the same error message, but this time is triggered by a SharePoint Designer workflow in a different scenario where we just want to convert our lookup values to text so we can use them for various purposes.
To save you time, I also tried (and failed) at these potential solutions before finding success:
Setting workflow variables to the lookup values and trying to set the variables to text values, or use the variables in my if/then statements to create new text values (this defeats the purpose of using lookup columns, of course)
Using a number of combinations of Microsoft Flow and SharePoint Designer to get the data from the lookup column extracted then “pasted” back in as text
So let’s get to the solution. Feel free to comment with your scenario specifics – I’ve had a lot of experience with this error, and would be happy to help.
Item-level permissions come in handy for a number of situations. Here are some examples and food for thought:
Travel plans are submitted to a list, but only those in people columns (supervisor, director, traveler) are allowed to see or find the plan by search.
Allow “content owners” to edit documents, and everyone else to view only.
Allow non-admin individuals to set editing permissions for documents or list items by populating a people column
Using a SharePoint Designer 2010 Workflow and an impersonation step, we can:
Add list item permissions
Inherit list item parent permissions
Remove list item permissions
Replace list item permissions
This tutorial will use the “replace list item permissions” action. Whenever you’re replacing permissions, you must remember to INCLUDE YOURSELF or admin individuals in the replacement permissions or you won’t be able to access the content or help with troubleshooting. Let’s begin!
The people column’s settings are multiple selection, people AND groups as can be seen here. This is absolutely fine (multiple selection, mixing of permission groups with individuals). You may just note the warning in red in the screenshot below:
“Earlier versions of client programs might not support a Person or Group field that allows multiple selections. Adding this field might block those programs from saving documents to this library.”
In your workflow, just make sure you’re returning your people column “As String” and not any of the semi-colon delimited options. That’s all there is to it. Publish the revision and run the workflow again (and you may need/wish to go in and end any workflows that errored out but are still “running”). Best of luck!