1

I am currently using the Webform module, but I can't find a way to make a workflow that works for what I am trying to do.

Please let me know if I am approaching this incorrectly, or if I should be using a different module.

This is basically how I want the steps to work:

  1. User fills out a Webform and submits it. (one of the fields in the form is his/her supervisor's email). The form then enters a state called "Pending"
  2. The form is sent to the entered Supervisor's email.
  3. If the Supervisor wants to approve it, he/she will change the state to "Approved". If he/she feels that more approval from someone higher up is required, then he/she can change the state to "More Approval" needed and then enter the email of their supervisor.
  4. If the Supervisor's Supervisor likes it, then he/she can change the state to "Approved"
  5. When the state is at approved, HR is notified.

enter image description here

Is doing something like this possible? If so, how can it be done?

  • Merci for the accept! Next question? – Pierre.Vriens Aug 16 '16 at 20:56
  • 1
    Of course! It took time since I was working on other projects, but I finally got around to utilizing a workflow as you described and it has been working great so far! – AndrewMRiv Aug 16 '16 at 20:58
1

Instead of using the Webform module for this, I would use a custom content type for this, with the fields similar to what your webform is using. And instead of submitting a webform, a node of this custom content type is to be created.

This content type should have these fields:

  • A field to reflect the "state" (Pending or Approved, maybe also a state like "Escalated"?), say you name this field like field_approval_status.
  • An "entity reference" field to select the Supervisor.

With the above setup, you could use the Rules module to notify the Supervisor, using a rule that is similar to the rule included in my answer to "How to send an email via a Rules action using a field key?", and which looks like so:

{ "rules_notify_reviewer_about_outstanding_approval" : {
    "LABEL" : "Notify reviewer about outstanding approval",
    "PLUGIN" : "reaction rule",
    "OWNER" : "rules",
    "REQUIRES" : [ "rules" ],
    "ON" : { "node_insert--blog" : { "bundle" : "blog" } },
    "IF" : [
      { "entity_has_field" : { "entity" : [ "node" ], "field" : "field_blog_reviewer" } }
    ],
    "DO" : [
      { "mail" : {
          "to" : "[node:field-blog-reviewer]",
          "subject" : "Blog Post waiting your approval",
          "message" : "[node:author] has submitted a new Blog post waiting your approval.\r\n\r\nYou can review it at: [node:edit-url].",
          "language" : [ "" ]
        }
      }
    ]
  }
}

If the supervisor then wants to forward it to another supervisor, all that's needed is to edit the node and change the selected supervisor to another one.

You may want to add some extra logic and/or permissions related to such field_approval_status field, i.e. to ensure that when such node is created, the author cannot set it to "Approved" right away (only to "Pending"?). That's something you could do using the Rules module (to validate/enforce that), or you might want to use the Field Permissions module for that.

Note:

To avoid that creating nodes is too intimidating for most users, you want to look at the Simplify module also, which helps to de-clutter forms. Here is a quote from its project page:

Simplify allows particular fields to be hidden from the user interface. This helps to de-clutter forms and present a more user-friendly experience to content editors.

|improve this answer|||||
  • Thank you for your response! I like this idea. I do have one question before I proceed. A lot of the employees that would be going through this process are not "tech-savvy" and may be intimidated on clicking "Create Content". Could I use a different module to create the node after the user fills out a form? That paired with your solution may be what I am looking for! – AndrewMRiv Oct 12 '15 at 20:34

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.