PHPackages                             ivastly/ats-calendar-integration - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. ivastly/ats-calendar-integration

ActiveProject[Utility &amp; Helpers](/categories/utility)

ivastly/ats-calendar-integration
================================

Exports vacations from any ATS to any Calendar system, e.g. Securex =&gt; MS Outlook Calendar

v1.0.1(6y ago)14MITPHPPHP ^7.1CI failing

Since Oct 6Pushed 6y ago1 watchersCompare

[ Source](https://github.com/ivastly/ats-calendar)[ Packagist](https://packagist.org/packages/ivastly/ats-calendar-integration)[ RSS](/packages/ivastly-ats-calendar-integration/feed)WikiDiscussions master Synced yesterday

READMEChangelogDependencies (2)Versions (3)Used By (0)

Rationale
=========

[](#rationale)

Surprised to see your key colleague ran out for vacation again? Yes, *there was an email about it 2 months ago*.. Usually we forget about it same minute, and realize the fact when it is too late. You don't want another vacation to ruin your sprint again, do you?

Then welcome a solution to **sync all vacations from any HR system to any Calendar**, so you always know who is going to be AFK!

How To Start
============

[](#how-to-start)

Docker way
----------

[](#docker-way)

- create and fill `app/config/config.php` file

```
cp app/config/config.example.php app/config/config.php
nano app/config/config.php
```

- put dockerized script to cron

```
docker run --rm --interactive --tty --volume $PWD:/app composer install
docker-compose run puphpeteer php sync_once.php # put this on cron for every 5 minutes
```

Classic way
-----------

[](#classic-way)

- install node and puppeteer

```
npm install @nesk/puphpeteer
```

- install dependencies

```
composer install
```

- create and fill `app/config/config.php` file

```
cp app/config/config.example.php app/config/config.php
nano app/config/config.php
```

- finally, run the script in the background. It will export all vacations to your Outlook Calendar.

```
screen -S securex-outlook-sync
php sync.php
```

Security concerns
=================

[](#security-concerns)

### Anything -&gt; MS Exchange integration

[](#anything---ms-exchange-integration)

MS Exchange API (known as Exchange Web Services) requires plain-text user password to be specified. To workaround this, the password is requested when the script starts. Thus, it is never stored on disk or github as plain text. It makes the solution to be enterprise ready and 100% IT-security compliant.

Known Limitations
=================

[](#known-limitations)

- only [Securex HR Online](https://www.securex.lu/en/our-it-tool-hronline/9) -&gt; MS Exchange Calendar is supported
- please be patient, local Outlook client needs some time to synchronize calendar events (&lt; 1 min)

TODO
====

[](#todo)

- delete vacation events from Calendar if they disappear from Securex
- support custom observable periods (currently hardcoded to 1 month)
- if a vacation occupies more than 1 week, it is represented as multiple Calendar events - fix it
- support more Calendars - Google Calendar, Zoho Calendar, etc.
- support more ATS - BambooHR, Recruitee, Manatal, Oracle Taleo, etc.
- dockerize
- tests

LICENSE
=======

[](#license)

See LICENSE file

###  Health Score

24

—

LowBetter than 32% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity5

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity54

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

2

Last Release

2410d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/e8c1ce9cd19ab2b69b4f0fa6ddbe3850cbfe2409e98d49e7e166aed7ca7a3c7d?d=identicon)[biganfa](/maintainers/biganfa)

---

Top Contributors

[![ivastly](https://avatars.githubusercontent.com/u/919655?v=4)](https://github.com/ivastly "ivastly (28 commits)")

---

Tags

ewsoutlooksecurexsecurexhrservices

### Embed Badge

![Health badge](/badges/ivastly-ats-calendar-integration/health.svg)

```
[![Health](https://phpackages.com/badges/ivastly-ats-calendar-integration/health.svg)](https://phpackages.com/packages/ivastly-ats-calendar-integration)
```

###  Alternatives

[aktuba/php-puppeteer

Extend puphpeteer

182.5k](/packages/aktuba-php-puppeteer)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
