Skip to main content

 I need to setup event calendar which will allow Sales head / manager to authorize selected sales people to book event rooms for a trade show/ event. They could choose time slots needed. Prevent concurrent room bookings. At the end, any booked event room needs to sync to respective sales person calendar.  

 

I am planning to go for custom setup which will involve setting up  

- custom objects 

- screen flow to collect event details, select customer, timings 

- custom lwc for giving execl like screen 

 

Has anyone implemented similar requirement. Checked 'CalendarAnything' app on app exchange, license cost will be expensive.  

ThankYou.  

 

#Sales Cloud

2 answers
  1. Oct 13, 11:32 AM

    A custom build is a sound choice here. Sales Cloud has no native room-booking feature, and a couple of custom objects plus a flow cover this without another license. Here's a design that holds up well:

     

    1) Data model

    • Event Room (custom object): one record per room, with capacity, location and an Active checkbox.
    • Room Booking (custom object): Room (lookup), Sales Rep (User lookup), Start and End (Date/Time), Status (Requested / Approved / Cancelled), plus the Trade Show and Account.
    • Who can book: create a custom permission "Book Event Rooms" inside a permission set that the sales head assigns. Check it in the screen flow with $Permission. If authorization is per trade show, use a small junction object (Event + User) instead.

     

    2) Preventing double bookings

     

    Two bookings for the same room overlap when new Start < existing End AND new End > existing Start (ignore Cancelled ones).

    • In the screen flow, run a Get Records with that filter before saving, and show a friendly message if anything comes back.
    • Also enforce it on save. A screen-flow check alone can't stop two people saving the same slot at the same second. Use a before-save Apex trigger that locks the room (SELECT Id FROM Event_Room__c WHERE Id IN :roomIds FOR UPDATE), re-checks for overlaps, and calls addError(). A record-triggered flow with a Custom Error element works for the basic check, but the FOR UPDATE lock is what makes it race-proof.

     

    3) Syncing to the rep's calendar

     

    When a booking is Approved, have a record-triggered flow create a standard Event owned by the sales rep: same Start/End, Location = room name, Related To = the booking or account. Calendar sync then picks it up like any other Salesforce event. With Einstein Activity Capture, make sure event sync is turned on in a direction that sends Salesforce events to Outlook/Google. When a booking is cancelled or moved, update or delete that Event from the same flow.

     

    4) The "Excel-like" view

     

    Before building a full LWC, try the standard Lightning Calendar. You can create a calendar from any object with date fields (Calendar > New Calendar > Room Booking, Start/End fields, one list view per room) and share it with the team. If you still want a grid (rooms as rows, time slots as columns), build it as an LWC with lightning-datatable or a calendar library loaded as a static resource. Keep the save logic in the screen flow / Apex so the overlap rule lives in one place.

     

    If you found this answer helpful, please mark it as helpful.

0/9000