Skip to main content

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