This workflow requires a CommCare Software Plan

This feature will only work if you have case sharing enabled between your front line worker and the supervisor via either case sharing groups (Pro Plan or higher), or organizations (Advanced Plan or higher). For more details, see the CommCare Software Plan page.

Impacts Case Loads

This workflow relies on saving all questions as case properties, which will make your cases larger, and could potentially impact overall application performance.

Many projects have a workflow where a front line worker (FLW) collects data, and a supervisor reviews it. While it’s not possible to hold off on sending this data to the server before supervisor approval, you can build your app to enable such a workflow. In this workflow, an FLW collects the data, a supervisor approves it, and a data consumer (e.g. manager at HQ level) downloads the data and can see if it’s supervisor approved or not. The workflow looks like this for an FLW, and this for a supervisor.

The steps to enabling this in your app are: 

  1. Use custom user data to create a “role” field for the supervisor and FLW (see video demo here

  2. Make sure all questions are saved as case properties in the original form (see video demo here)

  3. Copy the form to make a new supervisor version (see video demo here)

    1. Save all questions as case properties

    2. Add in the default value for all questions

    3. Optional-- add in a display label at the beginning that shows all the answers the FLW entered

  4. Add in calculations to pass the form between FLW and Supervisor (see video demo here)
    1. Add the hidden value ready_for_supervisor into both forms and save it as a case property

    2. In the original form, set the calculation to “yes”

    3. In the supervisor version of the form, set the calculation to “”

        5. Add form display conditions to hide/ display forms based on role (see video demo here)

    1. #user/position = “supervisor” for the supervisor form and  #user/position = “flw” for the FLW form

    2. Add in case list filtering ready_for_supervisor = “yes”

  • No labels