Skip to main content

Core Concepts

Dependency Tracking

One of the most powerful capabilities of the FlowOn AI MCP Server is its ability to map the complete dependency graph of any artifact. This lets the AI agent understand the full impact of a proposed change before making it—preventing unintended consequences across projects and artifact types.

Dependency tools are available for Logic Blocks, Logic Flows, and Logic Recipes.

┌─────────────────────────────────────────────────────────────────────┐
│ DEPENDENCY GRAPH EXAMPLE │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ Logic Block: "CalculateCreditLimit" │
│ ───────────────────────────────── │
│ │
│ USED BY: │
│ • Logic Flow: "OrderApprovalFlow" (Project: Sales) │
│ • Logic Flow: "QuoteValidationFlow" (Project: Sales) │
│ • Logic Recipe: "OpportunityPreCreate" (Project: Sales) │
│ • BPM Version: "OrderProcess v2.1" (Project: Operations) │
│ │
│ USES: │
│ • Logic Block: "GetCustomerTier" (Project: Sales) │
│ • Configuration: "CreditLimitDefaults" (Project: Sales) │
│ • Localized Resource: "CreditErrorMsg" (Project: Sales) │
│ │
│ IMPACT of modifying "CalculateCreditLimit": │
│ 4 artifacts across 2 projects will be affected │
│ │
└─────────────────────────────────────────────────────────────────────┘

Dependency Tools

ToolWhat it maps
list_logic_block_dependenciesAll artifacts that depend on a Logic Block, and all artifacts it depends on
list_logic_flow_dependenciesAll artifacts that depend on a Logic Flow, and all artifacts it depends on
list_logic_recipe_dependenciesAll artifacts a Logic Recipe depends on

Dependency Types

The following dependency types are tracked across artifacts:

Dependency TypeDescription
Logic BlockA Logic Block referenced by another block, flow, recipe, or BPM version
Logic FlowA Logic Flow referenced by a recipe or BPM version
Logic RecipeA Recipe that invokes a given block or flow
Business Process VersionA BPM version that references a given block or flow in a stage or transition
ConfigurationA Configuration record read at runtime by a block or flow
Localized ResourceA localised string used by a block or flow
Service ConnectionAn external service connection called by a Logic Flow

Managed Solution Protection

The FlowOn AI MCP Server enforces a fundamental rule of Dynamics 365 solution management: artifacts in managed solutions cannot be modified.

This protection exists because managed solutions represent installed, version-controlled packages—typically delivered from a vendor or another environment. Modifying their contents directly would break the upgrade path and create environment drift.

Any attempt to create or update a Logic Block or Logic Flow in a project that is associated with a managed Dynamics 365 solution will be rejected with a clear error message before any change is made.

┌─────────────────────────────────────────────────────────────────────┐
│ MANAGED SOLUTION PROTECTION │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ ✓ ALLOWED (any solution) ✗ BLOCKED (managed solutions) │
│ ────────────────────── ────────────────────────────── │
│ │
│ Read any artifact create_formula_logic_block │
│ List any artifact create_decision_table_ │
│ View dependencies logic_block │
│ Inspect BPM versions create_decision_tree_ │
│ Query Dataverse metadata logic_block │
│ create_validation_logic_block │
│ create_validation_set_ │
│ logic_block │
│ update_logic_block_metadata │
│ create_logic_flow │
│ update_logic_flow_metadata │
│ create_project │
│ │
└─────────────────────────────────────────────────────────────────────┘

Resolving a Managed Solution Error

If you receive a managed solution protection error, follow these steps:

1. Call get_project_details(projectName)
→ Check the isManaged flag on the associated solution

2. If isManaged = true:
→ The project is read-only in this environment
→ Changes must be made in the environment where the
solution is unmanaged (typically Development)
→ Use FlowOn CI/CD Tools to deploy changes across environments

3. If isManaged = false:
→ Something else caused the error
→ Review the full error message and retry

Pagination

List tools that may return large result sets support server-side pagination. Results are returned in pages of 25 records to ensure consistent, predictable performance regardless of environment size.

How Pagination Works

FIRST PAGE
──────────
Call: list_all_logic_blocks()
Returns: records 1–25, PagingCookie, NextPageNumber = 2, MoreRecords = true

NEXT PAGE
─────────
Call: list_all_logic_blocks(pageNumber: 2, pagingCookie: "...")
Returns: records 26–50, PagingCookie, NextPageNumber = 3, MoreRecords = true

LAST PAGE
─────────
Call: list_all_logic_blocks(pageNumber: N, pagingCookie: "...")
Returns: final records, MoreRecords = false

Pagination Response Fields

FieldTypeDescription
TotalRecordCountintThe total number of records across all pages
MoreRecordsbooltrue if additional pages exist beyond the current page
NextPageNumberint?The page number to pass in the next call. null on the last page.
PagingCookiestringAn opaque token that must be passed alongside NextPageNumber in subsequent calls

Important: Always pass both pageNumber and pagingCookie together when retrieving subsequent pages. The paging cookie is required for Dataverse to return the correct next page.

Tools That Support Pagination

ToolEntity
list_all_logic_blocksLogic Blocks
list_all_logic_flowsLogic Flows
list_all_logic_recipesLogic Recipes
list_business_processesBusiness Processes

Agent Pagination Behaviour

When an AI agent is searching for a specific artifact by name, it should continue paginating through results until either the artifact is found or MoreRecords is false. The agent must not stop at the first page and assume an artifact does not exist.