Joinup 2.7.0 Switch to the latest release
Published on: 19/11/2025
New features
- ISAICP-9829: API authentication
- ISAICP-10140: [analysis] Authentication of exposed APIs
- ISAICP-10157: Review PoC from ISAICP-10140
- ISAICP-10158: Convert project from sandbox to permanent
- ISAICP-10159: Add .gitlab-ci.yml file. Include fixing all PHPStan, PHPCS & Co
- ISAICP-10160: Integrate module in Joinup
- ISAICP-10161: Moderate client requests
- ISAICP-10162: Add documentation (README, etc)
- ISAICP-10191: Use a custom content entity type to store the request
- ISAICP-10193: Emails for oauth user clients
- ISAICP-10196: OAuth2 clients managers form
- ISAICP-10199: PoC QA remarks that still need to be fixed
- ISAICP-10205: Create a consumer once a request is approved
- ISAICP-10208: Remove the 'client_credentials' constraint
- ISAICP-10209: Configuration to limit the exposed scopes
- ISAICP-10211: Actions on oauth_client_request deletion
- ISAICP-10212: Convert 'Pending client requests' section to 'Client requests'
- ISAICP-10227: Add bundles to oauth_client_request
- ISAICP-10233: Temporarily disable 'Authorization Code' grant type
- ISAICP-10234: Store the redirect URIs
- ISAICP-10302: Add a description on top of oauth_client_request form
- ISAICP-10348: Allow default scopes to be set regardless of grant type
- ISAICP-10370: Create an OAuth client release
- ISAICP-10374: Navigation for client requests
- ISAICP-10376: OAuth client notification in Joinup
- ISAICP-10377: User can not delete OAuth2 clients
- ISAICP-10378: Moderation navigation for client requests
- ISAICP-10379: You need to set the OAuth2 private key
- ISAICP-10383: Refresh Token is not supported by oauth_client
- ISAICP-10385: Review notifications default texts
- ISAICP-10388: REST routes are broken
- ISAICP-10392: simple_oauth regressions
- ISAICP-10396: Followup upstream remarks
- ISAICP-10402: A user can change all tokens, not only their own.]
Improvements
- ISAICP-10141: Button to copy the source over translation
- ISAICP-10228: Enhance email digest
- ISAICP-10236: Inconsistencies in rights of Collection/Solution owners and facilitators
- ISAICP-10256: Terms of agreement for solution
- ISAICP-10264: Update the 'Online form for Assessments' report tile info
- ISAICP-10269: Sanitize private messages
- ISAICP-10278: New 'Short title' field in the 'Online form for Assessments' webform
- ISAICP-10285: Allow to translate Spatial term names
- ISAICP-10305: Behavior on invalid/malformed endpoints JSON
- ISAICP-10306: All provided endpoints should be up to perform a new fetch
- ISAICP-10336: Assessment online form: link multiple policy initiatives to one assessment
- ISAICP-10390: Rename 'The portal' to 'Portal support' in tests
- ISAICP-10406: Assessment online form: create a link to advanced search
- ISAICP-10437: Reimport countries to include the ISO code & EU membership
- ISAICP-10450: Show live-stream in Portal from Clevercast streaming platform
- ISAICP-10458: Drupal code security update
Accessibility
- ISAICP-10375: Images must have a relevant alt value
Bug fixes
- ISAICP-10144: Runtime deprecation - Calling Drupal\Core\Session\UserSession::hasPermission() with a $permission parameter of type other than string is deprecated
- ISAICP-10240: /admin/reports/fields/file generates a fatal error
- ISAICP-10244: RDF entity path alias leftovers
- ISAICP-10258: joinup profile has architectural violations
- ISAICP-10303: Form not refreshed with 'Filter' after translation outside Babel
- ISAICP-10307: The contact error validation message is displayed twice.
- ISAICP-10308: The 'Translate' button does not have top padding.
- ISAICP-10324: Very narrow modal window for Download
- ISAICP-10342: Wrong revision issue: node (oss_solution) with id 731688, vid 136161.
- ISAICP-10343: This page acts as landing page for the solution.
- ISAICP-10356: Deprecated function: strnatcasecmp
- ISAICP-10398: Alignment issue for content on tiles in 'In the Spotlight' section
- ISAICP-10404: Wrong usage of readonly in constructors unintentionally promoting properties
- ISAICP-10405: 'User subscription' link does not work
- ISAICP-10426: Bug in GroupContentSubscriptionSubscriber::notifyOnGroupEntityCrudOperation
- ISAICP-10436: Deploy on ephemeral with non writable directory
- ISAICP-10453: Dual OauthClientRequestForm behaviour
- ISAICP-10467: TypeError in OauthClientRequest::getUser()
- ISAICP-10468: API Clients are not shown under their designated tab
- ISAICP-10470: Toolkit version
- ISAICP-10472: Oauth clients created by moderators for another user are not displayed
Technical debt
- ISAICP-9971: collection.membership_signup_leave.feature takes 140s
- ISAICP-9972: navigation_menu.feature takes 111s
- ISAICP-9975: authentication.feature takes 129s
- ISAICP-10266: Joinup Slick custom label is not used
- ISAICP-10397: Update tests after enabling ALT and Title on Collection and Solution logo
- ISAICP-10481: Update phpoffice/phpspreadsheet to 5
Testing, operations
- ISAICP-10176: [Playwright] Find a better way to deal with concurrent user logins
- ISAICP-10421: Behat clone tests failing
- ISAICP-10478: Cut a new oauth_client release
Content management
- ISAICP-10229: Archive content items based on different criteria
- ISAICP-10340: Add to the catalogue the independent solution 'Waldur'
- ISAICP-10391: Add OSS solutions to the Other category