Dataflows - Save Dataflow Gen One As Dataflow Gen Two
Save Dataflow Gen1 As Dataflow Gen2 (CI/CD) (Preview)
Converts a Gen1 dataflow to a Fabric native artifact (Gen2 CI/CD).
Key Features:
- Creates a new Gen2 (CI/CD) artifact while preserving the original Gen1 dataflow
- Optionally migrates refresh schedules
- Updates connection formats to Fabric-compatible formats
- Preserves sensitivity labels and security settings
- Provides detailed error reporting for non-fatal issues
- Supports specifying a target workspace for the new artifact
Prerequisites:
- Source dataflow must be Generation 1
- User must have appropriate permissions on the workspace
Migration Process:
- Validates source dataflow and permissions
- Converts dataflow definition to Fabric format
- Updates connection strings for Fabric compatibility
- Creates new Gen2 artifact in the specified workspace
- Optionally migrates refresh schedule
Error Handling:
The API returns success even if some non-critical operations fail (e.g., schedule migration).
Such failures are reported in the errors array of the response.
Preview
This is a preview API call.
POST https://api.powerbi.com/v1.0/myorg/groups/{groupId}/dataflows/{gen1DataflowId}/saveAsNativeArtifact
URI Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
|
gen1Dataflow
|
path | True |
string (uuid) |
The object ID of the Gen1 dataflow to save as a native artifact |
|
group
|
path | True |
string (uuid) |
The workspace (group) ID of the gen1 dataflow |
Request Body
| Name | Type | Description |
|---|---|---|
| description |
string maxLength: 4000 |
Optional description for the new artifact. If not provided or empty, the description from the source dataflow will be copied. Maximum length: 4000 characters |
| displayName |
string maxLength: 200 |
Optional display name for the new artifact. If not provided or empty, the system will generate a name based on the source dataflow name with a suffix like "_copy1", "_copy2", etc. to avoid naming conflicts. Maximum length: 200 characters |
| includeSchedule |
boolean |
Whether to include the refresh schedule from the source dataflow in the migration. If true, attempts to copy the existing schedule to the new artifact in disabled state. If false, the new artifact will be created without a schedule. |
| targetWorkspaceId |
string (uuid) |
Optional target workspace ID where the new artifact will be created. If not provided or empty, the new artifact will be created in the same workspace as the source dataflow. |
Responses
| Name | Type | Description |
|---|---|---|
| 200 OK |
OK |
Examples
Example
Sample request
POST https://api.powerbi.com/v1.0/myorg/groups/51e47fc5-48fd-4826-89f0-021bd3a80abd/dataflows/928228ba-008d-4fd9-864a-92d2752ee5ce/saveAsNativeArtifact
{
"displayName": "newDataflowName",
"description": "New dataflow description",
"includeSchedule": "true",
"targetWorkspaceId": "d4c3b4a1-2f5e-4c3a-9f7e-123456789abc"
}
Sample response
Definitions
| Name | Description |
|---|---|
|
Artifact |
Metadata information for a Fabric artifact |
|
Artifact |
User information in artifact metadata |
|
Artifact |
Current provisioning state of the artifact |
|
Save |
Non-fatal warning codes that may occur during migration. These indicate partial failures that don't prevent the overall operation from succeeding. |
|
Save |
Request body for migrating a Gen1 dataflow to Gen2(CI/CD) native artifact |
|
Save |
Response from the dataflow migration operation |
ArtifactMetadata
Metadata information for a Fabric artifact
| Name | Type | Description |
|---|---|---|
| artifactType |
string |
Type of the artifact |
| capacityObjectId |
string (uuid) |
ID of the capacity hosting this artifact |
| createdByUser |
User information in artifact metadata |
|
| createdDate |
string (date-time) |
When the artifact was created |
| description |
string |
Description of the artifact |
| displayName |
string |
Display name of the artifact |
| folderObjectId |
string (uuid) |
ID of the workspace/folder containing this artifact |
| lastUpdatedDate |
string (date-time) |
When the artifact was last updated |
| modifiedByUser |
User information in artifact metadata |
|
| objectId |
string (uuid) |
Unique identifier for the artifact |
| ownerUser |
User information in artifact metadata |
|
| provisionState |
Current provisioning state of the artifact |
|
| workloadPayload |
string |
Workload-specific payload data |
ArtifactMetadataUser
User information in artifact metadata
| Name | Type | Description |
|---|---|---|
| displayName |
string |
User's display name |
| emailAddress |
string (email) |
User's email address |
| objectId |
string (uuid) |
User's object ID |
ArtifactProvisionState
Current provisioning state of the artifact
| Value | Description |
|---|---|
| InProgress |
The artifact is being provisioned |
| Active |
The artifact is active |
| Migrating |
The artifact is being migrated |
| Recovering |
The artifact is recovering |
| SoftDeletedByUser |
The artifact is soft deleted by the user |
| SoftDeleted |
The artifact is soft deleted |
| Failed |
The artifact provisioning failed |
| Deleting |
The artifact is being deleted |
| DisabledByDeprovisioning |
The artifact is disabled by deprovisioning |
| DeprovisioningFailed |
The artifact deprovisioning failed |
| DeletedByDeprovision |
The artifact is deleted by deprovisioning |
| DeletedByWorkload |
The artifact is deleted by the workload |
SaveAsNativeDataflowErrorCode
Non-fatal warning codes that may occur during migration. These indicate partial failures that don't prevent the overall operation from succeeding.
| Value | Description |
|---|---|
| FailedToCopySchedule |
The refresh schedule could not be copied to the new artifact |
| SetDataflowOriginFailed |
Failed to set the origin tracking information on the new artifact |
| ConnectionsUpdateFailed |
Connection strings could not be updated to Fabric format |
SaveAsNativeDataflowRequest
Request body for migrating a Gen1 dataflow to Gen2(CI/CD) native artifact
| Name | Type | Description |
|---|---|---|
| description |
string maxLength: 4000 |
Optional description for the new artifact. If not provided or empty, the description from the source dataflow will be copied. Maximum length: 4000 characters |
| displayName |
string maxLength: 200 |
Optional display name for the new artifact. If not provided or empty, the system will generate a name based on the source dataflow name with a suffix like "_copy1", "_copy2", etc. to avoid naming conflicts. Maximum length: 200 characters |
| includeSchedule |
boolean |
Whether to include the refresh schedule from the source dataflow in the migration. If true, attempts to copy the existing schedule to the new artifact in disabled state. If false, the new artifact will be created without a schedule. |
| targetWorkspaceId |
string (uuid) |
Optional target workspace ID where the new artifact will be created. If not provided or empty, the new artifact will be created in the same workspace as the source dataflow. |
SaveAsNativeDataflowResponse
Response from the dataflow migration operation
| Name | Type | Description |
|---|---|---|
| artifactMetadata |
Complete metadata of the newly created Gen2(CI/CD) artifact |
|
| errors |
List of non-fatal errors that occurred during the migration process. The migration is considered successful even if these errors occur, but some features may not have been migrated properly. |