diff --git a/internal/services/synchronization/synchronization_job_provision_on_demand_resource.go b/internal/services/synchronization/synchronization_job_provision_on_demand_resource.go index 30d8c7c19..0e4fd1ade 100644 --- a/internal/services/synchronization/synchronization_job_provision_on_demand_resource.go +++ b/internal/services/synchronization/synchronization_job_provision_on_demand_resource.go @@ -39,14 +39,15 @@ func synchronizationJobProvisionOnDemandResource() *schema.Resource { Type: schema.TypeString, Required: true, ForceNew: true, - ValidateFunc: validation.IsUUID, + ValidateFunc: stable.ValidateServicePrincipalID, }, "synchronization_job_id": { - Description: "The identifier for the synchronization jop.", - Type: schema.TypeString, - Required: true, - ForceNew: true, + Description: "The identifier for the synchronization jop.", + Type: schema.TypeString, + Required: true, + ForceNew: true, + ValidateFunc: stable.ValidateServicePrincipalIdSynchronizationJobID, }, "parameter": { @@ -105,12 +106,15 @@ func synchronizationProvisionOnDemandResourceCreate(ctx context.Context, d *sche client := meta.(*clients.Client).ServicePrincipals.SynchronizationJobClient servicePrincipalClient := meta.(*clients.Client).ServicePrincipals.ServicePrincipalClient - servicePrincipalId := stable.NewServicePrincipalID(d.Get("service_principal_id").(string)) + servicePrincipalId, err := stable.ParseServicePrincipalID(d.Get("service_principal_id").(string)) + if err != nil { + return tf.ErrorDiagPathF(err, "service_principal_id", "Parsing `service_principal_id`") + } tf.LockByName(servicePrincipalResourceName, servicePrincipalId.ServicePrincipalId) defer tf.UnlockByName(servicePrincipalResourceName, servicePrincipalId.ServicePrincipalId) - servicePrincipalResp, err := servicePrincipalClient.GetServicePrincipal(ctx, servicePrincipalId, serviceprincipal.DefaultGetServicePrincipalOperationOptions()) + servicePrincipalResp, err := servicePrincipalClient.GetServicePrincipal(ctx, *servicePrincipalId, serviceprincipal.DefaultGetServicePrincipalOperationOptions()) if err != nil { if response.WasNotFound(servicePrincipalResp.HttpResponse) { return tf.ErrorDiagPathF(nil, "service_principal_id", "%s was not found", servicePrincipalId) @@ -126,9 +130,12 @@ func synchronizationProvisionOnDemandResourceCreate(ctx context.Context, d *sche return tf.ErrorDiagF(errors.New("model has nil ID"), "Retrieving %s", servicePrincipalId) } - jobId := stable.NewServicePrincipalIdSynchronizationJobID(servicePrincipalId.ServicePrincipalId, d.Get("synchronization_job_id").(string)) + jobId, err := stable.ParseServicePrincipalIdSynchronizationJobID(d.Get("synchronization_job_id").(string)) + if err != nil { + return tf.ErrorDiagPathF(err, "synchronization_job_id", "Parsing `synchronization_job_id`") + } - jobResp, err := client.GetSynchronizationJob(ctx, jobId, synchronizationjob.GetSynchronizationJobOperationOptions{RetryFunc: synchronizationRetryFunc()}) + jobResp, err := client.GetSynchronizationJob(ctx, *jobId, synchronizationjob.GetSynchronizationJobOperationOptions{RetryFunc: synchronizationRetryFunc()}) if err != nil { if response.WasNotFound(jobResp.HttpResponse) { return tf.ErrorDiagPathF(nil, "synchronization_job_id", "%s was not found", jobId) @@ -148,7 +155,7 @@ func synchronizationProvisionOnDemandResourceCreate(ctx context.Context, d *sche Parameters: expandSynchronizationJobApplicationParameters(d.Get("parameter").([]interface{})), } - if _, err = client.ProvisionSynchronizationJobOnDemand(ctx, jobId, properties, synchronizationjob.DefaultProvisionSynchronizationJobOnDemandOperationOptions()); err != nil { + if _, err = client.ProvisionSynchronizationJobOnDemand(ctx, *jobId, properties, synchronizationjob.DefaultProvisionSynchronizationJobOnDemandOperationOptions()); err != nil { return tf.ErrorDiagF(err, "Provisioning %s", jobId) } diff --git a/internal/services/synchronization/synchronization_job_provision_on_demand_resource_test.go b/internal/services/synchronization/synchronization_job_provision_on_demand_resource_test.go index 8d2a7e4cb..77cdda121 100644 --- a/internal/services/synchronization/synchronization_job_provision_on_demand_resource_test.go +++ b/internal/services/synchronization/synchronization_job_provision_on_demand_resource_test.go @@ -50,8 +50,12 @@ resource "azuread_application_from_template" "test" { template_id = data.azuread_application_template.test.template_id } +data "azuread_service_principal" "test" { + object_id = azuread_application_from_template.test.service_principal_object_id +} + resource "azuread_synchronization_job" "test" { - service_principal_id = azuread_application_from_template.test.service_principal_object_id + service_principal_id = data.azuread_service_principal.test.id template_id = "dataBricks" } @@ -67,8 +71,8 @@ func (r SynchronizationJobProvisionOnDemandResource) basic(data acceptance.TestD %[1]s resource "azuread_synchronization_job_provision_on_demand" "test" { - service_principal_id = azuread_application_from_template.test.service_principal_object_id - synchronization_job_id = trimprefix(azuread_synchronization_job.test.id, "${azuread_application_from_template.test.service_principal_object_id}/job/") + service_principal_id = azuread_synchronization_job.test.service_principal_id + synchronization_job_id = azuread_synchronization_job.test.id parameter { rule_id = "03f7d90d-bf71-41b1-bda6-aaf0ddbee5d8" // appears to be a global value