PHPackages                             oat-sa/extension-tao-sync - 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. oat-sa/extension-tao-sync

ActiveTao-extension[Utility &amp; Helpers](/categories/utility)

oat-sa/extension-tao-sync
=========================

TAO synchronisation for offline client data.

v9.2.3(2y ago)13.1k12GPL-2.0-onlyPHP

Since Feb 23Pushed 5mo ago40 watchersCompare

[ Source](https://github.com/oat-sa/extension-tao-sync)[ Packagist](https://packagist.org/packages/oat-sa/extension-tao-sync)[ Docs](http://www.taotesting.com)[ RSS](/packages/oat-sa-extension-tao-sync/feed)WikiDiscussions master Synced 2w ago

READMEChangelog (10)Dependencies (15)Versions (131)Used By (2)

TAO Sync Extension
==================

[](#tao-sync-extension)

[![TAO Logo](https://github.com/oat-sa/taohub-developer-guide/raw/master/resources/tao-logo.png)](https://github.com/oat-sa/taohub-developer-guide/raw/master/resources/tao-logo.png)

[![GitHub](https://camo.githubusercontent.com/b688425e358eb070b19ede6a58c4bc608c848373e3c9135ffd326a76eb9f53aa/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f6f61742d73612f657874656e73696f6e2d74616f2d73796e632e737667)](https://camo.githubusercontent.com/b688425e358eb070b19ede6a58c4bc608c848373e3c9135ffd326a76eb9f53aa/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f6f61742d73612f657874656e73696f6e2d74616f2d73796e632e737667)[![GitHub release](https://camo.githubusercontent.com/d1a492adf1a3efac4e0eecc9ca9c1f4b002b6613e4efe79569cf2530280c0359/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f72656c656173652f6f61742d73612f657874656e73696f6e2d74616f2d73796e632e737667)](https://camo.githubusercontent.com/d1a492adf1a3efac4e0eecc9ca9c1f4b002b6613e4efe79569cf2530280c0359/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f72656c656173652f6f61742d73612f657874656e73696f6e2d74616f2d73796e632e737667)[![GitHub commit activity](https://camo.githubusercontent.com/a923ead04da80da3bdc76783bf24b417af724692acd302f58c53947005b313df/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f636f6d6d69742d61637469766974792f792f6f61742d73612f657874656e73696f6e2d74616f2d73796e632e737667)](https://camo.githubusercontent.com/a923ead04da80da3bdc76783bf24b417af724692acd302f58c53947005b313df/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f636f6d6d69742d61637469766974792f792f6f61742d73612f657874656e73696f6e2d74616f2d73796e632e737667)

> The purpose of this extension is to synchronize a local and a remote server.

All types of data and results can be synchronized. All HTTP requests are required to be signed following the OAuth 2 standard, also are all data encrypted.

**Important note: While this article uses American spelling, some of the command line instructions are in British spelling for historical reasons, e. g. `synchronisation` instead of `synchronization`!**

Installation instructions
-------------------------

[](#installation-instructions)

These instructions assume that you already have a TAO installation on your system. If you don't, go to [package/tao](https://github.com/oat-sa/package-tao) and follow the installation instructions.

Add the extension to your TAO composer and to the autoloader:

```
composer require oat-sa/extension-tao-sync
```

Install the extension on the CLI from the project root:

**Linux:**

```
sudo php tao/scripts/installExtension oat-sa/extension-tao-sync
```

**Windows:**

```
php tao\scripts\installExtension oat-sa/extension-tao-sync
```

As a system administrator you can also install it through the TAO Extension Manager:

- Settings (the gears on the right-hand side of the menu) -&gt; Extension manager
- Select *taoSync* on the right-hand side, check the box and hit *install*

Synchronization
---------------

[](#synchronization)

### Data synchronization

[](#data-synchronization)

In preparation of a delivery execution, the synchronization process needs to fetch data objects of the following types from the central server:

- `test-center`
- `administrator`
- `proctor`
- `test-taker`
- `eligibility`
- `delivery`

Set the `chunkSize` parameter in the `taoSync/syncService` configuration to define the amount of data per request, `$type` refers to the list above, e. g. *test-center*

```
$ sudo -u www-data php index.php '\oat\taoSync\scripts\tool\synchronisation\SynchronizeData' [--type=$type]
```

When a delivery is published it exports a sanpshot of a QTI test package. This snapshot will be used during synchronization.

### Result synchronization

[](#result-synchronization)

Once the Client Server has the delivery result, a script sends it to the Central Server. Only completed delivery executions will be sent, results will be submitted only once. When a delivery execution is sent, the synchronization history will be updated to log the action. You can set the `deleteAfterSend` parameter to `true` to delete results after the synchronization.

To configure the amount of data per request, use the `chunkSize` parameter in the `taoSync/resultService` configuration.

Execute the following command to synchronize the result:

```
$ sudo -u www-data php index.php '\oat\taoSync\scripts\tool\synchronisation\SynchronizeResult'
```

### Synchronizing all data and results

[](#synchronizing-all-data-and-results)

To synchronize data and results at the same time, use the following command:

```
$ sudo -u www-data php index.php '\oat\taoSync\scripts\tool\synchronisation\SynchronizeAll'
```

OAuth credentials
-----------------

[](#oauth-credentials)

### Generating credentials to allow a user to connect to the platform

[](#generating-credentials-to-allow-a-user-to-connect-to-the-platform)

This command creates a consumer with OAuth credentials.

```
$ sudo -u www-data php index.php '\oat\taoSync\scripts\tool\OAuth\GenerateOAuthCredentials'
```

The output of this command will contain the following data:

- `key`
- `secret`
- `tokenUrl`

*Note: Add the `-cmd` flag to this command to execute it on the Client Server.*

### Importing OAuth credentials to Client Server

[](#importing-oauth-credentials-to-client-server)

The following command will import the consumer you have created above into the Client Server. The arguments are the output from the previous command, `$rootUrl` is the domain name of the host server.

```
$ sudo -u www-data php index.php 'oat\taoSync\scripts\tool\OAuth\ImportOAuthCredentials' -k $key -s $secret -tu $tokenUrl -u $rootUrl
```

### Scoping synchronization to a test center identifier

[](#scoping-synchronization-to-a-test-center-identifier)

To be able to bind a synchronization to the organzition ID of a test center, the platform needs to register a `test-center` property. The SyncService has also to register new synchronizers to process by organisation id.

```
$ sudo -u www-data php index.php '\oat\taoSync\scripts\tool\RegisterSyncServiceByOrgId'
```

*Note* The test center organization id is \_

###  Health Score

47

—

FairBetter than 93% of packages

Maintenance49

Moderate activity, may be stable

Popularity19

Limited adoption so far

Community34

Small or concentrated contributor base

Maturity81

Battle-tested with a long release history

 Bus Factor3

3 contributors hold 50%+ of commits

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 ~25 days

Recently: every ~174 days

Total

80

Last Release

1055d ago

Major Versions

v6.13.0.2 → v7.0.02019-10-11

v6.13.0.6 → v8.0.02021-02-22

v8.0.1 → v9.0.02021-07-06

v7.7.0.1 → v9.1.02021-07-14

v7.7.0.2 → v9.2.02021-09-21

### Community

Maintainers

![](https://www.gravatar.com/avatar/98ddc6f1b615b1fac2d59f1e72d5dc6056cf6650414271da90cb3f0e203516fe?d=identicon)[bugalood](/maintainers/bugalood)

![](https://www.gravatar.com/avatar/c0ec704e0a8abaf0c27b227ad05d7aca23bc8f83d195229d94d4508cddc0fd24?d=identicon)[oat-lionel](/maintainers/oat-lionel)

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

![](https://www.gravatar.com/avatar/348b2cf6408227372fbb22c6e8b0832e1c8c98c5d6b0c88bb220dbdfbcd21a39?d=identicon)[krampstudio](/maintainers/krampstudio)

---

Top Contributors

[![siwane](https://avatars.githubusercontent.com/u/8009602?v=4)](https://github.com/siwane "siwane (144 commits)")[![ionutpad](https://avatars.githubusercontent.com/u/31656944?v=4)](https://github.com/ionutpad "ionutpad (139 commits)")[![augustas](https://avatars.githubusercontent.com/u/2705327?v=4)](https://github.com/augustas "augustas (48 commits)")[![tikhanovichA](https://avatars.githubusercontent.com/u/1053022?v=4)](https://github.com/tikhanovichA "tikhanovichA (42 commits)")[![atsymuk](https://avatars.githubusercontent.com/u/11298742?v=4)](https://github.com/atsymuk "atsymuk (33 commits)")[![boajer](https://avatars.githubusercontent.com/u/4569734?v=4)](https://github.com/boajer "boajer (31 commits)")[![ks16](https://avatars.githubusercontent.com/u/42937157?v=4)](https://github.com/ks16 "ks16 (21 commits)")[![jsconan](https://avatars.githubusercontent.com/u/1500098?v=4)](https://github.com/jsconan "jsconan (14 commits)")[![Yury-Razhkou](https://avatars.githubusercontent.com/u/51408369?v=4)](https://github.com/Yury-Razhkou "Yury-Razhkou (14 commits)")[![SergiiTao](https://avatars.githubusercontent.com/u/36041347?v=4)](https://github.com/SergiiTao "SergiiTao (10 commits)")[![zagovorichev](https://avatars.githubusercontent.com/u/1445911?v=4)](https://github.com/zagovorichev "zagovorichev (9 commits)")[![wazelin](https://avatars.githubusercontent.com/u/2943256?v=4)](https://github.com/wazelin "wazelin (9 commits)")[![uncleempty](https://avatars.githubusercontent.com/u/32706312?v=4)](https://github.com/uncleempty "uncleempty (9 commits)")[![krampstudio](https://avatars.githubusercontent.com/u/468620?v=4)](https://github.com/krampstudio "krampstudio (8 commits)")[![handleman](https://avatars.githubusercontent.com/u/2877242?v=4)](https://github.com/handleman "handleman (7 commits)")[![peetya](https://avatars.githubusercontent.com/u/18699247?v=4)](https://github.com/peetya "peetya (6 commits)")[![gyszucs](https://avatars.githubusercontent.com/u/4942018?v=4)](https://github.com/gyszucs "gyszucs (6 commits)")[![ricproenca-tao](https://avatars.githubusercontent.com/u/45600417?v=4)](https://github.com/ricproenca-tao "ricproenca-tao (5 commits)")[![btamas](https://avatars.githubusercontent.com/u/537151?v=4)](https://github.com/btamas "btamas (4 commits)")[![oatymart](https://avatars.githubusercontent.com/u/43652944?v=4)](https://github.com/oatymart "oatymart (4 commits)")

---

Tags

TAOcomputer-based-assessmentOAT

### Embed Badge

![Health badge](/badges/oat-sa-extension-tao-sync/health.svg)

```
[![Health](https://phpackages.com/badges/oat-sa-extension-tao-sync/health.svg)](https://phpackages.com/packages/oat-sa-extension-tao-sync)
```

###  Alternatives

[oat-sa/tao-community

TAO is an Open Source e-Testing platform that empowers you to build, deliver, and share innovative and engaging assessments online – in any language or subject matter.

105.1k1](/packages/oat-sa-tao-community)[oat-sa/tao-core

TAO core extension

66140.1k108](/packages/oat-sa-tao-core)[oat-sa/extension-tao-itemqti-pci

1086.9k8](/packages/oat-sa-extension-tao-itemqti-pci)[oat-sa/generis

TAO generis library

10144.6k109](/packages/oat-sa-generis)

PHPackages © 2026

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