Event Room Approval
This concept explains the Event Room Approval process, including the auto-approval system configuration and procedures for staff to manage Event-related approvals.
Room Auto Approval depends on system configuration and proper staff member procedures when you create and submit Events for approval. The information in this article also applies to Equipment and Services, which uses similar mechanisms.
Event Approval Trigger
When you create an Event or edit the Approval field, a trigger on the Event table syncs the approval of any Auto Approve Rooms with the Event. If an Event is approved, the Rooms are approved. Similarly, if the Event is not approved, the Auto Approve Rooms are not approved. Your Room Approval Process setup determines how this works.
This is standard at all churches unless you disable the trigger. See Room Reservation, Equipment Reservation & Service Request Auto Approve in Database Triggers. Because this trigger works from the Event and not from Room Reservations, there are requirements for it to work properly:
- There must be an active Event Approval Process in place.
- Add Rooms to the Event before you submit it to a Process, that way the Event Approval triggers Room approval.
- The Room Approval Process can handle the gaps in the Event Approval Trigger.
The Stock Room Approval Process
The stock Room Approval Process captures the two known cases where the Event Approval trigger leaves a gap in the approval process. The Room Auto Approve flag means "someone will look at the Room in the context of approving the Event". You may use it mean other things, such as "we don't care if anyone looks at this Room when added to an Event", and edit this Process to fit your particular culture and practice. Therefore, it may work differently than described here:
- Room Auto Approve is set to No.
- The Room is added to the Event after the Event is already approved.
- On Submit: _Approved=0
- On Complete: _Approved=1
- Trigger Fields: Room_ID,Event_ID
Dependent Condition
((EXISTS (SELECT 1 FROM Rooms R WHERE ISNULL(R.Auto_Approve,0) = 0 AND R.Room_ID = Event_Rooms.Room_ID) OR EXISTS (SELECT 1 FROM Events Ev WHERE Ev.Event_ID = Event_Rooms.Event_ID AND ISNULL(Ev._Approved,0) = 1)))
The first part of this condition looks for Rooms that are not Auto-Approved. The second part looks for Rooms for Events that have already been approved.
This latter condition implies the church wants to know when a Room was added after it was approved. If you leave this out, a NULL Approve value for Auto-Approve Rooms is added after the Event is approved.
Steps: Use a step with the Step Type: 1 Get Approval.
Alternate Event Approval Process Configuration
Here is an alternate configuration also designed to capture the two known cases where the Event Approval trigger leaves a gap in the approval process:
- Room Auto Approve is set to No.
- You add the Room to the Event after the Event is approved.
There are two main differences between this configuration and the stock configuration: it uses two processes rather than one, and it skips the requirement to approve auto-approve rooms when you add them to an approved Event. It handles the following scenarios as described:
- If the Room is not set to auto-approve, get approval (in all cases).
- If the Room is set to auto-approve and:
- The Event is not approved (yet), ignore and let the Event trigger handle it later.
- The Event is already approved, auto-approve the room. This requires you to submit it to the process.
This requires two separate Processes. These Processes are configured as follows:
Room Request - Require Approval
- On Submit: _Approved=0
- On Complete: _Approved=1
- Trigger Fields: Room_ID,Event_ID
Dependent Condition
Event_Rooms.Room_ID IN (SELECT R.Room_ID FROM Rooms R WHERE ISNULL(R.Auto_Approve,0)=0 )
This clause checks for Room not set to auto-approve.
Steps
Use a step with the Step Type: 1 Get Approval.
Room Request - Auto Approval
- On Submit: _Approved=1
- Trigger Fields: Room_ID,Event_ID
Dependent Condition
Event_Rooms.Room_ID IN (SELECT R.Room_ID FROM Rooms R WHERE ISNULL(R.Auto_Approve,0)=1 ) AND Event_Rooms.Event_ID IN (SELECT Ev.Event_ID FROM Events Ev WHERE ISNULL(Ev._Approved,0)=1 )
The first clause checks for auto-approve and the second checks for an approved Event.
Steps: None