Configure Azure Workload Impact

The azure-native:impact:WorkloadImpact resource, part of the Pulumi Azure Native provider, records workload impact events for Azure resources: operation failures, connectivity issues, availability problems, and performance degradation. This guide focuses on three capabilities: ARM operation failure tracking, network connectivity impact reporting, and availability and performance issue documentation.

Impact records reference existing Azure resources and may link to external incident tracking systems like Jira. The examples are intentionally small. Combine them with your own monitoring infrastructure and incident management workflows.

Report Azure Resource Manager operation failures

When Azure control plane operations fail, teams track these failures for troubleshooting and correlation with support cases.

import * as pulumi from "@pulumi/pulumi";
import * as azure_native from "@pulumi/azure-native";

const workloadImpact = new azure_native.impact.WorkloadImpact("workloadImpact", {
    properties: {
        armCorrelationIds: ["00000000-0000-0000-0000-000000000000"],
        clientIncidentDetails: {
            clientIncidentId: "AA123",
            clientIncidentSource: azure_native.impact.IncidentSource.Jira,
        },
        impactCategory: "ArmOperation",
        impactDescription: "deletion of resource failed",
        impactedResourceId: "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resource-rg/providers/Microsoft.Sql/sqlserver/dbservercontext",
        startDateTime: "2022-06-15T05:59:46.6517821Z",
        workload: {
            context: "webapp/scenario1",
            toolset: azure_native.impact.Toolset.Other,
        },
    },
    workloadImpactName: "impact-002",
});
import pulumi
import pulumi_azure_native as azure_native

workload_impact = azure_native.impact.WorkloadImpact("workloadImpact",
    properties={
        "arm_correlation_ids": ["00000000-0000-0000-0000-000000000000"],
        "client_incident_details": {
            "client_incident_id": "AA123",
            "client_incident_source": azure_native.impact.IncidentSource.JIRA,
        },
        "impact_category": "ArmOperation",
        "impact_description": "deletion of resource failed",
        "impacted_resource_id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resource-rg/providers/Microsoft.Sql/sqlserver/dbservercontext",
        "start_date_time": "2022-06-15T05:59:46.6517821Z",
        "workload": {
            "context": "webapp/scenario1",
            "toolset": azure_native.impact.Toolset.OTHER,
        },
    },
    workload_impact_name="impact-002")
package main

import (
	impact "github.com/pulumi/pulumi-azure-native-sdk/impact/v3"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := impact.NewWorkloadImpact(ctx, "workloadImpact", &impact.WorkloadImpactArgs{
			Properties: &impact.WorkloadImpactPropertiesArgs{
				ArmCorrelationIds: pulumi.StringArray{
					pulumi.String("00000000-0000-0000-0000-000000000000"),
				},
				ClientIncidentDetails: &impact.ClientIncidentDetailsArgs{
					ClientIncidentId:     pulumi.String("AA123"),
					ClientIncidentSource: pulumi.String(impact.IncidentSourceJira),
				},
				ImpactCategory:     pulumi.String("ArmOperation"),
				ImpactDescription:  pulumi.String("deletion of resource failed"),
				ImpactedResourceId: pulumi.String("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resource-rg/providers/Microsoft.Sql/sqlserver/dbservercontext"),
				StartDateTime:      pulumi.String("2022-06-15T05:59:46.6517821Z"),
				Workload: &impact.WorkloadArgs{
					Context: pulumi.String("webapp/scenario1"),
					Toolset: pulumi.String(impact.ToolsetOther),
				},
			},
			WorkloadImpactName: pulumi.String("impact-002"),
		})
		if err != nil {
			return err
		}
		return nil
	})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using AzureNative = Pulumi.AzureNative;

return await Deployment.RunAsync(() => 
{
    var workloadImpact = new AzureNative.Impact.WorkloadImpact("workloadImpact", new()
    {
        Properties = new AzureNative.Impact.Inputs.WorkloadImpactPropertiesArgs
        {
            ArmCorrelationIds = new[]
            {
                "00000000-0000-0000-0000-000000000000",
            },
            ClientIncidentDetails = new AzureNative.Impact.Inputs.ClientIncidentDetailsArgs
            {
                ClientIncidentId = "AA123",
                ClientIncidentSource = AzureNative.Impact.IncidentSource.Jira,
            },
            ImpactCategory = "ArmOperation",
            ImpactDescription = "deletion of resource failed",
            ImpactedResourceId = "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resource-rg/providers/Microsoft.Sql/sqlserver/dbservercontext",
            StartDateTime = "2022-06-15T05:59:46.6517821Z",
            Workload = new AzureNative.Impact.Inputs.WorkloadArgs
            {
                Context = "webapp/scenario1",
                Toolset = AzureNative.Impact.Toolset.Other,
            },
        },
        WorkloadImpactName = "impact-002",
    });

});
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.azurenative.impact.WorkloadImpact;
import com.pulumi.azurenative.impact.WorkloadImpactArgs;
import com.pulumi.azurenative.impact.inputs.WorkloadImpactPropertiesArgs;
import com.pulumi.azurenative.impact.inputs.ClientIncidentDetailsArgs;
import com.pulumi.azurenative.impact.inputs.WorkloadArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;

public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }

    public static void stack(Context ctx) {
        var workloadImpact = new WorkloadImpact("workloadImpact", WorkloadImpactArgs.builder()
            .properties(WorkloadImpactPropertiesArgs.builder()
                .armCorrelationIds("00000000-0000-0000-0000-000000000000")
                .clientIncidentDetails(ClientIncidentDetailsArgs.builder()
                    .clientIncidentId("AA123")
                    .clientIncidentSource("Jira")
                    .build())
                .impactCategory("ArmOperation")
                .impactDescription("deletion of resource failed")
                .impactedResourceId("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resource-rg/providers/Microsoft.Sql/sqlserver/dbservercontext")
                .startDateTime("2022-06-15T05:59:46.6517821Z")
                .workload(WorkloadArgs.builder()
                    .context("webapp/scenario1")
                    .toolset("Other")
                    .build())
                .build())
            .workloadImpactName("impact-002")
            .build());

    }
}
resources:
  workloadImpact:
    type: azure-native:impact:WorkloadImpact
    properties:
      properties:
        armCorrelationIds:
          - 00000000-0000-0000-0000-000000000000
        clientIncidentDetails:
          clientIncidentId: AA123
          clientIncidentSource: Jira
        impactCategory: ArmOperation
        impactDescription: deletion of resource failed
        impactedResourceId: /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resource-rg/providers/Microsoft.Sql/sqlserver/dbservercontext
        startDateTime: 2022-06-15T05:59:46.6517821Z
        workload:
          context: webapp/scenario1
          toolset: Other
      workloadImpactName: impact-002

The impactCategory identifies this as an ARM operation failure. The armCorrelationIds array links the impact to specific Azure operation traces, enabling correlation with Azure support cases. The clientIncidentDetails block connects this impact to your external incident tracking system (Jira, ServiceNow, etc.). The workload block provides context about which application or scenario experienced the failure.

Report network connectivity failures between resources

Applications that depend on network communication between Azure resources document connectivity failures for diagnosis and support escalation.

import * as pulumi from "@pulumi/pulumi";
import * as azure_native from "@pulumi/azure-native";

const workloadImpact = new azure_native.impact.WorkloadImpact("workloadImpact", {
    properties: {
        clientIncidentDetails: {
            clientIncidentId: "AA123",
            clientIncidentSource: azure_native.impact.IncidentSource.Jira,
        },
        connectivity: {
            port: 1443,
            protocol: azure_native.impact.Protocol.TCP,
            source: {
                azureResourceId: "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resourceSub/providers/Microsoft.compute/virtualmachines/vm1",
            },
            target: {
                azureResourceId: "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resourceSub/providers/Microsoft.compute/virtualmachines/vm2",
            },
        },
        impactCategory: "Resource.Connectivity",
        impactDescription: "conection failure",
        impactedResourceId: "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resource-rg/providers/Microsoft.Sql/sqlserver/dbservercontext",
        startDateTime: "2022-06-15T05:59:46.6517821Z",
        workload: {
            context: "webapp/scenario1",
            toolset: azure_native.impact.Toolset.Other,
        },
    },
    workloadImpactName: "impact-001",
});
import pulumi
import pulumi_azure_native as azure_native

workload_impact = azure_native.impact.WorkloadImpact("workloadImpact",
    properties={
        "client_incident_details": {
            "client_incident_id": "AA123",
            "client_incident_source": azure_native.impact.IncidentSource.JIRA,
        },
        "connectivity": {
            "port": 1443,
            "protocol": azure_native.impact.Protocol.TCP,
            "source": {
                "azure_resource_id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resourceSub/providers/Microsoft.compute/virtualmachines/vm1",
            },
            "target": {
                "azure_resource_id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resourceSub/providers/Microsoft.compute/virtualmachines/vm2",
            },
        },
        "impact_category": "Resource.Connectivity",
        "impact_description": "conection failure",
        "impacted_resource_id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resource-rg/providers/Microsoft.Sql/sqlserver/dbservercontext",
        "start_date_time": "2022-06-15T05:59:46.6517821Z",
        "workload": {
            "context": "webapp/scenario1",
            "toolset": azure_native.impact.Toolset.OTHER,
        },
    },
    workload_impact_name="impact-001")
package main

import (
	impact "github.com/pulumi/pulumi-azure-native-sdk/impact/v3"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := impact.NewWorkloadImpact(ctx, "workloadImpact", &impact.WorkloadImpactArgs{
			Properties: &impact.WorkloadImpactPropertiesArgs{
				ClientIncidentDetails: &impact.ClientIncidentDetailsArgs{
					ClientIncidentId:     pulumi.String("AA123"),
					ClientIncidentSource: pulumi.String(impact.IncidentSourceJira),
				},
				Connectivity: &impact.ConnectivityArgs{
					Port:     pulumi.Int(1443),
					Protocol: pulumi.String(impact.ProtocolTCP),
					Source: &impact.SourceOrTargetArgs{
						AzureResourceId: pulumi.String("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resourceSub/providers/Microsoft.compute/virtualmachines/vm1"),
					},
					Target: &impact.SourceOrTargetArgs{
						AzureResourceId: pulumi.String("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resourceSub/providers/Microsoft.compute/virtualmachines/vm2"),
					},
				},
				ImpactCategory:     pulumi.String("Resource.Connectivity"),
				ImpactDescription:  pulumi.String("conection failure"),
				ImpactedResourceId: pulumi.String("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resource-rg/providers/Microsoft.Sql/sqlserver/dbservercontext"),
				StartDateTime:      pulumi.String("2022-06-15T05:59:46.6517821Z"),
				Workload: &impact.WorkloadArgs{
					Context: pulumi.String("webapp/scenario1"),
					Toolset: pulumi.String(impact.ToolsetOther),
				},
			},
			WorkloadImpactName: pulumi.String("impact-001"),
		})
		if err != nil {
			return err
		}
		return nil
	})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using AzureNative = Pulumi.AzureNative;

return await Deployment.RunAsync(() => 
{
    var workloadImpact = new AzureNative.Impact.WorkloadImpact("workloadImpact", new()
    {
        Properties = new AzureNative.Impact.Inputs.WorkloadImpactPropertiesArgs
        {
            ClientIncidentDetails = new AzureNative.Impact.Inputs.ClientIncidentDetailsArgs
            {
                ClientIncidentId = "AA123",
                ClientIncidentSource = AzureNative.Impact.IncidentSource.Jira,
            },
            Connectivity = new AzureNative.Impact.Inputs.ConnectivityArgs
            {
                Port = 1443,
                Protocol = AzureNative.Impact.Protocol.TCP,
                Source = new AzureNative.Impact.Inputs.SourceOrTargetArgs
                {
                    AzureResourceId = "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resourceSub/providers/Microsoft.compute/virtualmachines/vm1",
                },
                Target = new AzureNative.Impact.Inputs.SourceOrTargetArgs
                {
                    AzureResourceId = "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resourceSub/providers/Microsoft.compute/virtualmachines/vm2",
                },
            },
            ImpactCategory = "Resource.Connectivity",
            ImpactDescription = "conection failure",
            ImpactedResourceId = "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resource-rg/providers/Microsoft.Sql/sqlserver/dbservercontext",
            StartDateTime = "2022-06-15T05:59:46.6517821Z",
            Workload = new AzureNative.Impact.Inputs.WorkloadArgs
            {
                Context = "webapp/scenario1",
                Toolset = AzureNative.Impact.Toolset.Other,
            },
        },
        WorkloadImpactName = "impact-001",
    });

});
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.azurenative.impact.WorkloadImpact;
import com.pulumi.azurenative.impact.WorkloadImpactArgs;
import com.pulumi.azurenative.impact.inputs.WorkloadImpactPropertiesArgs;
import com.pulumi.azurenative.impact.inputs.ClientIncidentDetailsArgs;
import com.pulumi.azurenative.impact.inputs.ConnectivityArgs;
import com.pulumi.azurenative.impact.inputs.SourceOrTargetArgs;
import com.pulumi.azurenative.impact.inputs.WorkloadArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;

public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }

    public static void stack(Context ctx) {
        var workloadImpact = new WorkloadImpact("workloadImpact", WorkloadImpactArgs.builder()
            .properties(WorkloadImpactPropertiesArgs.builder()
                .clientIncidentDetails(ClientIncidentDetailsArgs.builder()
                    .clientIncidentId("AA123")
                    .clientIncidentSource("Jira")
                    .build())
                .connectivity(ConnectivityArgs.builder()
                    .port(1443)
                    .protocol("TCP")
                    .source(SourceOrTargetArgs.builder()
                        .azureResourceId("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resourceSub/providers/Microsoft.compute/virtualmachines/vm1")
                        .build())
                    .target(SourceOrTargetArgs.builder()
                        .azureResourceId("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resourceSub/providers/Microsoft.compute/virtualmachines/vm2")
                        .build())
                    .build())
                .impactCategory("Resource.Connectivity")
                .impactDescription("conection failure")
                .impactedResourceId("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resource-rg/providers/Microsoft.Sql/sqlserver/dbservercontext")
                .startDateTime("2022-06-15T05:59:46.6517821Z")
                .workload(WorkloadArgs.builder()
                    .context("webapp/scenario1")
                    .toolset("Other")
                    .build())
                .build())
            .workloadImpactName("impact-001")
            .build());

    }
}
resources:
  workloadImpact:
    type: azure-native:impact:WorkloadImpact
    properties:
      properties:
        clientIncidentDetails:
          clientIncidentId: AA123
          clientIncidentSource: Jira
        connectivity:
          port: 1443
          protocol: TCP
          source:
            azureResourceId: /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resourceSub/providers/Microsoft.compute/virtualmachines/vm1
          target:
            azureResourceId: /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resourceSub/providers/Microsoft.compute/virtualmachines/vm2
        impactCategory: Resource.Connectivity
        impactDescription: conection failure
        impactedResourceId: /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resource-rg/providers/Microsoft.Sql/sqlserver/dbservercontext
        startDateTime: 2022-06-15T05:59:46.6517821Z
        workload:
          context: webapp/scenario1
          toolset: Other
      workloadImpactName: impact-001

The connectivity block captures network-level details: source and target resources by Azure resource ID, the port and protocol being used. Setting impactCategory to “Resource.Connectivity” classifies this as a network connectivity issue rather than an availability or performance problem. This structured data helps Azure support teams diagnose network path issues.

Report resource availability issues

When Azure resources become unavailable or operations fail, teams document these incidents to track patterns and correlate with Azure service health.

import * as pulumi from "@pulumi/pulumi";
import * as azure_native from "@pulumi/azure-native";

const workloadImpact = new azure_native.impact.WorkloadImpact("workloadImpact", {
    properties: {
        clientIncidentDetails: {
            clientIncidentId: "AA123",
            clientIncidentSource: azure_native.impact.IncidentSource.Jira,
        },
        impactCategory: "Availability",
        impactDescription: "read calls failed",
        impactedResourceId: "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resource-rg/providers/Microsoft.Sql/sqlserver/dbservercontext",
        startDateTime: "2022-06-15T05:59:46.6517821Z",
        workload: {
            context: "webapp/scenario1",
            toolset: azure_native.impact.Toolset.Other,
        },
    },
    workloadImpactName: "impact-002",
});
import pulumi
import pulumi_azure_native as azure_native

workload_impact = azure_native.impact.WorkloadImpact("workloadImpact",
    properties={
        "client_incident_details": {
            "client_incident_id": "AA123",
            "client_incident_source": azure_native.impact.IncidentSource.JIRA,
        },
        "impact_category": "Availability",
        "impact_description": "read calls failed",
        "impacted_resource_id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resource-rg/providers/Microsoft.Sql/sqlserver/dbservercontext",
        "start_date_time": "2022-06-15T05:59:46.6517821Z",
        "workload": {
            "context": "webapp/scenario1",
            "toolset": azure_native.impact.Toolset.OTHER,
        },
    },
    workload_impact_name="impact-002")
package main

import (
	impact "github.com/pulumi/pulumi-azure-native-sdk/impact/v3"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := impact.NewWorkloadImpact(ctx, "workloadImpact", &impact.WorkloadImpactArgs{
			Properties: &impact.WorkloadImpactPropertiesArgs{
				ClientIncidentDetails: &impact.ClientIncidentDetailsArgs{
					ClientIncidentId:     pulumi.String("AA123"),
					ClientIncidentSource: pulumi.String(impact.IncidentSourceJira),
				},
				ImpactCategory:     pulumi.String("Availability"),
				ImpactDescription:  pulumi.String("read calls failed"),
				ImpactedResourceId: pulumi.String("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resource-rg/providers/Microsoft.Sql/sqlserver/dbservercontext"),
				StartDateTime:      pulumi.String("2022-06-15T05:59:46.6517821Z"),
				Workload: &impact.WorkloadArgs{
					Context: pulumi.String("webapp/scenario1"),
					Toolset: pulumi.String(impact.ToolsetOther),
				},
			},
			WorkloadImpactName: pulumi.String("impact-002"),
		})
		if err != nil {
			return err
		}
		return nil
	})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using AzureNative = Pulumi.AzureNative;

return await Deployment.RunAsync(() => 
{
    var workloadImpact = new AzureNative.Impact.WorkloadImpact("workloadImpact", new()
    {
        Properties = new AzureNative.Impact.Inputs.WorkloadImpactPropertiesArgs
        {
            ClientIncidentDetails = new AzureNative.Impact.Inputs.ClientIncidentDetailsArgs
            {
                ClientIncidentId = "AA123",
                ClientIncidentSource = AzureNative.Impact.IncidentSource.Jira,
            },
            ImpactCategory = "Availability",
            ImpactDescription = "read calls failed",
            ImpactedResourceId = "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resource-rg/providers/Microsoft.Sql/sqlserver/dbservercontext",
            StartDateTime = "2022-06-15T05:59:46.6517821Z",
            Workload = new AzureNative.Impact.Inputs.WorkloadArgs
            {
                Context = "webapp/scenario1",
                Toolset = AzureNative.Impact.Toolset.Other,
            },
        },
        WorkloadImpactName = "impact-002",
    });

});
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.azurenative.impact.WorkloadImpact;
import com.pulumi.azurenative.impact.WorkloadImpactArgs;
import com.pulumi.azurenative.impact.inputs.WorkloadImpactPropertiesArgs;
import com.pulumi.azurenative.impact.inputs.ClientIncidentDetailsArgs;
import com.pulumi.azurenative.impact.inputs.WorkloadArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;

public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }

    public static void stack(Context ctx) {
        var workloadImpact = new WorkloadImpact("workloadImpact", WorkloadImpactArgs.builder()
            .properties(WorkloadImpactPropertiesArgs.builder()
                .clientIncidentDetails(ClientIncidentDetailsArgs.builder()
                    .clientIncidentId("AA123")
                    .clientIncidentSource("Jira")
                    .build())
                .impactCategory("Availability")
                .impactDescription("read calls failed")
                .impactedResourceId("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resource-rg/providers/Microsoft.Sql/sqlserver/dbservercontext")
                .startDateTime("2022-06-15T05:59:46.6517821Z")
                .workload(WorkloadArgs.builder()
                    .context("webapp/scenario1")
                    .toolset("Other")
                    .build())
                .build())
            .workloadImpactName("impact-002")
            .build());

    }
}
resources:
  workloadImpact:
    type: azure-native:impact:WorkloadImpact
    properties:
      properties:
        clientIncidentDetails:
          clientIncidentId: AA123
          clientIncidentSource: Jira
        impactCategory: Availability
        impactDescription: read calls failed
        impactedResourceId: /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resource-rg/providers/Microsoft.Sql/sqlserver/dbservercontext
        startDateTime: 2022-06-15T05:59:46.6517821Z
        workload:
          context: webapp/scenario1
          toolset: Other
      workloadImpactName: impact-002

The impactCategory “Availability” indicates the resource was unreachable or operations failed. The impactDescription provides human-readable context about what failed. Unlike connectivity impacts, availability impacts focus on whether the resource responds at all, not on network path details.

Report performance degradation with metrics

Performance issues require documenting actual versus expected metrics to establish baselines and track degradation patterns.

import * as pulumi from "@pulumi/pulumi";
import * as azure_native from "@pulumi/azure-native";

const workloadImpact = new azure_native.impact.WorkloadImpact("workloadImpact", {
    properties: {
        clientIncidentDetails: {
            clientIncidentId: "AA123",
            clientIncidentSource: azure_native.impact.IncidentSource.Jira,
        },
        impactCategory: "Resource.Performance",
        impactDescription: "high cpu utilization",
        impactedResourceId: "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resource-rg/providers/Microsoft.Sql/sqlserver/dbservercontext",
        performance: [{
            actual: 90,
            expected: 60,
            metricName: "CPU",
            unit: "garbage",
        }],
        startDateTime: "2022-06-15T05:59:46.6517821Z",
        workload: {
            context: "webapp/scenario1",
            toolset: azure_native.impact.Toolset.Other,
        },
    },
    workloadImpactName: "impact-002",
});
import pulumi
import pulumi_azure_native as azure_native

workload_impact = azure_native.impact.WorkloadImpact("workloadImpact",
    properties={
        "client_incident_details": {
            "client_incident_id": "AA123",
            "client_incident_source": azure_native.impact.IncidentSource.JIRA,
        },
        "impact_category": "Resource.Performance",
        "impact_description": "high cpu utilization",
        "impacted_resource_id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resource-rg/providers/Microsoft.Sql/sqlserver/dbservercontext",
        "performance": [{
            "actual": 90,
            "expected": 60,
            "metric_name": "CPU",
            "unit": "garbage",
        }],
        "start_date_time": "2022-06-15T05:59:46.6517821Z",
        "workload": {
            "context": "webapp/scenario1",
            "toolset": azure_native.impact.Toolset.OTHER,
        },
    },
    workload_impact_name="impact-002")
package main

import (
	impact "github.com/pulumi/pulumi-azure-native-sdk/impact/v3"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := impact.NewWorkloadImpact(ctx, "workloadImpact", &impact.WorkloadImpactArgs{
			Properties: &impact.WorkloadImpactPropertiesArgs{
				ClientIncidentDetails: &impact.ClientIncidentDetailsArgs{
					ClientIncidentId:     pulumi.String("AA123"),
					ClientIncidentSource: pulumi.String(impact.IncidentSourceJira),
				},
				ImpactCategory:     pulumi.String("Resource.Performance"),
				ImpactDescription:  pulumi.String("high cpu utilization"),
				ImpactedResourceId: pulumi.String("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resource-rg/providers/Microsoft.Sql/sqlserver/dbservercontext"),
				Performance: impact.PerformanceArray{
					&impact.PerformanceArgs{
						Actual:     pulumi.Float64(90),
						Expected:   pulumi.Float64(60),
						MetricName: pulumi.String("CPU"),
						Unit:       pulumi.String("garbage"),
					},
				},
				StartDateTime: pulumi.String("2022-06-15T05:59:46.6517821Z"),
				Workload: &impact.WorkloadArgs{
					Context: pulumi.String("webapp/scenario1"),
					Toolset: pulumi.String(impact.ToolsetOther),
				},
			},
			WorkloadImpactName: pulumi.String("impact-002"),
		})
		if err != nil {
			return err
		}
		return nil
	})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using AzureNative = Pulumi.AzureNative;

return await Deployment.RunAsync(() => 
{
    var workloadImpact = new AzureNative.Impact.WorkloadImpact("workloadImpact", new()
    {
        Properties = new AzureNative.Impact.Inputs.WorkloadImpactPropertiesArgs
        {
            ClientIncidentDetails = new AzureNative.Impact.Inputs.ClientIncidentDetailsArgs
            {
                ClientIncidentId = "AA123",
                ClientIncidentSource = AzureNative.Impact.IncidentSource.Jira,
            },
            ImpactCategory = "Resource.Performance",
            ImpactDescription = "high cpu utilization",
            ImpactedResourceId = "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resource-rg/providers/Microsoft.Sql/sqlserver/dbservercontext",
            Performance = new[]
            {
                new AzureNative.Impact.Inputs.PerformanceArgs
                {
                    Actual = 90,
                    Expected = 60,
                    MetricName = "CPU",
                    Unit = "garbage",
                },
            },
            StartDateTime = "2022-06-15T05:59:46.6517821Z",
            Workload = new AzureNative.Impact.Inputs.WorkloadArgs
            {
                Context = "webapp/scenario1",
                Toolset = AzureNative.Impact.Toolset.Other,
            },
        },
        WorkloadImpactName = "impact-002",
    });

});
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.azurenative.impact.WorkloadImpact;
import com.pulumi.azurenative.impact.WorkloadImpactArgs;
import com.pulumi.azurenative.impact.inputs.WorkloadImpactPropertiesArgs;
import com.pulumi.azurenative.impact.inputs.ClientIncidentDetailsArgs;
import com.pulumi.azurenative.impact.inputs.WorkloadArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;

public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }

    public static void stack(Context ctx) {
        var workloadImpact = new WorkloadImpact("workloadImpact", WorkloadImpactArgs.builder()
            .properties(WorkloadImpactPropertiesArgs.builder()
                .clientIncidentDetails(ClientIncidentDetailsArgs.builder()
                    .clientIncidentId("AA123")
                    .clientIncidentSource("Jira")
                    .build())
                .impactCategory("Resource.Performance")
                .impactDescription("high cpu utilization")
                .impactedResourceId("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resource-rg/providers/Microsoft.Sql/sqlserver/dbservercontext")
                .performance(PerformanceArgs.builder()
                    .actual(90.0)
                    .expected(60.0)
                    .metricName("CPU")
                    .unit("garbage")
                    .build())
                .startDateTime("2022-06-15T05:59:46.6517821Z")
                .workload(WorkloadArgs.builder()
                    .context("webapp/scenario1")
                    .toolset("Other")
                    .build())
                .build())
            .workloadImpactName("impact-002")
            .build());

    }
}
resources:
  workloadImpact:
    type: azure-native:impact:WorkloadImpact
    properties:
      properties:
        clientIncidentDetails:
          clientIncidentId: AA123
          clientIncidentSource: Jira
        impactCategory: Resource.Performance
        impactDescription: high cpu utilization
        impactedResourceId: /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resource-rg/providers/Microsoft.Sql/sqlserver/dbservercontext
        performance:
          - actual: 90
            expected: 60
            metricName: CPU
            unit: garbage
        startDateTime: 2022-06-15T05:59:46.6517821Z
        workload:
          context: webapp/scenario1
          toolset: Other
      workloadImpactName: impact-002

The performance array captures metric-level details: actual and expected values, the metric name (CPU, memory, latency), and units. This structured format enables trend analysis and helps establish whether performance degradation correlates with Azure service issues or application-level problems.

Beyond these examples

These snippets focus on specific impact reporting features: ARM operation and connectivity failure tracking, availability and performance impact reporting, and incident correlation with external systems. They’re intentionally minimal rather than full monitoring solutions.

The examples reference pre-existing infrastructure such as Azure resources being monitored (VMs, SQL servers, etc.) and external incident tracking systems (Jira, ServiceNow). They focus on recording impact events rather than provisioning monitoring infrastructure.

To keep things focused, common impact tracking patterns are omitted, including:

  • End time tracking (endDateTime)
  • Additional context fields (additionalProperties)
  • Impact severity classification
  • Automated impact detection and reporting

These omissions are intentional: the goal is to illustrate how each impact type is recorded, not provide drop-in monitoring modules. See the WorkloadImpact resource reference for all available configuration options.

Let's configure Azure Workload Impact

Get started with Pulumi Cloud, then follow our quick setup guide to deploy this infrastructure.

Try Pulumi Cloud for FREE

Frequently Asked Questions

Impact Categories & Reporting
What types of impacts can I report with WorkloadImpact?

You can report four impact categories:

  1. ArmOperation - ARM operation failures
  2. Resource.Connectivity - Connectivity issues between resources
  3. Availability - Availability problems
  4. Resource.Performance - Performance degradation
How do I report an ARM operation failure?
Set impactCategory to ArmOperation and include armCorrelationIds array with the ARM correlation IDs from the failed operation.
How do I report connectivity issues between Azure resources?
Set impactCategory to Resource.Connectivity and configure the connectivity object with port, protocol, source, and target resource IDs.
How do I report performance degradation?
Set impactCategory to Resource.Performance and include a performance array with metrics showing actual vs expected values, along with metricName and unit.
Configuration & Required Fields
What fields are required when creating a WorkloadImpact?
The properties object is required. All examples include impactCategory, impactDescription, impactedResourceId, startDateTime, workload, and clientIncidentDetails as essential fields.
What incident tracking systems can I link to?
You can link impacts to external incident tracking systems using clientIncidentDetails. The examples show Jira as the clientIncidentSource.
Immutability & Limitations
Can I change the workload impact name after creation?
No, workloadImpactName is immutable and cannot be changed after the resource is created.

Using a different cloud?

Explore monitoring guides for other cloud providers: