{"id":23315223,"url":"https://github.com/itk-dev/azure-ad-delta-sync-drupal","last_synced_at":"2026-02-26T07:44:16.470Z","repository":{"id":44618223,"uuid":"383101280","full_name":"itk-dev/azure-ad-delta-sync-drupal","owner":"itk-dev","description":"Drupal module for Azure AD Delta Sync","archived":false,"fork":false,"pushed_at":"2025-05-06T12:27:22.000Z","size":161,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-10-30T21:57:45.409Z","etag":null,"topics":["ad-delta-sync","drupal","drupal-module","php"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/itk-dev.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-07-05T10:26:57.000Z","updated_at":"2025-05-06T12:24:41.000Z","dependencies_parsed_at":"2024-02-07T13:27:21.074Z","dependency_job_id":"d2186e8f-87d6-4455-a069-22a528a8619c","html_url":"https://github.com/itk-dev/azure-ad-delta-sync-drupal","commit_stats":null,"previous_names":["itk-dev/azure-ad-delta-sync-drupal","itk-dev/azure_ad_delta_sync"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/itk-dev/azure-ad-delta-sync-drupal","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itk-dev%2Fazure-ad-delta-sync-drupal","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itk-dev%2Fazure-ad-delta-sync-drupal/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itk-dev%2Fazure-ad-delta-sync-drupal/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itk-dev%2Fazure-ad-delta-sync-drupal/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/itk-dev","download_url":"https://codeload.github.com/itk-dev/azure-ad-delta-sync-drupal/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itk-dev%2Fazure-ad-delta-sync-drupal/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29851728,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-25T22:37:40.667Z","status":"online","status_checked_at":"2026-02-26T02:00:06.774Z","response_time":89,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ad-delta-sync","drupal","drupal-module","php"],"created_at":"2024-12-20T15:33:20.543Z","updated_at":"2026-02-26T07:44:16.445Z","avatar_url":"https://github.com/itk-dev.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Azure AD Delta Sync for Drupal\n\nDrupal module for [Azure AD Delta Sync](https://github.com/itk-dev/azure-ad-delta-sync).\n\n## Installation\n\n```sh\ncomposer require itk-dev/azure_ad_delta_sync\nvendor/bin/drush pm:enable azure_ad_delta_sync\n```\n\nGo to `/admin/config/azure_ad_delta_sync` to set up the module.\n\nYou will probably want to add Azure api keys in `settings.local.php`, i.e.\n\n```php\n# settings.local.php\n\n$config['azure_ad_delta_sync.settings']['azure']['uri'] = '…';\n$config['azure_ad_delta_sync.settings']['azure']['security_key'] = '…';\n$config['azure_ad_delta_sync.settings']['azure']['client_secret'] = '…';\n```\n\nFurthermore, you may want to install the [Config Ignore](https://www.drupal.org/project/config_ignore) module and ignore\nthe `azure_ad_delta_sync.settings` config if committing config to a version control system.\n\n## Usage\n\nA cron job should run the following command at regular intervals:\n\n```sh\nvendor/bin/drush azure_ad_delta_sync:run --force\n```\n\nRun `vendor/bin/drush azure_ad_delta_sync:run --help` for details on the command.\n\n## Development\n\nFor development you need a full Drupal project. See\n[itk-dev/azure-ad-delta-sync-drupal-test](https://github.com/itk-dev/azure-ad-delta-sync-drupal-test) for an example.\n\nWe use lazy services, `aDrupal\\azure_ad_delta_sync\\UserManager` and `Drupal\\azure_ad_delta_sync\\Controller`, which\nrequire generating proxy classes (cf. \u003chttps://www.webomelette.com/lazy-loaded-services-drupal-8\u003e).\n\nRun the following command to update the proxy classes:\n\n```sh\n./scripts/generate-proxy-classes\n```\n\n## Automated tests\n\nRequires a full Drupal installation with the `azure_ad_delta_sync_drupal` module in the `web/modules/contrib` folder.\n\n```sh\n(cd «DRUPAL_ROOT»/web; ./vendor/bin/phpunit modules/contrib/azure_ad_delta_sync_drupal/tests/src/Functional)\n```\n\n### Coding standards\n\nThe code follows the [Drupal Coding Standards](https://www.drupal.org/docs/develop/standards) (cf.\n[`phpcs.xml.dist`](phpcs.xml.dist)) and can be checked by running\n\n```sh\ncomposer install\ncomposer coding-standards-check\n```\n\nUse\n\n```sh\ncomposer coding-standards-apply\n```\n\nto automatically fix some coding standard violations.\n\n#### Markdown files\n\n```shell\ndocker run --rm --volume \"$PWD:/md\" peterdavehello/markdownlint markdownlint '**/*.md' --fix\ndocker run --rm --volume \"$PWD:/md\" peterdavehello/markdownlint markdownlint '**/*.md'\n```\n\n### Code analysis\n\nphpstan is used to perform static analysis of the code. Run the following script:\n\n```sh\n./scripts/code-analysis\n```\n\n### Rector\n\nAutomatic code upgrades\n\n`./scripts/rector`\n\n### GitHub Actions\n\nWe use [GitHub Actions](https://github.com/features/actions) to check coding standards, perform code analysis and run\nautomated tests whenever a pull request is made (cf. [`.github/workflows/pr.yaml`](.github/workflows/pr.yaml)).\n\nBefore making a pull request you can run the GitHub Actions locally to check for any problems:\n\n[Install `act`](https://github.com/nektos/act#installation) and run\n\n```sh\nact -P ubuntu-latest=shivammathur/node:focal pull_request\n```\n\n(cf. \u003chttps://github.com/shivammathur/setup-php#local-testing-setup\u003e).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fitk-dev%2Fazure-ad-delta-sync-drupal","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fitk-dev%2Fazure-ad-delta-sync-drupal","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fitk-dev%2Fazure-ad-delta-sync-drupal/lists"}