Gfacility

Release Notes

2026 - Q3

Release notes for 2026 Q3: automations, pages, floor maps and desk booking, analytics, maintenance plans, email to ticket and API changes.

Updated Aug 28, 2026

This is our largest release so far. Below you will find what changed in each module.

A new look and feel

The whole application has been aligned with a refreshed design, including a renewed navigation, so the product looks and moves consistently from one module to the next.

  • Individual display settings: Each user can set their own preferences without affecting anyone else, including the theme, a dark mode, the text size and the row height.
  • Guided tours: In-product tours have been added to help everyone find their way around the new layout and settings, so the change is easy to pick up.

Finding things is faster, and it is now one search instead of several: one place for every record, every action and every setting.

  • One search across every record: Find tickets, tasks, assets and other records from one place and open them in context. It has a normal keyword mode and an AI mode where you can ask in your own words.
  • Actions, settings and how-tos as well: The same search reaches every action in the system, so you can create an object, open a setting or find a how-to article from the search bar without knowing where it lives.
  • Preset quick filters: A lightning icon offers preset searches, for example a ticket by its id or a search scoped to a persona. They are context aware, so they take the module you are in into account.
  • Quick tags: Type a field straight into the search bar, like id= 10 or title=, to filter inline as you type, without opening a panel.
  • Advanced search: Narrow a search with per-field filters and operators (equals, on or before, and so on), added from a filter panel and shown as chips you can adjust.
  • Export or search further: The results of a record search can be exported, or searched again to narrow them down without starting over.

Automations

Automations are the next level up from the separate rule engines the platform used to have. One rule listens for a trigger and runs one or more actions, and the range of both is far wider than in the rules it succeeds, which makes it the engine much of the rest of this release builds on.

The automation rule editor: a ticket-created trigger with a priority condition on the left, and the action type picker on the right offering create ticket, create task, update fields, add comment, send email, send chat message, trigger AI, webhook, anonymize record and delete record.
One rule: what it listens for, the conditions that gate it, and the actions it can run. Open full size
  • Trigger on anything: A rule fires when a record is created, updated, deleted or changes status, and it can watch any field for any change, gated by any set of conditions.
  • A wide range of actions: Update any field (including assignees, workgroups and watchers), set a price, send an email, post a chat message, add a comment, create a task or a ticket, call a webhook, or hand the record to the AI assistant. For data retention a rule can also anonymise the record, keeping it but stripping its personal data, or delete it outright.
  • Across related records: An action can target a related record, so a rule on a reservation can act on its tasks.
  • Calculated dates: A date condition or value can be resolved when the rule runs, for example “24 hours before the start”.
  • Exclusive ladder: Each action in a rule can carry its own conditions, and on an exclusive rule only the first action whose conditions pass runs, so one rule can behave like an if / else-if chain instead of firing every action.
  • Run limits and failure handling: A rule can run every time its trigger matches or only once per record, and you decide whether the remaining actions still run when one of them fails.
  • Templates and a safe start: A new rule can start from a template, stays inactive until you activate it, and describes itself in plain language (“when ticket is created if priority equals highest”) so you can check it reads the way you meant.
  • Run history: Every run is recorded per rule and pruned automatically, so you can see exactly what fired and why.

Compared with the old setup, where each kind of rule lived in its own screen and did one thing, this is a single engine with, in practice, an enormous range of what you can trigger on and what you can make happen.

Worked examples

Six complete processes, each written out as a step list with its diagram, ready to rebuild in your own tenant:

Pages

Until now each user had a single homepage. Pages replace it: you can build several pages, each tailored to a role or a purpose, and your existing homepage is converted to a page automatically so nothing is lost.

The page editor: a widget panel on the left listing text, image, divider, clock, menu, page navigator, hyperlink, banner and custom HTML widgets plus table, ticket and knowledge base data widgets, beside a page being laid out with a banner, quick action cards and message lists.
Drag a widget from the panel onto the page, and the layout you arrange is the layout your users get. Open full size
  • Multiple pages: Build as many pages as you need instead of a single homepage. For example, a workplace-insights page, a service-desk page and a simpler page for end users, each showing only the information that audience needs. The possibilities are effectively endless.
  • A new page editor: Build a page by dragging widgets from a panel onto a live canvas and placing them where you want them, so what you arrange is what your users get. A page can also carry a background effect of its own.
  • More widgets: A wider set than before: text, images, dividers, a clock, menus, a page navigator, hyperlinks and banners, plus data widgets for tables, tickets and knowledge base articles.
  • Fully custom pages: When the standard widgets are not enough, a custom HTML widget lets you build the page entirely to your own design, so a page can be tailored completely if you need it to be.
  • Duplicate: A page can be duplicated as the starting point for the next one.
  • Pin and default: A page can be pinned to the navigation and a default page can be set.
  • Per-user pages: With the new permissions you can let users build and edit their own pages.

Integrations & sign in

Setting up integrations and sign-in used to be something we did for you. It now lives in the product: from one workspace you manage your own integrations, create service accounts, and configure single sign on and the other login settings yourself.

  • Self-service integrations: Connect, configure and manage integrations from the solution itself, including a custom integration for a system we do not ship a standard connector for.
  • Service accounts: Create and manage your own service accounts, with the editable name separated from the displayed name.
  • Sign in and SSO: Manage single sign on, Microsoft sign in and manual login per company, and decide which methods are allowed. More than one Microsoft tenant can be connected, with one leading tenant for room sync.
  • Health status: A status shows at a glance whether an integration is connected and working and whether it has the access it needs, so you can catch a problem before a user runs into it.

Knowledge base

As more of the platform runs on AI, the knowledge base matters more than ever: an AI assistant, and your own people, can only answer as well as the articles behind them. This release extends the knowledge base so you can keep those articles sharp and see where they fall short.

The knowledge gaps report: a weekly trend of searches, people and distinct search terms, above a table of missed search terms showing how many people searched for each, how often nothing was found, how often the result did not help, the merged spelling variants, and whether the search came from the article panel or the global search.
Searches that came back with nothing useful, grouped and ranked: your to-do list of articles to write. Open full size
  • Smarter search: Article search now ranks results by relevance and matches on the title, description, tags and classifications, handling plural and inflected wordings, so the right article surfaces even when the phrasing differs. Results can be filtered by classification.
  • Knowledge gaps report: Searches that returned nothing useful are recorded, separating a search that found nothing at all from one whose result did not help, with spelling variants of the same question merged into one gap and ranked by how many people hit it. Each gap shows where the search came from, the article panel or the global search, and a trend per day, week, month, quarter or year shows whether the articles you wrote are landing. It is, in effect, your to-do list of articles to write.
  • Article feedback: A reader can rate an article, and the feedback is summarised per article, so you can see what is landing and what needs work.
  • Usage insight: Article usage is available as listing columns, so you can see which articles carry the load.

Floor maps & desk booking

The biggest visual change in this release: the platform gets a floor map of every floor, and a desk becomes something you can book on it. Rooms and desks show a live status for the time you are looking at, in the booking form, on a wall-mounted kiosk and on the map itself.

The floor map kiosk on a wall display: a photorealistic top-down plan of a floor with meeting rooms tinted by live availability and an open workspace of desks, a sidebar holding a building picker, a room and people search, a floor list with the number free per floor, filters for availability, capacity and equipment and a live occupancy count, availability totals along the top and a time slider along the bottom.
The kiosk in the lobby: green free, red booked, grey not available, for the moment you are standing there. Open full size
  • Floor maps: Draw a plan per floor with room zones, and place desks and other objects on it, linked to their existing records. Each room and desk shows a live status for the chosen time (green free, red occupied, blue selected), with capacity, equipment and the next booking on hover.
  • Book from the map: A floor map view sits alongside the list in the booking form. Click a free tile and the booking fills in, honouring the same rules, restrictions and opening hours as everywhere else.
  • Desk booking: A desk is now a bookable object next to rooms, with a type (fixed, flex or focus), capacity, equipment and a zone. Reserve one for a full or part day, which opens the door to neighbourhood booking and occupancy insight.
  • Floor map kiosk: The same map runs full screen on a wall-mounted tablet or display in the lobby and on every floor. Pick a building and a floor and every room and desk is colour-coded live, with running totals, filters for availability, capacity and equipment, and a time slider, so anyone walking up can see what is free and find their way without signing in.

Workplace

Beyond the map, the rest of the booking experience is brought together too: recurring reservations handled natively, availability moved into reusable rules, and a long list of refinements to how a booking is made and charged.

  • Recurring reservations: A series is handled natively instead of relying on the calendar provider. It can be edited as a whole series or per occurrence, and moves, exceptions and cancellations are reconciled with Microsoft rather than duplicated.
  • Availability rules: Availability moves out of the individual item into reusable rules. A resource can carry several rules at once, each scoped to specific user groups, with its own minimum and maximum advance time, plus rules for when no location is set and for external rooms.
  • Booking templates: An administrator can shape the booking form per template, including custom fields on the booking itself, grouped into custom sections and tabs of their own, plus per-template finance labels and booking-date options defined on the template.
  • Outlook add-in and Chrome extension: The Outlook add-in and the Chrome extension for Google Workspace have been updated to follow the web app’s way of working. Settings assigned on the booking template now apply there as well, and when more than one booking template is available, you first choose the template and then make the booking.
  • Setup and breakdown time: A room can carry a setup and breakdown buffer, counted as occupied time so adjacent bookings cannot collide with prep or cleanup, with a per-booking override.
  • Signage release per type: Each reservation type controls whether a booking auto-releases when no one checks in, so a planned blockade or maintenance booking is not freed up halfway through.
  • Reservation source and no-show: Every booking records where it was made (web, mobile, Outlook, Google, signage, kiosk or integration) and is flagged as a no-show when it ends with no check-in, with a configurable grace period.
  • Mobile app: Reservations can be managed on the go from the mobile app, with the booking form, availability, recurrence, services and check-in.
  • Multiple images: A room or space can hold several images instead of one.
  • Hourly pricing: An hourly room uses the room price as its rate, with billing set to dynamic; the separate charge configuration is gone.
  • Defect reporting: A defect can be reported straight from the signage.
  • Eco score: A product can carry an eco score, available as a column and a filter in overviews.
  • Catalogue order: The catalogue order can be set, so the lower-impact options can be shown first.

Analytics

A new analytics module turns operational data into curated dashboards, built around the questions managers actually ask rather than a blank chart canvas.

  • Curated KPIs across modules: Ready-made KPIs for tickets, tasks, bookings, assets and configuration items, such as open backlog, time to closure, SLA breaches, overdue tasks, room occupancy and no-show rate.
  • Time in status: A duration layer reads the change log to measure how long a record sat in each status, ageing included, so “how long did this wait” becomes a reportable number.
  • Benchmarks: Compare a KPI against a previous period, another team or building, or an industry benchmark, and mark your own custom KPIs.
  • Richer widgets: KPI cards, sparklines, trend and comparison charts and a heatmap, plus the custom HTML widget, to build a page around them.
  • Validation: Dimension combinations are validated, so an invalid one is reported instead of failing at run time.
Weekly room occupancy, example
Mon
Tue
Wed
Thu
Fri
09:00
11:00
13:00
15:00
17:00
Quiet Busy

Ticketing & tasks

Ticketing and tasks gain a way to raise tickets straight from email, and tasks become easier to relate to one another.

  • Email to ticket: An inbound email channel can turn incoming mail into tickets automatically. Each channel has its own address and token, only accepts mail from known or authenticated senders when you require it, and is rate-limited per hour to keep a mailbox loop from flooding the queue.
  • Template-driven intake: An email channel creates the ticket from a chosen ticket template, filling the template’s own fields and taking sensible defaults from the sender where a field is derived from the requester.
  • Reply threading: A reply to a notification mail is threaded back onto the record it came from, for every entity rather than tickets alone.
  • Task dependencies and linking: A task can wait for another, and tasks can be linked between records, with child tasks visible from the parent.
  • Full task popup: The task side panel is replaced by a full popup that holds all of the task’s information in one place.
  • Inline editing: Task listings support inline editing, so you can change values straight from the list without opening the task.

AI

The Gfacility AI gets more powerful and more open.

  • Multiple providers side by side: Run more than one AI provider in the same environment, instead of being tied to a single one.
  • Newer models: Support for the latest models, with a context window up to 1,000,000 tokens for much larger inputs.
  • More usage control: Additional options to assign and cap AI usage across the company and per user.
  • MCP, both ways: Connect external tools to the Gfacility AI over MCP, and use Gfacility itself as a tool inside external AI assistants.

Inspections & maintenance

Facility operations gain structured building inspections and recurring maintenance plans, which together feed the multi-year maintenance plan.

  • Inspections: A structured inspection with defect registration, including detail fields per defect.
  • Condition scores: Defects are scored against NEN 2767 and the condition is held on the configuration item, so the current state of an asset is visible outside the inspection.
  • Maintenance measures: Recorded measures form the basis for multi-year maintenance planning.
  • Maintenance plans: Recurring preventive maintenance for assets and configuration items. A plan picks its records by hand or by condition, repeats on a date pattern, on a meter reading or on a measured condition, and generates the tasks that belong to each occurrence. Blackout windows keep planned work out of the periods you close off.
  • Long-term plan (MJOP): The multi-year forecast is built from the recorded measures and the maintenance plans, and covers assets as well as configuration items.

Space forecasting

Capture how space is used over time and model what happens next, from your own data rather than a spreadsheet.

  • Snapshots: Space and headcount are recorded over time, giving a real baseline to plan against.
  • Scenarios: Model a move, growth or reorganisation from line items per team or department, compared against the recorded snapshots.

My office days

Teams and individuals plan which days they are in the office.

  • Office day rules: A team publishes a recurring in-office pattern, materialised into concrete days ahead of time.
  • Attendance: Attendance is predicted from the pattern and confirmed by the person, with actual presence recorded per day.
  • Calendar sync: Optional per user, so office days appear in Outlook or Google Calendar as a work location.

Organisation-scoped role

Access to a record used to be close to binary. Either someone held one of the three narrow roles on it (creator, assigned to, or watcher), or they had no role and whatever “no role” grants applied across their whole organisation scope. For most customers the step from nothing to everything is too wide, so this release adds a layer in between.

  • A configurable role: An administrator defines what the role may do (read, edit, close, reassign, adjust financials and so on) rather than picking from a fixed set.
  • Bound to the profile: The role binds to two fields on the user. Their primary organisation is where it applies by default, and organisations with access lists the further organisations they can reach, which the role can either extend to or stay out of.
  • Product-wide: One configuration covers every object that carries permissions today: reservations, assets, configuration items, tickets, tasks and services.
  • Alongside the existing roles: Creator, assigned to, watcher and no role all stay exactly as they are; this sits next to them rather than replacing them.

A typical use is a service coordinator who has to pick up and reassign any ticket inside one organisation, but should stay out of the other organisations.

Others

  • Pinned columns: A column can be pinned, so it stays in view while you scroll the rest of a listing sideways.
  • View settings in one place: Choosing your columns and switching the view type have moved out of the action bar into the view settings, so everything that shapes how a listing looks now sits together.
  • Permissions: Group permissions can be compared side by side.
  • Translations: Configuration data such as statuses, types and labels can be translated from the interface, with import, export and a count per language.
  • Unified history: Ticket, task, configuration item, product, asset and knowledge base history are merged into a single log, and classifications and standalone tasks are audited as well.
  • Templates: A custom form layout per template, and templates can be compared side by side.
  • Guided tours: In-product tours are tracked per user, so a tour is not shown twice.
  • Attachments: Attachment thumbnails, and a separate permission for deleting an attachment.
  • Announcements: Announcement banners that a user can dismiss.
  • Scheduler: Live updates over websockets and configurable timeline columns.

API changes

This release adds a lot of surface and retires some. If you consume the API directly, review the breaking changes first.

Removed endpoints:

  • Per-module history endpoints are replaced by one. POST {task}/history, GET {ticket}/history, POST {asset}/history, POST {product}/history, POST {knowledgebase}/history, the configuration-item POST /history, POST {deletedEvent}/history, POST {deletedEvent}/history/users and GET meeting/{event}/history are all removed. Use GET change-log instead, gated by can:changeLog.list.
  • Per-model availability is replaced. GET and PATCH availability-rules/{modelType}/{modelId} are removed in favour of the availability-rule resource below.
  • The AI usage endpoints are replaced. GET ai/usage, GET ai/{type}/{id}/usage and GET ai/{type}/{id}/usage-list are removed in favour of ai/usage/system and ai/billing/usage below.
  • Dashboard sections are no longer their own resource. The dashboards/templates/sections resource is removed; a page’s sections are managed through the page itself.

Changed permissions (same URL, different gate):

  • Dashboard templates move from one blanket permission to per-record gates: dashboardTemplate.list becomes dashboardTemplate.browse on the index and dashboardTemplate.view,template on show, and update, duplicate and delete now bind the template (...update,template, ...duplicate,template, ...delete,template). Duplicate no longer uses create.
  • The floor map editor moves from can:locations.update to can:viewMap, and a new GET locations/booking-floors is gated by can:viewBookingFloors.
  • Restriction rule duplicate now needs can:restrictionRule.duplicate.
  • Time entries bind the entry itself, so update and delete resolve can:taskTimeEntry.update,task,timeEntry (and the ticket equivalent) rather than the parent alone.
  • Custom field tabs, sections and assignments are now gated. POST, PATCH and DELETE on custom-fields/tabs, custom-fields/sections and custom-fields/attributes/assign require can:customField.assign; they carried no permission before.
  • Template sequence now needs can:template.update,template on PATCH templates/{template}/sequence, where reordering was previously ungated.
  • AI context search now needs can:ai-context.list on GET ai/context/search, where it was previously ungated.

Changed fields:

  • Recurrence renamed. On events, recurrence_type becomes recurrence_external_type (the Microsoft or Google series role), alongside new native recurrence fields. Clients reading recurrence_type must switch.
  • Location charge fields removed. charge_type and charge_hours are gone; an hourly room’s rate is the price field with dynamic billing.
  • Location image replaced. The single image field gives way to the attachments collection, so a location can carry several images; read the primary one from the display attachment.
  • Product billing is an enum (fixed | dynamic), values outside that set are normalised to fixed, and a new eco_score field is available.
  • Availability advance moves. The per-item before / after fields now live on the availability rule as minimum and maximum advance time.
  • Dashboard templates gain created_by and allow_duplicate.
  • Error messages stay translated (i18n), so parse error codes rather than English strings.

Updated endpoints:

  • List responses can now omit columns per user. Several modules gained field-level read permissions ({module}-organization-read, {module}-organizer-read, {module}-visitor-past-read, {module}-visitor-future-read, {module}-inspection-read), and list endpoints strip those columns for users who lack them. Do not assume a column is present just because it was last release.
  • Aggregate columns are filterable. Columns built from a grouped join (workgroups, assignees, classifications, tags and similar) can now be filtered directly. Filtering them previously either failed or silently pruned the rows the aggregate summed over, so a record with several values collapsed to the one you filtered on; those filters now match the record and still return the full set.
  • New filterable and sortable columns were added across the existing list endpoints (events, configuration items, locations, products, assets, knowledge base, bookings, catering, finance, groups, organizations and filters), so saved views and grid filters have more to work with.
  • Listings prune by requested columns. Send the columns you actually display via visibleColumns[]; a request that asks for everything makes the backend resolve every custom attribute and grouped aggregate on each fetch.
  • Restriction rules now constrain the route parameter to numeric ids, so a non-numeric id no longer resolves.
  • Signage auto-release changed handler. POST auto-release now resolves to the auto-release action rather than the check-out action, matching the per-type release setting described above. The URL is unchanged, the behaviour is not.

New endpoints:

  • Automations: automation-rules with full CRUD plus {rule}/toggle, {rule}/test, {rule}/runs and a tenant-wide runs. Actions include set-price and delete-record.
  • Availability rules: a full resource (index, name-listing, show, update, duplicate, delete) plus per-model rules (GET/PATCH {modelId}) and DELETE {rule}/{modelType}/{modelId} to unlink one item.
  • Change log: GET change-log, the single history feed for every module.
  • Desk booking: desk-booking/upcoming, check-in, {bookingRoom}/check-out and {bookingRoom}/extend, plus GET locations/{location}/desk-qr.
  • Inspections and maintenance: inspection (CRUD + listing), maintenance-measure (CRUD), mjop/forecast and an export/inspections endpoint.
  • Space forecasting: space-forecast/calculate, space-snapshots, space-portfolios, space-collaboration, and space-scenarios with CRUD, compare, duplicate, export, accuracy and per-line update / reset.
  • Office days, teams and presence: teams (CRUD, mine, invites, join, leave, members, nudge, attendance, insights), attendance-intents (mine, overview, setMine, calendar-opt-in, user), office-day-rules/mine and presence-events.
  • AI: ai/plan (CRUD, tenant-settings, groups, assign to group or user), ai/quota, ai/billing/usage and ai/usage/system.
  • Security: security/audit-logs, security/blocked-accounts, security/unblock and security/sign-out-all.
  • Floor kiosk: floor-kiosk with list, create, show, update and delete.
  • Knowledge base: gap reporting (gaps, gaps/trend, gaps/variants, gated by the new knowledgebase.gaps permission), search-miss, plus per-article usage and feedback (with feedback/summary).
  • Inbound email: inbound-email-channels (CRUD, name-list, rotate-token, {channel}/emails) accepting token-authenticated mail per channel, rate-limited per hour, to create tickets. The send-email action can choose its sender address.
  • Booking templates: per-template finkeys (list, reorder, update) and custom sections, with attribute tabs and sections gated by can:customField.assign.
  • Translations: endpoints to read and write configuration translations, with import, export and per-language counts.
  • Feedback and announcements: nps (eligibility, dismiss, company-settings, store, update) and system announcements with per-user dismissals.
  • Smaller additions: catalogue-sort/{type} (get and update), GET {event}/series for series info, and PATCH user/tour-state.