Blocking meeting rooms for cleaning or preparation without extra services

Hiru Pras
Mega Contributor

Hi All,

Is there easy way to block meeting room before and after meeting start/end even if extra services have not been requested?

The requirement is to block certain meetings rooms for 30 mins before and after a booking so that clean up or preparation work can happen. But this should happen even if requestor has not added any extra services.

Any advise or suggestion to achieve this requirement?

Would it be good idea to create location blocks? Or additional reservations? It's difficult to figure of if extra services have been requested or not because it's created after reservation records have been created.

Thanks!

1 ACCEPTED SOLUTION

Arvid
ServiceNow Employee
ServiceNow Employee

Hi Hiru Prap,

If you want to add this customization, I would advise creating additional reservations (this is similar to what blocker reservations for services are using). To achieve this, you can create a BR or flow that runs after a reservation is created. This process creates the required reservations to block the space and to perform the cleaning activities.

Some notes:

- When searching for availability, the system does not take the additional reservations into account. You probably need to add this check

- When using calendar sync, validate the status and type of the reservations to ensure you will not create duplicate reservations

 

Kind regards,

Arvid

View solution in original post

10 REPLIES 10

yltsai
Mega Guru

Did you implement your solution? Will you kindly share?

Thank you.

Hiru Pras
Mega Contributor

OOB to increase/adjust the block reservation time you can use the preparation and cleanup duration for each of the workplace service item.

 

In my case, we wanted to block time even if extra services have not been selected. We are adjusting the start/end time for the availability search. For this we implemented the below solution:

1. Created a system property to map the reservation module to required before/after block duration. This can contain 0 or more reservation modules.

2. Availability search uses scripted rest api. You can look at the API to trace the function which validates start /end date time. We added few lines of code in the validate search request function to adjust the start and end time based on reservable module/system property.

3. This adjusted start/end time is passed on for search function and results are returned accordingly. This ensures that there is always gap between two reservation. There are few minor tradeoffs which the business ready to accept. It does not impact any other reservable modules as it can be easily controlled via the system property.

 

e.g. in system property we can define meeting room with 30 mins block before and 30 mins block after. When user does a search for meeting rooms for 14:00 to 15:00, the system is actually checking availability for 13:30 to 15:30. When the user books the reservation, it actually gets booked for 14:00 to 15:00. We tested this solution with different scenarios i.e. create/update with/without blockers and it works fine.

 

Hope this helps.

I appreciate your explanation for your development approaches.

I have questions for you.

Q: How and where can I find the clean-up and preparation duration?

Q for 1, Is it a customized system property? Can you share your system property?

Q for 2, what is the api? What are the code that you added to?

Q for 3, Is the Search function in the WSD Search widget?

 

Thank you,

 

Hiru Pras
Mega Contributor

Q: How and where can I find the clean-up and preparation duration?

Navigate to Workplace Case Management > Workplace services > open up a service lets say 'Catering' > Open up any of the item from Workplace Service Item tab.

You should be able to see the cleanup/prep time. This is all OOB.

HiruPras_1-1670465364216.png

 

Q for 1, Is it a customized system property? Can you share your system property?

Yes, we created it. I no longer have access to the project. but it was something like this:

JSON format: {
"module": [
{
"name": "meeting rooms",
"sys_id": "uidsufy98sd9f09sdjf",
"start_buffer": 30,
"end_buffer": 30
},
{
"name": "conference rooms",
"sys_id": "u3445gdfg8sd9f09sdjf",
"start_buffer": 0,
"end_buffer": 30
}
]
}

 

Q for 2, what is the api? What are the code that you added to?

i don't have access to the code/instance now, but i think below is the function which was overridden to check the system property and update searchRequest start and end dates:

validateAndResolveSearchRequest:

 

Q for 3, Is the Search function in the WSD Search widget?

Its Search function is not in that widget. Its kicked off from there but the actual search function is on server side.

Kaveri3
Tera Contributor

Dear Yltsai,

 

Did you implement the solution? Am new to this, can you please share detailed steps for my understanding.

 

Thanks