Skip to content

Conversation

@gilluminate
Copy link
Contributor

@gilluminate gilluminate commented Jan 29, 2026

Ticket ENG-2063

Description Of Changes

Add support for migrating consent preferences from Transcend's tcm cookie to Fides consent format, following the same pattern as the existing OneTrust integration. This enables customers migrating from Transcend to Fides to preserve their users' existing consent preferences without requiring users to re-consent.

The implementation follows the established provider pattern and keeps bundle size minimal (49.83 KB gzipped, under the 53 KB limit).

Code Changes

  • Add TranscendProvider class implementing ConsentMigrationProvider interface
  • Add TRANSCEND enum value to ConsentMigrationProviderName
  • Add TranscendToFidesConsentMapping type definition
  • Add transcendFidesMapping configuration option across all config files
  • Register Transcend provider in consent migration registry
  • Add comprehensive test suite with 19 test cases covering cookie parsing, value mapping, error handling, and real-world scenarios
  • Update documentation with usage examples
  • Add Transcend mapping example to demo page

Steps to Confirm

  1. Create a valid non-TCF experience in Admin UI
  2. Visit the TCF experience in the demo page (eg. http://localhost:3001/fides-js-demo.html?geolocation=us-ut)
  3. Add a Transend cookie using the devtools console
document.cookie = 'tcm={"purposes":{"NoConsentNeeded":"Auto","SaleOfInfo":true,"Analytics":false,"Functional":false,"Advertising":false},"timestamp":"2026-01-29T00:55:33.595Z","confirmed":true,"prompted":true,"updated":true}; path=/';
  1. Add the following to the <head> of the fides-js-demo.html file ABOVE the first <script> tag
<script>
  (function () {
    const transcendMapping = {
      NoConsentNeeded: ["essential"],
      SaleOfInfo: ["data_sales_and_sharing"],
      Analytics: ["analytics"],
      Functional: ["functional"],
      Advertising: ["advertising"],
    };

    window.fides_overrides = {
      transcend_fides_mapping: encodeURIComponent(
        JSON.stringify(transcendMapping),
      ),
    };
  })();
</script>

Now reload the page and ensure that the fides cookie automatically gets set and that the consent values reflect those of the tcm cookie and the mapping was successful.

Pre-Merge Checklist

  • Issue requirements met
  • All CI pipelines succeeded
  • CHANGELOG.md updated
    • Add a db-migration This indicates that a change includes a database migration label to the entry if your change includes a DB migration
    • Add a high-risk This issue suggests changes that have a high-probability of breaking existing code label to the entry if your change includes a high-risk change (i.e. potential for performance impact or unexpected regression) that should be flagged
    • Updates unreleased work already in Changelog, no new entry necessary
  • UX feedback:
    • All UX related changes have been reviewed by a designer
    • No UX review needed
  • Followup issues:
    • Followup issues created
    • No followup issues
  • Database migrations:
    • Ensure that your downrev is up to date with the latest revision on main
    • Ensure that your downgrade() migration is correct and works
      • If a downgrade migration is not possible for this change, please call this out in the PR description!
    • No migrations
  • Documentation:
    • Documentation complete, PR opened in fidesdocs
    • Documentation issue created in fidesdocs
    • If there are any new client scopes created as part of the pull request, remember to update public-facing documentation that references our scope registry
    • No documentation updates required

@vercel
Copy link
Contributor

vercel bot commented Jan 29, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

2 Skipped Deployments
Project Deployment Actions Updated (UTC)
fides-plus-nightly Ignored Ignored Preview Jan 29, 2026 10:05pm
fides-privacy-center Ignored Ignored Jan 29, 2026 10:05pm

Request Review

@gilluminate gilluminate force-pushed the gill/ENG-2063/support-migration-of-transcend branch from 554403e to 46153a9 Compare January 29, 2026 21:56
@gilluminate gilluminate marked this pull request as ready for review January 29, 2026 21:56
@gilluminate gilluminate requested a review from a team as a code owner January 29, 2026 21:56
@gilluminate gilluminate requested review from speaker-ender and removed request for a team January 29, 2026 21:56
@greptile-apps
Copy link
Contributor

greptile-apps bot commented Jan 29, 2026

Greptile Overview

Greptile Summary

This PR adds Transcend cookie migration support to fides.js, enabling customers migrating from Transcend to Fides to preserve users' existing consent preferences. The implementation follows the established provider pattern used by the existing OneTrust integration.

Key changes:

  • Adds TranscendProvider class that implements the ConsentMigrationProvider interface
  • Parses Transcend's tcm cookie JSON format and maps purposes to Fides notice keys
  • Handles the special "Auto" consent value from Transcend (treated as truthy)
  • Includes comprehensive test suite with 19 test cases covering parsing, mapping, error handling, and real-world scenarios
  • Updates all necessary configuration files, types, and documentation
  • Bundle size remains under the 53 KB limit (49.83 KB gzipped)

Issues found:

  • Changelog filename has a typo: "transend" instead of "transcend"

The implementation is well-structured, follows existing patterns, has excellent test coverage, and handles edge cases appropriately.

Confidence Score: 4.5/5

  • This PR is safe to merge with minimal risk once the changelog filename typo is corrected
  • Score reflects excellent code quality, comprehensive test coverage, and following established patterns. The only issue is a minor typo in the changelog filename which should be corrected before merge.
  • The changelog file needs to be renamed from ENG-2063-transend-migration.yaml to ENG-2063-transcend-migration.yaml

Important Files Changed

Filename Overview
changelog/ENG-2063-transend-migration.yaml Simple changelog entry with typo in filename ("transend" instead of "transcend")
clients/fides-js/src/lib/consent-migration/transcend.ts Clean implementation following OneTrust pattern, handles edge cases well
clients/fides-js/tests/lib/consent-migration/transcend.test.ts Comprehensive test coverage with 19 test cases covering all scenarios

Copy link
Contributor

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

3 files reviewed, 1 comment

Edit Code Review Agent Settings | Greptile

@gilluminate gilluminate force-pushed the gill/ENG-2063/support-migration-of-transcend branch from 46153a9 to c960521 Compare January 29, 2026 22:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants