> ## Documentation Index
> Fetch the complete documentation index at: https://docs.e6data.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Compose workflows from subworkflows and maps

> Reuse saved workflows inside others, and fan out work over a runtime list.

export const DocMeta = ({type, applies, owner}) => {
  const LABELS = {
    tutorial: "Tutorial",
    "how-to": "How-to guide",
    explanation: "Explanation",
    reference: "Reference"
  };
  return <div className="e6-meta">
      <span className={type === "how-to" || type === "tutorial" ? "e6-eyebrow" : "e6-eyebrow e6-eyebrow--quiet"}>{LABELS[type] || type}</span>
      {applies ? <span>Applies to: {applies}</span> : null}
      {owner ? <span>Owner: {owner}</span> : null}
    </div>;
};

<DocMeta type="how-to" applies="All deployments" />

## Reuse a workflow with a subworkflow step

Add a `subworkflow` step with the saved child workflow's ID when the parent should reuse another workflow. The compiler loads the child and validates it recursively.

For example, a weekly executive review can reuse regional-yield and supplier-risk workflows, then combine their results.

A subworkflow is different from a [subagent](/agentflow/concepts/building-blocks#subagent): a subworkflow calls a saved, versioned workflow by ID.

## Fan out with a map step

Use a `map` step when a run must process a list that's only known at run time. Configure a child step and bounded concurrency.

When the map finishes, its fan-in result records the total, the number that succeeded and failed, and which items failed, so you can retry only those.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.