New: Route emails to specific rotations via Outlook categories
You can now assign one or more Outlook categories to a rotation and have CK route incoming emails to that rotation based on the categories already on the email. When an email arrives carrying a ck-* category tag, CK picks the matching rotation before falling back to the team's primary rotation. This gives teams that already organise their mailbox by Outlook category a way to align case routing with their existing categorisation.
The Outlook categories field is configured in the rotation admin alongside issue categories. A rotation must have at least one of the two unless it is the team's primary catch-all rotation.
Improved: Reopen D+ ticket when an email is moved to a resolved case
When you move an email into a case whose D+ ticket has already been set to Resolved, the D+ ticket is now automatically reopened with the note "Ticket wiedereröffnet: E-Mail hinzugefügt". This mirrors the existing behaviour for inbound email import and ensures that fresh activity is visible to colleagues working in D+, instead of an email landing silently on a closed ticket.
Cases
Improved: Better handling of future and past tenants
The way CK selects occupants when you add a unit to a case — and when you create an ERP ticket or work order for it — has been reworked. Because D+ does not always set move-out dates reliably, former tenants used to be attached alongside the current one when adding a unit, and the unit card sometimes showed the wrong name as a result. If you explicitly chose a former tenant when drafting an ERP ticket or work order, that selection could also be silently dropped.
Now the selector works at the level of an individual occupancy: adding a unit attaches the property, the unit, and the specific occupant together as one consistent triple. Former tenants you explicitly select on an ERP ticket or work order are preserved through to execution. The execute path additionally deduplicates D+ duplicate-Einheit records by unit number and contact, so a unit that exists multiple times in D+ no longer appears multiple times on the case after execution. Cases linked before this change keep their existing occupants without any action on your part.
Changed: Service provider validated before executing a work order
Executing a work order now validates the service provider — together with building, trade, booking text, and contact person — before any backend work begins. The Execute button in the chat dialog stays disabled until all required fields are present, with a tooltip explaining what is missing. Work orders no longer end up stuck In Progress because validation rejected them after the status was already saved.
Changed: D+ ticket creation errors show readable details
When D+ rejects an ERP ticket create or update, the error you see in CK now includes the actual D+ message plus human-readable names for the entities involved (instead of internal UUIDs). Generic "could not save" toasts have been replaced with the underlying detail returned by the server for ERP ticket execute, work order execute, and phone call execute.
Gustav AI Assistant
New: Upload multiple files in a single Gustav message
Gustav chat now lets you stage several files in one message instead of sending them one at a time. The composer shows a row of staged attachments with clear states for one file, a few files, many files, and the per-message ceiling. You can ask Gustav to compare, summarise, or analyse the batch as a whole.
New: Gustav can show inbound emails in chat
Asking Gustav about emails on a case (for example, "what emails came in last week?") now returns proper email cards instead of a plain text list. Date filters like "in the last 7 days" work correctly even when you only specify a date and not a time, and emails without a subject line no longer cause an empty result.
Improved: Multiple drafts in one turn open as interactive cards
When Gustav produces two or more drafts of the same type in a single turn — for example, three email drafts or two ERP ticket drafts — they now appear as a list of interactive draft cards rather than a static, read-only list. Each card opens its draft for review and execution, and the draft status is shown correctly as Draft instead of Open.
Improved: Stricter entity ID handling in Gustav chat
If a message references an entity ID that does not resolve — because it belongs to another team, has been deleted, or contains a typo — Gustav now surfaces a clear error instead of silently dropping the reference and continuing. This makes the developer-console and admin-side chat behave the same way as autonomous Gustav: visible errors instead of silent partial success.
Improved: User text is preserved when uploading a file
The text you typed before uploading a file no longer disappears from the input box. Sending a message with both text and an attachment now works the same way whether you type first and then attach, or attach first and then type.
Improved: Email card tooltip shows the full address pair
When an email is rendered in a case and one side of the address pair (sender or recipient) is matched to a contact while the other is not, the tooltip now shows the full sender-to-recipient pair instead of a fragment that started with an arrow.
ERP Tickets
New: Multiple occupants per property auto-filled on the ticket
When you select a property with more than one occupant for an ERP ticket, all of those occupants are now auto-filled into the ticket form. Current occupants come first, followed by historical ones. Previously only one occupant per property was added, and you had to re-add the others manually. Work orders are unchanged because D+ accepts only a single occupant per work order.
Improved: Status code and status text stay consistent in D+
When CK changes the status of an ERP ticket, it now sends the status code and the status text together to D+. Previously the code was updated but the text kept its prior value, which produced rows in D+ where the code said "closed" while the text still said "Offen". This affected status changes from the case view, draft execution, and Gustav.
Bug Fixes
Tenant card opening twice in Gustav chat: Clicking a tenant card opened two stacked detail dialogs at once. The card now opens its detail dialog cleanly the first time.
Auto-reply going to a similar but wrong tenant: When D+ returned several contacts for the same email lookup, the wrong tenant could occasionally be selected (for example, an auto-reply addressed to "Wolf" that was instead delivered to "Siegmund"). Tenant resolution now prefers an exact match on the primary email and falls back to the secondary email only when that fails.
Auto-reply persists the original recipient address: When an auto-reply or imported email action was created, CK previously copied the resolver's contact email into the action's recipient fields. If the resolver picked the wrong contact, the email could go out to the wrong person. The action now preserves the original envelope addresses, so manual sending matches what was on the inbound email.
Building and unit search timing out on long inputs: Searches like "Oberfeld 11 Kundl" or similar mixed location queries no longer time out. The same fix applies to the property and email search fields.
Future tenants appearing as current occupants: Future-dated occupancies (start date after today, no end date) no longer leak into the "current occupants" list.
Work orders stuck "In Progress" after validation failure: A failed service-provider validation no longer leaves a work order in In Progress state. The check now runs before any status change is saved.
Stale building promoted onto a case during execute: If you changed the building on a case after drafting an ERP ticket or work order, executing the draft no longer promotes the old building back onto the case. Only entities that share the case's client are promoted.
Portrait phone photos cropped at top and bottom: iPhone photos taken in portrait mode are no longer cropped when CK normalises EXIF orientation, so signatures on photographed Kündigung forms remain fully visible.
Executing a work order from Gustav chat with only a draft ERP ticket: Trying to execute a work order from the chat when the linked ERP ticket was still a draft used to produce an internal error. Gustav now shows a translated message explaining that the ERP ticket needs to be executed first, and the Execute button is disabled with a banner instead of crashing.
Tenant search restored child/parent visibility: After the recent two-box building search rework, child buildings stopped appearing under their parent buildings in the initial tree. They now appear correctly again.
Multi-rotation admin form validation: An admin can now save a rotation that has Outlook categories but no issue categories, as long as the rotation has at least one of the two (or is the primary catch-all rotation).
Related Articles
Round Robin Case Assignment — How rotations and assignment work
Linking Entities to Cases — Buildings, units, and occupants on a case
Creating ERP Tickets — ERP ticket creation and D+ sync
Creating Work Orders — Work order creation and Gewerk selection
Inbound Email Monitoring — Email processing and auto-reply
Gustav in Cases — Using Gustav for case-related tasks