async def METHOD_NAME(
    service_metadata: ServiceDockerData, services_repo: ServicesRepository
) -> list[ServiceAccessRightsAtDB]:
    # AUTO-UPGRADE PATCH policy:
    #
    #  - Any new patch released, inherits the access rights from previous compatible version
    #  - TODO: add as option in the publication contract, i.e. in ServiceDockerData
    #  - Does NOT apply to front-end services
    #
    # SEE https://github.com/ITISFoundation/osparc-simcore/issues/2244)
    #
    if _is_frontend_service(service_metadata):
        return []
    service_access_rights = []
    new_version: Version = as_version(service_metadata.version)
    latest_releases = await services_repo.list_service_releases(
        service_metadata.key,
        major=new_version.major,
        minor=new_version.minor,
    )
    previous_release = None
    for release in latest_releases:
        # NOTE: latest_release is sorted from newer to older
        # Here we search for the previous version patched by new-version
        if is_patch_release(new_version, release.version):
            previous_release = release
            break
    if previous_release:
        previous_access_rights = await services_repo.get_service_access_rights(
            previous_release.key, previous_release.version
        )
        for access in previous_access_rights:
            service_access_rights.append(
                access.copy(
                    exclude={"created", "modified"},
                    update={"version": service_metadata.version},
                    deep=True,
                )
            )
    return service_access_rights