blob: b7e161f88c2a67bb7fbc33c13a1c71bca29463d0 [file] [log] [blame]
Apache Syncope - CHANGES
Licensed under Apache License 2.0 - http://www.apache.org/licenses/LICENSE-2.0
--------------------------------------------------------------------------------
Release Notes - Syncope - Version 3.0.0-M0
================================================================================
** Sub-task
* [SYNCOPE-1413] - Remove CLI
* [SYNCOPE-1414] - Remove GUI Installer
* [SYNCOPE-1418] - Convert webapps to Spring Boot
* [SYNCOPE-1421] - New Enduser UI
* [SYNCOPE-1426] - Remove Eclipse IDE plugin
* [SYNCOPE-1458] - Keymaster for Configuration Parameters
* [SYNCOPE-1459] - Keymaster for Service Discovery
* [SYNCOPE-1460] - Keymaster for dynamic Domain management
* [SYNCOPE-1494] - Basic maven build to verify compilation correctness
* [SYNCOPE-1495] - Remove deb packages
* [SYNCOPE-1496] - Add integration tests for DBMSes via Docker
* [SYNCOPE-1552] - Allow WA audits to be stored in Syncope
* [SYNCOPE-1553] - Fetch WA auth modules & map to properties during bootstrap
* [SYNCOPE-1555] - Allow WA as SAML2 IdP to fetch metadata over REST
* [SYNCOPE-1556] - Allow WA as OIDC OP to fetch JWKS over REST
* [SYNCOPE-1557] - Complete policies manipulating with authentication modules and mappings information
* [SYNCOPE-1558] - Configure WA delegated authn module to SAML IdPs via REST
* [SYNCOPE-1559] - Allow WA Google Auth MFA settings to become reloadable
* [SYNCOPE-1562] - Handle OTP records for GoogleAuthN MFA
* [SYNCOPE-1566] - Manage device registration records for GoogleAuthMFA
* [SYNCOPE-1570] - Support U2F device registration via REST APIs
* [SYNCOPE-1571] - Support U2F MFA tokens/requests via REST APIs
* [SYNCOPE-1577] - Support CAS-enabled client applications
* [SYNCOPE-1578] - Protected SRA Routes: OAuth 2.0 / OpenID Connect 1.0
* [SYNCOPE-1579] - Protected SRA Routes: SAML 2.0
* [SYNCOPE-1580] - Design WA REST APIs to configure configuration properties
* [SYNCOPE-1582] - Protected SRA Routes: CAS
* [SYNCOPE-1584] - Allow Syncope to manage WA authentication events
* [SYNCOPE-1587] - Enable Web AuthN support for WA
* [SYNCOPE-1588] - WA attributes consent management
* [SYNCOPE-1595] - Support themes per client application
* [SYNCOPE-1599] - Support Duo Security for MFA
* [SYNCOPE-1625] - Support impersonation for Web Access
* [SYNCOPE-1638] - Remove Netbeans IDE plugin
* [SYNCOPE-1682] - WA: support CAS Attribute Resolution
** Bug
* [SYNCOPE-1333] - Missing virtual attribute value in case of type extension
* [SYNCOPE-1334] - Maven install problem with Apache Syncope 2.1.0
* [SYNCOPE-1335] - Missing SQL statements when upgrading from 2.0 Jazz
* [SYNCOPE-1337] - Password history policy is not enforced on salted passwords
* [SYNCOPE-1338] - Double type conversion applied during pull leads to errors
* [SYNCOPE-1339] - Enduser spinner does not apply to the whole page
* [SYNCOPE-1340] - Cannot update membership attribute
* [SYNCOPE-1342] - console UI login form ignores Domain selection
* [SYNCOPE-1343] - Attributes are not reset after pull of null values
* [SYNCOPE-1344] - CORE_SCHEME not being updated in enduser.properties
* [SYNCOPE-1346] - Adding a new task while re-executing a propagation task
* [SYNCOPE-1347] - Invocation Problem calling org.apache.syncope.installer.processes.ArchetypeProcess
* [SYNCOPE-1350] - Date values not formatted according to the conversion pattern
* [SYNCOPE-1352] - Group wizard doesn't update the plain attributes
* [SYNCOPE-1353] - DBPasswordPropagationActions link in the reference guide is wrong
* [SYNCOPE-1354] - Push Tasks do not send status onto External Resources
* [SYNCOPE-1356] - LDAPMembershipPullActions does not remove memberships
* [SYNCOPE-1357] - MemoryVirAttrCache not working
* [SYNCOPE-1358] - Search by boolean value does not work from Admin Console
* [SYNCOPE-1360] - Delegated administration to Dynamic Realms not possible
* [SYNCOPE-1361] - Custom audit appender does not work after a restart
* [SYNCOPE-1362] - Sorting users by creation date raises RuntimeException
* [SYNCOPE-1363] - Deleting multiple users at once reports "Operation delete not supported"
* [SYNCOPE-1364] - Upgrade tool from 2.0 script error
* [SYNCOPE-1365] - Erorr during retrieve candidate groups for approval process
* [SYNCOPE-1366] - Audit events ownership always set to admin user
* [SYNCOPE-1370] - Password reset succeeds also on wrong captcha
* [SYNCOPE-1373] - Custom task schedule is reset after update
* [SYNCOPE-1374] - Concurrent propagation tasks for non-Master domains not saved
* [SYNCOPE-1375] - The existence of a membership attribute mapping implies membership creation during pull
* [SYNCOPE-1376] - swagger-ui server URL incorrect behind ssl reverse proxy
* [SYNCOPE-1377] - Wrong X-Syncope-Domain header does not throw an error
* [SYNCOPE-1380] - During Push or Pull, if policy with conflict resolution IGNORE is set, the process is interrupted as soon as such setting applies
* [SYNCOPE-1383] - Exception during "getObject" from external resource
* [SYNCOPE-1387] - ClassCast exception when pull realms
* [SYNCOPE-1388] - mustChangePassword flag does not prevent user from invoking actions
* [SYNCOPE-1389] - In case of virtual attribute mapping, propagation is always set as UPDATE also in case of CREATE
* [SYNCOPE-1390] - Pull Realms: pull task with Unmatching Rules: PROVISION shouldn't create propagation task
* [SYNCOPE-1391] - Check template for confirmPasswordReset and mustChangePassword
* [SYNCOPE-1393] - jexl function fullPath2Dn return invalid value for ROOT realm
* [SYNCOPE-1399] - Error while executing the custom task to initialize indices with Elasticsearch v6.x
* [SYNCOPE-1404] - Dialog not closing in Netbeans ide plugin when creating a new element
* [SYNCOPE-1405] - Error during db initialization: views.xml always set for PostgreSQL
* [SYNCOPE-1406] - Error during startup because of missing property 'historyLevel'
* [SYNCOPE-1407] - Date pattern ignored by widget
* [SYNCOPE-1408] - Partial user edit via Role layout implies removing all unmanaged attributes
* [SYNCOPE-1411] - User/Any object updates generate attributes with null owner in case of patches involving membership attributes
* [SYNCOPE-1417] - Search with order by two plain attributes gives no results
* [SYNCOPE-1419] - User and AnyObject search fails in case of not leaf conditions given on multivalue fields
* [SYNCOPE-1420] - Expired Access Tokens might impede successful authentication
* [SYNCOPE-1425] - Mapping item transformers do not work for non-string values
* [SYNCOPE-1428] - APIs to read by key return 404 instead of 401 for not authenticated calls
* [SYNCOPE-1429] - Wildcard case-insesitive queries do not work with Elasticsearch
* [SYNCOPE-1430] - ItemTransformer for Date schemas throws NPE
* [SYNCOPE-1431] - Connector and Resource history compare does not work
* [SYNCOPE-1432] - After creating new connector / resource, Topology does not show it
* [SYNCOPE-1437] - Error while searching for users / groups / any objects with Elasticsearch when no data are present
* [SYNCOPE-1438] - "changePwdDate" field is not initialized when create a new user with the specified password
* [SYNCOPE-1439] - User membership attributes not updated
* [SYNCOPE-1440] - Pagination of Users/Groups doesn't work as expected with Elasticsearch
* [SYNCOPE-1442] - Inactive Job with cron expression set is executed anyway
* [SYNCOPE-1443] - Changing Display Rows number in Reconciliation Resource Panel doesn't work
* [SYNCOPE-1446] - Persistence exception on PostgreSQL when AUDIT is enabled on propagation tasks
* [SYNCOPE-1447] - NPE while deleting a privilege from admin console
* [SYNCOPE-1448] - Bean loading/register section not threadsafe
* [SYNCOPE-1450] - Audit: sensitive information not masked by default during update
* [SYNCOPE-1452] - Notification about is not deleted after update
* [SYNCOPE-1453] - MappingItem with "mustChangePassword" field cannot be provisioned and updated during import
* [SYNCOPE-1454] - Avoid duplicated Propagation Tasks
* [SYNCOPE-1457] - NonAlphaNumeric policy pattern matches the "Not word" character class
* [SYNCOPE-1461] - MySQL: Segmentation fault with query using JSON_TABLE
* [SYNCOPE-1467] - RDN not allowed when an attribute of the group present also in the DN is changed
* [SYNCOPE-1469] - MySQL with JSON support: errors during startup
* [SYNCOPE-1470] - Flowable extension not working with MariaDB
* [SYNCOPE-1472] - Resource association is duplicated on database after update, assign or link operations
* [SYNCOPE-1474] - Resource is duplicated after batch operation
* [SYNCOPE-1476] - Error while creating Enum schema from Admin Console
* [SYNCOPE-1477] - jQuery UI's spinner not rendered
* [SYNCOPE-1478] - Unable to remove value of "Schema to hold values for identifiers generated upon Create by the external Identity Store" from provisioning
* [SYNCOPE-1480] - Elasticsearch:dynrealm assignment not updated on condition change
* [SYNCOPE-1481] - Invalid values when saving a membership attribute of type date
* [SYNCOPE-1483] - maven-enforcer-plugin: API incompatibility fails the build
* [SYNCOPE-1484] - syncope-ide-netbeans submodule fails to find netbeans dependency
* [SYNCOPE-1485] - Reindex of elasticsearch ends with memory error in case of huge amount of data
* [SYNCOPE-1487] - Build Instructions do not say that the "patch" program is needed
* [SYNCOPE-1488] - Change to MVM Env for JDK > 8.00
* [SYNCOPE-1492] - Build Instructions are missing an EVN (DOCKER_HOST) needed for mvn -Ppostgres-it
* [SYNCOPE-1493] - Mapping unique schema as remote key never matches internal objects
* [SYNCOPE-1503] - Cannot remove provisioning information from Resource in Admin Console
* [SYNCOPE-1504] - Error setting uidOnCreate attribute during a pull task with multiple provisions
* [SYNCOPE-1505] - Changes to "AjaxPalettePanel" components in Console are not saved when the previous step button is pressed before submitting the wizard form
* [SYNCOPE-1512] - Error while saving a unique plain attribute value with single quote when using JPA JSON
* [SYNCOPE-1520] - Exception when updating Group unique attribute with JPA JSON
* [SYNCOPE-1525] - Documentation indicates sharing private key, hiding public key
* [SYNCOPE-1526] - Broken link to issues from reference documentation
* [SYNCOPE-1533] - Broken backward compatibilty because of changes in Equals and HashCode methods in TOs
* [SYNCOPE-1536] - Enduser UI does not clean up file alteration monitors on shutdown
* [SYNCOPE-1537] - Password of LinkedAccounts not saved properly from Admin Console
* [SYNCOPE-1538] - Admin Console: users / groups management slow to access with high number of realms
* [SYNCOPE-1539] - AjaxPalettePanel does not support setRequired
* [SYNCOPE-1542] - Search panel issues in Admin Console
* [SYNCOPE-1544] - 'Override?' flag not properly set for password and username fields of LinkedAccounts
* [SYNCOPE-1546] - PriorityPropagationTaskExecutor: rejected tasks not stored
* [SYNCOPE-1554] - Generated default admin role layout doesn't work
* [SYNCOPE-1560] - File upload component: missing translations
* [SYNCOPE-1561] - Batch: missing support for custom TLSClientParameters
* [SYNCOPE-1563] - User approval update should send the password only when requested
* [SYNCOPE-1564] - Integration tests run with YAML payloads are failing
* [SYNCOPE-1565] - Integration tests run with XML payloads are failing
* [SYNCOPE-1567] - Mapping does not allow relationships
* [SYNCOPE-1569] - Console: cannot save Reportlet search conditions
* [SYNCOPE-1573] - Logout forced from Console when editing user with many memberships
* [SYNCOPE-1583] - For members part of a Dynamic Group, but cannot access group attributes in member mapping
* [SYNCOPE-1586] - Startup failures with sample docker-compose and MySQL
* [SYNCOPE-1598] - Create or update user with two+ memberships for the same group are not prevented
* [SYNCOPE-1601] - Propagation not always triggered after form submit in User Requests
* [SYNCOPE-1602] - ConnObjectKey attribute values not included with DefaultPushCorrelationRule
* [SYNCOPE-1603] - PushCorrelationRule not used for DELETE on External Resources
* [SYNCOPE-1604] - AjaxDateTimePicker doesn't handle some 1900 dates the right way
* [SYNCOPE-1605] - Propagation task not generated if update involves only ConnObjectLink
* [SYNCOPE-1606] - Syncope returns an exception when doing two sequential operations for the same user from the toggle panel
* [SYNCOPE-1607] - Console Page preferences not working
* [SYNCOPE-1612] - "Operation is taking too long" warning while adding/editing a connector/resource
* [SYNCOPE-1613] - startAt date is set to start field for SCHEDULED, PULL and PUSH TaskTOs
* [SYNCOPE-1616] - CSV and single push / pull concurrency issues
* [SYNCOPE-1619] - SearchPanel should display the input field based on the type of the selected property
* [SYNCOPE-1620] - JWT validation requires exp and nbf claims
* [SYNCOPE-1622] - ConnId Connectors not pooled with Resource override
* [SYNCOPE-1626] - rename package org.apache.syncope.common.keymaster.client.zookeper to zookeeper
* [SYNCOPE-1628] - Console goes NPE when Connector fails to initialize
* [SYNCOPE-1629] - JPA JSON: Date conversion pattern including slashes leads to incorrect search results
* [SYNCOPE-1632] - Graphical issue on must change password view
* [SYNCOPE-1634] - Group Owner update/delete action doesn't trigger propagation action
* [SYNCOPE-1635] - Create Rules with configurations for each domain, make creation thread safe
* [SYNCOPE-1640] - Uncaught exception when creating Enum schema
* [SYNCOPE-1643] - Update of Realm doesn't trigger provisioning for users
* [SYNCOPE-1644] - Task run failure with multi-node deployments
* [SYNCOPE-1645] - Case insensitive search with Elasticsearch extension returns wrong results
* [SYNCOPE-1646] - Linked Account status set to wrong value on propagation
* [SYNCOPE-1648] - Search with PostgreSQL JSONB fails for FIQL like 'username!=value'
* [SYNCOPE-1649] - Reports: XML character escaping applied to CSV output
* [SYNCOPE-1650] - Default Account Rule: pattern is ignored
* [SYNCOPE-1651] - Invalid users can be specified in X-Syncope-Delegated-By
* [SYNCOPE-1654] - Inconsistent Realm search FIQL expressions between JPA and Elasticsearch engines
* [SYNCOPE-1656] - Remediations are not created on update while pulling
* [SYNCOPE-1657] - Unable to define a new name for a cloned resource
* [SYNCOPE-1659] - Read-only flag not working in console on virtual attributes
* [SYNCOPE-1660] - Anonymous requests does not store domain and delegatedBy information in the auth context
* [SYNCOPE-1663] - Value errors in FIQL expressions lead to empty result rather than error messages
* [SYNCOPE-1664] - JSONB: Inconsistent search query when is used a pull correlation rule
* [SYNCOPE-1671] - Wrong JobDelegate column name in scheduled task table
* [SYNCOPE-1672] - Can't retrieve Java classes when add java implementation for Password Rule, Account Rule and Reportlet on Console
* [SYNCOPE-1676] - Wrong header color in reset password enduser
* [SYNCOPE-1677] - Code editor in Console wraps short lines
* [SYNCOPE-1683] - Show connector overridden properties in resource wizard in tabular topology during create
* [SYNCOPE-1684] - NotFoundException thrown when enabled/disabled audit from console
* [SYNCOPE-1690] - NPE when add search condition in topology explore resource
* [SYNCOPE-1691] - Schema labels not used for attribute column headers
** New Feature
* [SYNCOPE-129] - Delegation
* [SYNCOPE-160] - Authentication features
* [SYNCOPE-957] - Multiaccount
* [SYNCOPE-1019] - Template mechanism for Enduser UI
* [SYNCOPE-1220] - Support Groovy implementations in the Netbeans IDE plugin
* [SYNCOPE-1348] - REST: replace bulk operations with batch requests
* [SYNCOPE-1367] - Add some accessibility features to Enduser
* [SYNCOPE-1368] - Add some accessibility features to Console
* [SYNCOPE-1369] - User requests
* [SYNCOPE-1395] - Leverage PostgreSQL's jsonb type
* [SYNCOPE-1401] - Leverage MySQL JSON type
* [SYNCOPE-1455] - New component: sra (API gateway)
* [SYNCOPE-1456] - New component: Keymaster
* [SYNCOPE-1506] - Merge Users
* [SYNCOPE-1511] - Configure audit events create/update/etc of users, groups, etc
* [SYNCOPE-1529] - French (CA) translation for Admin Console
* [SYNCOPE-1545] - Web Access
* [SYNCOPE-1680] - Support Simple MFA as an MFA Provider in WA
* [SYNCOPE-1681] - Support LDAP Google Auth Tokens/Accounts in WA
* [SYNCOPE-1688] - Console: saved queries
** Improvement
* [SYNCOPE-1336] - Add pagination for approvals forms
* [SYNCOPE-1341] - Domain should be configurable parameter for syncope-enduser docker image
* [SYNCOPE-1355] - Document how to access services when using Docker Compose
* [SYNCOPE-1379] - Make configurable resource check timeout
* [SYNCOPE-1382] - Failure specifying push task filters including db column mapped as integer
* [SYNCOPE-1384] - SAML 2.0: Allow to customize RequestedAuthnContext for a given Service Provider
* [SYNCOPE-1385] - Priority propagation timeout hard coded into PriorityPropagationTaskExecutor
* [SYNCOPE-1392] - Reduce usage of Reflection to improve overall performance
* [SYNCOPE-1394] - Add un-claim capability for requests
* [SYNCOPE-1396] - Give the possibility to configure TLS client parameters
* [SYNCOPE-1397] - No Such element exception while editing USER update approval
* [SYNCOPE-1409] - Avoid double round-trip to External Resource during Push
* [SYNCOPE-1412] - Serch for identities with null attributes can be improved
* [SYNCOPE-1416] - remove user_search_null_attr view
* [SYNCOPE-1422] - Permit to provide custom implementation of NotificationManager and AuditManager
* [SYNCOPE-1424] - Improve Propagation task ordered search
* [SYNCOPE-1433] - Unflag/flag uniqueness shouldn't be permitted
* [SYNCOPE-1436] - Remove pullPolicy EAGER fetchType from JPAExternalResource
* [SYNCOPE-1441] - Perform in-memory match for dynamic conditions
* [SYNCOPE-1444] - Pull correlation rules: allow to discriminate ongoing event
* [SYNCOPE-1445] - Docker: support pgjsonb as DBMS option
* [SYNCOPE-1449] - Support multi-value attributes in JEXL expressions
* [SYNCOPE-1465] - Add executor information to Task and Report executions
* [SYNCOPE-1466] - Add context to user, group and any object metadata information
* [SYNCOPE-1468] - Allow for configurable org.quartz.jobStore.misfireThreshold
* [SYNCOPE-1473] - Provide a PropagationActions to maintain a conservative membership policy management
* [SYNCOPE-1498] - Allow variable resolution in Content.xml
* [SYNCOPE-1499] - Add support for READ correlation rule
* [SYNCOPE-1500] - Allow single import from External Resource
* [SYNCOPE-1501] - Allow filtering for explore resource
* [SYNCOPE-1502] - Find Anys using FIQL: SQL improvements
* [SYNCOPE-1508] - Allow to extend the set of attributes requested from External Resources
* [SYNCOPE-1509] - Auto-select language from Accept-Language HTTP header
* [SYNCOPE-1510] - Allow to store encrypted schema's secret key externally
* [SYNCOPE-1513] - Allow to customize security headers
* [SYNCOPE-1515] - Adapt realm selector to actual number of realms
* [SYNCOPE-1517] - Audit appender should be configurable
* [SYNCOPE-1518] - Allow X-Forwarded-For and X-Forwarded-Proto HTTP headers integration
* [SYNCOPE-1519] - SchemaDataBinderImpl#update optimization
* [SYNCOPE-1521] - Allow filtering for Role assignment
* [SYNCOPE-1522] - Realm behaviors for Delegated Administration
* [SYNCOPE-1523] - JPAConnInstanceDAO should be marked as Transactional
* [SYNCOPE-1527] - Allow for custom search conditions
* [SYNCOPE-1530] - Add parameters at User Requests start
* [SYNCOPE-1531] - Easier bulk upload from / download to CSV
* [SYNCOPE-1532] - Allow tilde for key values and Realms name
* [SYNCOPE-1534] - Display friendly error messages in Admin Console
* [SYNCOPE-1535] - Customize the order of the provisions of a resource according to the object classes
* [SYNCOPE-1540] - Make internal storage export DBMS independent
* [SYNCOPE-1541] - XML response message timestamps missing millisecs component if "0 msecs"
* [SYNCOPE-1547] - Allow the possibility to customize the roles to be displayed
* [SYNCOPE-1548] - Allow the possibility to customize the Groups wizard step
* [SYNCOPE-1551] - Allow for info notifications in Admin Console
* [SYNCOPE-1568] - Render custom wizard on user request
* [SYNCOPE-1575] - Provide the ability to specify on which resources the user's status should be propagated
* [SYNCOPE-1591] - Support fetching data from internal storage for XML content loader
* [SYNCOPE-1594] - Allow to filter user requests and forms by username
* [SYNCOPE-1597] - Enable default customization of console layout
* [SYNCOPE-1600] - Flowable: support password form property type
* [SYNCOPE-1608] - Allow wildcard group membership search
* [SYNCOPE-1609] - Reduce the number of table joins into PostgreSQL JSONB persistence implementation
* [SYNCOPE-1610] - Set Reconciliation to work with Pull and Push Correlation Rules if available
* [SYNCOPE-1611] - Caffeine Cache for Virtual Attribute Cache
* [SYNCOPE-1614] - Convert SyncopeService into Spring Boot's InfoContributor
* [SYNCOPE-1615] - Convert LoggerService into Spring Boot's loggers actuator
* [SYNCOPE-1624] - Toggle panel improvements
* [SYNCOPE-1630] - Use Group owners to extend Delegated Administration
* [SYNCOPE-1631] - Pass ConnId ObjectClass to ReconFilterBuilder
* [SYNCOPE-1633] - Give the possibility to add a custom message to the confirm dialog
* [SYNCOPE-1639] - Provide ordering of attributes in the diff view on the history management
* [SYNCOPE-1641] - Allow to purge Propagation Tasks
* [SYNCOPE-1652] - Align AccessPolicy with CAS DefaultRegisteredServiceAccessStrategy
* [SYNCOPE-1653] - Align AttrReleasePolicy with CAS ReturnAllowedAttributeReleasePolicy
* [SYNCOPE-1658] - Allow to view the topology in table format
* [SYNCOPE-1661] - Add sidebar layout customization thorugh JSON file to enduser
* [SYNCOPE-1666] - Security Answer encryption
* [SYNCOPE-1667] - Propagation Policy
* [SYNCOPE-1668] - Provide Entity Cache report and management
* [SYNCOPE-1669] - Create pull results for remediations
* [SYNCOPE-1670] - Support Graceful shutdown
* [SYNCOPE-1673] - Use Passay for password validation and generation
* [SYNCOPE-1674] - Optimize User, Group and Any Object lifecycle events management
* [SYNCOPE-1678] - Allow for non-recursive search operations
* [SYNCOPE-1679] - Allow to search by Auxiliary Any Type class assignment
* [SYNCOPE-1685] - Allow JEXL expression to evaluate to Object
* [SYNCOPE-1687] - Allow to configure External Resources not to pre-fetch objects during propagation
* [SYNCOPE-1689] - Consolidate Provision, Mapping and Items into single JSON column
** Task
* [SYNCOPE-1258] - Upgrade to Font Awesome 5
* [SYNCOPE-1332] - Java 11 language features
* [SYNCOPE-1381] - Support user request from Enduser UI
* [SYNCOPE-1400] - Support MySQL 8
* [SYNCOPE-1402] - Upgrade to Validation API 2.0
* [SYNCOPE-1410] - Prepare code tree for 3.0 architecture
* [SYNCOPE-1435] - Upgrade to Bootstrap 4 / AdminLTE 3
* [SYNCOPE-1464] - Upgrade to Apache Netbeans Maven dependencies
* [SYNCOPE-1486] - Upgrade maven-checkstyle-plugin to checkstyle 8.24
* [SYNCOPE-1489] - Reorganize Travis CI to run the build suite in stages
* [SYNCOPE-1497] - Upgrade to Wicket 9
* [SYNCOPE-1585] - Streamline existing components with WA
* [SYNCOPE-1618] - Use Constructor-level dependency injections