* docs: add workday-integration solution design spec
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* docs: update workday solution spec — no credential prompts, backup existing config
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* docs: add workday-integration solution implementation plan
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* fix: apply test fixes and resolve rebase conflict in github-actions-deploy setup
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* chore: add Pied Piper hierarchy data and configuration for workday-integration solution
* feat: add workday-integration solution setup script
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* docs: add README for workday-integration solution
* chore: rename solution slug from workday-integration to workday
- git mv cortexapps_cli/solutions/workday-integration → workday
- Update solution_tag, backup_dir, and docstring in setup.py
- Update ownershipReportUrl in configuration.json
- Update CLI commands in README.md
- Add Silicon Valley attribution to README description text
- Update all workday-integration references in test_workday_setup.py
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* fix: workday configuration, UI polish, and SETUP_DESCRIPTION wording
- Fix configuration.json: add teamId/teamName at root of reportMappingV2
(required by Cortex API for ONE_EMPLOYEE_ONE_TEAM type)
- Add CLI-equivalent echo before API call in setup.py for transparency
- Reorder README: move Org Hierarchy before Quick Start so Data Model
menu shows the hierarchy diagram instead of install commands
- Suppress "0 entities imported" line when no entities were imported
- Change "post-install setup script" -> "setup script" across all
solution SETUP_DESCRIPTIONs and the fallback in solutions.py
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* fix: switch to supervisory org format, add validation step, update import instructions
- Replace pied-piper-hierarchy.json with pied-piper-supervisory-org.json
(uses childHierarchyColumn/parentHierarchyColumn for hierarchy linkage)
- Update configuration.json: supervisory org field mapping, point ownershipReportUrl
to GitHub Pages for local testing (will switch to raw.githubusercontent.com after merge)
- Add _validate_integration() step that calls POST /api/v1/workday/configuration/validate
and warns on failure without aborting
- Update post_steps() instructions: Catalog → All Entities → Import Entities → Workday
→ Sync Entities → Next Step
- Update tests for new data shape and validation step
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* fix: mark_undone after deleting existing config, parse isValid from validate response
- Add mark_undone() to SolutionSetup base class so step state can be
cleared when the underlying resource is deleted
- Call mark_undone("configure") after deleting existing Workday config,
so the configure step isn't skipped on the next run
- Fix _validate_integration(): validate endpoint always returns HTTP 200;
must check configurations[0].isValid in the JSON body and raise on false
- Update tests for all three fixes
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* fix: clear stale configure state when no integration exists on server
The already_done("configure") cache can go stale if the Workday
integration is deleted outside of the setup script. The check step
now calls mark_undone("configure") on 404 (no integration on server),
ensuring the configure step always runs when there's nothing to skip.
Combined with the previous fix (mark_undone after user-confirmed delete),
all paths are now covered:
- No integration on server (404) → mark_undone → configure runs
- Integration found, user deletes → mark_undone → configure runs
- Integration found, user keeps → state unchanged → configure skips
Also: update README Data Model section with architecture flow diagram
showing Workday Report → Cortex Integration → Team Catalog alongside
the Pied Piper org hierarchy.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* fix: use directory URL for ownershipReportUrl (Cortex appends /?format=json)
* fix: swap fieldOnParentNode/fieldOnChildNode in supervisory org mapping
parent[fieldOnParentNode] must equal child[fieldOnChildNode] for
Cortex to link teams in a hierarchy. The columns were reversed:
fieldOnParentNode = parentHierarchyColumn (parent's own SUP ID)
fieldOnChildNode = childHierarchyColumn (child's pointer to parent SUP ID)
With the previous (wrong) values, Erlich's childHierarchyColumn (null)
never matched any child's parentHierarchyColumn, so only the root team
was imported.
* fix: restructure Pied Piper data to match cortex-cx supervisory org format
- Workteam_Group is now a nested array of objects (not flat fields)
- Root team uses parentTeamId: "NONE" (string, not null) matching cortex-cx
- Team_Managed only present for managers
- Managers_Email field added for reporting chain
- configuration.json updated to ONE_EMPLOYEE_MULTIPLE_TEAMS matching cortex-cx
- Tests updated for nested Workteam_Group structure
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* fix: add employeeRole field to Pied Piper report entries
* fix: add After Installing, Report Format, and Field Mapping sections to README
* chore: move Report Format and Field Mapping into Data Model section
* chore: consolidate Data Model, Report Format, and Field Mapping into single code block
* fix: add prerequisite step to enable Auto Import Workday teams
---------
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>