The Workflow

A lot of the conditions will be organization specific so I will try and break down the components I use and let you determine what parts make sense for you. Just remember the main design principal of not wanting to ask our users more questions than we need to.

Trigger

All of these flows start with a "when an item has been created" SharePoint list item trigger. You will need to create a flow for every form you end up creating.

Get Job title from form input

The Requisition, Offer Letter, New Hire, and Change forms will all gather job title from the selected job title in the form

Get Job title from user profile

Terminations are a bit more complicated because we're not grabbing the title from a filled out form, we will need to match the string from the terminated employee's profile with the job title string. First initialize a variable and as an integer:

Then get SharePoint list items (plural) and hit advanced options to do an odata query and set top count to 1:

Then set the variable you created to be the ID of the get list items step, this should create a loop that will set the variable to the ID of the last matching job title in that loop (since there should only be one item in the array it loops once and stops)

Then you can do a get SharePoint list item to get the singular title and all the metadata associated with it:

Approval States

As a safety measure I like to include approval states to make sure the information is getting entered correctly and that someone isn't using the forms to do something malicious. First step is to create an approval, I prefer to use "create an approval" vs "start and wait for an approval" so we can fire off some emails while we wait for the approval.

Then create a "wait for approval" section followed by a condition on the outcome variable equaling approve.

Then create a "set SharePoint list item" section and set the mandatory fields like ID and Title, leave all the other fields blank (you may need to manually blank out fields with default values), and then set the approved field to true.

Building Emails for manual parts of the process

I like to give my help desk written out instructions for manual parts of our processes when required, to accomplish this I initialize an empty variable and then set it using a condition based on the form input. The following is a snippet for email retention when a user is terminated.

We then use that variable in the user termination email to our ticketing system. If the variable is blank then that part of the email is empty and my help desk goes about their day.