An Azure service for ingesting, preparing, and transforming data at scale.
Based on the documented behaviour of @microsoft/azure-data-factory-utilities, the source of truth for validation and ARM template generation is the content in the rootFolder, which contains the ADF artefacts exported from Git. The utility runs the same validation and ARM-template-generation logic used by ADF Studio against those files.
The factoryId parameter primarily provides the data factory resource identity in the format: /subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>/providers/Microsoft.DataFactory/factories/<factoryName>
From the public documentation, there is no indication that the utility uses factoryId to retrieve:
- Existing data factory configuration from azure
-
arm-template-parameters-definition.json - Environment-specific settings
- ARM parameterisation rules from a live factory
- Other factory metadata that influences template generation
Those artefacts are expected to come from the repository content being validated/exported, not from the target data factory resource.
Therefore, using a different but syntactically valid factoryId should not cause the utility to load or merge configuration from that ADF into the generated ARM template. However, I would still recommend using the correct factory ID because it represents the intended Data Factory context and may be reflected in generated resource identifiers and references.
For CI/CD pipelines, a common approach is to construct the factoryId deterministically from pipeline variables rather than dynamically querying Azure: /subscriptions/$(subscriptionId)/resourceGroups/$(resourceGroup)/providers/Microsoft.DataFactory/factories/$(factoryName)
In short: rootFolder provides the ADF artefacts being validated and exported, while factoryId provides the identity/context. It is not documented as a mechanism for reading configuration from an existing Azure Data Factory.
Help make this community better for everyone: if this answer resolved your issue, please accept it or leave an upvote. If not, share more details in a comment so we can continue the discussion and find the right solution.