* add fixes for workflow API
* Fix the ingestion runner display name being passed to API
---------
Co-authored-by: Aniket Katkar <aniketkatkar97@gmail.com>
- Centralize all notifications in createEntityWithCoverImage
- Change handleCoverImageUpload to return uploadFailed flag instead of showing notifications
- Remove unused parameters (entityLabel, enqueueSnackbar, t) from UploadCoverImageOptions
- Show warning notification only when uploadFailed = true
- Show success notification only when uploadFailed = false
- Fixes issue where both warning and success notifications appeared when upload failed
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: Satish <satish@Satishs-MacBook-Pro.local>
Co-authored-by: Claude <noreply@anthropic.com>
* Fix: Showing validation error if user enter duplicate service name
* Fix: validate service name field on field change instead of form submit
* Playwright: Added e2e test for service name field validation errors
* Fix: fixed the services unit tests
* Fix: fixed the ConfigureService unit tests
* Fix: fixed code smells
* Add assets API and deprecate inline assets field for Domain and Dataproduct
* fix mvn test
* fix py test and add new tests
* fix py test
* fix py test
* fix timeout for workflow test
* address pr feedback
* Update generated TypeScript types
* minor- remove unused function
---------
Co-authored-by: Bhanu Agrawal <bhanuagrawal2018@gmail.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* refactor: Domain and Data Product UI improvements and architecture enhancements
## Major Changes
### Architecture Improvements
- **Refactored AssetSelectionModal**: Split monolithic component into composable hooks
- Extracted `useAssetSelectionContent` hook (806 lines) for shared selection logic
- Created `AssetSelectionDrawer` component for drawer variant
- Reduced main modal component from 700+ to 18 lines
- Enables reuse across modal and drawer UI patterns
- **Domain component reorganization**:
- Renamed `DomainDetailsPage` → `DomainDetails` for consistency
- Deleted legacy `DomainPage.component.tsx` (336 lines)
- Centralized domain page styles in `DomainPageStyles.ts`
### UI/UX Enhancements
- **Breadcrumbs**: Changed to plural labels across all pages
- "Domain" → "Domains" in listings and detail pages
- "Data Product" → "Data Products" in listings and detail pages
- Updated sidebar navigation labels to match
- **Scroll behavior fixes**:
- Removed fixed height constraints causing nested scrolls in right panels
- Changed from `height: @domain-page-height` to `min-height: 70vh`
- Applied to both Domain (domain.less) and Data Product (data-products-details-page.less) detail pages
- Now uses single body scroll for better UX
- **Visual improvements**:
- Added white text color to MUI tooltips for better contrast on black background
- Enhanced GenericProvider with `muiTags` prop support
- Added new `CoverImage` component for domain/data product headers
- Improved `useBreadcrumbs` hook with 187 lines of enhancements
### Bug Fixes
- **TypeScript errors in NotistackUtils.tsx**:
- Fixed implicit 'any' type for `snackbarId` parameters (4 instances)
- Added type assertion for i18n.t() return value
- All type errors resolved
### Component Improvements
- Enhanced TagsViewer with MUI tooltip support
- Updated TagChip component for better tag display
- Improved EntityAvatar component
- Refined drawer hooks with better type safety
* feat: Add cover image upload with reposition functionality for domains
- Add MUICoverImageUpload component with drag-and-drop support
- Implement vertical reposition functionality for cover images
- Integrate cover image field in AddDomainForm
- Update CoverImage component to support position object format
- Add COVER_IMAGE_UPLOAD_MUI field type to form utils
- Support empty entityLink for uploads during domain creation
- Add translations for cover image upload UI
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* feat: Add cover image display with authenticated loading and test IDs
- Update DomainDetails and DataProductsDetailsPage to pass cover image URL and position to CoverImage component
- Implement authenticated image loading with proper loading states in CoverImage component
- Add gray background during authenticated image loading to prevent 401 error flash
- Implement conditional rendering in MUICoverImageUpload to show loading spinner for authenticated images
- Add comprehensive data-testid attributes for both components to improve testability
- Use theme colors for loading backgrounds instead of hardcoded values
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* refactor: Implement generic cover image upload flow and remove dead code
- Create reusable createEntityWithCoverImage utility function
- Refactor domain, subdomain, and data product creation to use generic function
- Fix cover image preview and reposition functionality for client-side handling
- Remove unused AddDomain component and /domain/add route
- Remove dead DomainLeftPanel component
- Reduce code duplication by 77% (344 lines → 79 lines)
- Add proper TypeScript types and ESLint compliance
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* refactor: Update coverImage structure to match new backend API
- Update CoverImageUploadUtils to send coverImage as nested object
- Change from flat structure (coverImage: url, coverImagePosition: number)
- Change to nested structure (coverImage: { url: string, position: string })
- Update DomainDetails to read from nested coverImage object
- Update DataProductsDetailsPage to read from nested coverImage object
- Convert position between CSS string format ("20px") and pixel number (20)
- Fix DomainRouter test by removing deleted AddDomain component references
- Add type assertions for compatibility until backend types are regenerated
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* refactor: Use percentage-based positioning for cover images
Fix cover image display inconsistency between upload field (622x103px)
and detail page (auto x 131px) by using CSS percentage values for
translateY instead of absolute pixels. This ensures the same visual
result regardless of container width.
- Store position as percentage string (e.g., "-16%") instead of pixels
- Convert between pixels (for dragging UX) and percentage (for storage)
- Update CoverImagePosition interface to use string type
- Simplify detail page rendering by removing parseInt conversions
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* Fix ts error
* refactor: Extract generic file upload component from cover image upload
- Create MUIFileUpload component with drag-and-drop, validation, and preview support
- Refactor MUICoverImageUpload to use MUIFileUpload (33% code reduction)
- Add 20 i18n keys across all 18 languages for file upload features
- Fix TypeScript types and ESLint formatting issues
- Fix upload zone height to match preview at 103px
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* Revert entity-transfer-message change
* Update checkDefaultStateForNavigationTree for 2 domains tree and tree item
* Fix navigation page test
---------
Co-authored-by: Satish <satish@Satishs-MacBook-Pro.local>
Co-authored-by: Claude <noreply@anthropic.com>
* remove unwanted semantic rule and supported more playwright test
* fix data product filter not working and added playwright test for it
* fix test and some sonar issue
* fix the sonar issue
* fix the timeout issue
* refactor searchQuery to avoid AND and OR operators
* fix searchQuery function
* fix serviceDetails.tsx
* refactor for searchQuery
* update searchData calls with searchQuery
* fix unit test
* refactor queryFilter for dataContractUtil.ts
* fix authProvider for global domain filter
* address PR comments
* revert dataProduct fqn change
* refactor all query filtersusing getTermQuery function
* fix test
* fix tests
* fix e2e tests
* fix test
* fix service listing
* fix test
* fix service spec
* fix glossary spec and tag spec
* fix domains spec
* fix tag spec
* fix failing specs
* fix failed specs
* fix failing tests
* fix domain spec
* fix classification & service listing spec
* change query filter for following & change message for no online users
* add missing followers field in entity index mapping
* add missing owners field in entity index mapping
* address comments
* fix failing test
---------
Co-authored-by: Pranita <pfulsundar8@gmail.com>
Co-authored-by: Akash Jain <15995028+akash-jain-10@users.noreply.github.com>
Co-authored-by: sonikashah <sonikashah94@gmail.com>
* supported contract owner rule additional playwright
* added all operator test for owners
* supported addition test for description operator
* change the description value from empty quotes to undefined to get that removed from data asset and the validation should work correctly on this
* Adding actualCase keyword to team and user index mappings
* change the query to displayName search from the fqn and name for better validation
* change the owner rule to name and added domain playwright test
* Conditional Sensitive Case Normalising in Search Aggregation
* Remove to lower case introduced by accident
* push the actual case field setting
* added is condition with teams for owners
* Reverted the displayName.actualCase changes
* reverted the owner back to fqn and supported fqn value and displayOption
* set the default operator for description
* changes made as per comments
---------
Co-authored-by: Ram Narayan Balaji <ramnarayanb3005@gmail.com>
* chore(ui): fix data contract flaky test around contract tab not found
* modify the test to have their own table to run to avoid flakiness
* fix contract failing
* revert unwanted commit
* change the contract test admin page way
* fix the blank page issue after redirect
* ISSUE-23316: icon used now CloseCircleOutlined
* ISSUE-23316: Using svg from projects assets
* fix the comments
* revert the unwanted changes
---------
Co-authored-by: Ashish Gupta <ashish@getcollate.io>
* Fix: Hide owner and domain add button if classification is disabled
* Playwright: Added e2e test case for disabled owner and domain add button
* Minor: Added network idle await in e2e
* Fix: fixed the classification util unit test
* Playwright: wait for loader to disappear before proceeding in UI tests
* fix(ui): updated default font size to 14px and grey color based on style guide
* fix(ui): apply GlobalStyles for consistent font size of 14px across the application
* Draft Implementation of Custom Workflows
* Multiple Entities in the Same Trigger for Workflow, along with draft implementation of signal id
* Improved User Approval Task and Impl
* Custom Workflows - Draft Implementation 2, improved periodic batch entity filter and other improvements
* feat(governance): Implement transactional custom workflows - improved
This commit introduces a robust, transactional, and extensible framework for custom governance workflows in OpenMetadata.
Key features and improvements include:
Transactional Workflow Management: A new WorkflowTransactionManager ensures atomic operations for creating, updating, and deleting workflow definitions, maintaining consistency between the OpenMetadata database and the Flowable engine.
Safe ID Encoding: Implemented a WorkflowIdEncoder to generate safe, Base64-encoded, and collision-resistant IDs for Flowable processes, preventing errors from ID truncation.
Rollback and Deprecation Tasks:
Added RollbackEntityTask to revert entities to their last approved state.
Introduced DeprecateStaleEntityTask for automated lifecycle management of stale assets.
Enhanced Workflow Engine:
Improved WorkflowHandler to validate workflow definitions before deployment.
Added new custom functions to the rule engine for checking entity update timestamps and calculating field completeness scores.
CI/CD and Build Improvements:
Updated the CI Dockerfile with a multi-stage build and refined dependency installation.
Modified POM files to include necessary dependencies for new features.
* Adding DataCompleteness Task Node, Flowable Debug logs
* Transaction handling for Custom Workflow - Initial Draft
* add new tasks to node definition interface
* Update generated TypeScript types
* Draft Implementation of Multi Reviewer Approval Task with Migration
* Update generated TypeScript types
* Transaction handling fix, id truncation fix by migration, feed repo fix for multi reviewer pattern, copilot comments
* Update generated TypeScript types
* Fixed Multi Reviewer approval to take consideration of the namespaced variables, Fixed RollBackEntity task to follow subprocess like other automated tasks, copilot nitpicks
* Remove conditionalSetEntityAttributes as it is not needed anymore
* Update generated TypeScript types
* Completely remove the setConditionalAttributes to fix compilation errors
* Removed the comments in the schemaChanges
* Created a new Task called CreateDetailedApprovalTaskImpl, Fixed RollBackEntityTask to roll back to either Approved or Rejected state, use namespaced variables, Updated the workflow handler to resolve the tasks and remove them from the user who has approved the task in the feed during multi reviewer approval, TransactionManager updated to keep Transactions in place, Improve the Validation Node input in the Mainworkflow java to handle proper graph traversal, Find Proper Termination Message for the two user events that are conflicting, Include Message in the request approval thread task for proper messages
* Update generated TypeScript types
* Rendering of messages in task thread
* Fix PeriodicBatchEntityTriggerTask to separate workflows based on entities Draft, Fix: SetEntityAttributes Impl to handle multiple fields, Fix: DataCompletenessTask Draft
* Fix DataCompletenessTask BoundaryEvent in Flowable
* Introduced Wf Deployment Strategy for transaction Handling, Improved user tasks for better termination event naming, fix periodic batch entity trigger to fetch the entity instead of all the entities in the trigger, Migrated GlossaryApprovalWorkflow.json with new nodes and edges, Fixed test cases and some edge cases
* Update generated TypeScript types
* Added performTasks for TagRepository and DataProductRepository, Removed test api, removed unnecessary change from workflow json, improved DataCompletenessImpl, Improved CreateDetailedApprovalTaskImpl to show what updated and not updated in the thread response
* Remove Entity Certification and Entity Status tasks and make use of generic set entity attribute task
* Update generated TypeScript types
* Fix the compilation issues!
* Remove setCertification and setEntityAttributes from createWorkflowDefinition
* Test cases for custom workflows related to glossaryTermApprovalWorkflow
* Test cases for custom workflows
* Changed info to debug logs
* Update generated TypeScript types
* DetailedUserApprovalTask changed to reviewChange task, Have validations for workflows where user approval tasks can only be available for entities that support reviewers
* Fix compilation issues and mvn spotless apply
* Update generated TypeScript types
* Remove Extra assignees from user tasks
* Update generated TypeScript types
* Replace Tags/GlossaryTerms during Mutual Exclusivity and Append when there is no Mutual Exclusivity
* Workflow Transaction Manager to handle authorization as part of its functionality, Added Validation for workflows using /validate endpoint
* Increase the Flowable's polling time to 60 seconds to poll timer and async jobs table
* Update generated TypeScript types
* Enum for UserTask Termination Messages, Removed WorkflowUtils to use WorkflowHandler's terminateDuplicate Instances, Approval and rejecters list in the variables, using namespaced variables for updatedBy
* Reverted the enum for userTaskType for now
* Added new tests for dataContract, dataProduct and Tag for user approval tasks
* Glossary Approval Workflow changed to handle jsonLogic according to UI expectations
* Added a new Task type for change description tasks to review and suggest the changes, Added checkUpdatedByReviewer incase of perfom tasks, increase wf test timeout
* Update generated TypeScript types
* TaskWorkflow constructor public to be used by Collate Repo
* AutoApproveServiceTaskImpl incase the assignees are not there for the userTask with ExlusiveGateway builder with hasAssignees
* Fix Compilation Issues - Upgrade of deps to lang3
* ExclusiveGatewayBuilder set exclusive as true, and other minor changes for test and approval tasks
* Added a different wait mechanism for user tasks in WorkflowDefinitionResourceTest.java
* Combined UserApprovalTask and ChangeReviewTask into one to handle suggestions in the same task!
* Update generated TypeScript types
* Test Case Approval Workflow, Removing orphaned changeReviewTask, Test case fix and new test cases
* Update generated TypeScript types
* Treat empty strings, arrays as missing by default
* Update generated TypeScript types
* fix compilation issues by changing the schema properly
* Remove Stale ChangeReview Task
* Update generated TypeScript types
* Enhanced User Approval task to show changed fields along with what changed and the task resolve function as well
* Update generated TypeScript types
* Add Knowledge center page to workflows event consumer, remove legacy backward compatibility for triggers, lenient validations for workflows when there are no nodes
* EntitySpecific Filters for EventBased Trigger, Removing Backward Compatibility logic for filters, Removed unnecessary comments and execution variables, Handle Structured task resolver for dataProduct, dataContract, tag and testCase, Modified GlossaryApprovalWorkflow.json and improved the MigrationUtil
* Update generated TypeScript types
* Bring back entitycertification and glosarystatus task for backward compatibility
* Update generated TypeScript types
* Filter is a map, entity specific filters are stringified, have certification and glossary status tasks in nodeinterface
* Merge Main
* Remove Suggestions for RequestApproval
* Update generated TypeScript types
* Remove Old Deployments of Periodic Batch Entity Trigger and use hiphen to trigger to avoid accidental triggering
* Resolve Merge conflicts, Java Checkstyle
* Update generated TypeScript types
* Fix Migrations
* Added alter table queries in 1.6.0 to avoid cached plan queries in flowable
* Increase timeout in workflow definition resource test
* Increase polling in workflow definition resource test
* Fix java Checkstyle
* comment the flaky test
* COmmented out Flaky Test Cases, fixed a bug on team reviewers
* Resolve java checkstyle after resolving conflicts
* add updated at field in json logic for glossary
* update fields
* add version field
* Update the rule config of new term node with "and" and update the migration as well
* add equal not equal op
* Delete the trigger workflows using like condition
* Defensive Fallback for multiple task instances created by race condition, Terminate duplicate instances of main workflows
* reverting operators
* Approval Capabilities for Metrics
* Update generated TypeScript types
* Move Migrations to 1.10.1 from 1.10.0
* Removed the extra spaces in Migration 1.10
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: karanh37 <karanh37@gmail.com>
* Fix#23754: test suite owner is getting blocked when trying to add test cases to a bundle suite
* add playwright test for test suite (#23768)
* addressing comment
---------
Co-authored-by: Shailesh Parmar <shailesh.parmar.webdev@gmail.com>
* Update `TableDiffParamsSetter` to move data at table level
This means that `key_columns` and `extra_columns` will be defined per table instead of "globally", just like `data_diff` expects
* Update `TableDiffValidator` to use table's `key_columns`
Call `data_diff` and run validations using each table's `key_columns`
* Create migration to update `tableDiff` test definition
* Fix Playwright test