Skip to content

Conversation

@meladRaouf
Copy link
Collaborator

JIRA ticket
Will be released in: 2026.1.0

Notable changes

  • Remove Jackson entirely from the project.
  • Refactor the Orchestrator module to use Kotlin serialization for step caching.

Testing guidance

  • Enable “Don’t keep activities” to verify that step caching is active. During each step in dual modality identification, move the app to the background to force writing to and reading from the cache, and confirm that the flow resumes correctly.

Additional work checklist

  • Effect on other features and security has been considered
  • Design document marked as "In development" (if applicable)
  • External (Gitbook) and internal (Confluence) Documentation is up to date (or ticket created)
  • Test cases in Testiny are up to date (or ticket created)
  • Other teams notified about the changes (if applicable)

@cla-bot cla-bot bot added the ... label Jan 20, 2026
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This pull request refactors the Orchestrator module to migrate from Jackson serialization to Kotlin serialization for caching steps during orchestration flows. The main goal is to remove the Jackson dependency entirely from the project.

Changes:

  • Removed Jackson library dependencies and replaced them with Kotlin serialization
  • Added @Serializable annotations to all step params, results, and related data classes
  • Replaced Jackson's @JsonTypeInfo and @JsonSubTypes with Kotlin serialization's SerializersModule and polymorphic serialization
  • Updated OrchestratorCache to use Kotlin serialization instead of Jackson for serializing/deserializing steps
  • Removed Serializable interface constraint from navigation result handler methods
  • Changed ActionRequest.unknownExtras type from Map<String, Any?> to Map<String, String?>

Reviewed changes

Copilot reviewed 76 out of 76 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
infra/ui-base/.../NavigationResultExt.kt Removed Serializable type constraint from generic result handlers
infra/orchestrator-data/.../ActionRequest.kt Migrated to Kotlin serialization, changed from sealed class inheritance to composition, converted unknownExtras to String map
infra/orchestrator-data/.../ActionRequestIdentifier.kt Added @Serializable annotation
infra/core/.../JsonHelper.kt Removed Jackson-based methods, kept only Kotlin serialization utility
infra/core/.../AgeGroup.kt Removed Jackson annotations, added Kotlin @Serializable
infra/config-store/.../ModalitySdkType.kt Added @Serializable, removed StepParams interface
infra/config-store/.../ProjectConfiguration.kt Removed redundant else branch from exhaustive when expression
feature/orchestrator/.../OrchestratorCache.kt Replaced Jackson serialization with Kotlin serialization for step caching
feature/orchestrator/.../Step.kt Replaced Jackson mixins with Kotlin SerializersModule for polymorphic serialization
feature/orchestrator/.../OrcJsonHelper.kt New helper object providing configured Json instance for orchestrator serialization
feature/orchestrator/.../OrchestratorViewModel.kt Updated to use Kotlin serialization for ActionRequest serialization
feature/consent/.../ConsentParams.kt Renamed field from type to consentType
feature/consent/.../ConsentFragment.kt Updated to use renamed field consentType
feature/client-api/.../ActionRequestExtractor.kt Updated getUnknownExtras() to return Map<String, String?>
feature/select-subject/.../SelectSubjectResult.kt Added default value for savedCredential parameter
feature/external-credential/.../ExternalCredentialParams.kt Added default values for nullable parameters
Various Params/Result classes Added @Serializable and @SerialName annotations to all step params and results
Various build.gradle.kts files Added Kotlin serialization plugin to affected modules
Test files Updated tests to use Kotlin serialization APIs

Copy link
Contributor

@alex-vt alex-vt left a comment

Choose a reason for hiding this comment

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

Jackson is still used in a few places, mainly in EventDatabaseSerialization.kt and TokenizationSerializerTest. Just in case checking if that's intentional, then the goal is to remove it entirely from the project.

@meladRaouf
Copy link
Collaborator Author

Jackson is still used in a few places, mainly in EventDatabaseSerialization.kt and TokenizationSerializerTest. Just in case checking if that's intentional, then the goal is to remove it entirely from the project.

They are now unused files. I planned to remove them as part of the cleanup PR, Also I will completely remove the Jackson library and encapsulate all JSON handling inside JsonHelper, making the fromJson and toJson calls shorter and cleaner.

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 78 out of 78 changed files in this pull request and generated 8 comments.

params = MatchParams(
flowType = FlowType.IDENTIFY,
queryForCandidates = EnrolmentRecordQuery(),
biometricDataSource = BiometricDataSource.Simprints, // Test Simprints variant
Copy link
Contributor

Choose a reason for hiding this comment

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

Can we also test with CommCare as it also contains callingPackageName

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

I think BiometricDataSource.CommCare is covered in line 287

Copy link
Contributor

@BurningAXE BurningAXE left a comment

Choose a reason for hiding this comment

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

A few comments (including a few good catches from Copilot) but otherwise looks good.

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 78 out of 78 changed files in this pull request and generated 5 comments.

@sonarqubecloud
Copy link

@meladRaouf meladRaouf merged commit 7be2002 into main Jan 21, 2026
14 checks passed
@meladRaouf meladRaouf deleted the ks-orch branch January 21, 2026 20:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants