Extend Microsoft Return to School

This article provides a detailed description of the data model, workflows, and Microsoft Power Automate flows used by Microsoft Return to School. Return to School extends the Common Data Model and uses several of its components. Administrators, developers, and users should be mindful of Return to School and possible implications for solutions that coexist in the same environment.

The definitions provided in this article indicate the intended purpose of the tables, relationships, columns, flows, and workflows contained in Microsoft Return to School. These definitions can be fully or partially adopted, depending on your business requirements.

Integration and extension

Microsoft Return to School is built on Microsoft Power Platform. To learn more about working with model-driven apps and Microsoft Dataverse, go to:

To learn more about solutions and application lifecycle management (ALM) guidance to maintain solution integrity, go to:

To learn more about supported extension methods, go to:

Guidance

Numerous parts of Return to School can be extended. The following are a couple of components where we give more guidance to customize or tailor them.

Security roles

The security roles included in Microsoft Return to School are set up for test and demo purposes. They must be reviewed and understood thoroughly before moving to a production environment or when importing sensitive data.

To learn more about Microsoft Power Platform and Microsoft Dataverse security, go to:

New security roles can be created and tailored to your needs. The supplied security roles can serve as a template that you copy and modify. If the new roles need to be moved to different environments, they need to be added to a new Return to School solution.

To copy the security role:

  1. Sign in to the Power Platform admin center.

  2. Select your environment by clicking the environment name, and then select See all under Security roles.

  3. Select the role you want to copy.

  4. Select More actions, and then select Copy.

    Copy security role.

Entity relationship diagram

The entity relationship diagram illustrates the tables and their relationships that are present in the Microsoft Dataverse environment. System-generated tables, relationships, and columns, such as Created By and Modified By, aren't displayed in the diagram.

Entity relationship diagram.

The lists of tables in the following sections are grouped by the app they support in Microsoft Return to School.

Core tables

These tables are used across multiple applications and are considered core to the platform.

Table name Information in the table
General Setting Contains metadata used to set up the application
School Group Contains logic grouping metadata used to create a hierarchical relationship of schools
School Contains description of schools
Person (Contact) Summary information about a person
Reopen Phase Contains information on reopening phases for schools
Reopen Phase Transition Contains a list of requests to move from one phase to another with relevant process information
Access Action Used to manage school access for a person
Notification Used to send notifications to the portal user
Labs Used to set up labs that will process the test specimen for a specific healthcare service
Test Location Onsite location where a person's test will be administered or was administered
Healthcare Service Used to define the healthcare services covered under the application
Location Schedules Used to set up the schedule (dates and times) and capacity at a test location
Slots Used to define the start and end time of a slot and capacity of a slot
Questionnaire A set of questions associated with a healthcare service
Questions Questions associated with a healthcare service
Health And Safety Plans Used to define the periodic test plan
Appointments Contains appointment details scheduled by portal users in the portal app
Test Results Contains Test Result details entered by portal or model-driven app users
Visits Contains associations of contacts and schools for a given time representing a physical entry and exit
Daily Passes Contains associations of contacts to their daily passes
Share Daily Passes Contains records of daily passes that will be emailed to a guest
Case Contact Contains individuals associated with a case
Case Contains associations of contacts and information relevant to their case

Data definitions

The data definitions section provides information about a list of tables, columns, and the areas of Return to School where they're used. System-generated columns such as Created On and Modified On aren't displayed.

Access Action

Display name Column type Description Platform use
Person Lookup Used to associate the contact. Model-driven app
Access Status Option set Used to set type of access action. Model-driven app
Access Available date Date time Set expiration date for this record. Model-driven app
Block Reason Option set Reason why the person was blocked. Available options are: Quarantine, Isolation, and Others. This value defaults to Isolation when the access action is created from a case. Model-driven app
Submitted by Lookup Lookup to system user. This is used to capture the original record creator. Model-driven app
Source Text Used to capture source name, and defaults to manual when created in model-driven app. Model-driven app
Notes Text Used to capture reason for the block or instructions to the end user. Model-driven app
Notification Lookup Used to associate to a specific notification so notes and body can be synchronized. Model-driven app and portal app

Case Contact

Display name Column type Description Platform use
Name Text Primary identifier of the record Model-driven app
Person Lookup Contact associated with the record Model-driven app
Comment Text Used to capture details of the possible contact Model-driven app
Open Case Lookup Used to associate an open case for the case contact Model-driven app

Person (Contact)

Display name Column type Description Platform use Return to School
Contact Type Option set Used to set type of contact Model-driven app Base
Default School Lookup Used to associate a school to the person Model-driven app Base
Requires portal access Two Option Used to send an invite to the contact Model-driven app Portal
Student / Faculty Id Text ID used to identify a student or a faculty in the application Model-driven app Portal
Graph Id Text The unique identifier for the graph object user Model-driven app Portal
Graph user principal name Text The user principal name (UPN) for the SDS graph object user Model-driven app Portal
Portal invitation sent Two Option Indicates if an email invitation has been sent to a person Model-driven app Portal
Portal invitation sent date & time Date and Time Indicates the date and time the portal invitation was sent successfully Model-driven app Portal

Case

Display name Column type Description Platform use
Case Number Text Unique identifier for the person case Model-driven app
Duration in Days Whole number Used to capture the number of days a case was open Model driven app
School Access Available Option Set Used to denote whether the person can get a pass for a school Model-driven app
School Access Available Date Date and Time Used to specify when the person will be able to get a pass for a school Model-driven app
Instructions Text Area Used to give the person a note on why they are blocked from booking a pass Model-driven app
Person Lookup Used to associate the person to the person case Model-driven app
Person Contacted Option Set Used to denote whether the person was contacted Model-driven app
Instructions Provided Option Set Used to denote whether the person was provided instructions Model-driven app
Public Health Official Notified Option Set Used to denote whether the appropriate public health officials have been notified, if applicable Model-driven app
Screened Option Set Used to denote whether the screening process has occurred Model-driven app
First Time Person Contacted Date and Time Marked by a workflow and used in the Power BI dashboards to track performance Model-driven app
First Time to Investigation Date and Time Marked by a workflow and used in the Power BI dashboards to track performance Model-driven app
Originating Case Lookup Used to associate a case to the case where it was created from (through case contacts) Model-driven app
Process Stage Text Indicates the actual process stage of the business process flow Model-driven app

Visit

Display name Column type Description Platform use
Daily Pass Lookup Used to associate a daily pass Model-driven app
Person Lookup Used to associate the person creating the visit Model-driven app
End Time Date and Time Used to denote the end of the visit Model-driven app
School Lookup Used to denote the school visited Model-driven app
Name Text Primary identifier of the record Model-driven app
Start Time Date and Time Used to denote the beginning of the visit Model-driven app

School

Display name Column type Description Platform use
Address Street 1 Text Used to provide address information for the school Model-driven app
Address City Text Used to provide address information for the school Model-driven app
Address Country Lookup Used to associate the standardized country, with the default option being US Model-driven app
Address Postal Code Text Used to provide address information for the school Model-driven app
Address State/Province Lookup Used to associate the standardized state to the school Model-driven app
Description Text Used to provide address information for the school Model-driven app
School Group Lookup Used to associate the group this school belongs to Model-driven app
Name Text Used to provide a recognizable name for the school Model-driven app
Reopen Phase Lookup Used to associate the current reopen phase Model-driven app

School Group

Display name Column type Description Platform use
Description Text Used to provide additional details about the school group Model-driven app
Name Text Used to provide a name for the school group Model-driven app

Daily Pass

Display name Column type Description Platform use
Pass Date Date and Time Used to capture the date and time that the daily pass was generated Model-driven app
Attested Option Set Used to capture whether the person has attested Model-driven
Person Lookup Used to denote the person completing the attestation Model-driven app
School Lookup Used to associate the school for which the person is attesting Model-driven
Name Text Used to create a name for the daily pass record Model-driven app

Notification

Display name Column type Description Platform use
Recipient Lookup Used to associate the contact Model-driven app
Notification Type Option set Used to set warning level Model-driven app
Header Text Header text to be displayed or subject line of the email Model-driven app
Body Text Main text of the message Model-driven app
Send as email Two option Checked if notification must be sent by email Model-driven app
Send as text Two option Checked if notification must be sent by text Model-driven app

Reopen Phase

Display name Column type Description Platform use
Capacity Limit Percentage Decimal Number Used to scale available capacity in a school Model-driven app
Description Text Used to document details about the reopen phase Model-driven app
Name Text The name of the reopen phase Model-driven app
Index Whole Number Used to provide a logical sequence to reopen phases Model-driven app
Process Stage Lookup Used to associate a reopen phase to the correct business process flow stage Model-driven app

Reopen Phase Transition

Display name Column type Description Platform use
Name Text The primary identifier of the record Model-driven app
School Lookup Used to associate the applicable school Model-driven app
Proposed Reopen Phase Lookup Used to capture the reopen phase the school is attempting to transition to Model-driven app
Current Reopen Phase Lookup Used to capture the current reopen phase of the applicable school Model-driven app
Review Comments Text Used to capture notes from the review Model-driven app
Reviewer Lookup Used to associate the appropriate reviewer to the transition record Model-driven app
Review Status Option Set Used to denote the current status of the reopen phase transition Model-driven app
Summary Text Used to provide an additional context for the transition Model-driven app

Share Daily Pass

Display name Column type Description Platform use Return to School
Name Text The primary identifier of the record Portal Portal
Recipient Text Used to capture the email address of the recipient Portal Portal
Language Text Used to capture the language used in the email Portal Portal
Daily Pass Lookup Used to associate the daily pass to share Portal Portal

General Setting

Display name Column type Description Platform use
Allow Dependent Registrations Option Set Indicates if users are able to register a dependent Model-driven app and portal app
Allow on behalf of attestations Option Set Indicates if guest is allowed to register other guest Model-driven app
Allow Storing of Negative Attestations Option Set Indicates if you want to store negative attestations Model-driven app
Allow QR codes Option Set Indicates if QR codes are displayed on the pass Model-driven app
Allow Share Guest Registrations Option Set Indicates if sharing of a guest registration is available Model-driven app
Company Name Text Used to describe the solution settings record Model-driven app
School Group Lookup Links solution settings record to specific school group Model-driven app
Health & Safety Instructions Text Instructions provided to a person when making a booking Model-driven app
General Terms & Agreement Text Instructions provided to a person when making a booking Model-driven app
Guest Health Terms & Agreement Text Instructions provided to a person when registration is for a guest Model-driven app
Guest Privacy Terms & Agreement Text Instructions provided to a person when registration is for a guest Model-driven app
Name Text The primary name of the setting record Model-driven app
Resources Text Text Instruction provided to resources when registering to the portal Model-driven app and Portal
Instructions for Negative Attestations Text Instructions displayed after the user selects the I disagree button on the Health Terms & Agreement page. Model-driven app and Portal

Test Locations

Display name Column type Description Platform use Return to School
Name Text Name of test location Model-driven app and portal app Base
School Lookup School where test location is located Model-driven app and portal app Base

Healthcare Service

Display name Column type Description Platform use Return to School
Name Text Model-driven app and portal app Base

Location Schedules

Display name Column type Description Platform use Return to School
Name Text Name of the schedule Model-driven app and portal app Base
Location Lookup Associated test location that will offer the schedule Model-driven app and portal app Base
Healthcare Service Lookup Associated healthcare service at the test location for which schedule is being set up Model-driven app and portal app Base
Start Date Date Start date of the schedule Model-driven app and portal app Base
End Date Date End date of the schedule Model-driven app and portal app Base

Slots

Display name Column type Description Platform use Return to School
Name Text Name of the slot Model-driven app and portal app Base
Slot Capacity Whole Number Capacity of the slot (for example, How many appointments can be booked in that time period) Model-driven app and portal app Base
Start Time Hour Whole Number Time slot Start Time Hour Model-driven app and portal app Base
Start Time Minute Whole Number Time slot Start Time Minute Model-driven app and portal app Base
End Time Hour Whole Number Time slot End Time Hour Model-driven app and portal app Base
End Time Minute Whole Number Time slot End Time Minute Model-driven app and portal app Base

Questionnaire

Display name Column type Description Platform use Return to School
Name Text Questionnaire name Model-driven app and portal app Base
Healthcare Service Lookup Healthcare service that the questionnaire is associated to Model-driven app and portal app Base
Language Lookup Language that the questions will be displayed as on the portal Model-driven app and portal app Base

Question

Display name Column type Description Platform use Return to School
Question Text Identifier for the question Model-driven app and portal app Base
Question Text Multiline Text Question text as it will appear to the user on the portal Model-driven app and portal app Base
Questionnaire Lookup Questionnaire that the questions are associated with Model-driven app and portal app Base
Question Order Whole Number Order that the question should appear in the portal Model-driven app and portal app Base
Response Type Option Set Type of response answer, such as Yes/No, Text, Date Model-driven app and portal app Base

Health and Safety Plan

Display name Column type Description Platform use Return to School
Name Text Name of the health and safety plan Model-driven app Base
Start Date Date Start date of the plan Model-driven app Base
End Date Lookup End date of the plan Model-driven app Base
Frequency Option Set Frequency of testing for a person Model-driven app Base
Healthcare Service Lookup Associated healthcare service Model-driven app Base

Appointments

Display name Column type Description Platform use Return to School
Subject Text Subject of the appointment Model-driven app and portal app Base
Start Time Date and Time Planned start date and time of the appointment Model-driven app and portal app Base
End Time Date and Time Planned end date and time of the appointment Model-driven app and portal app Base
Person Lookup Person who was administered the test Model-driven app and portal app Base
Healthcare Service Lookup Associated healthcare service Model-driven app and portal app Base
Test Location Lookup Onsite location that a person's test will be administered at or was administered from Model-driven app and portal app Base
Actual Start Time Date and Time Actual start date and time of the appointment Model-driven app and portal app Base
Actual End Time Date and Time Actual end date and time of the appointment Model-driven app and portal app Base

Test Results

Display name Column type Description Platform use Return to School
Test Date Date Appointment date at which the Healthcare service was performed Model-driven app and portal app Base
Lab Date and Time The associated lab that will process the test specimens Model-driven app and portal app Base
Test Location Lookup Onsite location that a person's test will be administered at or was administered from Model-driven app and portal app Base
Appointment Lookup The associated appointment for the test result (blank for self-reported test results) Model-driven app and portal app Base
Walk In Option Set Yes/No flag that identifies whether the person receiving onsite test had a prior appointment Model-driven app and portal app Base
Self Reported Option Set Yes/No flag that identifies whether the test was administered onsite or self-reported Model-driven app and portal app Base
Result Option Set A test outcome that will be displayed as one of the following values: Positive, Negative, or Inconclusive Model-driven app and portal app Base
Result Interpretation Text A description of an interpretation of the test results Model-driven app and portal app Base
Result Date Date and Time Date and time for which the test result or outcome was determined Model-driven app and portal app Base
Specimen Code Text A field that labs are able to populate to allow linking a test result to a particular specimen Model-driven app and portal app Base
Display name Column type Description Platform use Return to School
Student Lookup Student contact that is associated with the parent/guardian. Model-driven app and portal app Base
Relationship type Option set Describes the relationship type between the student and parent/guardian. Available options are Parent/Guardian and Others. Default values is set to Parent/Guardian. Model-driven app and portal app Base
Parent / Guardian Lookup Parent / Guardian contact that is associated with the student. Model-driven app and portal app Base

Portal invitations

Display name Column type Description Platform use
Name Text Name of the portal invitation batch configuration Model-driven app
Max number of invitations to send Whole Number Number of invitations to send in a batch Model-driven app
Invitations in progress Two Option Indicates if the process that sends the invitations is currently running Model-driven app

Cloud flows

This section describes the different flows in Return to School and explains their purpose. These flows can be extended, used, or turned off, depending on your business requirements.

Tip

As a best practice, create an unmanaged solution to add the flows that you want to edit, and then edit the flows in the new unnmanaged solution to ensure that you don't lose your customization in case you need to update Return to School.

Flow Table Description
Access Action - Reset school access Access Action Deactivates records when past the date in "Access available date."
Access Action - Update linked case Access Action Updates linked person case through source field when record is deactivated.
Access Action - Update notification Access Action Updates the body of the linked notification when the notes change.
Access Action - Validate and create notification Access Action Checks if owner is set to linked person and creates a notification record.
Appointment - Send email confirmation Appointment Sends email confirmation after an appointment is booked
Contact - Send portal invitation Portal Invitation Sends portal email invitations in batches. Maximum number of invitations is set at 5000 each day.
Guest Attestation - Disable Earlier Pass Daily Pass When a person creates multiple passes on a single day, earlier passes will be disabled.
Employee Case - Create Access Action Person Case Creates access action blocking the person when "School Access Available" is set to "No."
Employee Case - Disable Access Action Person Case Deactivates access action linked to the person case when "School Access Available" is set to "Yes."
Employee Case – Update Access Action Person Case Updates linked access action when "School Access Available Date" or "Person Instructions" changes.
Employee Case - Update Case Contacts Case Contact Deactivates case contact records for a person if an employee case is created for the person.
Employee Visit - Name and match to booking or attestation Person Visit Sets the name of the person visit and matches a visit to bookings and attestations.
Guest Attestation - Disable earlier pass Guest Attestation Disables earlier attestations and guest registrations for that person so number of guests stays correct.
Guest Registration - Disable earlier pass Guest Registration Disables earlier registrations for that person on the same day so number of guest stays correct.
Notification - Send as email Notification Sends an email to the person when the notification is set to "Yes" on "Send as email."
Notification - Validate and set correct owner Notification Sets owner to correct user record of the person contact.
Reopen Phase - Update Capacity Reopen phase Update capacity when the capacity limits change for a reopen phase.
Reopen Phase Transition - Update school reopen phase Reopen phase transition Updates and changes the reopen phase for a school.
Share Guest Attestation - Email Share daily pass Emails the daily pass details to an email address specified from the portal
Share Guest Registration - Email Share Guest Registration Shares the guest registration details with the host and the guest.
Share Guest Registration – Email with portal link Share Guest Registration Shares the registration details with the host and the guest, but includes link to the portal to make a guest attestation.
Test Results – Send Notification Test Result Creates a notification record in English or Spanish when a test result record is created.
Health and Safety Plan – Notification Daily Notification Creates a notification record in English or Spanish when a health and safety plan daily appointment is due the next day. This flow is triggered on a recurring schedule (for example, daily at 6:00 PM).
Health and Safety Plan – Notification Weekly Notification Creates a notification record in English or Spanish when a health and safety weekly plan appointment is due the next day. This flow is triggered on a recurring schedule (for example, daily at 6:00 PM).
Health and Safety Plan – Notification Monthly Notification Creates a notification record in English or Spanish when a health and safety monthly plan appointment is due the next day. This flow is triggered on a recurring schedule (for example, daily at 6:00 PM).

Sending portal invitations in batch

Out of the box, Return to School is limited to emailing 5,000 portal invitations per day. This can be customized by changing the Maximum Value property of the Max number of invitations to send field of the Portal Invitations table and updating the Script for portal invitations validation code. See Scaling Email Flows for more information on how to scale up the Return to School email flows.

Negative attestation scenario

Some schools or school districts want to provide detailed negative attestation forms that give students, parents, and guardians instructions depending on their responses. Also, schools want school access to be managed or a case to be created depending on their responses. This can be done through Microsoft Forms and Cloud Flows. Separate licenses may be required for Microsoft Forms and Cloud Flows.

Instructions on how to set up a redirect to a Microsoft Form from the portal

  1. Open Portal Management.

  2. Select Web Templates on the left.

  3. Open “Pass” Web Template.

  4. For the window to redirect to the form upon selection of the I disagree button, add the following line of code in a script tag:

     window.location.href = "FORM URL";
    

    within the below if condition code:

    {% if guestattestations.results.entities[0].msft_attested == false %}
    

Sample screenshots of a Microsoft health check form

Attestation Health Check Form. Attestation Health Check Form second. Attestation Health Check Form third. Attestation Health Check Form fourth. Attestation Health Check Form fifth. Attestation Health Check Form sixth. Attestation Health Check Form Submission Page. Attestation Health Check Submit Response Page.

Instructions and screenshots on how to set up a flow to create a case depending on the response in the form

  1. Create a cloud flow.

  2. Configure the flow to be triggered whenever the form is submitted. For this, add a trigger to the flow “When a new response is submitted” and select the appropriate form ID in this step.

    Note: Form ID can be found in the address bar URL where the form is loaded. Once the form ID is selected, get the response details from it.

    Attestation Flow - Trigger and Flow response.

  3. Next, get the contact details based on the student information from the response.

    Attestation Flow - Get Contact Details.

  4. Get the App ID of the model app.

    Attestation Flow - Get App ID.

  5. Create the case record mapped to this contact and create a note mapped to this case.

    Attestation Flow - Create Case Record. Attestation Flow - Create Note Record. Attestation Flow - Create Note Record second. Attestation Flow - Create Note Record third.

  6. Send an email regarding the case that is created. For this, the Case URL has to be dynamically built as below.

    Attestation Flow - Send email.

Feedback about Microsoft Return to School

To provide feedback about Microsoft Return to School, visit the community page.