Why a Microsoft Bookings alternative for on-premises and hybrid environments
If your organization runs on-premises Exchange, operates under sovereign hosting rules, or works on a restricted network, Microsoft Bookings may simply be unavailable to you. The short answer is that Easy!Appointments or Nextcloud appointments can run inside your own boundary, using your own database, your own web servers and your own identity directory. Bookings is a cloud-only service, and it is not supported in federated or hybrid environments, so the question is less about features and more about where calendars, invitee details and booking records physically live and who controls them.
Start by mapping every data flow that a booking creates. A single appointment touches the staff calendar, the customer's name and contact details, the confirmation email, any reminder message and any meeting link. Write down which of those systems sit in your data center and which sit with a vendor, and which regulator or contract governs each one. Then confirm with your mail and identity teams how calendar free/busy information will be read: Easy!Appointments syncs with Google Calendar and needs a supported calendar integration for Exchange or other providers, so ask your vendor or integrator to confirm the exact protocol and version before you commit. Nextcloud, by contrast, relies on CalDAV and iCalendar, which are published standards (RFC 5545, RFC 4791), so calendar interoperability is easier to reason about on paper.
The second decision is identity. Nextcloud's LDAP app lets Active Directory users appear in Nextcloud and sign in with their directory credentials, and Nextcloud also documents OpenID Connect and SAML backends, so staff can keep one login. Easy!Appointments manages its own user accounts for providers and administrators, so plan how those accounts are provisioned and removed when staff leave. Ask your security team which control baseline applies to the system, since the answer determines hardening, logging and vulnerability scanning obligations that you will own once the platform is inside your network.
What a hybrid or sovereign constraint requires from a scheduler
A scheduler inside your own boundary has to keep booking data local, sign staff in against your directory, and exchange calendar data through open standards. The cards below set out the checks that connect these needs, along with the database, runtime and patch decisions that determine whether the system stays supportable.
Data stays inside the boundary
Customer names, contact details, notes and appointment history are stored in the MySQL database and file storage you run, so the first check is where that database, backups and application logs physically live. Confirm that no booking page, reminder email or calendar sync sends invitee data to a third-party service you have not approved. Easy!Appointments can integrate with Google Calendar, so decide whether that sync is permitted for your data classification before enabling it.
Local identity through LDAP or SSO
Staff sign-in should come from your Active Directory or identity provider, not from separate scheduler accounts that drift out of sync. For Nextcloud, the LDAP app lets directory users appear in the instance and log in with their directory credentials, and OpenID Connect and SAML backends are also documented. Confirm which of these your scheduler supports, since Easy!Appointments authentication options should be verified against its current release before you commit.
Calendar interoperability through CalDAV
Staff calendars on-premises usually need to be read and written by standard clients, not only by the booking tool. CalDAV, defined in RFC 4791, extends WebDAV so calendar data can be accessed and shared, and it carries iCalendar objects defined in RFC 5545. Test that free and busy data and appointment events round-trip correctly with your mail client and mobile devices before you rely on them for staff schedules.
Supported database and PHP runtime
Each platform sets its own runtime floor, and an unsupported stack is a risk you carry alone. Easy!Appointments requires PHP 8.2 or later with MySQL, and Nextcloud 35 recommends MariaDB 11.8 or PostgreSQL 18 with PHP 8.5. Ask your platform team to confirm that these versions are available through your approved operating system repositories, and check that they match the vendor's current requirement list before you build.
Patch lifecycle and upgrade path
Scheduling tools touch personal data, so an unpatched release becomes a compliance finding. Nextcloud publishes a major version every four months, supports each for one year, and does not allow skipping major releases, so each upgrade is a planned step with a backup beforehand. Agree in writing who applies monthly maintenance releases and who tests third-party apps before each upgrade.
Framework scope before controls
NIST SP 800-53, the FBI CJIS Security Policy, NIS2 and ADA Title II apply only when the organization falls within their scope, such as a federal system, criminal justice data, an essential public administration entity or a state or local government. Confirm your scope with counsel or your compliance lead before adopting those control sets. Where they do apply, the scheduler's encryption, vulnerability scanning and web accessibility obligations become concrete requirements to evidence.
Which open-source option fits which hybrid environment
Easy!Appointments fits organizations that need customers to book services with named providers, with the scheduler running entirely inside their own boundary. It is a PHP application backed by MySQL, served by Apache or Nginx, so it can sit on an on-premises server or in a sovereign hosting zone without a SaaS dependency. The code is GPL v3.0, and the current release line requires PHP 8.2 or later.
- Hosting footprint: The application needs a web server, PHP 8.2 or later and a MySQL database that you operate and back up yourself.
- Calendar sync: Google Calendar synchronization is a built-in feature. Confirm how, or whether, it works with Exchange or on-premises calendars, because we have not confirmed a native Exchange connector.
- Identity: Staff and customer logins are managed inside the application. Confirm whether directory single sign-on is available in your release before relying on it.
- Extensions: SMS, payments, reports, reminders and other third-party integrations are described as custom development, which means a scoped build cost.
- Support model: Community support runs through a Google group, GitHub and Discord, while installation, upgrades and migration are sold as paid Premium Services.
Confirm the Exchange and directory requirements with the Easy!Appointments maintainer before you commit, since they decide whether the tool can live fully inside your network.
Nextcloud appointments suit organizations that already run Nextcloud for files and calendars and want booking inside the same server. Because the server is licensed AGPL-3.0 and can be hosted on your own infrastructure, it keeps invitee and calendar data inside your boundary. Its LDAP app lets Active Directory users appear in Nextcloud and log in with directory credentials, and OpenID Connect and SAML backends are documented for federated identity.
- Directory login: The LDAP app supports Active Directory users, and OpenID Connect and SAML are documented authentication backends. Test these against your own identity provider before rollout.
- Upgrade rules: Nextcloud does not allow skipping major releases, so you must move one major version at a time, back up before each upgrade and disable third-party apps until they are confirmed compatible.
- Lifecycle: Each major version is supported for one year through monthly maintenance releases, so plan a recurring upgrade calendar.
- Database and PHP: Current requirements recommend MariaDB 11.8 or PostgreSQL 18 and PHP 8.5, with Oracle only available under an enterprise subscription.
- Enterprise options: Nextcloud GmbH sells Enterprise tiers with longer maintenance and support, and the pricing page sets a 100-user minimum.
Check whether the appointment features you need exist in the Nextcloud release you will run, and confirm the upgrade path against the maintenance schedule before committing.
Cal.diy is the MIT-licensed community fork of Cal.com with enterprise code removed. Its README strongly recommends self-hosting only for personal, non-production use, so it is not the choice for a department-wide or regulated booking service. It can still help an individual or a pilot test booking flows before a production decision, but the team features that matter to a shared service are not part of it.
- Licence: The fork is MIT licensed, so the code can be used freely, but licence terms do not replace a production support decision.
- Removed features: Enterprise code is removed, so organization-wide SSO and SCIM provisioning available in Cal.com's hosted Organizations tier are not available in the fork.
- Non-production advice: The maintainers recommend it for personal use, so a regulated deployment would rely on code they do not recommend for production.
- Calendar connections: It is built around personal calendar connections rather than shared service calendars for multiple staff.
- Pilot use: A short evaluation on a single test instance can show what booking pages look like before you decide.
If you need a production booking service inside a hybrid environment, choose Easy!Appointments or Nextcloud and treat Cal.diy as a sandbox only.
How to deploy self-hosted scheduling inside your boundary
This sequence takes a scheduling platform from runtime confirmation to a tested, backed-up instance that authenticates staff against your directory and sends mail through your own servers. Each step closes with a check you can verify before moving on.
Confirm the target runtime and platform
Decide between Easy!Appointments and Nextcloud appointments before any server is built. For Easy!Appointments, confirm PHP 8.2 or later, a MySQL database, and Apache or Nginx on your approved operating system image. For Nextcloud 35, confirm the recommended MariaDB 11.8 or PostgreSQL 18, PHP 8.5 (8.3 and 8.4 are also supported), and Apache 2.4 or nginx with php-fpm. Ask your platform team whether your security baseline permits these versions and whether an internal package mirror holds them. Done when a signed-off version matrix exists and every component is confirmed against the current vendor documentation, not an older copy.
Build the database and web tier inside your network
Provision the database server and application servers in your own data center or private cloud subnet, with no direct inbound path from the internet. Create a dedicated database and account for the scheduler, restrict access to the application tier only, and place a reverse proxy with TLS in front of the web server using certificates from your internal certificate authority. For Nextcloud, follow the installation method your team has approved, and confirm whether Nextcloud All-in-One fits your container policy. Done when the install URL loads over internal TLS and the database accepts connections only from the application subnet.
Connect local directory identity
Connect staff accounts to your on-premises Active Directory or LDAP directory so administrators and providers sign in with existing credentials. For Nextcloud, the LDAP app lets directory users appear in the instance and log in with their directory credentials, and OpenID Connect or SAML backends are also documented. Confirm with your identity team which option your federation setup supports, whether service accounts with read-only bind rights are approved, and how leavers are removed. Done when a test provider can sign in with a directory account and a disabled account is refused.
Integrate calendars and mail with your mail server
Connect provider calendars and outbound notifications to the mail and calendar systems you actually run. Easy!Appointments documents synchronization with Google Calendar, so confirm whether an on-premises Exchange or other calendar server can be reached through a supported path or a custom integration. Nextcloud's calendar uses CalDAV, defined in RFC 4791 and built on iCalendar data from RFC 5545, which is the standard you should check any Exchange or third-party connector against. Confirm the SMTP relay host, sender identity, and whether invitations must carry your domain's signing. Done when a test booking creates a calendar entry on the correct provider calendar and a confirmation email arrives through your relay.
Harden, configure and test the instance
Apply your hardening baseline to the web server, database, PHP settings and file permissions, and set up the monthly vulnerability scanning your policy requires. Restrict administrative pages to a management network, enable audit logging, and remove sample data. Test the booking flow end to end with a non-production calendar, including cancellation, reschedule and reminder paths. For regulated environments, record this configuration as evidence for your assessor, but note that DeployOpen prepares controls and evidence and does not issue certifications. Done when the test plan passes and the configuration record is stored with your change records.
Take a verified backup before every change
Back up the database and the application files together, then test that a restore works on a separate host before relying on the backup. For Nextcloud, the upgrade documentation requires a backup before every upgrade, so make this a standing gate in your change process. Store copies in a location the scheduling host cannot overwrite, and record who owns restore authority. Done when a restore test on an isolated host reproduces a working booking page and the backup schedule is recorded in your operations runbook.
Plan upgrades one major Nextcloud version at a time
Track the Nextcloud release schedule and plan upgrades in sequence, because Nextcloud does not allow skipping major releases. Nextcloud 35 was released on 16 September 2026 and is supported until September 2027, Nextcloud 34 until June 2027, and Nextcloud 33 until February 2027, while Nextcloud 36 is scheduled for 17 February 2027. Before each step, back up, confirm that third-party apps are compatible, disable them if not, and test in a staging copy. For Easy!Appointments, confirm the upgrade path for the version you run, since 1.6.0 was published on May 27, 2026 and 1.6.1 is in beta. Done when the staging upgrade passes and a dated runbook entry records the production change.
Confirm support and handover responsibilities
Agree in writing who patches the operating system, the database, the web server and the application, and who responds when a booking fails. Easy!Appointments support runs through a Google group, GitHub and Discord, and its author sells premium services for installation, upgrades, migration and support. Nextcloud Enterprise is sold in Standard, Premium and Ultimate tiers with a 100-user minimum, and you should ask whether your organization needs the maintenance lifecycle and response times those tiers describe. DeployOpen plans and implements from a written, fixed scope and offers ongoing support as a retainer. Done when a responsibility matrix is signed and the on-call contact is listed in your runbook.
Evidence auditors and regulators ask for under this constraint
When Bookings is replaced inside your own boundary, the evidence you hand over shifts from a vendor's attestations to records you produce yourself. The cards below cover the artifacts assessors usually ask for, and each one should be traceable to the same self-hosted Easy!Appointments or Nextcloud deployment. DeployOpen prepares this evidence, but auditors and certification bodies issue any assessment or certification.
Data flow and trust boundary diagrams
Draw where booking data, invitee details and calendar sync traffic move: the browser, the web server, the MySQL database, the mail relay and any Google Calendar connection. Mark each crossing of the boundary and the protocol used, such as CalDAV or iCalendar exchange. Assessors use this to confirm that customer data never leaves the approved network unless a documented, approved path exists. Check that the diagram matches the running configuration, not the original design.
Identity configuration and directory integration records
Record how staff and administrators authenticate: local accounts, LDAP or Active Directory binding, or OpenID Connect and SAML backends if you use Nextcloud. Keep the bind account scope, group mappings to roles, and the process for disabling leavers. Auditors typically test whether a removed employee loses access to the booking admin panel and to calendars within a defined period. Confirm the exact directory integration with your vendor or implementer, because support differs between Easy!Appointments and Nextcloud.
Backup and restore test records
A backup only counts as evidence after a restore has been run. Keep the backup schedule, the scope (database, uploaded files, configuration file and any Nextcloud data directory), the storage location and the dated results of at least one restore into a separate environment. For Nextcloud, the upgrade guidance expects a backup before every upgrade, so store those backups with the change records. Ask your auditor which retention and test frequency they expect, since none is set by the platforms themselves.
Patch and version records against the lifecycle
Keep a dated inventory of PHP, MySQL or MariaDB, the web server, Easy!Appointments or Nextcloud, and every third-party app. Compare each version with its published support window. Nextcloud 34 is supported until June 2027 and Nextcloud 33 until February 2027, and it does not allow skipping major releases, so a version history with one-step upgrades is itself evidence. Easy!Appointments 1.6.0 was published on May 27, 2026, so record which release you run and why.
Vulnerability scan results and remediation tracking
Keep authenticated and unauthenticated scan output for the web application, the server operating system and the database, with the date and scanner version on each report. Pair every finding with a remediation decision, a fix date or a documented risk acceptance. Regulated frameworks that set scan frequency, such as the monthly vulnerability scanning cited for FBI CJIS Security Policy v6.1, change how often these reports must exist, so confirm the frequency that applies to you before setting a schedule.
Questions buyers ask before choosing a self-hosted scheduler
What does a self-hosted scheduler cost, and which parts are one-time or recurring?
The software itself has no license fee in either option: Easy!Appointments is GPL v3.0 with no recurring fees or booking commissions, and Nextcloud Server is AGPL-3.0. The recurring costs sit elsewhere: the servers or virtual machines you run, the database and mail relay, backups, and the staff time to patch and upgrade. The one-time costs are installation, integration with your directory and mail, and customization such as reminders or payments. Easy!Appointments' author sells Premium Services for installation, upgrades, migration, support and customization, so ask for those as separate line items. If you choose Nextcloud Enterprise, the vendor's list prices are per user per year and apply from a 100-user minimum: the pricing page lists 71.29 euros for Standard, 104.99 euros for Premium and 204.75 euros for Ultimate, with lower rates from 200 users. Ask any partner to split the quote into setup, integration, recurring support and internal labor.
How long does an on-premises scheduler deployment take, and what drives the timeline?
No researched duration exists for this deployment, so confirm the timeline against your written scope rather than a generic figure. The main drivers are how many services, providers and calendars you must map, whether Active Directory or LDAP sign-in is required, how your Exchange or other mail server is reached from inside your network, and whether the target platform already has a database and reverse proxy. Easy!Appointments needs PHP 8.2 or later, MySQL and Apache or Nginx, and its install is a database, file copy, configuration edit and web installer. Nextcloud adds an upgrade path that must step through one major version at a time, with a backup before each step, so an upgrade plan belongs in the timeline. Ask for milestones covering the test environment, identity and mail integration, user acceptance testing and cutover.
What must our internal team provide before a self-hosted scheduler can go live?
Your team owns the access and the decisions that an outside implementer cannot make alone. Expect to provide directory access for the LDAP or Active Directory bind account if you want staff to sign in with their existing credentials, the Nextcloud LDAP app documents how directory users appear and log in. You will also need mail server details: the SMTP host, sending address, authentication method and any relay rules for confirmation and reminder emails, plus calendar access for sync. A database administrator should own the MySQL, MariaDB or PostgreSQL instance, including backups and restore testing. Nominate a business owner for the booking rules and a security contact for the hosting boundary. Ask any implementer to list these inputs in the written scope so they are confirmed before work starts.
Can our own IT staff install and run a self-hosted scheduler without outside help?
Yes, a capable internal team can install Easy!Appointments or Nextcloud, but the answer depends on skills you already have. Easy!Appointments is a PHP and MySQL application installed from its repository, and its community support runs through a Google group, GitHub and Discord. Nextcloud is larger: its requirements list MariaDB, PostgreSQL, PHP 8.5 or 8.3 and 8.4, and Apache or nginx with php-fpm, and the official Nextcloud All-in-One installer bundles caching, backups and antivirus. The work that tends to stall internal teams is not the first install but the recurring operations: monthly patching, major upgrades on the published four-month cadence, backup restore tests and custom integration. Compare the cost of training and on-call coverage against a fixed-scope engagement that includes handover documentation, and ask for a retainer if you want continuous upgrades.
How do Easy!Appointments premium support and Nextcloud Enterprise tiers differ?
They are different kinds of support, and neither is required to run the software. Easy!Appointments is free and its author sells Premium Services for installation, upgrades, migration, support and customization, which you buy as scoped work. Nextcloud Enterprise is a subscription from Nextcloud GmbH, sold in Standard, Premium and Ultimate tiers with a 100-user minimum. According to Nextcloud's pricing page, Standard includes one year of maintenance, Premium adds a maintenance lifecycle of five or more years plus extended support hours and clustered instance support, and Ultimate adds support up to 24/7 with response times down to one hour. Enterprise is priced per user, while Easy!Appointments support is priced by the work. Ask which option gives you the response times and lifecycle your risk team requires in writing.
Does a self-hosted scheduler meet FedRAMP or CJIS requirements on its own?
No. Software cannot be FedRAMP authorized or CJIS compliant by itself, and running it inside your boundary does not confer either status. FedRAMP applies to cloud products and services that handle federal information on behalf of an agency, and systems used only for a single agency's operations on cloud infrastructure are out of scope under the M-24-15 rules. CJIS Security Policy version 6.1, effective 26 June 2026, requires FIPS 140-3 certified modules or FIPS 197 AES with at least 256-bit keys for criminal justice information in transit and at rest outside physically secure locations, plus vulnerability scanning at least monthly. Those controls come from your encryption, hosting, logging and scanning design. DeployOpen prepares systems, controls and evidence for compliance assessments, but independent auditors and certification bodies issue the determination. Confirm your applicable baseline with the agency or program office first.
Which compliance baseline should we confirm before hosting bookings with personal data?
Confirm the baseline with your legal, security and procurement owners before you choose a platform, because each one changes the controls. Federal and defense work points to NIST SP 800-53 Rev. 5 and SP 800-53B baselines, which select 149 controls at low, 287 at moderate and 370 at high, and to 32 CFR 2002.14(h)(2) for controlled unclassified information on non-federal systems. Defense contractors seeking CMMC Level 2 may store CUI in a cloud service only if it meets FedRAMP Moderate or equivalent requirements. Public bodies in the EU should check NIS2 scope, which covers central government entities regardless of size. Accessibility is a separate test: state and local government booking pages must meet WCAG 2.1 AA from 26 April 2027 for entities serving 50,000 or more people, and from 26 April 2028 for smaller entities and special districts. Ask for the control mapping in the written scope.
What changes for users, administrators and the help desk
The first change users notice is the address they book from. Bookings pages sit under Microsoft's domains, while Easy!Appointments or Nextcloud appointments publish booking pages on your own host, so every link in email signatures, websites and intranet pages needs to be updated and the old Bookings URLs need a planned retirement date. Staff sign in through your local directory rather than a Microsoft 365 account. Confirm with your identity team whether Nextcloud will authenticate against Active Directory through its LDAP app, whether it will use OpenID Connect or SAML with your existing identity provider, and whether Easy!Appointments will be reachable only from the internal network. Customers will also see different confirmation and reminder emails, because the sender address, templates and mail relay are now yours to configure. Test every message in a staging environment and ask the help desk to keep a copy of the old wording for customer questions in the first weeks.
For administrators, the biggest shift is operational ownership. Bookings is run by Microsoft, but a self-hosted booking server is run by your team or a partner: the PHP runtime, the database, the web server, TLS certificates, backups and monitoring all become line items with named owners. Nextcloud publishes a new major version every four months and expects administrators to move one major version at a time, backing up before each step and disabling third-party apps until they are confirmed compatible, so budget that cadence into your change calendar. Easy!Appointments has its own release cycle, and its 1.6.1 release is in beta, so test updates before applying them. Decide who receives alerts when a booking page or mail relay fails, and write down the restore procedure before go-live.
The help desk needs a new first-line playbook. Common tickets will move from "I cannot see my Bookings calendar" to questions about local accounts, password resets handled by your directory team, and time zone or calendar sync issues with the connected calendar. Agree which tier handles booking page outages, which tier handles lost or duplicated appointments, and who can change a provider's working hours. If you use an implementation partner, ask in the written scope who performs upgrades, restores and after-hours response, and whether that support is a fixed engagement or a retainer. Do not assume these tasks transfer automatically from the Microsoft service desk.
How DeployOpen deploys scheduling inside a restricted boundary
DeployOpen plans, implements, hardens, documents and supports self-hosted open-source platforms inside the client's own infrastructure, including air-gapped networks. For Microsoft Bookings alternatives in on-premises and hybrid environments, we start by mapping which booking flows, identity sources and mail systems must stay inside your boundary before choosing between Easy!Appointments and Nextcloud appointments.
How we scope
- Engagements are fixed-scope, with scope, deliverables and timelines agreed in writing before work starts.
- The written scope lists which booking pages, services, providers and reminder emails move to your own servers.
- Scope also records how staff sign in, whether through local LDAP or Active Directory, and which mail relay sends confirmations.
How we build
- We install Easy!Appointments or Nextcloud appointments in your own cloud account, data center or air-gapped network.
- Integration work covers calendar sync, directory-based sign-in, and mail routing that stays on your internal network.
- We test booking, cancellation, reminder and access-control paths, then document the configuration and the results of those tests.
How we hand over
- Handover includes architecture notes, configuration files, runbooks and the backup and restore procedure for the booking database.
- We document the upgrade path, including the one-major-version-at-a-time rule for Nextcloud and the PHP and database versions in use.
- Your team receives the evidence needed for internal reviews, which DeployOpen prepares but auditors and certification bodies assess.
How we support
- Ongoing support, upgrades and continuous testing are available as retainers after handover.
- Retainers can cover patching, backup verification, upgrade planning and re-testing after changes to identity or mail systems.
- Ask any provider to confirm in writing who handles security patches, out-of-hours response and version support windows.

