TopLogic - the automated application engine
  • Releases
  • Dokumentation
  • Github
  • Discord
  1. Home
  2. Releases
  3. TL_8.0.0-alpha1
  4. #28710

8.0.0-alpha1
TopLogic Release

2026-03-31

enhancement

major
#28994
TableComponent: ConfigKey sollte anpassbar sein
#29055
User-specified CSS classes cannot override default numeric alignment in table columns
#29084
JSON Schema Support for Typed Configuration
#29092
Multi-factor authentication and self-service account management
minor
#29037
Workflows beim Anwendungsstart hochladen/aktualisieren
#29095
Keine feste Referenz auf tl-build-processor in tl-parent-build
#29204
TreeGrid Modelbuilder API: Knotenprädikat bekommt Komponentenmodell nicht
nice-to-have
#29103
REST Client JSON Parser gegen leeren Content robust machen

defect

critical
#29080
Unerwünschte Zeilenobjekte in Tabellen bei Änderungen aus anderen Session
#29199
XSS-Schwachstelle in /jsp/openapi/server/displayAPISpec.jsp
major
#28674
Security Issues im UMLJS Projekt
#28710
Accounts mit wiederverwendetem Kontakt haben keine Berechtigung
#28993
Filter von dynamischen Spalten ignorieren den Attributtyp
#29042
Fehler in Spaltenfilter nach Double-Werten
#29107
StackOverflowError beim Zurückrollen im Transaktionsmonitor
#29111
JavaDoc-based I18N generation ignores custom ResKey in I18NConstants
minor
#27850
Modelleditor verschluckt Klassifikation mit Kleiner-Zeichen im Namen
#28456
Referenz auf fehlende Dateien in subsession.jsp
#28485
Immutable/Disbled Booleanfelder über Tab erreichbar/fokusierbar
#28651
Unnötiger Platz bei Inline-Tabellen
#28725
Sinnlose Scroll-Bar im Hilfe-Editor
#29053
TL-Script: format() mit null input liefert IllegalArgumentException
#29061
Fehlende Ersetzung von KnowledgeItem durch ObjectKey in Collections in Queries
#29066
"SafeHTML not started" Fehler bei scripted Tests
#29069
Ein berechnetes Attribut vom Typ "Allg. Suchausdruck" kann keine Closure zurückgeben
#29073
Auf abstrakte Attribute kann in transienten Objekten zugegriffen werden
#29074
In einer Wertetransformation eines Komponentenkanals kann nicht auf die Formulardaten einer Komponente zugegriffen werden
#29075
Nach Modell-Änderung können invalide gewordene berechnete Attribute nicht mehr editiert werden
#29076
API-Key in REST-Schnittstellenkonfiguration wird nicht verborgen
#29087
Fehlerhafter Zugriff auf den D&D Cache im Browser
#29091
Werte eines Kompositionsattribut nicht bearbeitbar, wenn im gleichen Formular vorher verwendet
#29106
Fehler beim Restart der KnowledgeBase
#29112
Update minimatch and serialize-javascript to fix CVE-2026-27903, CVE-2026-27904, and GHSA-5c6j-r48x-rmvq
#29197
Eclipse-Fehler nach Dependency-Update: maven-jar-plugin 3.5.0 verursacht „outside of a scoping block"-Fehler in m2e

update

critical
#29110
Update dependency com.fasterxml.jackson.core:jackson-core to v2.21.1 [SECURITY]
defect

major

#28710

Accounts mit wiederverwendetem Kontakt haben keine Berechtigung

Migration

Wenn ein Account gelöscht wird und danach ein neuer Account angelegt wird, der den alten Kontakt wiederverwendet (siehe #28461), hat der neue Benutzer keine Berechtigungen. Es ist ein Full Security Rebuild nötig, damit der Benutzer seine Rechte wieder bekommt.

**Beispiel:**

  • Ein Kontakt ist in einem Attribut "responsible" eingetragen.
  • Es gibt eine Regel, die Personen in diesem Attribut eine Rolle zuordnen.
  • Wird der Account dieses Kontakts gelöscht, werden alle Rollen aus dem SecurityStorage entfernt.
  • Wird der Account neu angelegt und mit diesem Kontakt verknüpft, so wird die Security für diesen Kontakt nicht erneut inkrementell ausgerechnet (ElementSecurityUpdateManager).

Code-Migration

Rollenregeln des AccessManager (z.B. InitialRoleRule.xml) müssen umgestellt werden. Die Security funktioniert nur noch über das Modell, d.h. eine Regel benötigt zwangsläufigerweise ein "attribute" und ggfs ein "meta-element".

  • Suchen und ersetzen von <step association=: Anstatt generell über die Assoziationstabelle zu navigieren muss das MetaAttribute herausgefunden werden dessen Werte in dieser Tabelle speichert und über dieses navigiert werden. Z.B. wird {{{

<step association="hasStructureChild" inverse="false" /> }}} zu {{{ <step attribute="children" inverse="false" /> }}}

  • Suchen und ersetzen von <rule meta-object=: Anstatt den Tabellentyp anzugeben muss nun der TLModel type angegeben werden. Z.B. wird {{{

<rule meta-object="StoredQuery" ... }}} zu {{{ <rule meta-element="tl.search:StoredQuery" ... }}}

Daten-Migration

Die Migrationen Ticket_28710_Removed_legacy_types, Ticket_28710_Update_application_types und Ticket_28710_RoleAssignment_TLSearch (Modul tl-element) laufen beim ersten Start automatisch. Dabei ist zu beachten:

  • Direkt zugewiesene globale Rollen gehen verloren. Die Tabelle hasGlobalRole wird ersatzlos gelöscht, ihre Daten werden nicht übertragen. Betroffen sind nur Anwendungen, die Rollen per Person#addGlobalRole(...) programmatisch vergeben haben (die Engine hatte dafür keine Oberfläche). Solche Zuweisungen sind vor dem Update als Gruppenmitgliedschaft plus Rollenregel abzubilden.
  • Eigene Legacy-Tabellentypen muss die Anwendung selbst löschen. Die Module tl.legacy.tabletypes und tl.tables existieren nicht mehr; die Engine-Migration löscht nur die Typen der Engine (tl.legacy.tabletypes:PersonTable, tl.tables:PersonTableInterface, ...). Enthält die Datenbank der Anwendung noch eigene Typen dieser Module (aus dem Update von TL 6 nach TL 7 oder aus TableInterface-basierten Modellen), löscht die Anwendung sie in einer eigenen Migration (Vorlage: com.top_logic.demo/src/main/webapp/WEB-INF/kbase/migration/tl-demo/Ticket_28710_Removed_legacy_types.migration.xml) und typisiert Attribute um, die auf solche Typen zeigen (change-part-type ... target="tl.accounts:Person"). Konfigurationsverweise wie IndexedObjectNaming <type name="tl.legacy.tabletypes:..."> oder defaultFor="tl.legacy.tabletypes:..." sind zu entfernen.
  • hasRole ist keine KnowledgeAssociation mehr, sondern ein MOKnowledgeObject vom Modelltyp tl.accounts:RoleAssignment (Referenzen source, dest, owner); definesRole und hasGlobalRole entfallen. Eigene *Meta.xml, die diese Tabellen referenzieren, sind anzupassen.

Code-Migration (Java)

  • BoundedRole.HAS_ROLE_ASSOCIATION und DEFINES_ROLE_ASSOCIATION entfallen. Rollenzuweisungen werden über BoundedRole.assignRole(context, person|group, role) geschrieben und über getLocalAndGlobalRoles(context, person) sowie die Abfragen roleAssignmentsForContext(...), roleAssignmentsForRole(...) (liefern einen zu schließenden CloseableIterator) gelesen. Code, der getOutgoingAssociations(HAS_ROLE_ASSOCIATION) navigiert, muss umgestellt werden. Person#getGlobalRoles(), addGlobalRole(...) und removeGlobalRole(...) entfallen.
  • LegacyFlexWrapper und StoredFlexWrapper entfallen: Wrapper-Klassen, die davon erben (wie StoredQuery und StoredReport in der Engine), erben von com.top_logic.element.meta.kbbased.AttributedWrapper; MapBasedPersistancySupport.getObjects(KnowledgeItem) und setObjects(Collection, KnowledgeItem) ersetzen die FlexData-Varianten.
  • Die Erweiterungspunkte ExternalRoleProvider (<role-provider>) und SecurityStorageCommitObserver (<commit-observer>) am ElementAccessManager sowie FallbackAccessManager entfallen ersatzlos; programmatische Rollenvergabe ist als konfigurierte Rollenregel auszudrücken.
  • AccessManager#handleSecurityUpdate(KnowledgeBase, Map, Map, Map, CommitHandler) heißt jetzt handleSecurityUpdate(TLObjectChangeSet, CommitHandler); ebenso LogHandler#logSecurityUpdate(TLObjectChangeSet, Map, Set). Eine Überschreibung mit der alten Signatur wird stillschweigend nicht mehr aufgerufen, wenn ihr @Override fehlt.
  • RoleRule ist abstrakt (Implementierungen DefaultRoleRule, SingletonRule), PathElement ist ein Interface (Implementierung PathNavigation); RoleRule#matches(...) nimmt ein TLObject; ElementAccessManager#getRules() liefert Map<TLClass, Collection<RoleProvider>>.
  • Get Started
  • Github
  • Discord
  • Das Unternehmen hinter TopLogic
  • Softwareentwicklung heute
  • Kontakt

© Copyright – Business Operation Systems GmbH

  • top-logic.com
  • Nutzungsbedingungen
  • Impressum
  • Rechtlicher Hinweis
  • Datenschutz
  • EN
  • Login