Study guide

6.5 Data Referencing in Invokes: DataTable, List & Dictionary Arguments

UiPath Automation Developer Professional UiPath-ADPv1

Track your progress as you read

Finished sections get a check mark.

1 Chapter 1: Exam Overview & Blueprint Map

1.1 About the UiPath-ADPv1 Exam: Format, Fees & Policies 1.2 The Exam Topics Mapped to This Guide & a Study Plan

2 Chapter 2: REFramework Architecture & State Dynamics

2.1 State Machine Architecture & The Four Core States 2.2 Configuration Management: Settings, Constants, and Assets 2.3 Transaction Types & The Dispatcher vs. Performer Architecture 2.4 Adapting REFramework: Tabular Data, Collections & Linear Processes

3 Chapter 3: REFramework Exception Handling & Recovery

3.1 BusinessRuleException vs. System.Exception Handling Patterns 3.2 Retry Mechanisms: Queue Retries vs. REFramework MaxRetryNumber 3.3 Consecutive System Exceptions & Graceful Process Termination

4 Chapter 4: State Machines, Custom Log Fields & REFramework Testing

4.1 Building State Machine Projects in Studio 4.2 Logging Levels, Robot Logs & Custom Log Fields in REFramework 4.3 Testing a REFramework Project With and Without Orchestrator Queues

5 Chapter 5: LINQ Queries & DataTable Operations

5.1 LINQ Essentials for Collections & Filtering 5.2 Advanced DataTable Querying with LINQ 5.3 In-Memory DataTable Transformations & Column Operations

6 Chapter 6: Regex, DateTime, JSON & Invoke Activities

6.1 Regular Expressions & Text Parsing for Automation 6.2 DateTime Formatting, Timezone Conversions & TimeSpan Calculations 6.3 JSON Parsing, JSONPath & Serialization with Newtonsoft.Json 6.4 Invoke Method & Invoke Code Activities 6.5 Data Referencing in Invokes: DataTable, List & Dictionary Arguments

7 Chapter 7: Modern UI Automation & Unified Targeting

7.1 Modern Design Experience & The Unified Target Concept 7.2 Anchors, Relative Elements & UI Automation Activities 7.3 Dynamic Selectors, Variables & Wildcards in Selectors

8 Chapter 8: Object Repository, Computer Vision & Remote Runtime

8.1 Object Repository & UI Descriptor Libraries 8.2 AI Computer Vision for Unattended & Remote Interfaces 8.3 Automation in Virtual Environments & UiPath Remote Runtime

9 Chapter 9: Advanced UI Automation: Browser Modes, Agentic UI & macOS

9.1 Browser Automation with the WebDriver Protocol 9.2 Agentic UI Automation: ScreenPlay, Semantic Activities & Healing Agent 9.3 macOS Automation: Native Apps, Office Apps & AppleScript

10 Chapter 10: Advanced Control Flow & Exception Architecture

10.1 Flowcharts, Sequences & Parallel Control Flow Patterns 10.2 Global Exception Handler Architecture & ErrorAction Directives 10.3 TryCatch, Retry Scope & Custom Exception Architectures

11 Chapter 11: Orchestrator Queues & Transaction Management

11.1 Queue Architecture, SpecificContent & Transaction Lifecycles 11.2 Queue Items SLA, Postpone, Deadlines & Priority Scheduling 11.3 Bulk Operations, Transaction Status Updates & Queue Triggers

12 Chapter 12: Orchestrator Tenant & Folder Entities

12.1 Asset Types, Per-Robot Assets & External Credential Stores 12.2 Modern Folder Hierarchy, User/Robot Assignment & Permissions 12.3 Storage Buckets, Webhooks & Environment Promotion 12.4 Orchestrator Tags: Labels, Properties & Governance

13 Chapter 13: Unattended Execution, API Triggers & Cloud Robots

13.1 Unattended Job Execution: Folders, Priorities, Background vs. Foreground & Runtimes 13.2 API Triggers: Starting Jobs from External Systems over HTTP 13.3 Serverless and Cloud VM Robots: Cloud-Hosted Execution Options

14 Chapter 14: Monitoring, Recording & Solutions Management

14.1 Orchestrator Monitoring, Trigger Alerts & Job Health 14.2 Job and Transaction Recording: Troubleshooting Faulted Unattended Jobs 14.3 Solutions Management: Packaging and Deploying Automations with Their Resources

15 Chapter 15: Debugging, Remote Debugging & Profiling

15.1 Studio Debugging Tools: Breakpoints, Panels & Execution Control 15.2 Remote Debugging: Remote Machine and Unattended Robot Connections 15.3 Profile Execution: Finding Performance Bottlenecks in Studio

16 Chapter 16: RPA Testing & Test Suite

16.1 UiPath Test Suite Overview, Test Cases & Given-When-Then Structure 16.2 Data-Driven Testing, Test Verification Activities & Mock Activities 16.3 CI/CD Pipelines with uipcli & Test Manager Traceability

17 Chapter 17: Long-Running Workflows, Action Center & Apps

17.1 Long-Running Workflows: Persistence, Suspend and Resume 17.2 Action Center & Human-in-the-Loop Orchestration 17.3 UiPath Apps: Action Apps, Automations & Integration Service

18 Chapter 18: Trigger-Based Attended Automation & Callouts

18.1 Trigger-Based Attended Automation: Forms, Triggers & Global Variables 18.2 Running Local Triggers & the Event Inspection Tool 18.3 Callouts & Forms for Attended Guidance

19 Chapter 19: UiPath Assistant & Robot Sessions

19.1 UiPath Assistant: Automations, Reminders, Widgets & Configuration 19.2 Robot Session (Picture in Picture): Child Session vs. Virtual Desktop

20 Chapter 20: Autopilot for Developers & Autopilot for Everyone

20.1 Autopilot for Developers: AI Assistance in Studio and Studio Web 20.2 Autopilot for Everyone: Chat, Automations & Clipboard AI

21 Chapter 21: API Automation & Integration Service

21.1 Integration Service: Connectors, Connections & Connector Activities 21.2 API Workflows in Studio Web 21.3 HTTP Requests: Web APIs, the Orchestrator API & Connector Requests 21.4 Connector Builder: Custom Integration Service Connectors 21.5 Integration Service Event Triggers: Connected and Disconnected 21.6 GenAI Activities: Generative AI Inside Workflows

22 Chapter 22: Data Service, Context Grounding & Coded Workflows

22.1 Data Fabric (Data Service) Entities: Modeling Business Data 22.2 Data Fabric Activities and the Platform Connector 22.3 Context Grounding: Retrieval-Augmented Generation with Company Data 22.4 Coded Automations: Structure, Arguments & Invoking Workflows 22.5 Coded Automation Services: Orchestrator, UI Automation, Microsoft 365 & Custom Services

23 Chapter 23: Integrated Scenario Practice

23.1 Integrated Scenario Practice: Designing an End-to-End Solution

6.5 Data Referencing in Invokes: DataTable, List & Dictionary Arguments

Key Takeaways Explain This Topic AI

DataTable, List, Dictionary, and arrays are mutable reference types, so an In argument still lets the invoked code change their contents.

Assigning a new object to an In argument does not change the caller's variable; use Out or In/Out to return a new object.

Strings are immutable, so a changed string reaches the caller only through Out or In/Out.

Copy(), New List(Of T)(source) , and a new Dictionary built from the source protect the caller's data; the dictionary copy is shallow.

An isolated Invoke Workflow File runs in a separate process and serializes arguments, so in-place changes are not visible to the caller.

Last updated: September 2026

6.5 Data Referencing in Invokes: DataTable, List & Dictionary Arguments

Core Concept: The exam description lists "Data referencing in invokes: Dt, List, Dictionary" as its own task. It tests one idea that surprises many developers: DataTable, List, and Dictionary are reference types . Passing one to Invoke Workflow File, Invoke Code, or Invoke Method passes a reference to the same object . So an argument marked In can still have its contents changed by the invoked code. What an In argument does prevent is replacing the caller's variable with a new object.

Value Types Versus Reference Types

Type Kind Passed as In Effect of changes inside the invoked code

Int32 , Double , Boolean , DateTime Value type A copy of the value Invisible to the caller unless the argument is Out or In/Out

String Reference type, but immutable A reference to text that cannot change Any "change" creates a new string, so the caller sees it only through Out or In/Out

DataTable , List(Of T) , Dictionary(Of K, V) , arrays Mutable reference types A reference to the caller's object Adding rows, items, or keys and editing values are visible to the caller

Three Scenarios to Know Cold

1. Mutating the object through an In argument ' Caller: dt_Invoices has 10 rows; invoke Enrich.xaml with in_dtInvoices (direction In)

' Inside Enrich.xaml:

  • in_dtInvoices.Rows.Add("INV-11", 250.0)
  • in_dtInvoices.Rows(0)("Status") = "Checked"
  • ' Back in the caller: dt_Invoices now has 11 rows and row 0 shows Status = "Checked"

The same applies to List.Add , List.Remove , Dictionary(key) = value , and Dictionary.Remove . REFramework's in_Config dictionary is passed In to many workflows, so any workflow that writes to it changes the configuration for the rest of the job. That is why the template treats Config as read-only after Initialization.

2. Replacing the object through an In argument ' Inside the invoked workflow (in_dtInvoices is In):

  • in_dtInvoices = dt_Filtered ' points the local argument at a different table
  • ' Back in the caller: dt_Invoices is unchanged

Assigning a new object only redirects the argument inside the invoked workflow. To hand a new table back, use an Out argument, such as out_dtFiltered , or In/Out ( io_dtInvoices ).

3. Protecting the caller's data

When the invoked workflow must experiment on a table without touching the original, pass or create a copy: Dim dt_Work As DataTable = in_dtInvoices.Copy() ' schema + rows, independent object

  • Dim lst_Work As New List(Of String)(in_lstIds) ' new list with the same items
  • Dim dict_Work As New Dictionary(Of String, Object)(in_Config) ' shallow copy of the dictionary

A dictionary copy made this way is shallow : if a value is itself a reference type, such as a DataTable stored in the dictionary, both dictionaries still point to that same table.

Invoke Code and Invoke Method Follow the Same Rules

Invoke Code: an argument with direction In of type DataTable can be modified in place with Rows.Add or by editing cells, and the caller sees the change. Declare an Out or In/Out argument only when the code creates a new object that must be returned.

Invoke Method: calling an instance method on a TargetObject , such as lst_Items.Sort() or dt_Report.Clear() , changes that object in place. There is no copy.

The Isolated Exception

Invoke Workflow File has an Isolated option that runs the invoked workflow in a separate robot process, for example to contain a crash-prone application. Across process boundaries, arguments are serialized and copied rather than shared:

Invocation How a DataTable In argument reaches the child Are in-place changes visible to the caller?

  • Normal (not isolated) Same object in the same process Yes
  • Isolated A serialized copy in another process No; return results through Out or In/Out arguments

Isolated invocations also require argument types that can be serialized. A live object such as a UI element handle or an open database connection cannot cross into the separate process.

Parallel Branches and Shared References

Because every branch of a Parallel or Parallel For Each activity sees the same objects, two branches that add rows to the same DataTable are writing to one object. A DataTable is safe for concurrent reads only, so give each branch its own table and merge the results afterwards.

Checklist for Reviews

For every DataTable, List, or Dictionary argument, ask whether the invoked workflow is allowed to change it. If not, document it as read-only or pass a copy.

Use Out or In/Out whenever the invoked workflow assigns a new object that the caller needs.

Do not rely on in-place changes when the invocation is Isolated .

Name arguments with their direction prefix ( in_ , out_ , io_ ) so readers can see the contract. UiPath's Workflow Analyzer includes naming rules for this.

Remember that strings never change in place; in_Text.Trim() returns a new string.