Cases
New: Redesigned Real Estate Selector
The Real Estate Selector — used when linking buildings, units, and occupants to a case or when starting a new communication — has been rebuilt with two separate search boxes:
A Location box for address, building number, city, or unit number
An Occupant box for occupant name, email address, or company
You can search in one or both boxes at the same time. Numeric queries like "6020 Innsbruck" are now correctly handled as postal-code-plus-city, and searches across email fields work even without an @ sign — a partial name fragment will also match email addresses that start with it.
Results can be filtered with a new collapsible panel above the list:
Exclude parking (on by default)
Include vacant units
Include future tenants (chips shown in blue)
Include former tenants (chips shown in outlined gray)
A toggle below the search boxes switches between showing buildings only and showing all entity types. A second toggle lets you sort unit results by relevance or by unit number.
New: Case-level entity management
The way buildings, units, and occupants are managed on a case has been redesigned. Key changes:
Case-level vs action-level separation: Entities linked to a draft work order or ERP ticket stay on that draft until the action is executed. On execute, they are promoted to the case entity pool. Your drafts no longer pre-populate the case with entities that may not belong there.
Usage badges: Each entity row on the case now shows clickable badges like ERP Ticket Draft or Work Order Draft. Clicking a badge jumps to the Workflow tab and opens the action drawer so you can see exactly where the entity is being used.
Building type and billing unit tooltips: Hover a building to see its type (WGG, WEG, MRG) and billing unit (VEH) code.
New: Remove entities with warning instead of hard block
When you remove a building, property, or occupant from a case, the system previously blocked removal if any executed action still referenced it. Now you see a warning dialog that lists the actions referencing the entity — with Ticket: or Auftrag: prefixes and icons — but the confirm button is always available. You decide whether removal is appropriate.
Entities referenced by draft actions are automatically cascaded off those drafts when you remove them from the case.
Improved: Entity pool handles multiple buildings and child billing units
When a case has more than one building, all of them are now shown in the entity pool (previously only the first). Units are grouped under the correct building. If a building has child billing units (Unterobjekte), you can now swap to a sibling billing unit with a single click on the "VEH" chip — useful when D+ expects a specific child VEH rather than the parent.
When a building is referenced by an executed action, it is locked — swap and remove buttons are disabled with a tooltip explaining why. Swapping to a sibling VEH remains available because it is a swap rather than a removal.
Improved: Building detail dialog shows units and occupants
Buildings with many units now show the first ten and a Show all X units button. Each unit row displays the current occupant's name next to the unit identifier.
Improved: Property detail dialog shows contact info
Property details now include the occupant's email address, phone, and mobile number alongside the tenant name.
New: Adding a unit auto-attaches its parent building
If you add a unit to an empty case from the search empty state, the parent building is now attached automatically. Previously the property and occupant were added but the building was not, which left the property orphaned in the UI.
New: Server-side unit search inside a building
When adding a unit to an existing building on a case, the search now runs on the backend instead of filtering a capped list on the client. This fixes two problems: buildings with more than 50 units had their tail invisible to the client filter, and the new communication form sometimes returned dozens of unrelated rows.
Work Orders
New: Work order type and cost estimate pre-filled
When Gustav drafts a work order, it now pre-fills the work order type from your team's default selection and adds a cost estimate (Auftragssumme) with price-range guidance. Previously the work order type was always empty on drafted work orders.
Changed: Trade (Gewerk) picker validates against building type
Every trade in D+ is catalogued per Objekttypus (building type). Previously the picker collapsed duplicates by rendered label, which occasionally caused work orders to reference the wrong type-variant trade.
The picker now filters to trades that match the building's Objekttypus exactly, or that are configured for any type ("catch-all"). If the building has no Objekttypus configured in D+, a clear message now points you to have your D+ administrator set it. Execute-time mismatches are rejected with a detailed error instead of silently saving a wrong trade.
Changed: D+ receives both parent and child billing unit IDs
Some D+ tenants have a configuration where VEH 0 (the parent billing unit) is always added to tickets. Previously, selecting only a child VEH (for example VEH 1) would sometimes be overwritten by D+ with VEH 0. CK now sends both the selected child and its parent to D+, so your selection is preserved alongside D+'s required VEH 0.
Improved: Send retry on temporary Exchange errors
When your Exchange server returns a temporary error (for example, a 5xx from a reverse proxy), email send and reply now retry automatically up to three times over ~180 seconds. If the final attempt still fails, the email action is reset to Draft and a clear "temporarily unavailable" message is shown, so you can retry without losing the draft. Previously the action was marked Canceled with no retry path.
Improved: Auto-reply goes to the correct recipient on forwarded emails
For emails forwarded from a noreply or system sender, CK now infers the correct contact address from the email body and uses it for auto-reply and email drafts. Noreply addresses are explicitly rejected as reply targets.
Improved: Dienstleister tab shows email and phone
The Dienstleister (service provider) list now includes dedicated Email and Phone columns, using the preferred contact chain (email/email2, phone/phone_mobile/phone2/phone_mobile2) so populated values are shown even when primary fields are empty.
Bug Fixes
Work orders silently canceled on multi-Mandant buildings: When a building's trade was defined under more than one D+ Mandant, the work order was silently set to Canceled on creation. The picker and execute path now scope the trade search to the correct client, so these work orders create cleanly.
Duplicate emails and attachments on retry: When mousetrap retried an email delivery, attachments were being re-uploaded with new IDs instead of being deduplicated, so an email with 6 attachments could accumulate 42 copies after 7 retries. Attachments are now deduplicated by filename and content type per email. CK also removed 403 existing duplicate attachments in a one-time cleanup.
Duplicate cases from concurrent email delivery: A race condition could create duplicate EmailMessage records (and occasionally duplicate cases) when two gizzard instances received the same email simultaneously. A new database constraint prevents this; approximately 45 existing duplicate case groups across customers were merged.
Case list search restored and expanded: The case list search now covers descriptions, occupant names, origin contact, building and property names, and ERP ticket numbers (previously limited to title and ID after a regression). Long case descriptions are now fully searchable; the 500-character truncation was removed.
Kein Bewohner in entity pool for older cases: Cases created before the entity-management redesign sometimes showed "Kein Bewohner" even when occupants were linked. The entity pool now resolves occupancy from the correct source and shows the linked tenant.
Parent-building selection in action editor: When a case had multiple buildings, the work order or ERP ticket editor sometimes selected the wrong parent building. The parent building shown in the editor now matches the unit's actual parent. As a follow-up, executing an action no longer promotes the draft's (possibly stale) building onto the case when the user has since changed the case's building.
ERP ticket status not saved after D+ sync: Status changes made from D+ were being sent successfully but not persisted locally, so the case header could show a stale status. The status now saves correctly.
File uploads to D+ on manual linking: Files attached to an email are now synced to D+ when you manually link the email to an ERP ticket, and when importing a ticket. Previously these uploads were skipped.
Team name displays with umlauts intact: Team names containing umlauts or acronyms are now displayed as-is. Previously team names like "ÖVW" were rendered as "Vw" and "GHS" as "Ghs" because of an incorrect text transformation.
Service provider detail dialog loads correctly: The service provider detail dialog previously returned a 404 error. It now loads properly. Insurance companies opened from damage reports now open in the correct contact dialog.
Building address search improvements: Searching the case list by address no longer times out on short search terms. Cross-field queries like "630 Walde" (building number plus tenant name) now match correctly.
Draft ERP ticket edits no longer wiped on refresh: Adding real estate to a draft ERP ticket no longer resets the form and wipes your unsaved changes during a background refresh.
Mobile UI polish: Chat toolbar no longer bleeds through messages. Intercom launcher is hidden on mobile when action dialogs or drawers are open. Email filter toolbar wraps on mobile instead of scrolling horizontally. File-attached state in Gustav's welcome drop zone now shows a clear success indicator.
Communication page entity selection: Selecting a unit in the new communication form no longer cascades unrelated properties (e.g. parking lots) onto the case. The change-building dialog now correctly adds both the building and the selected unit.
Related Articles
Linking Entities to Cases — How to link buildings, units, and occupants
Creating Work Orders — Work order creation and Gewerk selection
Creating ERP Tickets — ERP ticket creation and D+ sync
Inbound Email Monitoring — Email processing and auto-reply