@uipath/skills 1.196.0 → 1.197.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +5 -2
- package/CODEOWNERS +22 -7
- package/README.md +14 -1
- package/assets/skill-status.json +14 -1
- package/assets/uip-catalog-snapshot.json +13 -2
- package/hooks/hooks.json +12 -0
- package/hooks/send-telemetry.sh +445 -0
- package/hooks/suggest-permissions.sh +6 -0
- package/package.json +1 -1
- package/skills/uipath-admin/SKILL.md +24 -4
- package/skills/uipath-admin/references/audit-commands.md +25 -21
- package/skills/uipath-admin/references/audit-workflow-guide.md +26 -25
- package/skills/uipath-admin/references/diagnose/CAPABILITY.md +74 -0
- package/skills/uipath-admin/references/diagnose/references/failure-modes.md +228 -0
- package/skills/uipath-admin/references/diagnose/references/troubleshooting-guide.md +106 -0
- package/skills/uipath-admin/references/identity-troubleshoot-guide.md +251 -0
- package/skills/uipath-agents/SKILL.md +12 -8
- package/skills/uipath-agents/references/coded/capabilities/context-grounding.md +2 -0
- package/skills/uipath-agents/references/coded/capabilities/conversational-agents.md +2 -0
- package/skills/uipath-agents/references/coded/capabilities/guardrails/guardrails-recommend.md +12 -7
- package/skills/uipath-agents/references/coded/capabilities/guardrails/guardrails.md +141 -1
- package/skills/uipath-agents/references/coded/capabilities/human-in-the-loop.md +2 -0
- package/skills/uipath-agents/references/coded/capabilities/integration-service.md +19 -33
- package/skills/uipath-agents/references/coded/lifecycle/bindings-reference.md +54 -22
- package/skills/uipath-agents/references/coded/lifecycle/build.md +1 -0
- package/skills/uipath-agents/references/coded/lifecycle/evaluations/evaluation-sets.md +5 -1
- package/skills/uipath-agents/references/coded/lifecycle/setup.md +3 -1
- package/skills/uipath-agents/references/coded/quickstart.md +11 -10
- package/skills/uipath-agents/references/coded-vs-lowcode-guide.md +1 -0
- package/skills/uipath-agents/references/context-grounding-patterns.md +1 -1
- package/skills/uipath-agents/references/lowcode/agent-definition.md +97 -12
- package/skills/uipath-agents/references/lowcode/capabilities/built-in-tools/analyze-attachments.md +2 -2
- package/skills/uipath-agents/references/lowcode/capabilities/built-in-tools/batch-transform/impl-json.md +40 -14
- package/skills/uipath-agents/references/lowcode/capabilities/built-in-tools/built-in-tools.md +4 -3
- package/skills/uipath-agents/references/lowcode/capabilities/built-in-tools/deeprag/impl-json.md +38 -6
- package/skills/uipath-agents/references/lowcode/capabilities/context/attachments.md +1 -1
- package/skills/uipath-agents/references/lowcode/capabilities/context/context.md +1 -1
- package/skills/uipath-agents/references/lowcode/capabilities/context/datafabric.md +1 -1
- package/skills/uipath-agents/references/lowcode/capabilities/context/index.md +7 -3
- package/skills/uipath-agents/references/lowcode/capabilities/escalation/escalation.md +49 -38
- package/skills/uipath-agents/references/lowcode/capabilities/guardrails/guardrails-recommend.md +3 -1
- package/skills/uipath-agents/references/lowcode/capabilities/guardrails/guardrails.md +49 -49
- package/skills/uipath-agents/references/lowcode/capabilities/inline-in-flow/inline-in-flow.md +34 -14
- package/skills/uipath-agents/references/lowcode/capabilities/integration-service/integration-service.md +1 -1
- package/skills/uipath-agents/references/lowcode/capabilities/memory/memory.md +2 -0
- package/skills/uipath-agents/references/lowcode/capabilities/process/process.md +2 -2
- package/skills/uipath-agents/references/lowcode/capabilities/process/solution-files.md +1 -1
- package/skills/uipath-agents/references/lowcode/critical-rules/autonomous-critical-rules.md +15 -0
- package/skills/uipath-agents/references/lowcode/critical-rules/conversational-critical-rules.md +19 -0
- package/skills/uipath-agents/references/lowcode/{critical-rules.md → critical-rules/critical-rules.md} +25 -27
- package/skills/uipath-agents/references/lowcode/debug.md +6 -3
- package/skills/uipath-agents/references/lowcode/evaluations/evaluate.md +2 -0
- package/skills/uipath-agents/references/lowcode/lowcode.md +29 -6
- package/skills/uipath-agents/references/lowcode/model-selection-guide.md +4 -1
- package/skills/uipath-agents/references/lowcode/project-lifecycle.md +20 -8
- package/skills/uipath-agents/references/lowcode/prompting/agent-prompting-guide.md +17 -0
- package/skills/uipath-agents/references/lowcode/{agent-prompting-guide.md → prompting/autonomous-agent-prompting-guide.md} +9 -11
- package/skills/uipath-agents/references/lowcode/prompting/conversational-agent-prompting-guide.md +123 -0
- package/skills/uipath-agents/references/lowcode/solution-resources.md +1 -1
- package/skills/uipath-api-workflow/SKILL.md +32 -12
- package/skills/uipath-api-workflow/references/cli-reference.md +110 -22
- package/skills/uipath-api-workflow/references/connector-activity-discovery.md +43 -4
- package/skills/uipath-api-workflow/references/troubleshooting.md +23 -7
- package/skills/uipath-api-workflow/references/workflow-file-format.md +25 -7
- package/skills/uipath-coded-apps/SKILL.md +55 -12
- package/skills/uipath-coded-apps/assets/fixtures/governance-dashboard-starter-kit.tar.gz +0 -0
- package/skills/uipath-coded-apps/assets/scripts/dashboards/build-dashboard.mjs +1371 -0
- package/skills/uipath-coded-apps/assets/scripts/dashboards/capability-registry.json +845 -0
- package/skills/uipath-coded-apps/assets/scripts/dashboards/flows/build.mjs +338 -0
- package/skills/uipath-coded-apps/assets/scripts/dashboards/flows/edit.mjs +248 -0
- package/skills/uipath-coded-apps/assets/scripts/dashboards/flows/template.mjs +82 -0
- package/skills/uipath-coded-apps/assets/scripts/dashboards/flows/upgrade.mjs +73 -0
- package/skills/uipath-coded-apps/assets/scripts/dashboards/lifecycle.mjs +207 -0
- package/skills/uipath-coded-apps/assets/scripts/dashboards/setup-admin-folder.mjs +146 -0
- package/skills/uipath-coded-apps/assets/scripts/dashboards/tests/regime-eject.test.mjs +124 -0
- package/skills/uipath-coded-apps/assets/scripts/dashboards/tests/resolution.test.mjs +1635 -0
- package/skills/uipath-coded-apps/assets/templates/action-app/app-template.css +9 -0
- package/skills/uipath-coded-apps/assets/templates/action-app/document-tab-template.css +139 -0
- package/skills/uipath-coded-apps/assets/templates/action-app/form-template.css +442 -0
- package/skills/uipath-coded-apps/assets/templates/action-app/index-template.css +111 -0
- package/skills/uipath-coded-apps/assets/templates/action-app-template.md +357 -152
- package/skills/uipath-coded-apps/assets/templates/web-app-template.md +255 -78
- package/skills/uipath-coded-apps/references/create-action-app.md +284 -195
- package/skills/uipath-coded-apps/references/create-web-app.md +64 -26
- package/skills/uipath-coded-apps/references/dashboards/CAPABILITY.md +179 -0
- package/skills/uipath-coded-apps/references/dashboards/aesthetic/charting.md +138 -0
- package/skills/uipath-coded-apps/references/dashboards/aesthetic/layout-patterns.md +152 -0
- package/skills/uipath-coded-apps/references/dashboards/plugins/build/impl.md +423 -0
- package/skills/uipath-coded-apps/references/dashboards/plugins/deploy/impl.md +322 -0
- package/skills/uipath-coded-apps/references/dashboards/primitives/customization.md +66 -0
- package/skills/uipath-coded-apps/references/dashboards/primitives/detail-views.md +64 -0
- package/skills/uipath-coded-apps/references/dashboards/primitives/incremental-editor.md +92 -0
- package/skills/uipath-coded-apps/references/dashboards/primitives/state-file.md +64 -0
- package/skills/uipath-coded-apps/references/dashboards/primitives/tier-resolution.md +474 -0
- package/skills/uipath-coded-apps/references/debug.md +15 -21
- package/skills/uipath-coded-apps/references/oauth-client-setup.md +5 -5
- package/skills/uipath-coded-apps/references/oauth-scopes.md +64 -2
- package/skills/uipath-coded-apps/references/pack-publish-deploy.md +12 -5
- package/skills/uipath-coded-apps/references/patterns.md +10 -5
- package/skills/uipath-coded-apps/references/sdk/action-center.md +32 -6
- package/skills/uipath-coded-apps/references/sdk/agents.md +241 -0
- package/skills/uipath-coded-apps/references/sdk/governance-traces.md +186 -0
- package/skills/uipath-coded-apps/references/sdk/governance.md +72 -0
- package/skills/uipath-coded-apps/references/sdk/imports.md +4 -0
- package/skills/uipath-coded-apps/references/sdk/maestro.md +114 -0
- package/skills/uipath-coded-apps/references/sdk/orchestrator.md +80 -4
- package/skills/uipath-coded-apps/references/sdk/pagination.md +2 -0
- package/skills/uipath-coded-apps/references/sdk/traces.md +89 -0
- package/skills/uipath-coded-apps/references/widgets/validation-station.md +308 -0
- package/skills/uipath-coded-apps/scripts/validate-action-schema.js +241 -0
- package/skills/uipath-connector-builder/SKILL.md +192 -0
- package/skills/uipath-connector-builder/references/auth.md +171 -0
- package/skills/uipath-connector-builder/references/configuration.md +130 -0
- package/skills/uipath-connector-builder/references/debugging.md +80 -0
- package/skills/uipath-connector-builder/references/element-json.md +148 -0
- package/skills/uipath-connector-builder/references/events.md +132 -0
- package/skills/uipath-connector-builder/references/hooks.md +198 -0
- package/skills/uipath-connector-builder/references/overview.md +78 -0
- package/skills/uipath-connector-builder/references/standard-resources.md +111 -0
- package/skills/uipath-connector-builder/references/system-resources.md +85 -0
- package/skills/uipath-feedback/SKILL.md +43 -29
- package/skills/{uipath-agents/references/coded/frameworks/coded-functions.md → uipath-functions/SKILL.md} +36 -23
- package/skills/uipath-governance/SKILL.md +49 -8
- package/skills/uipath-governance/references/aops-policy/aops-policy-commands.md +10 -10
- package/skills/uipath-governance/references/aops-policy/aops-policy-deploy-guide.md +7 -7
- package/skills/uipath-governance/references/auth-context.md +101 -0
- package/skills/uipath-governance/references/cli-cheatsheet.md +207 -0
- package/skills/uipath-governance/references/compliance-pack/catalog/impl.md +79 -0
- package/skills/uipath-governance/references/compliance-pack/coverage/impl.md +141 -0
- package/skills/uipath-governance/references/compliance-pack/disable/impl.md +39 -0
- package/skills/uipath-governance/references/compliance-pack/full-apply/impl.md +164 -0
- package/skills/uipath-governance/references/compliance-pack/partial-apply/impl.md +266 -0
- package/skills/uipath-governance/references/compliance-pack/partial-apply/merge-overrides-guide.md +28 -0
- package/skills/uipath-governance/references/compliance-pack/partial-apply/planning.md +82 -0
- package/skills/uipath-governance/references/compliance-pack/partial-apply/synthesize-formdata-guide.md +22 -0
- package/skills/uipath-governance/references/compliance-pack/preview-gate.md +43 -0
- package/skills/uipath-governance/references/compliance-pack/query/impl.md +75 -0
- package/skills/uipath-governance/references/diagnose/CAPABILITY.md +71 -0
- package/skills/uipath-governance/references/diagnose/references/failure-modes.md +201 -0
- package/skills/uipath-governance/references/diagnose/references/troubleshooting-guide.md +137 -0
- package/skills/uipath-governance/references/disambiguation-guide.md +15 -0
- package/skills/uipath-governance/scripts/merge-overrides.mjs +81 -0
- package/skills/uipath-governance/scripts/synthesize-formdata.mjs +86 -0
- package/skills/uipath-human-in-the-loop/SKILL.md +30 -25
- package/skills/uipath-human-in-the-loop/references/hitl-node-apptask.md +38 -4
- package/skills/uipath-human-in-the-loop/references/hitl-node-coded-action-app.md +2 -3
- package/skills/uipath-human-in-the-loop/references/hitl-node-quickform.md +92 -34
- package/skills/uipath-ixp/SKILL.md +120 -0
- package/skills/uipath-ixp/references/cli-reference.md +121 -0
- package/skills/uipath-ixp/references/improve-prompts-guide.md +283 -0
- package/skills/uipath-ixp/references/label-documents-guide.md +207 -0
- package/skills/uipath-ixp/references/project-setup-guide.md +90 -0
- package/skills/uipath-maestro-bpmn/SKILL.md +167 -68
- package/skills/uipath-maestro-bpmn/references/cli-conventions.md +47 -0
- package/skills/uipath-maestro-bpmn/references/diagnose/CAPABILITY.md +6 -6
- package/skills/uipath-maestro-bpmn/references/operate/CAPABILITY.md +3 -3
- package/skills/uipath-maestro-bpmn/references/registry-workflow.md +199 -0
- package/skills/uipath-maestro-bpmn/references/structural-bpmn.md +500 -0
- package/skills/uipath-maestro-bpmn/validator/README.md +214 -0
- package/skills/uipath-maestro-bpmn/validator/bpmn-spec.json +2477 -0
- package/skills/uipath-maestro-bpmn/validator/model.mjs +419 -0
- package/skills/uipath-maestro-bpmn/validator/package.json +17 -0
- package/skills/uipath-maestro-bpmn/validator/rules.mjs +1403 -0
- package/skills/uipath-maestro-bpmn/validator/samples/invalid-conditional-and-variable.bpmn +25 -0
- package/skills/uipath-maestro-bpmn/validator/samples/valid-baseline.bpmn +52 -0
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/A.2.0.bpmn +157 -0
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/A.2.1.bpmn +333 -0
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/B.1.0.bpmn +598 -0
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/B.2.0.bpmn +1709 -0
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/C.2.0.bpmn +564 -0
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/C.3.0.bpmn +671 -0
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/C.4.0.bpmn +1045 -0
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/C.5.0.bpmn +1176 -0
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/C.6.0.bpmn +670 -0
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/C.7.0.bpmn +466 -0
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/Can_Parse_Complex_Process_With_Task_Gateway_BoundaryEvent_etc.bpmn +74 -0
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/ExclusiveGatewayDefaultFlow.bpmn +32 -0
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/ExternalAgentWorkflow.bpmn +62 -0
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/Golden_Scenario.initial.bpmn +361 -0
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/InclusiveJoinRouteAwayBranch.bpmn +62 -0
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/Parse_AsyncExecution_And_Create_CorrectModel.bpmn +74 -0
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/Parse_IXP_ExtractionValidation_And_Create_CorrectModel.bpmn +35 -0
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/Parse_IXP_Extraction_FileUpload_And_Create_CorrectModel.bpmn +33 -0
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/Parse_IXP_Extraction_JobAttachment_And_Create_CorrectModel.bpmn +35 -0
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/Parse_SubProcess_With_Multiple_Element_Types.bpmn +76 -0
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/StartEventWithOutputs.bpmn +36 -0
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/StartGatewayEnd.bpmn +44 -0
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/all elements.bpmn +516 -0
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/all_sequence_flow_types.bpmn +173 -0
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/demo.bpmn +181 -0
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/subprocess-example-001-collapsed.bpmn +126 -0
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/subprocess-example-001-expanded.bpmn +122 -0
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/subprocess-example-003-collapsed_deeply-nested.bpmn +438 -0
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/A.1.0.bpmn +87 -0
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/A.3.0.bpmn +165 -0
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/ApiWorkflow.bpmn +39 -0
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/BpmnNestedSubProcessTests.bpmn +102 -0
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/BpmnTimerBoundaryEvents.bpmn +160 -0
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/BpmnXmlWithCatchAllErrorEventSubProcess.bpmn +45 -0
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/BpmnXmlWithSpecificErrorEventSubProcess.bpmn +46 -0
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/CaseManagementWithConstantIdentifier.bpmn +218 -0
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/ErrorBoundary.bpmn +78 -0
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/ErrorPropagationInEventSubprocess.bpmn +340 -0
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/EventBasedGatewayFirstCatcherWins.bpmn +56 -0
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/Example-EventBasedGateway.bpmn +117 -0
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/ExclusiveGatewayConditional.bpmn +45 -0
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/ExclusiveGatewaySharedEndEvent.bpmn +45 -0
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/ExclusiveWithParallelGateway.bpmn +68 -0
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/FourScriptTasks.bpmn +84 -0
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/HitlTaskOnly.bpmn +55 -0
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/InclusiveGatewayForkJoin.bpmn +69 -0
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/Parse_BPMN_Elements_And_Create_CorrectModel.bpmn +20 -0
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/Parse_HttpRequest_ServiceTask_And_Create_Correct_Model.bpmn +34 -0
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/Parse_MessageBoundaryEvent_And_Create_CorrectModel.bpmn +87 -0
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/Parse_Script_Task_V2_And_Create_Correct_Model.bpmn +31 -0
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/Parse_Sets_Containers_Properly.bpmn +129 -0
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/ScriptWritesVariableThenGatewayBranches.bpmn +55 -0
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/boundaryevent.bpmn +30 -0
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/collapsed-subprocess.bpmn +83 -0
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/connectable-types.bpmn +85 -0
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/extensions-orchestrator-start-job.bpmn +80 -0
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/multiparticipantpool.bpmn +77 -0
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/nestedsubprocess.bpmn +36 -0
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/simple.bpmn +59 -0
- package/skills/uipath-maestro-bpmn/validator/test/integration.test.mjs +146 -0
- package/skills/uipath-maestro-bpmn/validator/test/model-helpers.mjs +42 -0
- package/skills/uipath-maestro-bpmn/validator/test/ported-rule-tests.mjs +983 -0
- package/skills/uipath-maestro-bpmn/validator/test/run-tests.mjs +530 -0
- package/skills/uipath-maestro-bpmn/validator/uipath-moddle.v1.json +715 -0
- package/skills/uipath-maestro-bpmn/validator/validate-bpmn.mjs +164 -0
- package/skills/uipath-maestro-case/SKILL.md +5 -1
- package/skills/uipath-maestro-case/assets/templates/sdd-template-examples.md +10 -0
- package/skills/uipath-maestro-case/assets/templates/sdd-template.md +89 -17
- package/skills/uipath-maestro-case/references/bindings-and-expressions.md +26 -0
- package/skills/uipath-maestro-case/references/case-editing-operations.md +3 -0
- package/skills/uipath-maestro-case/references/implementation.md +11 -4
- package/skills/uipath-maestro-case/references/phase-0-interview.md +8 -7
- package/skills/uipath-maestro-case/references/phased-execution.md +2 -1
- package/skills/uipath-maestro-case/references/plugins/conditions/stage-exit-conditions/impl-json.md +21 -0
- package/skills/uipath-maestro-case/references/plugins/conditions/stage-exit-conditions/planning.md +2 -0
- package/skills/uipath-maestro-case/references/plugins/variables/global-vars/impl-json.md +15 -9
- package/skills/uipath-maestro-case/references/plugins/variables/io-binding/impl-json.md +131 -4
- package/skills/uipath-maestro-case/references/sdd-generation-rules.md +94 -17
- package/skills/uipath-maestro-flow/references/author/CAPABILITY.md +1 -1
- package/skills/uipath-maestro-flow/references/author/references/planning-arch.md +2 -2
- package/skills/uipath-maestro-flow/references/author/references/plugins/hitl/impl.md +11 -11
- package/skills/uipath-maestro-flow/references/author/references/plugins/hitl/planning.md +6 -6
- package/skills/uipath-maestro-flow/references/author/references/plugins/http/impl-connector.md +4 -1
- package/skills/uipath-maestro-flow/references/author/references/plugins/inline-agent/impl.md +157 -122
- package/skills/uipath-maestro-flow/references/author/references/plugins/inline-agent/planning.md +16 -4
- package/skills/uipath-maestro-flow/references/evaluate/references/commands-reference.md +8 -8
- package/skills/uipath-maestro-flow/references/evaluate/references/running-guide.md +3 -3
- package/skills/uipath-maestro-flow/references/shared/cli-commands.md +1 -1
- package/skills/uipath-planner/SKILL.md +19 -8
- package/skills/uipath-planner/assets/templates/agent-sdd-template.md +14 -0
- package/skills/uipath-planner/assets/templates/api-workflow-sdd-template.md +14 -0
- package/skills/uipath-planner/assets/templates/case-sdd-template.md +14 -0
- package/skills/uipath-planner/assets/templates/coded-app-sdd-template.md +14 -0
- package/skills/uipath-planner/assets/templates/flow-sdd-template.md +14 -0
- package/skills/uipath-planner/assets/templates/rpa-sdd-template.md +40 -5
- package/skills/uipath-planner/references/asdd-crosswalk-guide.md +55 -0
- package/skills/uipath-planner/references/attended-reauth-pattern-guide.md +43 -0
- package/skills/uipath-planner/references/multi-skill-patterns-guide.md +4 -0
- package/skills/uipath-planner/references/non-pdd-lane-guide.md +2 -0
- package/skills/uipath-planner/references/pdd-analysis-guide.md +24 -1
- package/skills/uipath-planner/references/pdd-driven-lane-guide.md +6 -2
- package/skills/uipath-planner/references/plan-and-tasks-format.md +2 -0
- package/skills/uipath-planner/references/platform-availability-guide.md +43 -0
- package/skills/uipath-planner/references/product-selection-guide.md +20 -0
- package/skills/uipath-planner/references/sdd-generation-guide.md +90 -21
- package/skills/uipath-planner/references/tenant-library-search-guide.md +5 -1
- package/skills/uipath-planner/scripts/docx-extract.sh +54 -0
- package/skills/uipath-planner/scripts/sdd-to-docx.sh +76 -0
- package/skills/uipath-platform/SKILL.md +54 -7
- package/skills/uipath-platform/references/context-grounding/index-management.md +123 -0
- package/skills/uipath-platform/references/data-fabric/bulk-import.md +86 -0
- package/skills/{uipath-data-fabric/references → uipath-platform/references/data-fabric}/choice-sets.md +33 -12
- package/skills/uipath-platform/references/data-fabric/data-fabric.md +352 -0
- package/skills/uipath-platform/references/data-fabric/entity-schema.md +444 -0
- package/skills/uipath-platform/references/data-fabric/file-attachments.md +122 -0
- package/skills/{uipath-data-fabric/references → uipath-platform/references/data-fabric}/filter-platform-contract.md +3 -3
- package/skills/{uipath-data-fabric/references → uipath-platform/references/data-fabric}/records-query.md +46 -10
- package/skills/uipath-platform/references/integration-service/http-request.md +15 -1
- package/skills/uipath-platform/references/integration-service/vendor-docs-registry.json +173 -0
- package/skills/uipath-platform/references/uip-commands.md +12 -4
- package/skills/uipath-review/SKILL.md +53 -12
- package/skills/uipath-review/references/agents/agent-common-issues.md +1 -1
- package/skills/uipath-review/references/agents/agent-grading-rubric.md +133 -0
- package/skills/uipath-review/references/agents/agent-review-checklist.md +23 -3
- package/skills/uipath-review/references/agents/agents-coded-rules.md +7 -0
- package/skills/uipath-review/references/agents/agents-lowcode-rules.md +13 -3
- package/skills/uipath-review/references/agents/guardrails/guardrails-review.md +198 -0
- package/skills/uipath-review/references/architecture-assessment-guide.md +2 -0
- package/skills/uipath-review/references/review-workflow-guide.md +9 -5
- package/skills/uipath-review/references/rule-catalog-workflow.md +3 -3
- package/skills/uipath-rpa/SKILL.md +18 -6
- package/skills/uipath-rpa/references/cli-reference.md +57 -3
- package/skills/uipath-rpa/references/common-activity-card.md +1 -1
- package/skills/uipath-rpa/references/connector-capabilities.md +2 -0
- package/skills/uipath-rpa/references/data-manipulation-guide.md +311 -0
- package/skills/uipath-rpa/references/environment-setup.md +0 -2
- package/skills/uipath-rpa/references/error-handling-guide.md +381 -0
- package/skills/uipath-rpa/references/is-connector-xaml-guide.md +127 -11
- package/skills/uipath-rpa/references/reframework-guide.md +2 -0
- package/skills/uipath-rpa/references/testing-guide.md +19 -0
- package/skills/uipath-rpa/references/ui-automation-guide.md +129 -18
- package/skills/uipath-rpa/references/uia-configure-target-workflows.md +22 -1
- package/skills/uipath-rpa/references/uia-elements-interaction-guide.md +93 -0
- package/skills/uipath-rpa/references/xaml/canvas-layout-guide.md +41 -4
- package/skills/uipath-rpa/references/xaml/common-pitfalls.md +12 -3
- package/skills/uipath-rpa/references/xaml/flowchart-guide.md +113 -0
- package/skills/uipath-rpa/references/xaml/xaml-basics-and-rules.md +5 -9
- package/skills/uipath-solution/SKILL.md +11 -8
- package/skills/uipath-solution/references/pack-and-deploy.md +18 -1
- package/skills/uipath-solution/references/solution-overview.md +3 -0
- package/skills/uipath-test/SKILL.md +2 -1
- package/skills/uipath-troubleshoot/SKILL.md +24 -26
- package/skills/uipath-troubleshoot/agents/depth-verifier.md +24 -25
- package/skills/uipath-troubleshoot/agents/hypothesis-generator.md +8 -4
- package/skills/uipath-troubleshoot/agents/hypothesis-tester.md +85 -38
- package/skills/uipath-troubleshoot/agents/presenter.md +7 -7
- package/skills/uipath-troubleshoot/agents/scope-checker.md +3 -6
- package/skills/uipath-troubleshoot/agents/shared.md +26 -21
- package/skills/uipath-troubleshoot/agents/triage.md +117 -49
- package/skills/uipath-troubleshoot/references/activity-packages/cv-activities/investigation_guide.md +43 -0
- package/skills/uipath-troubleshoot/references/activity-packages/cv-activities/overview.md +57 -0
- package/skills/uipath-troubleshoot/references/activity-packages/cv-activities/playbooks/cv-action-failed-after-find.md +100 -0
- package/skills/uipath-troubleshoot/references/activity-packages/cv-activities/playbooks/cv-cell-targeting-failures.md +111 -0
- package/skills/uipath-troubleshoot/references/activity-packages/cv-activities/playbooks/cv-element-not-found.md +125 -0
- package/skills/uipath-troubleshoot/references/activity-packages/cv-activities/playbooks/cv-get-text-empty-or-wrong-result.md +117 -0
- package/skills/uipath-troubleshoot/references/activity-packages/cv-activities/playbooks/cv-invalid-descriptor.md +102 -0
- package/skills/uipath-troubleshoot/references/activity-packages/cv-activities/playbooks/cv-scope-setup-failures.md +136 -0
- package/skills/uipath-troubleshoot/references/activity-packages/cv-activities/playbooks/cv-scroll-search-failures.md +114 -0
- package/skills/uipath-troubleshoot/references/activity-packages/cv-activities/playbooks/cv-server-auth-throttling-network.md +95 -0
- package/skills/uipath-troubleshoot/references/activity-packages/cv-activities/playbooks/cv-silent-failures-and-false-results.md +124 -0
- package/skills/uipath-troubleshoot/references/activity-packages/cv-activities/presentation.md +8 -0
- package/skills/uipath-troubleshoot/references/activity-packages/cv-activities/summary.md +15 -0
- package/skills/uipath-troubleshoot/references/activity-packages/database-activities/investigation_guide.md +42 -0
- package/skills/uipath-troubleshoot/references/activity-packages/database-activities/overview.md +41 -0
- package/skills/uipath-troubleshoot/references/activity-packages/database-activities/playbooks/connect-to-database-failures.md +104 -0
- package/skills/uipath-troubleshoot/references/activity-packages/database-activities/playbooks/execute-non-query-failures.md +97 -0
- package/skills/uipath-troubleshoot/references/activity-packages/database-activities/playbooks/execute-query-failures.md +134 -0
- package/skills/uipath-troubleshoot/references/activity-packages/database-activities/playbooks/start-transaction-failures.md +94 -0
- package/skills/uipath-troubleshoot/references/activity-packages/database-activities/presentation.md +10 -0
- package/skills/uipath-troubleshoot/references/activity-packages/database-activities/summary.md +10 -0
- package/skills/uipath-troubleshoot/references/activity-packages/excel-activities/investigation_guide.md +27 -9
- package/skills/uipath-troubleshoot/references/activity-packages/excel-activities/overview.md +51 -10
- package/skills/uipath-troubleshoot/references/activity-packages/excel-activities/playbooks/append-range-failures.md +146 -0
- package/skills/uipath-troubleshoot/references/activity-packages/excel-activities/playbooks/delete-range-failures.md +126 -0
- package/skills/uipath-troubleshoot/references/activity-packages/excel-activities/playbooks/excel-application-card-failures.md +139 -0
- package/skills/uipath-troubleshoot/references/activity-packages/excel-activities/playbooks/excel-application-scope-failures.md +118 -0
- package/skills/uipath-troubleshoot/references/activity-packages/excel-activities/playbooks/execute-macro-failures.md +149 -0
- package/skills/uipath-troubleshoot/references/activity-packages/excel-activities/playbooks/write-range-failures.md +145 -0
- package/skills/uipath-troubleshoot/references/activity-packages/excel-activities/presentation.md +12 -7
- package/skills/uipath-troubleshoot/references/activity-packages/excel-activities/summary.md +6 -0
- package/skills/uipath-troubleshoot/references/activity-packages/gsuite-activities/investigation_guide.md +1 -0
- package/skills/uipath-troubleshoot/references/activity-packages/gsuite-activities/overview.md +12 -4
- package/skills/uipath-troubleshoot/references/activity-packages/gsuite-activities/playbooks/connection-and-auth-failures.md +55 -0
- package/skills/uipath-troubleshoot/references/activity-packages/gsuite-activities/playbooks/drive-file-not-found.md +18 -10
- package/skills/uipath-troubleshoot/references/activity-packages/gsuite-activities/playbooks/get-newest-email-not-found.md +9 -8
- package/skills/uipath-troubleshoot/references/activity-packages/gsuite-activities/playbooks/invalid-or-null-input.md +68 -0
- package/skills/uipath-troubleshoot/references/activity-packages/gsuite-activities/playbooks/transient-and-timeout-errors.md +52 -0
- package/skills/uipath-troubleshoot/references/activity-packages/gsuite-activities/playbooks/upload-storage-quota-exceeded.md +1 -1
- package/skills/uipath-troubleshoot/references/activity-packages/gsuite-activities/summary.md +5 -2
- package/skills/uipath-troubleshoot/references/activity-packages/mail-activities/overview.md +28 -0
- package/skills/uipath-troubleshoot/references/activity-packages/mail-activities/playbooks/delete-outlook-mail-failures.md +105 -0
- package/skills/uipath-troubleshoot/references/activity-packages/mail-activities/playbooks/get-outlook-mail-failures.md +109 -0
- package/skills/uipath-troubleshoot/references/activity-packages/mail-activities/playbooks/move-outlook-mail-failures.md +97 -0
- package/skills/uipath-troubleshoot/references/activity-packages/mail-activities/playbooks/send-outlook-mail-failures.md +95 -0
- package/skills/uipath-troubleshoot/references/activity-packages/mail-activities/summary.md +8 -0
- package/skills/uipath-troubleshoot/references/activity-packages/o365-activities/investigation_guide.md +23 -0
- package/skills/uipath-troubleshoot/references/activity-packages/o365-activities/overview.md +9 -0
- package/skills/uipath-troubleshoot/references/activity-packages/o365-activities/playbooks/application-scope-misconfigured.md +49 -0
- package/skills/uipath-troubleshoot/references/activity-packages/o365-activities/playbooks/authentication-token-invalid.md +53 -0
- package/skills/uipath-troubleshoot/references/activity-packages/o365-activities/playbooks/copy-item-argument-null.md +34 -0
- package/skills/uipath-troubleshoot/references/activity-packages/o365-activities/playbooks/create-folder-invalid-path.md +36 -0
- package/skills/uipath-troubleshoot/references/activity-packages/o365-activities/playbooks/download-file-conversion-or-destination.md +40 -0
- package/skills/uipath-troubleshoot/references/activity-packages/o365-activities/playbooks/drive-item-not-found.md +1 -1
- package/skills/uipath-troubleshoot/references/activity-packages/o365-activities/playbooks/email-trigger-connection-event-failure.md +45 -0
- package/skills/uipath-troubleshoot/references/activity-packages/o365-activities/playbooks/insufficient-graph-scope.md +44 -0
- package/skills/uipath-troubleshoot/references/activity-packages/o365-activities/playbooks/legacy-mail-null-reference.md +43 -0
- package/skills/uipath-troubleshoot/references/activity-packages/o365-activities/playbooks/mail-folder-not-found.md +4 -3
- package/skills/uipath-troubleshoot/references/activity-packages/o365-activities/playbooks/mail-invalid-odata-query.md +43 -0
- package/skills/uipath-troubleshoot/references/activity-packages/o365-activities/playbooks/mail-message-not-found.md +45 -0
- package/skills/uipath-troubleshoot/references/activity-packages/o365-activities/playbooks/request-throttled.md +45 -0
- package/skills/uipath-troubleshoot/references/activity-packages/o365-activities/playbooks/send-mail-rejected.md +52 -0
- package/skills/uipath-troubleshoot/references/activity-packages/o365-activities/playbooks/transient-service-error.md +48 -0
- package/skills/uipath-troubleshoot/references/activity-packages/o365-activities/playbooks/upload-file-quota-or-size.md +47 -0
- package/skills/uipath-troubleshoot/references/activity-packages/o365-activities/summary.md +15 -1
- package/skills/uipath-troubleshoot/references/activity-packages/python-activities/investigation_guide.md +32 -0
- package/skills/uipath-troubleshoot/references/activity-packages/python-activities/overview.md +38 -0
- package/skills/uipath-troubleshoot/references/activity-packages/python-activities/playbooks/invoke-method-failures.md +57 -0
- package/skills/uipath-troubleshoot/references/activity-packages/python-activities/playbooks/invoke-python-method-pipe-is-broken.md +44 -0
- package/skills/uipath-troubleshoot/references/activity-packages/python-activities/playbooks/load-script-failures.md +62 -0
- package/skills/uipath-troubleshoot/references/activity-packages/python-activities/playbooks/python-path-not-valid.md +39 -0
- package/skills/uipath-troubleshoot/references/activity-packages/python-activities/playbooks/python-scope-architecture-version-mismatch.md +41 -0
- package/skills/uipath-troubleshoot/references/activity-packages/python-activities/playbooks/working-folder-relative-path.md +34 -0
- package/skills/uipath-troubleshoot/references/activity-packages/python-activities/presentation.md +9 -0
- package/skills/uipath-troubleshoot/references/activity-packages/python-activities/summary.md +12 -0
- package/skills/uipath-troubleshoot/references/activity-packages/system-activities/playbooks/get-asset-activity-bug-silent-failure.md +1 -1
- package/skills/uipath-troubleshoot/references/activity-packages/system-activities/playbooks/get-asset-robot-not-authenticated.md +29 -22
- package/skills/uipath-troubleshoot/references/activity-packages/system-activities/summary.md +1 -1
- package/skills/uipath-troubleshoot/references/activity-packages/web-activities/investigation_guide.md +30 -0
- package/skills/uipath-troubleshoot/references/activity-packages/web-activities/overview.md +36 -0
- package/skills/uipath-troubleshoot/references/activity-packages/web-activities/playbooks/deserialize-malformed-input.md +36 -0
- package/skills/uipath-troubleshoot/references/activity-packages/web-activities/playbooks/deserialize-null-input.md +35 -0
- package/skills/uipath-troubleshoot/references/activity-packages/web-activities/playbooks/deserialize-type-mismatch.md +40 -0
- package/skills/uipath-troubleshoot/references/activity-packages/web-activities/playbooks/http-client-null-reference.md +34 -0
- package/skills/uipath-troubleshoot/references/activity-packages/web-activities/playbooks/http-request-connection-failure.md +48 -0
- package/skills/uipath-troubleshoot/references/activity-packages/web-activities/playbooks/http-request-timeout.md +40 -0
- package/skills/uipath-troubleshoot/references/activity-packages/web-activities/playbooks/net-http-request-aggregate-failure.md +38 -0
- package/skills/uipath-troubleshoot/references/activity-packages/web-activities/summary.md +13 -0
- package/skills/uipath-troubleshoot/references/activity-packages/word-activities/investigation_guide.md +55 -0
- package/skills/uipath-troubleshoot/references/activity-packages/word-activities/overview.md +82 -0
- package/skills/uipath-troubleshoot/references/activity-packages/word-activities/playbooks/add-picture-failures.md +51 -0
- package/skills/uipath-troubleshoot/references/activity-packages/word-activities/playbooks/append-text-missing-container.md +31 -0
- package/skills/uipath-troubleshoot/references/activity-packages/word-activities/playbooks/append-text-zero-byte-file.md +32 -0
- package/skills/uipath-troubleshoot/references/activity-packages/word-activities/playbooks/export-pdf-com-hang.md +46 -0
- package/skills/uipath-troubleshoot/references/activity-packages/word-activities/playbooks/export-pdf-missing-output-dir.md +32 -0
- package/skills/uipath-troubleshoot/references/activity-packages/word-activities/playbooks/export-pdf-output-path-format.md +35 -0
- package/skills/uipath-troubleshoot/references/activity-packages/word-activities/playbooks/read-text-doc-format.md +30 -0
- package/skills/uipath-troubleshoot/references/activity-packages/word-activities/playbooks/read-text-missing-container.md +29 -0
- package/skills/uipath-troubleshoot/references/activity-packages/word-activities/playbooks/read-text-protected-view.md +32 -0
- package/skills/uipath-troubleshoot/references/activity-packages/word-activities/playbooks/replace-text-com-busy.md +35 -0
- package/skills/uipath-troubleshoot/references/activity-packages/word-activities/playbooks/replace-text-file-locked.md +33 -0
- package/skills/uipath-troubleshoot/references/activity-packages/word-activities/playbooks/replace-text-headers-textboxes-skipped.md +30 -0
- package/skills/uipath-troubleshoot/references/activity-packages/word-activities/playbooks/replace-text-length-limit.md +30 -0
- package/skills/uipath-troubleshoot/references/activity-packages/word-activities/playbooks/replace-text-loop-template-overwrite.md +31 -0
- package/skills/uipath-troubleshoot/references/activity-packages/word-activities/playbooks/replace-text-multiline-formatting.md +31 -0
- package/skills/uipath-troubleshoot/references/activity-packages/word-activities/playbooks/replace-text-silent-no-substitution.md +32 -0
- package/skills/uipath-troubleshoot/references/activity-packages/word-activities/playbooks/replace-text-version-mismatch.md +30 -0
- package/skills/uipath-troubleshoot/references/activity-packages/word-activities/playbooks/word-com-interop-failures.md +52 -0
- package/skills/uipath-troubleshoot/references/activity-packages/word-activities/playbooks/word-com-start-background-session0.md +50 -0
- package/skills/uipath-troubleshoot/references/activity-packages/word-activities/playbooks/word-export-pdf-com-wrong-thread.md +46 -0
- package/skills/uipath-troubleshoot/references/activity-packages/word-activities/playbooks/word-open-sharepoint-url-com-command-failed.md +45 -0
- package/skills/uipath-troubleshoot/references/activity-packages/word-activities/playbooks/word-scope-cannot-create-unknown-type.md +30 -0
- package/skills/uipath-troubleshoot/references/activity-packages/word-activities/playbooks/word-scope-com-not-installed.md +35 -0
- package/skills/uipath-troubleshoot/references/activity-packages/word-activities/playbooks/word-scope-file-corrupted.md +34 -0
- package/skills/uipath-troubleshoot/references/activity-packages/word-activities/playbooks/word-scope-file-path-not-found.md +36 -0
- package/skills/uipath-troubleshoot/references/activity-packages/word-activities/playbooks/word-scope-hangs-background-prompt.md +34 -0
- package/skills/uipath-troubleshoot/references/activity-packages/word-activities/presentation.md +11 -0
- package/skills/uipath-troubleshoot/references/activity-packages/word-activities/summary.md +38 -0
- package/skills/uipath-troubleshoot/references/products/integration-service/investigation_guide.md +9 -0
- package/skills/uipath-troubleshoot/references/products/integration-service/overview.md +7 -0
- package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/connection-invalid.md +9 -0
- package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/connector-aggregate-exception.md +30 -0
- package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/connector-general-exception.md +43 -0
- package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/connector-null-reference.md +36 -0
- package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/connector-remote-exception.md +31 -0
- package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/connector-runtime-exception.md +40 -0
- package/skills/uipath-troubleshoot/references/products/integration-service/summary.md +5 -0
- package/skills/uipath-troubleshoot/references/products/maestro/investigation_guide.md +2 -1
- package/skills/uipath-troubleshoot/references/products/orchestrator/investigation_guide.md +105 -10
- package/skills/uipath-troubleshoot/references/products/orchestrator/playbooks/job-faulted-logon-failure.md +1 -1
- package/skills/uipath-troubleshoot/references/summary.md +59 -3
- package/skills/uipath-troubleshoot/schemas/evidence.schema.md +48 -0
- package/skills/uipath-troubleshoot/schemas/hypotheses.schema.md +22 -7
- package/skills/uipath-troubleshoot/schemas/scope-check.schema.md +1 -1
- package/skills/uipath-troubleshoot/schemas/state.schema.md +81 -6
- package/version-manifest.json +2 -2
- package/skills/uipath-data-fabric/SKILL.md +0 -239
- package/skills/uipath-data-fabric/references/bulk-import.md +0 -73
- package/skills/uipath-data-fabric/references/entity-schema.md +0 -391
- package/skills/uipath-data-fabric/references/file-attachments.md +0 -65
- package/skills/uipath-maestro-bpmn/.maintenance/README.md +0 -241
- package/skills/uipath-maestro-bpmn/.maintenance/check-all.sh +0 -41
- package/skills/uipath-maestro-bpmn/.maintenance/check-anchors.sh +0 -83
- package/skills/uipath-maestro-bpmn/.maintenance/check-depth.sh +0 -132
- package/skills/uipath-maestro-bpmn/.maintenance/check-link-text.sh +0 -123
- package/skills/uipath-maestro-bpmn/.maintenance/check-links.sh +0 -70
- package/skills/uipath-maestro-bpmn/.maintenance/check-orphans.sh +0 -93
- package/skills/uipath-maestro-bpmn/.maintenance/check-plugin-pairs.sh +0 -39
- package/skills/uipath-maestro-bpmn/.maintenance/check-real-pack.sh +0 -79
- package/skills/uipath-maestro-bpmn/.maintenance/check-template.sh +0 -42
- package/skills/uipath-maestro-bpmn/.maintenance/check-uip-commands.sh +0 -266
- package/skills/uipath-maestro-bpmn/.maintenance/check-validation-fixtures.py +0 -1255
- package/skills/uipath-maestro-bpmn/.maintenance/check-validation-fixtures.sh +0 -8
- package/skills/uipath-maestro-bpmn/fixtures/validation/README.md +0 -94
- package/skills/uipath-maestro-bpmn/fixtures/validation/agent-invocation/agent-invocation.bpmn +0 -62
- package/skills/uipath-maestro-bpmn/fixtures/validation/agent-invocation/bindings_v2.json +0 -37
- package/skills/uipath-maestro-bpmn/fixtures/validation/agent-invocation/entry-points.json +0 -21
- package/skills/uipath-maestro-bpmn/fixtures/validation/agent-invocation/operate.json +0 -9
- package/skills/uipath-maestro-bpmn/fixtures/validation/agent-invocation/package-descriptor.json +0 -10
- package/skills/uipath-maestro-bpmn/fixtures/validation/agent-invocation/project.uiproj +0 -7
- package/skills/uipath-maestro-bpmn/fixtures/validation/contract-variants/bindings_v2.json +0 -68
- package/skills/uipath-maestro-bpmn/fixtures/validation/contract-variants/contract-variants.bpmn +0 -270
- package/skills/uipath-maestro-bpmn/fixtures/validation/contract-variants/entry-points.json +0 -25
- package/skills/uipath-maestro-bpmn/fixtures/validation/contract-variants/operate.json +0 -9
- package/skills/uipath-maestro-bpmn/fixtures/validation/contract-variants/package-descriptor.json +0 -10
- package/skills/uipath-maestro-bpmn/fixtures/validation/contract-variants/project.uiproj +0 -7
- package/skills/uipath-maestro-bpmn/fixtures/validation/gateway-boundary-error/bindings_v2.json +0 -19
- package/skills/uipath-maestro-bpmn/fixtures/validation/gateway-boundary-error/entry-points.json +0 -25
- package/skills/uipath-maestro-bpmn/fixtures/validation/gateway-boundary-error/gateway-boundary-error.bpmn +0 -91
- package/skills/uipath-maestro-bpmn/fixtures/validation/gateway-boundary-error/operate.json +0 -9
- package/skills/uipath-maestro-bpmn/fixtures/validation/gateway-boundary-error/package-descriptor.json +0 -10
- package/skills/uipath-maestro-bpmn/fixtures/validation/gateway-boundary-error/project.uiproj +0 -7
- package/skills/uipath-maestro-bpmn/fixtures/validation/imported-brownfield-preservation/bindings_v2.json +0 -4
- package/skills/uipath-maestro-bpmn/fixtures/validation/imported-brownfield-preservation/entry-points.json +0 -25
- package/skills/uipath-maestro-bpmn/fixtures/validation/imported-brownfield-preservation/imported-brownfield-preservation.bpmn +0 -63
- package/skills/uipath-maestro-bpmn/fixtures/validation/imported-brownfield-preservation/operate.json +0 -9
- package/skills/uipath-maestro-bpmn/fixtures/validation/imported-brownfield-preservation/package-descriptor.json +0 -10
- package/skills/uipath-maestro-bpmn/fixtures/validation/imported-brownfield-preservation/project.uiproj +0 -7
- package/skills/uipath-maestro-bpmn/fixtures/validation/integration-service-enriched/bindings_v2.json +0 -52
- package/skills/uipath-maestro-bpmn/fixtures/validation/integration-service-enriched/entry-points.json +0 -21
- package/skills/uipath-maestro-bpmn/fixtures/validation/integration-service-enriched/integration-service-enriched.bpmn +0 -65
- package/skills/uipath-maestro-bpmn/fixtures/validation/integration-service-enriched/operate.json +0 -9
- package/skills/uipath-maestro-bpmn/fixtures/validation/integration-service-enriched/package-descriptor.json +0 -10
- package/skills/uipath-maestro-bpmn/fixtures/validation/integration-service-enriched/project.uiproj +0 -7
- package/skills/uipath-maestro-bpmn/fixtures/validation/linear-process/bindings_v2.json +0 -4
- package/skills/uipath-maestro-bpmn/fixtures/validation/linear-process/entry-points.json +0 -25
- package/skills/uipath-maestro-bpmn/fixtures/validation/linear-process/linear-process.bpmn +0 -55
- package/skills/uipath-maestro-bpmn/fixtures/validation/linear-process/operate.json +0 -9
- package/skills/uipath-maestro-bpmn/fixtures/validation/linear-process/package-descriptor.json +0 -10
- package/skills/uipath-maestro-bpmn/fixtures/validation/linear-process/project.uiproj +0 -7
- package/skills/uipath-maestro-bpmn/fixtures/validation/registry-coverage-matrix/bindings_v2.json +0 -20
- package/skills/uipath-maestro-bpmn/fixtures/validation/registry-coverage-matrix/entry-points.json +0 -17
- package/skills/uipath-maestro-bpmn/fixtures/validation/registry-coverage-matrix/operate.json +0 -9
- package/skills/uipath-maestro-bpmn/fixtures/validation/registry-coverage-matrix/package-descriptor.json +0 -10
- package/skills/uipath-maestro-bpmn/fixtures/validation/registry-coverage-matrix/project.uiproj +0 -7
- package/skills/uipath-maestro-bpmn/fixtures/validation/registry-coverage-matrix/registry-coverage-matrix.bpmn +0 -207
- package/skills/uipath-maestro-bpmn/fixtures/validation/subprocess-multi-instance/bindings_v2.json +0 -4
- package/skills/uipath-maestro-bpmn/fixtures/validation/subprocess-multi-instance/entry-points.json +0 -33
- package/skills/uipath-maestro-bpmn/fixtures/validation/subprocess-multi-instance/operate.json +0 -9
- package/skills/uipath-maestro-bpmn/fixtures/validation/subprocess-multi-instance/package-descriptor.json +0 -10
- package/skills/uipath-maestro-bpmn/fixtures/validation/subprocess-multi-instance/project.uiproj +0 -7
- package/skills/uipath-maestro-bpmn/fixtures/validation/subprocess-multi-instance/subprocess-multi-instance.bpmn +0 -94
- package/skills/uipath-maestro-bpmn/fixtures/validation/wrapper-family-contract/bindings_v2.json +0 -124
- package/skills/uipath-maestro-bpmn/fixtures/validation/wrapper-family-contract/entry-points.json +0 -25
- package/skills/uipath-maestro-bpmn/fixtures/validation/wrapper-family-contract/operate.json +0 -9
- package/skills/uipath-maestro-bpmn/fixtures/validation/wrapper-family-contract/package-descriptor.json +0 -10
- package/skills/uipath-maestro-bpmn/fixtures/validation/wrapper-family-contract/project.uiproj +0 -7
- package/skills/uipath-maestro-bpmn/fixtures/validation/wrapper-family-contract/wrapper-family-contract.bpmn +0 -151
- package/skills/uipath-maestro-bpmn/references/author/CAPABILITY.md +0 -141
- package/skills/uipath-maestro-bpmn/references/author/references/brownfield.md +0 -48
- package/skills/uipath-maestro-bpmn/references/author/references/editing-operations.md +0 -75
- package/skills/uipath-maestro-bpmn/references/author/references/greenfield.md +0 -41
- package/skills/uipath-maestro-bpmn/references/author/references/planning-arch.md +0 -82
- package/skills/uipath-maestro-bpmn/references/author/references/planning-impl.md +0 -104
- package/skills/uipath-maestro-bpmn/references/author/references/plugins/agents/impl.md +0 -34
- package/skills/uipath-maestro-bpmn/references/author/references/plugins/agents/planning.md +0 -38
- package/skills/uipath-maestro-bpmn/references/author/references/plugins/api-workflows/impl.md +0 -37
- package/skills/uipath-maestro-bpmn/references/author/references/plugins/api-workflows/planning.md +0 -28
- package/skills/uipath-maestro-bpmn/references/author/references/plugins/business-rules/impl.md +0 -36
- package/skills/uipath-maestro-bpmn/references/author/references/plugins/business-rules/planning.md +0 -29
- package/skills/uipath-maestro-bpmn/references/author/references/plugins/call-activity-subprocess/impl.md +0 -67
- package/skills/uipath-maestro-bpmn/references/author/references/plugins/call-activity-subprocess/planning.md +0 -29
- package/skills/uipath-maestro-bpmn/references/author/references/plugins/connectors/impl.md +0 -29
- package/skills/uipath-maestro-bpmn/references/author/references/plugins/connectors/planning.md +0 -33
- package/skills/uipath-maestro-bpmn/references/author/references/plugins/gateways/impl.md +0 -32
- package/skills/uipath-maestro-bpmn/references/author/references/plugins/gateways/planning.md +0 -34
- package/skills/uipath-maestro-bpmn/references/author/references/plugins/hitl/impl.md +0 -42
- package/skills/uipath-maestro-bpmn/references/author/references/plugins/hitl/planning.md +0 -30
- package/skills/uipath-maestro-bpmn/references/author/references/plugins/integration-service/impl.md +0 -134
- package/skills/uipath-maestro-bpmn/references/author/references/plugins/integration-service/planning.md +0 -67
- package/skills/uipath-maestro-bpmn/references/author/references/plugins/multi-instance/impl.md +0 -50
- package/skills/uipath-maestro-bpmn/references/author/references/plugins/multi-instance/planning.md +0 -29
- package/skills/uipath-maestro-bpmn/references/author/references/plugins/queues/impl.md +0 -29
- package/skills/uipath-maestro-bpmn/references/author/references/plugins/queues/planning.md +0 -29
- package/skills/uipath-maestro-bpmn/references/author/references/plugins/rpa-jobs/impl.md +0 -35
- package/skills/uipath-maestro-bpmn/references/author/references/plugins/rpa-jobs/planning.md +0 -29
- package/skills/uipath-maestro-bpmn/references/author/references/plugins/script/impl.md +0 -118
- package/skills/uipath-maestro-bpmn/references/author/references/plugins/script/planning.md +0 -30
- package/skills/uipath-maestro-bpmn/references/author/references/plugins/sequence-flows/impl.md +0 -30
- package/skills/uipath-maestro-bpmn/references/author/references/plugins/sequence-flows/planning.md +0 -30
- package/skills/uipath-maestro-bpmn/references/author/references/plugins/service-tasks/impl.md +0 -33
- package/skills/uipath-maestro-bpmn/references/author/references/plugins/service-tasks/planning.md +0 -31
- package/skills/uipath-maestro-bpmn/references/author/references/plugins/signals/impl.md +0 -33
- package/skills/uipath-maestro-bpmn/references/author/references/plugins/signals/planning.md +0 -46
- package/skills/uipath-maestro-bpmn/references/author/references/plugins/start-end-events/impl.md +0 -59
- package/skills/uipath-maestro-bpmn/references/author/references/plugins/start-end-events/planning.md +0 -37
- package/skills/uipath-maestro-bpmn/references/author/references/plugins/waits-triggers/impl.md +0 -40
- package/skills/uipath-maestro-bpmn/references/author/references/plugins/waits-triggers/planning.md +0 -34
- package/skills/uipath-maestro-bpmn/references/author/references/supported-elements.md +0 -123
- package/skills/uipath-maestro-bpmn/references/author/references/task-recipes/README.md +0 -29
- package/skills/uipath-maestro-bpmn/references/author/references/task-recipes/agent-job.md +0 -36
- package/skills/uipath-maestro-bpmn/references/author/references/task-recipes/api-workflow.md +0 -29
- package/skills/uipath-maestro-bpmn/references/author/references/task-recipes/business-rule.md +0 -18
- package/skills/uipath-maestro-bpmn/references/author/references/task-recipes/call-activity.md +0 -56
- package/skills/uipath-maestro-bpmn/references/author/references/task-recipes/hitl.md +0 -17
- package/skills/uipath-maestro-bpmn/references/author/references/task-recipes/http-request.md +0 -119
- package/skills/uipath-maestro-bpmn/references/author/references/task-recipes/queue.md +0 -21
- package/skills/uipath-maestro-bpmn/references/author/references/task-recipes/rpa-job.md +0 -23
- package/skills/uipath-maestro-bpmn/references/author/references/validation.md +0 -118
- package/skills/uipath-maestro-bpmn/references/shared/bpmn-xml-contract.md +0 -197
- package/skills/uipath-maestro-bpmn/references/shared/cli-conventions.md +0 -46
- package/skills/uipath-maestro-bpmn/references/shared/error-handling.md +0 -82
- package/skills/uipath-maestro-bpmn/references/shared/variables-bindings-expressions.md +0 -150
- package/skills/uipath-maestro-bpmn/references/shared/wrapper-shells.md +0 -554
- /package/skills/uipath-maestro-bpmn/references/{shared/expression-authoring.md → expression-authoring.md} +0 -0
- /package/skills/uipath-maestro-bpmn/references/{shared/public-safety.md → public-safety.md} +0 -0
- /package/{agents → skills/uipath-rpa/agents}/uipath-project-discovery-agent.md +0 -0
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
---
|
|
2
|
+
confidence: medium
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Append Range Failures
|
|
6
|
+
|
|
7
|
+
## Context
|
|
8
|
+
|
|
9
|
+
A `UiPath.Excel.Activities` `Append Range` activity appends a `DataTable`'s rows to the bottom of an existing sheet, after the last row containing data. The package exposes the operation through three surfaces with materially different runtime semantics:
|
|
10
|
+
|
|
11
|
+
1. **Classic `Append Range` inside `Excel Application Scope`** — opens the workbook through Excel COM; requires Excel installed on the host. Inherits the scope's open workbook reference.
|
|
12
|
+
2. **Modern `Append Range` (`AppendRangeX`) inside `Use Excel File`** — opens the workbook through the OpenXML provider (default) or falls back to Excel COM when scope properties force it.
|
|
13
|
+
3. **Classic `Append Range Workbook`** — the standalone Workbook surface that reads / writes the file's raw bytes directly without an enclosing scope and without requiring Excel installed.
|
|
14
|
+
|
|
15
|
+
Failures originate at one of six surfaces: activity-variant mismatch (wrong surface for the deployment), sheet-name or file-extension resolution, file acquisition (workbook locked), source-table integrity (null DataTable), source-vs-target schema alignment (columns don't match the existing sheet), or target-region structural state (hidden rows on the append target under package v2.8.5+).
|
|
16
|
+
|
|
17
|
+
What this looks like — Append Range faults surface as one of these signatures:
|
|
18
|
+
|
|
19
|
+
- `UiPath.Excel.BusinessException` referencing "must be placed inside an `Excel Application Scope`" or "must be placed inside a `Use Excel File`" — the activity variant in the workflow doesn't match its surrounding container (or has no container). Branch 1.
|
|
20
|
+
- `System.Runtime.InteropServices.COMException (0x800A03EC): Application-defined or object-defined error` — Excel COM rejected the operation. For Append Range, two distinct underlying causes share this HRESULT: branch 2 (sheet name mismatch or unsupported file extension passed to a COM-only call) and branch 5 (the cell write itself rejected due to a schema mismatch). Distinguish by the surrounding evidence (logs, target inspection).
|
|
21
|
+
- `System.IO.IOException: The process cannot access the file '<path>' because it is being used by another process.` — file held by another process or by a stale scope. Branch 3.
|
|
22
|
+
- `System.NullReferenceException: Object reference not set to an instance of an object.` — the configured `DataTable` argument is `Nothing`. Branch 4.
|
|
23
|
+
- `UiPath.Excel.BusinessException` mentioning "hidden rows" or "hidden columns" — the calculated append region intersects hidden rows on the target sheet (package v2.8.5+ only). Branch 6.
|
|
24
|
+
|
|
25
|
+
What can cause it (cause-branches — pick the right one from evidence):
|
|
26
|
+
|
|
27
|
+
1. **Activity variant mismatch (Append Range vs Append Range Workbook vs AppendRangeX)** — three surfaces with the same display name but different acquisition models. The classic `Append Range` activity dropped outside an `Excel Application Scope` throws a `BusinessException` at runtime because it has no workbook context. The Modern `Append Range` (`AppendRangeX`) outside a `Use Excel File` throws the equivalent. The standalone `Append Range Workbook` works independently and does NOT require a scope — but it accesses the file via direct bytes, so it can't coexist with an outer scope that already holds the workbook. Mixing surfaces against the same path in one workflow self-deadlocks on the file lock (collapses to branch 3's scope-conflict variant).
|
|
28
|
+
2. **Sheet name mismatch or invalid file extension** — the configured `SheetName` doesn't match any sheet in the workbook (typo, OpenXML case-sensitivity, sheet renamed upstream, leading/trailing whitespace), OR the workbook path uses an extension Excel COM doesn't recognize for write (`.xls` without the older Excel format support installed, `.xlsm` against an OpenXML-only call). Both surface with the generic `0x800A03EC` HRESULT or a more specific `BusinessException: The sheet with the name '<x>' does not exist` depending on package version. Cross-cuts the read-range sheet-not-found surface — the diagnostic is identical.
|
|
29
|
+
3. **Workbook locked or opened read-only** — same fault family as the read-range / write-range / delete-range file-locked surface: a different process holds the file (user-opened Excel UI, orphan `EXCEL.EXE` from a prior job, AV scanner, network-share lock from a different host), the file is read-only at the OS layer (NTFS ACL, `Mark as Final`, Protected View), OR the workflow mixes the Workbook surface with a Modern/Classic scope against the same path (the scope owns the file; the standalone Workbook activity refuses to acquire it).
|
|
30
|
+
4. **Uninitialized / null DataTable** — the source `DataTable` argument is `Nothing`. Causes: variable declared but never assigned (missing `Build Data Table` / `Read Range` step); preceding step skipped on a conditional branch; conditional output from `Filter DataTable` against an empty source that returned `Nothing` instead of an empty DataTable; variable-name typo so the activity reads the wrong scope's variable.
|
|
31
|
+
5. **Column schema mismatch (source DataTable vs target sheet)** — Append Range expects the source `DataTable`'s columns to align with the existing target sheet's header row. Common failure modes: the source has more columns than the target (extra columns spill into never-defined positions); the source has fewer columns (the activity may write into the wrong starting column, depending on `AddHeaders` and how the activity computes the append-start cell); column-type mismatches (e.g., source numeric column → target text column with stored-as-text values causes Excel to reject the write); column-order mismatches (Append writes by position, NOT by header name — so swapping two columns in the source produces a structurally-valid but semantically-corrupted append). Surfaces as `COMException 0x800A03EC` from `Range.set_Value`, OR a `BusinessException` referencing column count, OR a silent semantic corruption (no error, wrong column gets the wrong data — same pattern as branch 5 of delete-range / branch 5 of filter misalignment).
|
|
32
|
+
6. **Hidden rows in the target append region (package v2.8.5+)** — the workbook's target sheet has rows hidden where the append would land (the row immediately after the last visible data row, OR hidden rows between the last data row and a re-emerging data block). Pre-2.8.5 versions silently wrote into the hidden cells; 2.8.5+ throws an explicit `BusinessException` flagging the hidden range so the workflow author catches the data-shape risk. Common trigger: an AutoFilter applied to the target sheet that hides rows including or following the last-data row position.
|
|
33
|
+
|
|
34
|
+
What to look for:
|
|
35
|
+
|
|
36
|
+
- **The exception class and message** — first signal. `BusinessException` referencing missing scope → branch 1. `0x800A03EC` / `BusinessException` about sheet → branch 2 (or branch 5 if the sheet exists but columns mismatch). `IOException` / "cannot access the file" → branch 3. `NullReferenceException` → branch 4. `BusinessException` mentioning column count or wrong-type cell rejection → branch 5. `BusinessException` mentioning "hidden rows" → branch 6.
|
|
37
|
+
- **Workflow source** — which `Append Range` surface (Classic scoped / Modern scoped / Workbook standalone), the configured `DataTable` argument, `SheetName`, `AddHeaders`, the workbook path (including the extension), and the parent container.
|
|
38
|
+
- **The DataTable's source and shape** — what activity produced the source (`Build Data Table`, `Read Range`, `Generate Data Table`, etc.), how many columns it has, what column types and headers it carries. Required to confirm or rule out branches 4 and 5.
|
|
39
|
+
- **Target sheet's existing structure** — header row content (matters for branch 5's column-alignment check), hidden rows (branch 6), AutoFilter state, the last row containing data (branch 6 / branch 5).
|
|
40
|
+
- **Package version** — `UiPath.Excel.Activities` version from `project.json`. Branch 6 is version-gated at 2.8.5; pre-2.8.5 produces silent corruption with no exception.
|
|
41
|
+
- **Workbook extension** — `.xlsx`, `.xlsm`, `.xls`, `.xlsb`. The Modern scope's OpenXML provider supports `.xlsx` / `.xlsm` cleanly; `.xls` (legacy binary) requires COM. Branch 2's extension-mismatch variant lives here.
|
|
42
|
+
|
|
43
|
+
## Investigation
|
|
44
|
+
|
|
45
|
+
Go in this order — cheaper checks first.
|
|
46
|
+
|
|
47
|
+
1. **Capture the exact error, activity surface, and configuration.** From `uip or jobs get <job-key> --output json` → `Info`: exception class, full message, HRESULT (if a COMException), inner exception. From workflow source: the Append Range surface (Classic scoped / Modern scoped / Workbook standalone), parent container, configured `SheetName`, `AddHeaders`, the source DataTable variable, and the workbook path. From job logs (`uip or jobs logs <key>`): the activity's Trace lines, plus any `Log Message` lines capturing the DataTable shape before the activity.
|
|
48
|
+
|
|
49
|
+
2. **Branch the diagnostic on the exception signature.**
|
|
50
|
+
- `BusinessException: ... must be placed inside an Excel Application Scope` / `... inside a Use Excel File` → branch 1; go to step 3.
|
|
51
|
+
- `BusinessException: The sheet with the name '<x>' does not exist` → branch 2; pivot to the read-range sheet-not-found playbook for the full chain (see [`../summary.md`](../summary.md)).
|
|
52
|
+
- `IOException` / `COMException` with "cannot access the file" / "used by another process" → branch 3; pivot to the read-range file-locked playbook (see [`../summary.md`](../summary.md)).
|
|
53
|
+
- `NullReferenceException` → branch 4; go to step 4.
|
|
54
|
+
- `COMException 0x800A03EC` without explicit sheet-name or hidden-rows language → branches 2 (extension / sheet) or 5 (column schema); go to step 5.
|
|
55
|
+
- `BusinessException` mentioning "hidden rows" / "hidden columns" → branch 6; go to step 6.
|
|
56
|
+
|
|
57
|
+
3. **Confirm branch 1 (activity variant mismatch).** Inspect the workflow source. Three sub-cases:
|
|
58
|
+
- The activity is **classic `Append Range`** (not the `Workbook` variant) and there is NO surrounding `Excel Application Scope`. Fix is structural: either wrap it in a scope OR switch to the standalone `Append Range Workbook` activity.
|
|
59
|
+
- The activity is **Modern `Append Range` (`AppendRangeX`)** and there is NO surrounding `Use Excel File`. Same fix family: wrap in Modern scope OR switch surface.
|
|
60
|
+
- The activity is **`Append Range Workbook`** (standalone) but the workflow ALSO has an `Excel Application Scope` / `Use Excel File` open against the same path elsewhere — that scope holds the file, the standalone Workbook surface can't acquire it. This is the scope-conflict variant of branch 3 in disguise; resolve by replacing the standalone Workbook activity with a scoped one nested inside the existing scope, OR remove the scope and use only the Workbook surface throughout.
|
|
61
|
+
|
|
62
|
+
4. **Confirm branch 4 (uninitialized DataTable).** Trace the `DataTable` argument's variable backward in the workflow source. Find the most recent assignment / output binding. If it's an upstream `Read Range`, did that activity succeed in this run (check job logs)? If it's `Build Data Table`, is the activity actually on the execution path? If the variable was declared in an inner scope, has it gone out of scope by the time Append Range runs? Add a `Log Message Level=Info Message=$"src rows={dt.Rows.Count}, cols={dt.Columns.Count}"` immediately before the activity and rerun — if that line throws NRE, the variable is null. The diagnostic chain is identical to Write Range's branch 1; the same fixes apply.
|
|
63
|
+
|
|
64
|
+
5. **Distinguish branch 2 (sheet/extension) from branch 5 (column schema) when both surface as `0x800A03EC`.** Both branches share the same generic Excel HRESULT and can produce the same `Range.set_Value` stack frame. Differentiate with these checks:
|
|
65
|
+
- **Sheet existence**: open the workbook in Excel (or read its sheet list via `Get Workbook Sheets`). If the configured `SheetName` does not match any sheet → branch 2 (sheet name). If the sheet exists → continue.
|
|
66
|
+
- **Extension support for the provider**: read the workbook path's extension. The Modern OpenXML provider supports `.xlsx` and `.xlsm`. The Workbook surface supports `.xlsx`, `.xlsm`, `.xlsb`, `.xls` natively without Excel. The Classic Excel scope supports whatever the installed Excel version supports. A `.xls` (legacy binary) against a Modern scope's OpenXML provider can throw 0x800A03EC; switching to COM mode (or replacing with a Workbook surface) fixes it.
|
|
67
|
+
- **Source vs. target column alignment**: open the target workbook in Excel. Inspect the target sheet's existing header row and the column data types of the last-data row. Compare to the source DataTable's columns (count, names, types). If the source has more columns than the target, OR a source column's type doesn't match the target's stored type at that position, OR the source column order differs from the target's header order → branch 5 (schema mismatch).
|
|
68
|
+
|
|
69
|
+
6. **Confirm branch 6 (hidden rows in target append region).** Two checks:
|
|
70
|
+
- **Package version**: read `UiPath.Excel.Activities` from `project.json`. If < 2.8.5, branch 6 doesn't exist in this version — recheck the exception text against other branches. If ≥ 2.8.5, continue.
|
|
71
|
+
- **Target sheet hidden state**: open the workbook in Excel before running the workflow. Locate the last row that contains data on the target sheet. Inspect the rows immediately after (where the append would land) and any rows between data blocks. Look for: AutoFilter funnel icons (active filter hiding rows); manually hidden rows (gap in row numbers); grouped rows collapsed. Any of these in the append target triggers branch 6.
|
|
72
|
+
|
|
73
|
+
The root cause is **which of the six surfaces** the failure maps to. A confirmed finding names the activity surface (Classic scoped / Modern scoped / Workbook standalone), the source DataTable's runtime shape, the target sheet's structure, and the matching exception signature.
|
|
74
|
+
|
|
75
|
+
## Resolution
|
|
76
|
+
|
|
77
|
+
Map the branch identified in Investigation to the fix:
|
|
78
|
+
|
|
79
|
+
- **Branch 1 — Activity variant mismatch:**
|
|
80
|
+
- **Classic `Append Range` outside `Excel Application Scope`**: wrap it in `Excel Application Scope` with the workbook path configured on the scope. If the Robot host doesn't have Excel installed (common for headless / unattended Robots), switch to the standalone `Append Range Workbook` activity instead — it doesn't require Excel and works on the file's raw bytes.
|
|
81
|
+
- **Modern `AppendRangeX` outside `Use Excel File`**: wrap it in `Use Excel File` with the workbook configured on the scope.
|
|
82
|
+
- **`Append Range Workbook` alongside another scope on the same path**: replace the standalone Workbook activity with a scoped one nested inside the existing scope. Don't mix surfaces against the same file in one workflow — the scope and the Workbook surface acquire the file by different mechanisms and self-deadlock.
|
|
83
|
+
- Prevention: pick one Excel surface (Classic, Modern, or Workbook) per workbook path in a workflow, and stick to it. Mixing surfaces is the leading cause of self-inflicted file-acquisition failures.
|
|
84
|
+
|
|
85
|
+
- **Branch 2 — Sheet name mismatch or invalid file extension:**
|
|
86
|
+
- **Sheet mismatch**: apply the resolution from the read-range sheet-not-found playbook (see [`../summary.md`](../summary.md) for navigation). Correct the configured `SheetName` to match the workbook's actual sheet name verbatim — including case under OpenXML, whitespace, and Unicode normalization. Validate dynamic expressions with `Get Workbook Sheets` at workflow start before the Append Range runs.
|
|
87
|
+
- **Extension mismatch**: confirm the workbook extension is compatible with the activity surface. `.xls` files require Excel COM (Classic scope or Workbook with appropriate installation); `.xlsb` requires the Workbook surface. If the Modern scope is forcing OpenXML on a non-OpenXML extension, either change the workbook to `.xlsx` (re-save in Excel) or switch to a surface that supports the extension natively.
|
|
88
|
+
|
|
89
|
+
- **Branch 3 — Workbook locked or read-only:**
|
|
90
|
+
- Apply the resolution from the read-range file-locked playbook (see [`../summary.md`](../summary.md) for navigation). The append side and the read side share the same fault surface — the file is held by another process, the lock is at the OS layer, or the workflow mixes scope surfaces against the same path.
|
|
91
|
+
- For `Append Range Workbook` against a path also referenced by an outer scope: pick one surface (see branch 1's prevention rule).
|
|
92
|
+
|
|
93
|
+
- **Branch 4 — Uninitialized / null DataTable:**
|
|
94
|
+
- Initialize the variable at declaration (`New System.Data.DataTable()` as the default). With an initialized empty DataTable, the failure shifts to whichever case actually applies (likely a no-op append, or branch 5 if columns don't align).
|
|
95
|
+
- Guard the Append Range with `If dt IsNot Nothing AndAlso dt.Rows.Count > 0 Then` and skip on the empty case.
|
|
96
|
+
- Trace the upstream populating activity to ensure it actually executes in every execution path that reaches Append Range. The diagnostic chain is identical to Write Range's branch 1.
|
|
97
|
+
|
|
98
|
+
- **Branch 5 — Column schema mismatch:**
|
|
99
|
+
- **Align columns by position** (the activity writes by position, not by header name):
|
|
100
|
+
- Confirm the source DataTable's columns match the target sheet's column order, count, and types.
|
|
101
|
+
- For mismatched ORDER: reorder the source DataTable's columns via `dt = dt.DefaultView.ToTable(False, "Col1", "Col2", "Col3")` (the second argument is the column-name list in target-sheet order).
|
|
102
|
+
- For extra source columns: select only the target's columns via the same `ToTable(False, ...)` call.
|
|
103
|
+
- For missing source columns: add the missing columns to the source DataTable (`dt.Columns.Add("MissingCol")`) so the append fills them — even if the values are empty/null.
|
|
104
|
+
- **Align column types**:
|
|
105
|
+
- Check the target sheet's actual storage type per column (not just the header label). A column showing "1234" rendered right-aligned is numeric; "1234" left-aligned with a green corner triangle is stored as text. Source values must match.
|
|
106
|
+
- Use `Convert.ToString(...)`, `Convert.ToDecimal(...)`, etc. on the DataTable's row population step to coerce types before the append.
|
|
107
|
+
- **Disambiguate AddHeaders behavior**: if the target sheet already has a header row and the source DataTable also carries headers, set `AddHeaders=False` on the activity so the source headers aren't duplicated as a data row in the target.
|
|
108
|
+
- Prevention: when designing an Append Range workflow, document the target's column contract (column names, positions, types) and apply it as a transformation step on the source DataTable before the append. Don't rely on the source's natural column order to match the target's.
|
|
109
|
+
|
|
110
|
+
- **Branch 6 — Hidden rows in target append region (package v2.8.5+):**
|
|
111
|
+
- Remove hidden rows from the target append zone before the Append Range:
|
|
112
|
+
- **Active AutoFilter**: insert a `Remove Data Filter` (Modern) or `Filter Range Action=Remove` (Classic) immediately before Append Range. After the append, re-apply the filter if downstream consumers depend on it.
|
|
113
|
+
- **Manually hidden rows**: unhide programmatically (`Worksheet.Rows.Hidden = False` via COM) or in Excel before deployment.
|
|
114
|
+
- **Grouped rows collapsed**: expand the group before the append.
|
|
115
|
+
- If the hidden state is intentional and the append region must not be reorganized, route the append to a different sheet whose layout is robot-controlled, then have a downstream step (separate workflow) consolidate the data into the user-facing sheet.
|
|
116
|
+
- Downgrading the package to pre-2.8.5 to silence the error is the playbook's anti-pattern — it reintroduces the silent-data-loss bug that the explicit error was added to catch.
|
|
117
|
+
|
|
118
|
+
## Anti-patterns (what NOT to do)
|
|
119
|
+
|
|
120
|
+
Common advice for Append Range failures contains workarounds that hide bugs rather than fix them. The agent should NOT recommend any of these as a primary resolution.
|
|
121
|
+
|
|
122
|
+
- **"Add a `Delay` activity before Append Range."** A Delay is a workaround for a race condition or initialization issue that the workflow author has not diagnosed. For Append Range, the most common temptation is to add a delay after opening the workbook (masking branch 3) or after a preceding write operation (masking a timing dependency that the workflow should encode explicitly). The Delay works intermittently and hides the real cause. Fix the underlying timing (kill orphan EXCEL.EXE for branch 3; sequence activities correctly so the dependency is explicit).
|
|
123
|
+
|
|
124
|
+
- **"Wrap Append Range in a bare Try Catch and continue on error."** A bare Try-Catch that catches `Exception` / `BusinessException` / `COMException` and only logs without re-throwing turns Append Range failures into silent partials — Excel COM may have appended SOME rows before rejecting at a problem row, and the catch turns the partial write into a "success" with stale / missing data in the target. Downstream consumers reading the target then operate on a corrupted append. Use Try-Catch only with a real recovery path: retry with cleaned data (branches 4 and 5), notify on persistent file-lock (branch 3), or re-throw a domain-specific exception.
|
|
125
|
+
|
|
126
|
+
- **"Switch to Append Range Workbook to silence the scope error."** The standalone Workbook surface IS a legitimate alternative when the deployment host doesn't have Excel installed. But switching to it WITHOUT understanding why the original scoped activity was failing can mask real bugs — e.g., a workflow that needed COM features (formula recalculation, conditional formatting interaction) will silently produce wrong data with the Workbook surface even though the failure goes away. Pick the surface based on the deployment requirements (does the workflow need Excel features? is Excel installed on the host?), not based on which one stops throwing.
|
|
127
|
+
|
|
128
|
+
- **"Downgrade `UiPath.Excel.Activities` to pre-2.8.5 to silence the hidden-rows error."** Branch 6's explicit error was added BECAUSE pre-2.8.5 versions silently appended over hidden rows, causing data loss that workflow authors only discovered weeks later when human users unhid rows. Downgrading reintroduces the bug. The correct fix is to handle the hidden-rows case explicitly (remove the filter, unhide, or route to a different sheet).
|
|
129
|
+
|
|
130
|
+
## Prevention (cross-branch)
|
|
131
|
+
|
|
132
|
+
- Pick one Excel surface per workbook path per workflow. Classic scoped, Modern scoped, OR Workbook standalone — don't mix. Mixing causes branch 1's scope-conflict variant of branch 3.
|
|
133
|
+
- Document the target sheet's column contract (order, types, header row presence) and apply it as an explicit transformation step on the source DataTable before Append Range. Branch 5's column-mismatch failures are far cheaper to diagnose when the alignment is explicit.
|
|
134
|
+
- Initialize all `DataTable` variables at declaration (default to `New DataTable()`). Combined with an `If dt.Rows.Count > 0` guard, this handles both branch 4 (null) and the empty-case no-op cleanly.
|
|
135
|
+
- Log `DataTable.Rows.Count` and `DataTable.Columns.Count` immediately before every Append Range. The two-line log makes branches 4 and 5 self-diagnosing.
|
|
136
|
+
- For workflows on a sheet that humans also edit: insert a `Remove Data Filter` (Modern) or equivalent Classic step before every Append Range. AutoFilter state is invisible to the workflow author at design time but very visible to the activity under v2.8.5+ (branch 6).
|
|
137
|
+
- For Robot hosts WITHOUT Excel installed: prefer the `Append Range Workbook` surface package-wide. The Classic / Modern scopes will fail at acquisition; the Workbook surface won't.
|
|
138
|
+
- For workbooks accessed by multiple workflows: serialize Excel access (single-performer queues, host-level locks) to prevent branch 3 collisions between concurrent jobs.
|
|
139
|
+
|
|
140
|
+
## Related
|
|
141
|
+
|
|
142
|
+
- Other Excel Activities failure fingerprints (read-side and write-side cross-cuts — file-locked, sheet-not-found, protected-sheet) are separate playbooks; see [`../summary.md`](../summary.md) for navigation. Branches 2 (sheet) and 3 (file lock) inherit the diagnostic chains from those playbooks.
|
|
143
|
+
- [`./delete-range-failures.md`](./delete-range-failures.md) — sibling range-mutation playbook. The hidden-rows / AutoFilter pattern (branch 6 here / branch 5 there) is structurally identical in both directions; the fix for one applies to the other.
|
|
144
|
+
- [`./execute-macro-failures.md`](./execute-macro-failures.md) — sibling playbook for `Execute Macro` failures. Workflows that combine Append Range with VBA post-processing share the scope-container and file-acquisition surfaces.
|
|
145
|
+
- [`../overview.md`](../overview.md) — package overview, including the scope-container model and the OpenXML-vs-COM provider distinction relevant to branches 1 and 2.
|
|
146
|
+
- For headless workflows where the append target is best expressed in code rather than DataTable-to-sheet, consider migrating to the cloud surface via `o365-activities/` (Microsoft Graph API). That surface has different memory and concurrency semantics and no Excel COM dependency, avoiding branches 1, 3, and 6 entirely.
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
---
|
|
2
|
+
confidence: medium
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Delete Range Failures
|
|
6
|
+
|
|
7
|
+
## Context
|
|
8
|
+
|
|
9
|
+
A `UiPath.Excel.Activities` `Delete Range` activity (Classic `DeleteRange` inside `Excel Application Scope`, or Modern `DeleteRangeX` inside `Use Excel File`) removes a rectangular range from a worksheet, optionally shifting remaining cells. Failures originate at one of five surfaces: structural (no enclosing scope), range syntax (malformed or empty `Range`), shift configuration (`ShiftCells` / `ShiftOption` conflict with range geometry), file acquisition (workbook locked / read-only), or row alignment (active AutoFilter hides rows in the target block).
|
|
10
|
+
|
|
11
|
+
What this looks like — Delete Range faults surface as one of these signatures:
|
|
12
|
+
|
|
13
|
+
- Studio shows a validation error on the activity, or the workflow throws at runtime before the activity executes — typically `BusinessException: Excel Application Scope not found` or a Modern equivalent. Branch 1.
|
|
14
|
+
- `System.ArgumentException: The range is invalid` or `System.ArgumentException: The string argument cannot be empty` — branch 2.
|
|
15
|
+
- `System.Runtime.InteropServices.COMException` from Excel referencing the shift operation, or `Application-defined or object-defined error` (`0x800A03EC`) raised when the shift direction conflicts with surrounding data — branch 3.
|
|
16
|
+
- `System.Runtime.InteropServices.COMException: Excel cannot access the file '<path>'` or `System.IO.IOException: The process cannot access the file ... because it is being used by another process.` — branch 4.
|
|
17
|
+
- The activity completes without an exception but the wrong rows are removed / remaining rows misalign, or a subsequent activity throws because expected rows are no longer where the workflow assumed — branch 5.
|
|
18
|
+
|
|
19
|
+
What can cause it (cause-branches — pick the right one from evidence):
|
|
20
|
+
|
|
21
|
+
1. **Activity outside an Excel scope container** — Classic `Delete Range` placed outside an `Excel Application Scope`, or Modern `Delete Range` placed outside a `Use Excel File`. Studio flags this as a design-time validation error; if the project was packaged anyway (e.g., validation suppressed, scope removed after publish), the workflow throws at runtime before the activity runs. See [`../overview.md`](../overview.md) for the scope model.
|
|
22
|
+
2. **Invalid range syntax or empty Range property** — `Range` is blank, quoted incorrectly, or uses non-A1 notation. Examples that fail: empty string, `Sheet1!A1:B10` (sheet prefix belongs in `SheetName`, not in `Range`), `R1C1:R10C2` (R1C1 notation), `A 1:B 10` (whitespace inside the address), unbalanced quotes from an expression that produced an empty literal. Same fault for both `A1:B10` (rectangular) and `A:E` / `1:10` (full-column / full-row) shapes — the syntax just has to parse.
|
|
23
|
+
3. **ShiftCells / ShiftOption conflict** — `ShiftCells` is True but `ShiftOption` is unset, set to a direction the range geometry cannot satisfy, or set to a direction that violates surrounding sheet structure (e.g., `ShiftUp` on a range whose bottom edge touches a merged region; `EntireRow` on a range that intersects a structured Table). Symptom: COMException with the Excel `Application-defined or object-defined error` text, sometimes with HRESULT `0x800A03EC`. May also manifest as a silent data corruption if Excel partially executed the shift before erroring.
|
|
24
|
+
4. **Workbook locked or opened read-only** — same fault family as Read Range / Write Cell file-locked: another process holds the workbook (orphan `EXCEL.EXE` from a prior job, a user has the file open in Excel UI, a different host has the lock on a network share), or the file is read-only at the OS layer (NTFS ACL, share-level permission, `Mark as Final`, Protected View on a downloaded copy). Delete Range is a write — read-only acquisition will fail it the same way it fails Write Range. The full investigation chain is shared with the read-range file-locked playbook; see [`../summary.md`](../summary.md) for navigation.
|
|
25
|
+
5. **Range misalignment over filtered data** — the worksheet has an active AutoFilter (`Data → Filter`) that hides rows in or around the target range. Delete Range operates on the cell coordinates as configured, not the visible rows; when shifting is enabled, hidden rows get pulled into the deletion or remaining rows shift onto cells the user expected to be empty. Symptom: activity completes without an exception, but post-condition checks fail or downstream activities see unexpected rows. May also throw if the filter range overlaps the deletion range in a way Excel's COM rejects.
|
|
26
|
+
|
|
27
|
+
What to look for:
|
|
28
|
+
|
|
29
|
+
- **The exception class and message** — first signal. `ArgumentException` with "range is invalid" / "argument cannot be empty" → branch 2. `BusinessException` referencing "Excel Application Scope" or "Use Excel File" → branch 1. `COMException` / `IOException` with "cannot access the file" → branch 4. `Application-defined or object-defined error` referencing shift / direction → branch 3. No exception but wrong output → branch 5.
|
|
30
|
+
- **Workflow source** — which `Delete Range` surface (Classic / Modern), the parent container (`Excel Application Scope` / `Use Excel File` / none), and the configured `Range`, `SheetName`, `ShiftCells`, `ShiftOption`. A literal `Range` value vs. an expression matters: branch 2 is most common when `Range` is an expression that resolved to empty / null at runtime.
|
|
31
|
+
- **Workbook state at fault time** — open in Excel by a user (Win32 GUI), held by orphan `EXCEL.EXE`, marked read-only, filtered with `Data → Filter` active. The `Data → Filter` toggle leaves a visible filter dropdown on the header row; check by opening the workbook before the workflow runs and confirming no funnel icons appear on column headers.
|
|
32
|
+
- **Sheet structure around the target range** — merged cells in or adjacent to the range, Excel Tables (`Ctrl+T` structured ranges) overlapping the range, freeze panes, named ranges that reference the deletion target. Any of these can convert a benign shift into a `0x800A03EC`.
|
|
33
|
+
- **Whether the intent is to clear data or restructure the sheet** — Delete Range with `ShiftCells: False` clears cell values (similar to `Clear Range` but also removes formats). If the workflow only needs to clear values without affecting cell layout / formatting, the correct activity is `Clear Range` — using Delete Range is a category error that surfaces as branches 3 or 5.
|
|
34
|
+
|
|
35
|
+
## Investigation
|
|
36
|
+
|
|
37
|
+
Go in this order — cheaper checks first.
|
|
38
|
+
|
|
39
|
+
1. **Capture the exact error, activity, and configuration.** From `uip or jobs get <job-key> --output json` → `Info`: exception class and full message. From workflow source: the `Delete Range` surface (Classic / Modern), parent container, configured `SheetName`, `Range`, `ShiftCells`, `ShiftOption`. From job logs (`uip or jobs logs <key>`): the activity's Trace lines for resolved runtime values.
|
|
40
|
+
|
|
41
|
+
2. **Branch the diagnostic on the exception signature.**
|
|
42
|
+
- Studio validation error or `BusinessException` referencing the missing scope → branch 1; go to step 3.
|
|
43
|
+
- `ArgumentException` with "range is invalid" / "argument cannot be empty" → branch 2; go to step 4.
|
|
44
|
+
- `COMException` / `Application-defined or object-defined error` referencing shift / direction → branch 3; go to step 5.
|
|
45
|
+
- `IOException` / `COMException` with "cannot access the file" / "used by another process" / "read-only" → branch 4; pivot to the read-range file-locked playbook for the full chain (see [`../summary.md`](../summary.md)).
|
|
46
|
+
- No exception but wrong output / downstream failure → branch 5; go to step 6.
|
|
47
|
+
- `BusinessException: The sheet with the name '<name>' does not exist` → cross-cutting sheet-name mismatch; pivot to the read-range sheet-not-found playbook for the full chain (see [`../summary.md`](../summary.md)). The diagnostic is identical to the read-side version.
|
|
48
|
+
|
|
49
|
+
3. **Confirm branch 1 (no scope container).** Inspect the workflow source. Trace the activity tree from `Delete Range` upward. The activity must have an ancestor that is either `Excel Application Scope` (Classic) or `Use Excel File` (Modern), with the configured `Workbook` / `WorkbookPath` matching the file Delete Range is meant to operate on. If the activity is at the root of the workflow, or inside a `Sequence` / `Try Catch` with no enclosing Excel scope, branch 1 is confirmed.
|
|
50
|
+
|
|
51
|
+
4. **Confirm branch 2 (invalid range syntax).** Examine the configured `Range` value:
|
|
52
|
+
- If literal: check for empty string, unbalanced quotes, sheet prefix (`Sheet1!A1`), R1C1 notation, or whitespace inside the address. Valid forms: `"A1:B10"` (rectangle), `"A:E"` (full columns), `"1:10"` (full rows), `"A1"` (single cell).
|
|
53
|
+
- If expression: log the resolved value immediately before the activity (`Log Message Level=Info Message=$"Range: '{rangeExpr}'"`) and rerun. The most common cause is an expression that produces an empty string from a null `DataRow` field, a `String.Format` against a `Nothing` value, or a slice that resolved to zero cells.
|
|
54
|
+
- If the expression depends on values computed earlier in the workflow (`row counts`, `lastRow`), confirm those values are valid at the moment Delete Range runs. A `lastRow` of 0 with a range expression like `"A1:B" + lastRow.ToString` produces `"A1:B0"`, which Excel COM rejects.
|
|
55
|
+
|
|
56
|
+
5. **Confirm branch 3 (ShiftCells / ShiftOption conflict).** Inspect the activity configuration:
|
|
57
|
+
- If `ShiftCells` is False, this branch does not apply — go back to step 2.
|
|
58
|
+
- If `ShiftCells` is True, `ShiftOption` must be set to a valid direction. Classic `Delete Range` accepts `ShiftLeft` / `ShiftUp` / `EntireRow` / `EntireColumn`; Modern `DeleteRangeX` accepts `ShiftCellsLeft` / `ShiftCellsUp` / `EntireRow` / `EntireColumn` (naming differs slightly across versions — check the property dropdown for the host's package version).
|
|
59
|
+
- Open the workbook in Excel and inspect the deletion target's surroundings: are there merged cells along the bottom edge (relevant for `ShiftUp`), the right edge (relevant for `ShiftLeft`), or anywhere Excel would need to break to perform the shift? Are there Excel Tables (`Ctrl+T`) overlapping the range? Excel Tables refuse partial-row deletions that would break the table's rectangular shape.
|
|
60
|
+
- Reproduce manually: open the workbook in Excel, select the same range, `Home → Delete → Delete Cells…`, pick the same shift direction. If Excel rejects it interactively, the activity sees the same rejection wrapped in a COMException.
|
|
61
|
+
|
|
62
|
+
6. **Confirm branch 5 (filter misalignment).** Open the workbook in Excel before running the workflow, OR snapshot it from a recent backup:
|
|
63
|
+
- Check each worksheet header row for the filter funnel icon (`Data → Filter` toggle). If active, the filter is applied — hidden rows exist.
|
|
64
|
+
- `Home → Find & Select → Go To Special → Visible cells only` highlights what's visible. Compare to the configured Delete Range target: any hidden rows inside the range fall victim to the deletion silently.
|
|
65
|
+
- For a workflow that builds the `Range` expression dynamically from a row count (`UsedRange.Rows.Count`), confirm whether the count includes hidden rows. The COM `UsedRange.Rows.Count` includes hidden rows; the modern OpenXML enumeration does not — provider-dependent skew.
|
|
66
|
+
|
|
67
|
+
The root cause must name **which of the five surfaces** the failure maps to, with the specific evidence: the exception text and class, the activity configuration (scope, `Range`, `ShiftCells`, `ShiftOption`), and the workbook state (locked / filtered / structured Tables / merged regions). A generic "Delete Range failed" is not a confirmed finding.
|
|
68
|
+
|
|
69
|
+
## Resolution
|
|
70
|
+
|
|
71
|
+
Map the branch identified in Investigation to the fix:
|
|
72
|
+
|
|
73
|
+
- **Branch 1 — Activity outside a scope container:**
|
|
74
|
+
- Wrap the Delete Range activity in the correct scope. Classic `Delete Range` → place inside `Excel Application Scope` with the workbook configured on the scope. Modern `Delete Range` (`DeleteRangeX`) → place inside `Use Excel File` with the workbook configured on the scope.
|
|
75
|
+
- Do not mix surfaces — a Classic Delete Range inside a Modern `Use Excel File` won't work, and vice versa. The toolbox shows them as separate entries; pick the one that matches the surrounding container.
|
|
76
|
+
- Prevention: when refactoring workflows, do not delete an `Excel Application Scope` or `Use Excel File` container without auditing every Excel activity nested inside. Studio's design-time validation catches the resulting orphans, but only if validation is enabled and the file is reopened in Studio post-edit.
|
|
77
|
+
|
|
78
|
+
- **Branch 2 — Invalid range syntax or empty Range:**
|
|
79
|
+
- Use standard A1 notation, quoted as a string literal in the activity property: `"A1:B10"` (rectangular block), `"A:E"` (entire columns), `"3:7"` (entire rows), `"A1"` (single cell). The sheet name goes in the separate `SheetName` property — never in `Range`.
|
|
80
|
+
- Never leave `Range` blank. Excel COM has no concept of "delete nothing"; an empty string is a configuration error, not a noop.
|
|
81
|
+
- For expression-based ranges: validate the resolved value before the activity. Add a `Log Message Level=Info Message=$"Range: '{range}'"` immediately before Delete Range. If the resolved value can be empty under any input, guard the activity with an `If` that skips the delete when the range is empty / invalid, or fix the expression so it never produces an invalid range.
|
|
82
|
+
- For `lastRow`-style expressions: compute `lastRow` defensively. `If lastRow <= 0 Then` → skip; otherwise `Range = "A1:B" & lastRow.ToString`.
|
|
83
|
+
- Prevention: prefer literal ranges where the deletion target is known at design time. Expression-based ranges are a runtime hazard that benefits from explicit validation.
|
|
84
|
+
|
|
85
|
+
- **Branch 3 — ShiftCells / ShiftOption conflict:**
|
|
86
|
+
- **If the intent is to clear data while preserving cell layout / formatting**: set `ShiftCells` to False, OR replace Delete Range with `Clear Range`. Clear Range wipes cell values without affecting the surrounding sheet structure; it does not require a shift direction and does not interact with merged cells or structured Tables.
|
|
87
|
+
- **If the intent is to remove cells and reflow surrounding data**: ensure `ShiftOption` matches the range shape and surrounding structure. `ShiftUp` requires that the rows below the range are not part of a merged region that crosses the deletion boundary. `EntireRow` deletes whole rows — preferred when the range spans full rows anyway, since Excel handles whole-row deletion more robustly than partial-row shifts.
|
|
88
|
+
- **If the range intersects an Excel Table** (`Ctrl+T` structured range): use the table's own row-delete semantics rather than Delete Range. Workflow option: convert the table to a normal range (`Table Tools → Convert to Range`) before the deletion, then re-apply the table after, OR refactor to use a `Filter Range` followed by manual row removal.
|
|
89
|
+
- Reproduce the operation manually in Excel to confirm the fix: open the workbook, select the configured range, `Home → Delete → Delete Cells…`, pick the same shift direction. If Excel performs the deletion cleanly, the activity will too.
|
|
90
|
+
- Prevention: avoid `ShiftCells: True` on workbooks with structured Tables or merged regions adjacent to deletion targets. Use `EntireRow` deletes when the workflow's intent is row removal; the activity is more predictable than partial-row shifts.
|
|
91
|
+
|
|
92
|
+
- **Branch 4 — Workbook locked or read-only:**
|
|
93
|
+
- Apply the resolution from the read-range file-locked playbook (see [`../summary.md`](../summary.md) for navigation). The write side (Delete Range) and the read side share the same fault surface — the file is held by another process, the lock is at the OS layer, or the file is on a network share whose semantics differ from local disk.
|
|
94
|
+
- For workbooks marked read-only via `Mark as Final` or arriving via Protected View: open the file as the Robot user, remove the `Mark as Final` flag (`File → Info → Mark as Final`), or `Unblock-File '<path>'` to lift the Mark of the Web flag that triggers Protected View.
|
|
95
|
+
- For Modern `Use Excel File` scopes: confirm `Read-only mode` is False on the scope. Default-True is a footgun that converts every write — including Delete Range — into a silent no-op or a confusing read-only-violation error.
|
|
96
|
+
|
|
97
|
+
- **Branch 5 — Range misalignment over filtered data:**
|
|
98
|
+
- Remove the active filter before Delete Range. Insert a `Remove Data Filter` (Modern) or `Filter Range` with `Action: Remove` (Classic) before the Delete Range activity, targeting the same sheet. After the deletion, re-apply the filter if downstream activities expect it.
|
|
99
|
+
- Alternative: have the workflow operate on filter-aware row identifiers (e.g., a key column) instead of cell coordinates. Read the filtered DataTable, identify rows by key, then delete rows by reapplying the filter and using `Delete Row` on individual matches — slower but correct under filtered conditions.
|
|
100
|
+
- For workflows that compute the `Range` from a `UsedRange.Rows.Count`: be aware that this count is provider-dependent. The Modern OpenXML enumeration may differ from the Classic COM count when hidden rows are present. Validate the resolved range against the workbook's visible state before relying on it.
|
|
101
|
+
- Prevention: workflows that mutate filtered workbooks should explicitly handle the filter state — either remove the filter before any range mutation, or operate on a filter-aware abstraction (DataTable + key matching) that doesn't depend on cell coordinates lining up.
|
|
102
|
+
|
|
103
|
+
## Anti-patterns (what NOT to do)
|
|
104
|
+
|
|
105
|
+
Common advice for Delete Range failures contains workarounds that hide bugs rather than fix them. The agent should NOT recommend any of these as a primary resolution.
|
|
106
|
+
|
|
107
|
+
- **"Add a `Delay` activity before Delete Range."** A `Delay` is a workaround for a race condition or initialization issue that the workflow author has not actually diagnosed. For Delete Range, the most common temptation is to add a Delay after opening the workbook (branch 4) or after a preceding filter operation (branch 5). The Delay "works" intermittently — it papers over branch 4 (the file lock from a prior orphan that happens to release within the delay window) or branch 5 (Excel's filter-change settling that COM exposes asynchronously). A reliable fix names the specific timing dependency: kill orphan EXCEL.EXE explicitly before the activity (branch 4 stop-gap), or remove the filter explicitly via the corresponding activity (branch 5). If a `Delay` is genuinely required, treat it as a diagnosis hint, document the dependency in a comment, and pick a duration an order of magnitude above the worst observed case.
|
|
108
|
+
|
|
109
|
+
- **"Wrap Delete Range in a Try Catch and continue on error."** A bare Try-Catch that catches `ArgumentException` / `COMException` / `System.Exception` and only logs without re-throwing turns Delete Range failures into silent skips — the workflow proceeds as if the deletion succeeded, leaving stale rows in the workbook. Downstream Read Range activities then process those stale rows as if they were new data, producing wrong outputs that are far harder to diagnose than the original exception. Use Try-Catch only with a real recovery path: fall back to `Clear Range` for branch 3, mark the queue item Failed for branch 4, send a notification, or re-throw a domain-specific exception.
|
|
110
|
+
|
|
111
|
+
- **"Use Delete Range when you only need to clear data."** Delete Range removes cells and (when `ShiftCells: True`) reflows surrounding data; `Clear Range` removes cell values while preserving cell layout, formatting, and surrounding structure. Workflows that only need to wipe values before a fresh Write Range should use Clear Range. Using Delete Range "because it sounded similar" is a category error that surfaces as branch 3 (shift conflicts) or branch 5 (misalignments) — the underlying bug is the wrong activity choice, not a configuration issue.
|
|
112
|
+
|
|
113
|
+
## Prevention (cross-branch)
|
|
114
|
+
|
|
115
|
+
- Confirm at design time that every `Delete Range` activity has an enclosing `Excel Application Scope` (Classic) or `Use Excel File` (Modern). Studio's validation catches the orphan case; do not suppress validation warnings on Excel activities.
|
|
116
|
+
- Use literal A1 ranges where the deletion target is known at design time. Expression-based ranges require explicit runtime validation (logging + skip-on-empty guards).
|
|
117
|
+
- Set `ShiftCells: False` unless the workflow specifically needs to reflow surrounding cells. The default-True is a frequent source of branch 3 failures on workbooks with structured Tables or merged regions.
|
|
118
|
+
- Use `Clear Range` instead of Delete Range when the intent is to wipe cell values without changing the sheet's structure. The activity is purpose-built for that case and avoids the shift / filter / table-intersection failure modes.
|
|
119
|
+
- For workflows that operate on filtered workbooks: explicitly remove the filter before any range mutation, then re-apply it after. Do not rely on Delete Range to handle filtered ranges correctly — it operates on coordinates, not visible rows.
|
|
120
|
+
- Provision Robot hosts with predictable Excel state — no `Personal.xlsb` interfering, no leftover orphan `EXCEL.EXE` from prior jobs (kill at job start as a hygiene step, not as a fix for branch 4), and write permissions on the workbook's containing folder for the Robot user.
|
|
121
|
+
|
|
122
|
+
## Related
|
|
123
|
+
|
|
124
|
+
- Other Excel Activities failure fingerprints (read-side and write-side cross-cuts — file-locked, sheet-not-found, protected-sheet) are separate playbooks; see [`../summary.md`](../summary.md) for navigation. Branches 4 (file lock) and the sheet-name pivot in step 2 inherit the diagnostic chains from those playbooks.
|
|
125
|
+
- [`../overview.md`](../overview.md) — package overview, including the scope-container model that branch 1 violates.
|
|
126
|
+
- For headless workflows where the deletion target is best expressed in code rather than cell coordinates, consider migrating the relevant logic to UiPath Data Manipulation activities (`Filter DataTable` / `Remove Data Row` / `For Each Row in DataTable`) operating on a `Read Range` result, then writing the modified `DataTable` back via `Write Range`. The DataTable round-trip avoids the in-place deletion failure modes entirely.
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
---
|
|
2
|
+
confidence: medium
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Use Excel File / Excel Application Card Failures
|
|
6
|
+
|
|
7
|
+
## Context
|
|
8
|
+
|
|
9
|
+
The Modern `Use Excel File` activity (class `UiPath.Excel.Activities.ExcelApplicationCard`, also surfaced as "Excel App Card" in some contexts) and the Classic `Excel Application Scope` are the scope containers that govern an Excel workbook's lifecycle for child activities (Read Range, Write Cell, Append Range, etc.). The card / scope acquires the workbook, manages the underlying provider (OpenXML by default for Modern; Excel COM for Classic and for Modern when COM-forcing properties are set), and releases the file when its body completes.
|
|
10
|
+
|
|
11
|
+
Failures originate at one of five surfaces: provider acquisition (Excel COM unavailable when needed), workbook-path resolution (the configured path is empty, null, or contains illegal characters), Excel-process lifecycle (multiple cards collide on the EXCEL.EXE process without an `Excel Process Scope` to govern them), child-activity placement (a Modern Excel child activity dropped outside any card), or sensitivity-label rejection (Microsoft Purview / AIP-protected workbooks under package versions before the sensitivity-label properties were added).
|
|
12
|
+
|
|
13
|
+
What this looks like — Use Excel File / Excel Application Card faults surface as one of these signatures:
|
|
14
|
+
|
|
15
|
+
- `UiPath.Excel.BusinessException: Error opening workbook. Make sure Excel is installed.` (or near-identical wording) — the card / scope needs Excel COM but the host has no Excel install, or the install is broken / unrepaired. Branch 1.
|
|
16
|
+
- `System.ArgumentException: Excel File path is empty or not set` / `System.ArgumentException: Illegal characters in path '<path>'` / `System.IO.FileNotFoundException` from the path-binding step — the configured `WorkbookPath` property evaluates to empty, null, whitespace, or a malformed string. Branch 2.
|
|
17
|
+
- `System.Runtime.InteropServices.COMException` with `RPC_E_SERVER_UNAVAILABLE` (`0x800706BA`), `RPC_E_DISCONNECTED` (`0x80010108`), or `CO_E_SERVER_EXEC_FAILURE` (`0x80080005`) — multiple scopes raced on the same EXCEL.EXE process, OR a prior scope tore down the process and a follow-up scope tries to attach. Branch 3.
|
|
18
|
+
- `UiPath.Excel.BusinessException` mentioning "must be placed inside" / "missing parent container" — a Modern Excel CHILD activity (Read Range, Write Cell, etc.) was dropped outside any `Use Excel File` / `Excel Application Scope`. Branch 4 (cross-cut).
|
|
19
|
+
- `System.Runtime.InteropServices.COMException` or `UiPath.Excel.BusinessException` referencing "sensitivity label", "information protection", or "label is required" — the workbook is protected under a Microsoft Purview / Azure Information Protection (AIP) sensitivity policy and the card doesn't supply the required label / operation properties. Branch 5.
|
|
20
|
+
|
|
21
|
+
What can cause it (cause-branches — pick the right one from evidence):
|
|
22
|
+
|
|
23
|
+
1. **Excel not installed / Interop unavailable** — the card / scope decided it needs Excel COM (because the Classic scope is COM-only, OR because a Modern card has a COM-forcing property like `Read Formatting`, OR the file extension is `.xls`/`.xlsb` requiring COM). The host has no Excel installed, OR Excel's COM registration is broken from a botched install / repair / Office 2024 click-to-run upgrade. The activity throws `BusinessException: Error opening workbook. Make sure Excel is installed.` before any file open.
|
|
24
|
+
2. **Empty / invalid / illegal WorkbookPath** — the `WorkbookPath` property is bound to a variable / expression that evaluates to null, empty string, whitespace-only, OR contains characters illegal in Windows file paths (control chars, NUL, asterisks in mid-path, mixed `/` and `\` separators in some package versions). Common causes: variable declared in an inner scope so the card sees it as `Nothing`; preceding `Read Cell` returned empty; `String.Format` against a `Nothing` produced an empty literal; a config file lookup failed silently.
|
|
25
|
+
3. **COM / RPC failures across scopes (race condition or torn-down process)** — common scenarios: two `Use Excel File` cards in sequence against the same path with no `Excel Process Scope` wrapping them (the first card closes EXCEL.EXE; the second tries to attach to a process that no longer exists); parallel branches both opening the same path; a child `Execute Macro` activity called `Application.Quit` from VBA (see also `execute-macro-failures.md` branch 3 for the macro-tears-down-Excel chain). The Modern `Use Excel File` is generally OpenXML by default and avoids this; the failure mode is concentrated on Classic `Excel Application Scope` and Modern cards with COM-forcing properties.
|
|
26
|
+
4. **Modern Excel child activity outside any card / scope** — a Read Range, Write Cell, Append Range, Delete Range, Execute Macro, etc. sits at the workflow root without a `Use Excel File` (Modern) or `Excel Application Scope` (Classic) wrapping it. The child activity throws `BusinessException: <activity> must be placed inside a 'Use Excel File' container`. This is a child-activity failure surface — see the individual activity playbooks (`append-range-failures.md`, `delete-range-failures.md`, etc.) for the per-activity diagnostic chain; this playbook's branch 4 is a brief cross-cut.
|
|
27
|
+
5. **Sensitivity label rejection (Microsoft Purview / AIP)** — the workbook has a sensitivity label applied (e.g., "Confidential", "Highly Confidential", "Internal Use Only") under Microsoft Purview / Azure Information Protection. The Excel card opens the file but cannot write to it without supplying the appropriate `SensitivityLabel` / `SensitivityOperation` properties (introduced in `UiPath.Excel.Activities` v2.23.4+). On pre-v2.23.4 packages the card has no way to supply the label; on v2.23.4+ the failure means the workflow needs to set the properties explicitly.
|
|
28
|
+
|
|
29
|
+
What to look for:
|
|
30
|
+
|
|
31
|
+
- **The exception class and message** — first signal. `BusinessException: Error opening workbook` → branch 1. `ArgumentException: path is empty` / `Illegal characters in path` → branch 2. `COMException RPC_E_*` / `0x800706BA` / `0x80010108` / `0x80080005` → branch 3. `BusinessException: must be placed inside` (on a child activity, NOT the card itself) → branch 4. `COMException` / `BusinessException` mentioning sensitivity / label / information protection → branch 5.
|
|
32
|
+
- **Workflow source** — which surface is in use (Modern `Use Excel File` / Classic `Excel Application Scope`), the configured `WorkbookPath` (literal vs. expression), the `ReadOnly` property, any COM-forcing properties (`Read Formatting`, `Edit Password`, `Visible`), and whether the workflow has multiple Excel scopes in sequence or parallel.
|
|
33
|
+
- **Host's Excel install state** — is Excel installed on the Robot host? Which version (2016, 2019, 2021, M365 click-to-run)? Has the install been repaired recently? Is there a known-good `excel.exe` at `C:\Program Files\Microsoft Office\root\Office16\excel.exe` (or equivalent)? Relevant to branch 1.
|
|
34
|
+
- **The `WorkbookPath`'s runtime value** — what does the variable / expression resolve to immediately before the card? Log it with `Log Message Level=Info Message=$"WorkbookPath: '{path}' (length={path.Length})"` — empty, whitespace, illegal characters all become visible.
|
|
35
|
+
- **Excel Process Scope presence** — if the workflow has multiple `Use Excel File` cards in sequence (or in a loop), is there an outer `Excel Process Scope` wrapping the whole sequence? Without it, each card opens/closes EXCEL.EXE independently and races. Relevant to branch 3.
|
|
36
|
+
- **Package version** — `UiPath.Excel.Activities` version from `project.json`. Branch 5 is gated at v2.23.4 (the SensitivityLabel properties weren't available before that).
|
|
37
|
+
- **Workbook protection state** — does the workbook have a sensitivity label applied? Open it in Excel and look for the label badge in the title bar / status bar (typically "Sensitivity: Confidential" or similar). Relevant to branch 5.
|
|
38
|
+
|
|
39
|
+
## Investigation
|
|
40
|
+
|
|
41
|
+
Go in this order — cheaper checks first.
|
|
42
|
+
|
|
43
|
+
1. **Capture the exact error, activity surface, and configuration.** From `uip or jobs get <job-key> --output json` → `Info`: exception class, full message, HRESULT, inner exception. From workflow source: which Excel scope surface (Modern card vs. Classic scope), the configured `WorkbookPath`, `ReadOnly`, any COM-forcing properties, whether multiple scopes exist in sequence / parallel, and whether an `Excel Process Scope` wraps them. From `project.json`: the `UiPath.Excel.Activities` version. From job logs: any `Log Message` lines capturing the `WorkbookPath` value before the scope.
|
|
44
|
+
|
|
45
|
+
2. **Branch the diagnostic on the exception signature.**
|
|
46
|
+
- `BusinessException: Error opening workbook. Make sure Excel is installed.` → branch 1; go to step 3.
|
|
47
|
+
- `ArgumentException` referencing "path is empty" / "Illegal characters in path" → branch 2; go to step 4.
|
|
48
|
+
- `COMException` with `RPC_E_SERVER_UNAVAILABLE` / `RPC_E_DISCONNECTED` / `CO_E_SERVER_EXEC_FAILURE` HRESULTs → branch 3; go to step 5.
|
|
49
|
+
- `BusinessException` on a CHILD activity referencing "must be placed inside a Use Excel File / Excel Application Scope" → branch 4; pivot to the per-activity sibling playbook (see [`../summary.md`](../summary.md)).
|
|
50
|
+
- `COMException` / `BusinessException` referencing "sensitivity label" / "information protection" / "label is required" → branch 5; go to step 6.
|
|
51
|
+
|
|
52
|
+
3. **Confirm branch 1 (Excel not installed / Interop unavailable).** Check:
|
|
53
|
+
- **Is the scope a Classic `Excel Application Scope`?** Classic is COM-only — it ALWAYS needs Excel installed. If yes, branch 1 is plausible; verify by checking the host.
|
|
54
|
+
- **Is the scope a Modern `Use Excel File` with COM-forcing properties?** Modern defaults to OpenXML but falls back to COM when `Read Formatting`, `Edit Password`, certain `Visible`/`Auto Save` combinations, or `.xls`/`.xlsb` file extensions are in play. Inspect the card's properties — any COM-forcing flag means Excel must be installed.
|
|
55
|
+
- **Is Excel actually installed on the Robot host?** Confirm via the host's `Get-ItemProperty 'HKLM:\Software\Microsoft\Office\*\Excel\InstallRoot'` (PowerShell) or by checking that `excel.exe` exists at the expected path. If absent, branch 1 is confirmed.
|
|
56
|
+
- **Is the install broken?** Check if Excel can be launched interactively on the host. A working install opens with no error dialog; a broken install shows registration errors, missing-DLL warnings, or recovery prompts. UiPath's "Repair Tool for Microsoft Office" (Studio → Tools tab) and Office's Online Repair are the canonical fixes.
|
|
57
|
+
|
|
58
|
+
4. **Confirm branch 2 (empty / illegal WorkbookPath).** Inspect the workflow source. The `WorkbookPath` property is either a literal (rare for branch 2) or an expression. For expression cases:
|
|
59
|
+
- Trace the expression's source variable backward. If it's an `Assign`, did the assignment run in this execution path? If it's an `Out Argument` from an invoked workflow / sub-workflow, did the producer return a non-empty value?
|
|
60
|
+
- Add a `Log Message Level=Info Message=$"WorkbookPath resolved to: '{path}' (length={path.Length}, IsNothing={path Is Nothing})"` immediately before the card and re-run. The log makes the resolved value visible.
|
|
61
|
+
- Check for illegal characters: control chars (NUL, BEL, etc.), embedded newlines (from a config-file read that didn't trim), mixed `\` and `/` separators, mid-path asterisks / question marks, leading/trailing whitespace, unbalanced quotes. The `System.IO.Path.GetInvalidPathChars()` API enumerates the strict illegal-char set.
|
|
62
|
+
- For UNC paths: confirm the share is reachable from the Robot host's session (mapped drive letters from interactive sessions don't auto-map under a Robot session).
|
|
63
|
+
|
|
64
|
+
5. **Confirm branch 3 (COM/RPC across scopes).** Check:
|
|
65
|
+
- **Multiple sequential `Use Excel File` cards or `Excel Application Scope` blocks?** Look at the workflow source for two or more Excel-scope activities in the same Sequence. Are they wrapped by an `Excel Process Scope` (Modern, outermost)?
|
|
66
|
+
- **Parallel Excel access?** Look for `Parallel` activities containing Excel scopes against the same file path. Excel COM is single-threaded apartment (STA); parallel access is a hard violation.
|
|
67
|
+
- **Macro tearing down Excel?** If a child `Execute Macro` ran VBA that called `Application.Quit` / `Workbooks.Close`, the NEXT card / scope sees an `RPC_E_DISCONNECTED` because its workbook reference points at a process that no longer exists. Cross-cut to [`./execute-macro-failures.md`](./execute-macro-failures.md) branch 3 for the macro-side diagnostic.
|
|
68
|
+
- **Multi-Robot host?** Multiple Robot jobs concurrently invoking Excel COM on the same host hit the STA apartment from different threads. Failures are intermittent (race-dependent).
|
|
69
|
+
|
|
70
|
+
6. **Confirm branch 5 (sensitivity label rejection).** Check:
|
|
71
|
+
- **Package version**: read `UiPath.Excel.Activities` from `project.json`. If < 2.23.4, the SensitivityLabel / SensitivityOperation properties don't exist in the card. The fix requires a package upgrade. If ≥ 2.23.4, continue.
|
|
72
|
+
- **Workbook protection state**: open the target workbook in Excel on a developer host. Look for the sensitivity badge in the title bar (e.g., "Sensitivity: Confidential — UiPath Internal"). If absent, the failure isn't branch 5; recheck against the other branches.
|
|
73
|
+
- **The card's `SensitivityLabel` / `SensitivityOperation` properties**: are they configured on the failing card? If left empty AND the workbook has a label that requires programmatic acknowledgement, the write fails. The fix is to set the properties to match the workbook's label.
|
|
74
|
+
|
|
75
|
+
The root cause is **which of the five surfaces** the failure maps to. A confirmed finding names the surface (Modern card / Classic scope), the resolved `WorkbookPath` value (for branch 2), the host's Excel install state (for branch 1), the scope-nesting topology (for branch 3), or the workbook's sensitivity label state (for branch 5).
|
|
76
|
+
|
|
77
|
+
## Resolution
|
|
78
|
+
|
|
79
|
+
Map the branch identified in Investigation to the fix:
|
|
80
|
+
|
|
81
|
+
- **Branch 1 — Excel not installed / Interop unavailable:**
|
|
82
|
+
- **Repair Tool path**: from UiPath Studio → Tools → "Repair Tool for Microsoft Office". This is the lightweight first attempt; it re-registers the Excel COM components without a full Office reinstall. Quick to try.
|
|
83
|
+
- **Office Online Repair**: Windows Control Panel → Programs and Features → Microsoft Office → Change → Online Repair. Heavier, addresses registry corruption from interrupted installs / upgrades. Requires admin rights on the Robot host.
|
|
84
|
+
- **No Excel on the host at all** (headless / unattended deployment): migrate the workflow to Workbook activities (`Read Range Workbook`, `Write Range Workbook`, `Append Range Workbook`, etc.) which don't require Excel installed. Or replace the Modern `Use Excel File` card with one that doesn't force COM (remove COM-forcing properties like `Read Formatting`, switch `.xls` files to `.xlsx`).
|
|
85
|
+
- For Modern `Use Excel File` cards that fell back to COM unintentionally: audit the card's properties and remove the COM-forcing flag if the workflow doesn't actually need Excel features. The card will then use OpenXML and not require Excel.
|
|
86
|
+
|
|
87
|
+
- **Branch 2 — Empty / invalid / illegal WorkbookPath:**
|
|
88
|
+
- **Empty / null variable**: trace the variable's source upstream. If the producer can legitimately return empty (e.g., a config-file read where the key is missing), guard the card with `If` checking `Not String.IsNullOrWhiteSpace(workbookPath)`. Skip the card or log/throw a clear error in the false branch.
|
|
89
|
+
- **Variable scope drift**: move the variable declaration to the parent scope of the card so the card sees the assignment. Or initialize the variable at declaration to a known-default value.
|
|
90
|
+
- **Illegal characters**: sanitize the path before passing to the card. Strip control chars with `Regex.Replace(path, "[\x00-\x1F]", "")`. Trim whitespace with `path.Trim()`. Normalize separators with `path.Replace("/", "\\")`. Validate against `Path.GetInvalidPathChars()` and abort with a clear error if any remain.
|
|
91
|
+
- **For paths built from string interpolation**: log the resolved value before the card to confirm the expression evaluates as expected. A `Log Message` of the full resolved path is the cheapest debugging insurance.
|
|
92
|
+
- **For UNC paths**: confirm the Robot user has access to the share. Test with `Test-Path` PowerShell on the Robot host; if it fails, the share isn't reachable from the Robot's session and the path string is irrelevant (the file open will fail regardless).
|
|
93
|
+
|
|
94
|
+
- **Branch 3 — COM / RPC failures across scopes:**
|
|
95
|
+
- **Wrap multiple sequential Excel scopes in an `Excel Process Scope`** (Modern, outermost). The Process Scope is the recommended pattern for any workflow with more than one `Use Excel File` against the same or different paths in sequence. It governs the EXCEL.EXE lifecycle across the inner scopes, so the second card doesn't try to attach to a dead process.
|
|
96
|
+
- **Avoid `Parallel` activities containing Excel scopes against the same file** — STA apartment is single-threaded; the parallel design is incompatible. Restructure to sequential.
|
|
97
|
+
- **For macro-tears-down-Excel**: see `execute-macro-failures.md` branch 3. Remove `Application.Quit` / `Workbooks.Close` from the VBA so UiPath owns the lifecycle.
|
|
98
|
+
- **For multi-Robot host concurrency**: serialize Excel access at the orchestration layer (single-performer queue, per-host lock asset) so only one job per host has Excel COM open at a time.
|
|
99
|
+
- **Stop-gap, NOT a fix**: add a `Retry Scope` around the failing card with exponential back-off (3 attempts, 5s/15s/30s). RPC errors are sometimes transient; a retry can mask intermittent races. Treat this as a diagnostic patch — the underlying race condition is still there.
|
|
100
|
+
|
|
101
|
+
- **Branch 4 — Modern Excel child activity outside any card / scope:**
|
|
102
|
+
- This is the per-activity failure surface — see the individual activity playbooks for the per-activity diagnostic and fix chain (e.g., [`./append-range-failures.md`](./append-range-failures.md) branch 1, [`./delete-range-failures.md`](./delete-range-failures.md) branch 1, etc.). The card's playbook briefly mentions this branch because the user's first hypothesis is often "the card is failing" when in fact the child activity is failing because the card was removed or never present.
|
|
103
|
+
- General fix: wrap the failing child activity in the appropriate scope (Modern `Use Excel File` for Modern activities; Classic `Excel Application Scope` for Classic activities).
|
|
104
|
+
|
|
105
|
+
- **Branch 5 — Sensitivity label rejection:**
|
|
106
|
+
- **Upgrade `UiPath.Excel.Activities` to v2.23.4 or newer** if currently on an older version. The SensitivityLabel and SensitivityOperation properties are required to write to AIP-protected workbooks.
|
|
107
|
+
- **Configure the card's `SensitivityLabel` property** to match the target workbook's label name (e.g., `"Confidential - UiPath Internal"`). The exact label string must match the Microsoft Purview / AIP policy's label name verbatim.
|
|
108
|
+
- **Set `SensitivityOperation`** to the appropriate operation (`Keep` to preserve the label, `Apply` to set/change it, `Remove` to clear it — naming may vary by package version).
|
|
109
|
+
- **Verify the Robot user has the AIP rights** to operate on the label. Microsoft Purview enforces label-level user / group permissions; if the Robot user isn't in the label's allowed list, the operation will fail with a different error (auth-related) at the AIP layer.
|
|
110
|
+
- **For workbooks where label management isn't part of the workflow's intent**: use `Keep` to pass through the label unchanged. The workflow reads / writes data; the label stays.
|
|
111
|
+
|
|
112
|
+
## Anti-patterns (what NOT to do)
|
|
113
|
+
|
|
114
|
+
Common advice for Use Excel File / Excel Application Card failures contains workarounds that hide bugs rather than fix them. The agent should NOT recommend any of these as a primary resolution.
|
|
115
|
+
|
|
116
|
+
- **"Add a `Delay` before the Use Excel File card."** A Delay is a workaround for a race condition the workflow author hasn't diagnosed. For branch 3 (COM/RPC across scopes), the Delay sometimes works because the prior EXCEL.EXE finally terminates within the delay window — but the underlying race is still there. A reliable fix is wrapping the scopes in an `Excel Process Scope` to govern the EXCEL.EXE lifecycle. If a Delay seems to "fix" the issue, treat it as a diagnostic hint that there's a real race condition to address.
|
|
117
|
+
|
|
118
|
+
- **"Wrap the Use Excel File card in a bare `Try Catch` and continue on error."** A bare Try-Catch that catches `Exception` / `BusinessException` / `COMException` and only logs without re-throwing turns scope failures into silent skips — the child activities inside the catch don't run, and the workflow proceeds with stale or missing data. For branch 1 (Excel not installed), the catch hides the configuration issue; for branch 3 (COM/RPC), it hides the race; for branch 5 (sensitivity label), it hides the access denial. Use Try-Catch only with a real recovery path (retry with cleaned config, notify ops, fall back to Workbook activities, etc.).
|
|
119
|
+
|
|
120
|
+
- **"Set `Visible: True` on the card to 'see what's happening'."** For unattended Robots, `Visible: True` makes the Excel UI appear on the desktop session — but in many unattended sessions the desktop isn't rendered, so the property has no effect. Worse, for headless / no-Excel deployments, `Visible: True` is a COM-forcing property that turns a Modern OpenXML workflow into a Modern COM workflow — making branch 1 (Excel not installed) failures appear where they didn't before. Don't set `Visible: True` unless you specifically need to interact with the Excel UI from the workflow.
|
|
121
|
+
|
|
122
|
+
- **"Downgrade `UiPath.Excel.Activities` to silence the sensitivity-label error."** Branch 5's error was added because pre-v2.23.4 packages had no way to handle AIP-protected workbooks correctly — the workflow would either silently produce wrong data OR throw a confusing AIP-side error elsewhere. The explicit SensitivityLabel properties are the FIX, not the symptom. Downgrading the package reintroduces the original problem.
|
|
123
|
+
|
|
124
|
+
## Prevention (cross-branch)
|
|
125
|
+
|
|
126
|
+
- For workflows with multiple `Use Excel File` cards in sequence (or in a loop), default to wrapping them in an `Excel Process Scope`. The Process Scope is cheap (no per-iteration cost when there's only one card) and prevents the branch 3 race conditions when the workflow grows.
|
|
127
|
+
- For Robot hosts without Excel installed, audit all `Use Excel File` cards for COM-forcing properties (`Read Formatting`, `Edit Password`, `Visible`, certain Auto Save combinations). Remove the COM-forcing flags if the workflow doesn't need Excel features, OR migrate the workflow to Workbook activities entirely.
|
|
128
|
+
- For workflows whose `WorkbookPath` is dynamic (from config, scraping, queue payload, etc.), validate the resolved path with a guard activity (`If Not String.IsNullOrWhiteSpace(path) AndAlso File.Exists(path) Then ...`) before the card. The validation is cheap; the alternative is debugging an opaque path error later.
|
|
129
|
+
- For workbooks under enterprise sensitivity-label policies, pin `UiPath.Excel.Activities` to v2.23.4 or newer in `project.json`. Document the sensitivity-label requirement in the workflow comments so future contributors don't accidentally downgrade.
|
|
130
|
+
- Avoid `Parallel` activities containing Excel scopes. STA apartment is a hard constraint; design around it with sequential or queue-serialized access.
|
|
131
|
+
- When refactoring a workflow that removes a `Use Excel File` card, audit every nested Excel activity to ensure the scope removal didn't orphan any of them (branch 4 cross-cut).
|
|
132
|
+
|
|
133
|
+
## Related
|
|
134
|
+
|
|
135
|
+
- Other Excel Activities failure fingerprints (per-child-activity playbooks) are separate; see [`../summary.md`](../summary.md) for navigation. Branch 4 (child activity outside any card) pivots to the corresponding per-activity playbook (`append-range-failures.md`, `delete-range-failures.md`, `execute-macro-failures.md`, etc.).
|
|
136
|
+
- [`./execute-macro-failures.md`](./execute-macro-failures.md) — branch 3's cross-cut on macros tearing down Excel via `Application.Quit` / `Workbooks.Close`. The card-side and macro-side symptoms are linked; fixing one without the other leaves the workflow brittle.
|
|
137
|
+
- [`./delete-range-failures.md`](./delete-range-failures.md) — sibling range-mutation playbook; branch 4 of this playbook cross-cuts that playbook's branch 1.
|
|
138
|
+
- [`../overview.md`](../overview.md) — package overview, including the scope-container model and the OpenXML-vs-COM provider distinction load-bearing for branches 1 and 3.
|
|
139
|
+
- For headless workflows that can't (or shouldn't) require Excel installed: consider migrating Excel automation to the cloud surface via `o365-activities/` (Microsoft Graph API). That surface has no Excel COM dependency and avoids branches 1, 3, and 5's COM-side failures entirely. Sensitivity labels are still respected via the Graph API but through a different property model.
|