def azad_sync_job_schema_modify()

in modules/azure-identity/azure-id-lifecycle/scripts/azad_sync_job_schema_modify.py [0:0]


def azad_sync_job_schema_modify(service_principal_id, provision_job_id):
   
    r_headers = {'Authorization': 'Bearer ' + msgraph_api_access_token(), 'Accept': 'application/json'}

    # fetch existing job schema
    job_schema_json = fetch_job_schema(service_principal_id=service_principal_id, job_id=provision_job_id,
                                       headers=r_headers)

    # add new attributes to existing job schema 
    sra = job_schema_json['synchronizationRules']
    for sr in sra:
        if sr['name'] == 'USERGROUP_OUTBOUND_USERGROUP' and sr['sourceDirectoryName'] == 'Microsoft Entra ID':
            objMaps = sr['objectMappings']
            for om in objMaps:
                if om['name'] == 'Provision Microsoft Entra ID Users' and om['sourceObjectName'] == 'User':
                    # read federated_user attribute
                    federated_user_attr = read_user_mapping_attributes_json(
                        filename='scripts/federated_user_mapping_attribute.json')
                    om['attributeMappings'].append(federated_user_attr)

                    # read bypass notif attribute
                    bypass_notification_attr = read_user_mapping_attributes_json(
                        'scripts/bypass_notification_mapping_attribute.json')
                    om['attributeMappings'].append(bypass_notification_attr)

    update_job_schema(service_principal_id, job_id=provision_job_id, headers=r_headers, payload=job_schema_json)