The main new feature in this release is to add support for JPA persistence as an alternative to JDO. This included support for Spring Data.

In order to keep the two persistence implementations as consistent as possible, the JDO integration was substantially reworked. Data source URLs are now configured using Spring configuration properties (for either JPA or JDO).

The SecMan integration was extended to also provide a JPA implementation, and was also reworked to use logical type names rather than physical package names. The notion of LogicalType was also formally added into the applib.

One notable breaking change: the XSDs for schemas were changed, with transactionId being renamed to interactionId.

Documentation tooling was also developed to automate large parts of the Reference Guide, as well as to provide a System Overview.


  • ISIS-2033 - Spring Data Integration

  • ISIS-2581 - Clean up configuration properties for DN and RestEasy

  • ISIS-2537 - JPA: support object type naming from @Table(schema=…​) annotation

  • ISIS-2504 - JDO Integration: configure datasources the Spring way

  • ISIS-2512 - Migrate example JDO datasource configurations to Spring way

  • ISIS-2486 - Rationalize JDO and JPA modules so that they are more symmetrical

  • ISIS-2481 - Consolidate BeanSort ENTITY_JDO, ENTITY_JPA → ENTITY

  • ISIS-2570 - Disable JdoDiscriminatorAnnotationFacetFactory

  • ISIS-2579 - Wicket/JPA: entity deletion does not redirect to homepage

  • ISIS-2294 - Create JPA variant of JDO Book/Product/Inventory (regressiontests)

  • ISIS-2539 - JDO Integration: table/schema auto-creation might fail when not done eagerly

  • ISIS-2532 - Wicket/JPA: entity object memento cannot reattach on AJAX requests

  • ISIS-2515 - Translate original Spring ORM JDO ref doc for forked 'persistence.jdo.spring' Module.

  • ISIS-2453 - Remove TypeManagerImpl Monkey Patch once DN-core 5.2.5 is available

Documentation Tooling

  • ISIS-2516 - Tooling Global Document Index: add support for namespaces

  • ISIS-2526 - Tooling: suppress header, use filename in caption

  • ISIS-2525 - Tooling: make callouts link to sections; remove blank lines in listing.

  • ISIS-2522 - Tooling: for system-overview diagrams use SVG rather than PNG

  • ISIS-2520 - Tooling: index gen. should not suppress generic type params

  • ISIS-2519 - Tooling: system-overview should use collapsible content

  • ISIS-2508 - Tooling CLI: add documentation (README.adoc)

  • ISIS-2473 - Automate Refguide Example Generation from Java-Doc


  • ISIS-2565 - SecMan: fix outdated semantics PACKAGE, CLASS and TYPE

  • ISIS-2560 - SecMan: ApplicationRole …​ make adding Permissions more convenient

  • ISIS-2559 - SecMan: ApplicationUser_delete has no are_u_sure semantics

  • ISIS-2544 - SecMan: ApplicationRole#Permissions …​ hide role column (references parent)

  • ISIS-2541 - SecMan: existing admin user is not attached to the new secman-admin role

  • ISIS-2509 - SecMan: add multi select action to relocate orphaned CLASSes to new namespace

  • ISIS-2500 - SecMan: Regular User is missing Permision for LogoutMenu#logout

  • ISIS-2480 - SecMan to support JPA

  • ISIS-2431 - SecMan support for ObjectType (canonical object names)

  • ISIS-2543 - SecMan/JPA: user-role (many-to-many) management is not working

  • ISIS-2542 - SecMan/JPA: cannot add user to role (autocomplete search issue)


  • ISIS-2575 - PanelAbstract found to be suspectious generic by the IDE because of erasure clash.

  • ISIS-2571 - Enforce logical-type-names to have non empty namespaces.

  • ISIS-2566 - Rename CommandDto#transactionId to #interactionId, similarly for ixn and chg schemas. Also for Command and CommandJdo

  • ISIS-2564 - Rationalize mixee interfaces; fix derivation of sequence for EntityChanges

  • ISIS-2558 - Configuration Page: make config item visibility a configuration option

  • ISIS-2554 - Make TypeIdentifier Serializable

  • ISIS-2553 - Rationalize value types representing the metamodel, promote to applib if possible.

  • ISIS-2538 - Action results of type LocalResourcePath should be able to replace the current page.

  • ISIS-2530 - Wicket: switch session timeout policy to not recreate expired pages

  • ISIS-2511 - Rationalize all @Named("…​") @DomainXxx(objectType="…​") namespaces.

  • ISIS-2502 - Convert existing Exception Recognizers from JDO to Spring Data

  • ISIS-2501 - WebModuleShiro to also cover DispatcherType.ASYNC

  • ISIS-2498 - Remove requirement for Mixins to actually store their mixee.

  • ISIS-2496 - Suppress misleading "helpful" exception message if exception caused for reasons other than a mismatch of parameter count or type.

  • ISIS-2495 - Promote SimpleTicket from core.runtimeservices to applib; move EmailTicket into the demo app only.

  • ISIS-2476 - Remove EntityLinksSelectorPanel, as is dead code, and allow other implementations of ComponentType.ENTITY to be picked up.

  • ISIS-2470 - Unify Maven dependency declarations for jdk-supplemental (JDK11+)

  • ISIS-2469 - Remove Annotations ViewModel, ViewModelLayout and Mixin

  • ISIS-2468 - Remove @Collection(mementoSerialization=…​)

  • ISIS-2466 - Avoid duplicate metamodel validations when objectType is reused

  • ISIS-2464 - Application Layer Overhaul for v2

  • ISIS-2455 - Build 'essential' Artefacts From Root with Maven

  • ISIS-2424 - Separation of Concerns for Spec-Loader-Cache and IsisBeanTypeRegistry

  • ISIS-2396 - Make Markup final, remove ListeningMarkup (can just use Markup)

  • ISIS-1922 - Session Timeout Indication

  • ISIS-1678 - Remove org.apache.isis.applib.clock.Clock, replace with org.apache.isis.applib.services.clock.ClockService

  • ISIS-1628 - Mixins requires method to be overridden in subclass.

  • ISIS-1451 - SessionManagement#nextSession does not close off the current Interaction's execution graph.

  • ISIS-1264 - No-arg actions returning Blob/Clob but whose return type is simply java.lang.Object throw exception.

  • ISIS-826 - Remove WrappedObject interface, use instead WrappingObject as its replacement.

  • ISIS-439 - Remove concept of mutable collections from programming model.


  • ISIS-2586 - ServiceInjector cannot handle null argument

  • ISIS-2582 - Wicket: NPE when ComponentHintKey#hintStore not restored on deserialization

  • ISIS-2577 - Potential NPE when clearing a scalar property.

  • ISIS-2576 - favicon missing from signin page

  • ISIS-2572 - RO/Swagger: Generated schema offers outdated urn:org.apache.isis/v2

  • ISIS-2567 - Regression: commands are not published

  • ISIS-2563 - Autocomplete MinLength not always handled correctly

  • ISIS-2547 - layout() method does not reload grid in production mode

  • ISIS-2540 - Regression: bulk select from mixin actions is broken

  • ISIS-2535 - Regression: @PersistenceCapable(schema= ) does not get picked up as ObjectType

  • ISIS-2510 - Regression: interfaces when registered with the metamodel never expose their members

  • ISIS-2507 - JaxbServiceDefault: potential infinite loop when processing DomainObjectList

  • ISIS-2497 - Regression: Mixin’s holder instance cannot be found if stored in non-public field.

  • ISIS-2492 - Metamodel contributing members are not inheritable from abstract super class.

  • ISIS-2491 - WebModuleH2Console is never enabled when using JPA

  • ISIS-2489 - TranslationsResolverWicket uses outdated config, also might fail to read translation sources

  • ISIS-2479 - Resurrect support for TransactionId

  • ISIS-2478 - CommonDtoUtils#newParamDto fails to handle non-scalar values.

  • ISIS-2475 - RESTEASY003210: Could not find resource for full path: https://demo-wicket.isis.incode.work/restful/domain-types/org.apache.wicket.markup.MarkupStream/properties/

  • ISIS-2474 - Fix Named annotation in¬†WebModuleShiro

  • ISIS-2462 - Reinstate version in footer, and link to about page.

  • ISIS-2461 - Potential NPE when menu-contributing ViewModel not explicitly listed in menubar.layout.xml

  • ISIS-2460 - Kroviz - Demo Menu Missing

  • ISIS-2459 - Async Execution might throw 'no current IsisPersistenceSessionJdoBase available'

  • ISIS-2458 - Deploying demo-wicket app to k8s causes a logging issue, won’t start

  • ISIS-2456 - Regression: Object of type Nature.BEAN may have no Spec from SpecLoader

  • ISIS-2454 - CORS Filter not in FilterChain?

  • ISIS-2452 - NPE within WicketViewerSettingsDefault when deserialized (IsisConfig is null)

  • ISIS-2449 - RO-Viewer: NPE when action invocation result is null

  • ISIS-2441 - Auditing/Publishing: dispatch calls happen before enlist calls

  • ISIS-2412 - java.awt.Image does not render (simply blank) not persist (ditto)

  • ISIS-2411 - Remove Isis Image (use AWT’s BufferedImage instead)

  • ISIS-2410 - ZonedDateTime does not render/parse correctly.

  • ISIS-2409 - Offset Time does not render in the demo app.

  • ISIS-2382 - Concurrent Spec Loading is broken (possible race condition)

  • ISIS-2363 - Recently removed ServiceRegistry.injectServicesInto() is still recommended in docs

  • ISIS-2269 - Exception when calling collection on integration test ('more than one ImperativeFacet for method getReferencedObjects , with inconsistent intents')

  • ISIS-1980 - Unexpected error when accessing collection through wrapper.

Docs & Demos

  • ISIS-2443 - Flesh out demo app with further examples

  • ISIS-2444 - Ongoing improvements to the Apache Isis website

  • ISIS-2518 - Java-Doc: link tag contents that reference types should have corresponding import statements

Dependencies Updates

  • ISIS-2467 - Bump Wicket to latest Version (8.11.0)

  • ISIS-2451 - Remove Dependencies on Google Guava

  • ISIS-2448 - ChicagoFLF.ttf in kroviz hinders bumping maven-resources-plugin to 3.2.0


  • ISIS-2457 - Switch nightly builds to upload to nexus.incode.work (instead of repo.incode.work)

  • ISIS-2536 - attach sources in nightly build

  • ISIS-2450 - Isis 2.0.0 M5 Release activities

Won’t Fix / Not a Problem / Duplicates

No code changes were made to close these tickets:

  • ISIS-2503 - [NOT AN ISSUE] RO Viewer does not emit object members of type 'property'

  • ISIS-2487 - [NOT AN ISSUE] DomainService(nature=View) recreate from memento has empty result

  • ISIS-2472 - [WON’T FIX] Move Tooling to isis-lab project (github).

  • ISIS-2245 - [WON’T FIX] convert WebModuleLogOnExceptionLogger, make into an extension.

  • ISIS-2016 - [NOT A PROBLEM] Slow initial loading - webjars for bootswatch themes?

  • ISIS-1735 - [DUPLICATE] Bind action with property/collection by naming convention.

  • ISIS-1734 - [WON’T FIX] Enhance TitleService , return an enhanced TitleBuffer that uses TitleService for new appendTitleOf(…​)

  • ISIS-1709 - [INVALID] Inconsistent handling of commands vs auditing for objects implementing HasTransactionId

  • ISIS-1620 - [WON’T FIX] Metamodel exception if choices specified incorrectly

  • ISIS-1270 - [WON’T FIX] @Pattern annotation should support internationalization

  • ISIS-1230 - [WON’T FIX] How use SudoService with fixture scripts that themselves are nested?

  • ISIS-1001 - [WON’T FIX] For hard-coded methods such as title(), iconName(), and cssClass(), hidden(), disabled(), validate(), provide an alternative mechanism to specify such methods.

  • ISIS-471 - [WON’T FIX] Pinnable (for session) bookmarks