PHPackages                             os2forms/os2forms - 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. os2forms/os2forms

ActiveDrupal-module[Utility &amp; Helpers](/categories/utility)

os2forms/os2forms
=================

Drupal 8 OS2Form module provides advanced webform functionality for Danish Municipalities

5.0.0(6mo ago)39.5k↓50%3[53 issues](https://github.com/OS2Forms/os2forms/issues)[3 PRs](https://github.com/OS2Forms/os2forms/pulls)10EUPL-1.2PHPPHP ^8.1CI passing

Since Dec 18Pushed 2mo ago6 watchersCompare

[ Source](https://github.com/OS2Forms/os2forms)[ Packagist](https://packagist.org/packages/os2forms/os2forms)[ RSS](/packages/os2forms-os2forms/feed)WikiDiscussions develop Synced 1mo ago

READMEChangelog (10)Dependencies (66)Versions (127)Used By (10)

OS2Forms Drupal module [![Build Status](https://camo.githubusercontent.com/c67ce3edd4d2f2e7810b3da929bc5dd52037b82b7b48ed6d6ecefdd9f9b0a9d5/68747470733a2f2f7472617669732d63692e6f72672f4f5332466f726d732f6f7332666f726d732e7376673f6272616e63683d382e78)](https://travis-ci.org/OS2Forms/os2forms)
===================================================================================================================================================================================================================================================================================================

[](#os2forms-drupal-module--)

Install
-------

[](#install)

OS2Forms Drupal 8 module is available to download via composer.

```
composer require os2forms/os2forms
drush en os2forms
```

If you don't have Drupal installed on you server, you will to need install it first. Read more about [how to install drupal core](https://www.drupal.org/docs/8/install).

We are recommending to install drupal via composer by using [OS2Forms composer project](https://github.com/OS2Forms/composer-project). By this way you will get standalone project with OS2Forms module on board, plus all the other contrib modules you will probably need to configure OS2Forms to your specific demands.

```
composer create-project os2forms/composer-project:8.x-dev some-dir --no-interaction
```

To get more benefits on your Drupal project we are offering you to use [OS2web](https://packagist.org/packages/os2web/os2web) as installation profile for Drupal. This profile is a part of OS2Forms composer project mentioned above.

You can easy download and install OS2web installation profile to your composer based Drupal project with commands:

```
composer require os2web/os2web
drush si os2web --db-url=mysql://db_user:db_pass@mysql_host/db_name --locale=da --site-name="OS2Forms" --account-pass=admin -y
```

Update
------

[](#update)

Updating process for OS2forms module is similar to usual Drupal 8 module. Use Composer's built-in command for listing packages that have updates available:

```
composer outdated os2forms/os2forms
```

Automated testing and code quality
----------------------------------

[](#automated-testing-and-code-quality)

See [OS2Forms testing and CI information](https://github.com/OS2Forms/docs#testing-and-ci)

Contribution
------------

[](#contribution)

OS2Forms project is opened for new features and os course bugfixes. If you have any suggestion or you found a bug in project, you are very welcome to create an issue in github repository issue tracker. For issue description there is expected that you will provide clear and sufficient information about your feature request or bug report.

### Code review policy

[](#code-review-policy)

See [OS2Forms code review policy](https://github.com/OS2Forms/docs#code-review)

### Git name convention

[](#git-name-convention)

See [OS2Forms git name convention](https://github.com/OS2Forms/docs#git-guideline)

Important notes
---------------

[](#important-notes)

### Webforms

[](#webforms)

Each webform, including all its settings, is stored as configuration in db and will(could) be exported as `yml` file via Drupal configuration management system. And afterwards could be tracked by `git`.

It means that all webform settings from drupal database will be syncronized (exported/imported) with state stored in `yml` files from configuration folder stored in git repository. Without proper actions webforms could be deleted or reverted to state in `yml` during synchronization.

To avoid/prevent this behavior we recommend use `Config ignore` module, where you can add all settings you do not want to export/import via configuration management system.

### Serviceplatformen plugins

[](#serviceplatformen-plugins)

Settings for CPR and CVR serviceplantormen plugins are storing as configuration in db and will(could) be exported as `yml` file via Drupal configuration management system. And afterwards could be tracked by `git`.

If case you have public access to your git repository all setting from plugins will be exposed for third persons.

To avoid/prevent this behavior we recommend use `Config ignore` module, where you can add all settings you do not want to export/import via configuration management system.

Unstable features
-----------------

[](#unstable-features)

### Export submissions to Word

[](#export-submissions-to-word)

This feature is still not part of Webform and Entity print modules stable versions due to following issues:

- [\[Webform\] Unlock possibility of using Entity print module export to Word feature](https://www.drupal.org/project/webform/issues/3096552)
- [\[Entity Print\] Add Export to Word Support](https://www.drupal.org/project/entity_print/issues/2733781)

To get this functionality on drupal project there will be applied patches from issues above via Composer.

NOTE: If you are downloading os2forms module without using composer, be aware that you have apply those patches by yourself.

Coding standards
----------------

[](#coding-standards)

Our coding are checked by GitHub Actions (cf. [.github/workflows/pr.yml](.github/workflows/pr.yml)). Use the commands below to run the checks locally.

### PHP

[](#php)

```
docker compose pull
docker compose run --rm php composer install
# Fix (some) coding standards issues.
docker compose run --rm php composer coding-standards-apply
docker compose run --rm php composer coding-standards-check
```

Tip

If the `composer install` commands fails with

> Unable to install module simplesamlphp/simplesamlphp-assets-base, package name must be on the form "VENDOR/simplesamlphp-module-MODULENAME".

you can remove the `vendor` folder and rerun the `composer install` command (cf. [https://www.drupal.org/project/simplesamlphp\_auth/issues/3350773](https://www.drupal.org/project/simplesamlphp_auth/issues/3350773)).

### Markdown

[](#markdown)

```
docker compose pull
docker compose run --rm markdownlint markdownlint '**/*.md' --fix
docker compose run --rm markdownlint markdownlint '**/*.md'
```

Code analysis
-------------

[](#code-analysis)

We use [PHPStan](https://phpstan.org/) for static code analysis.

Running statis code analysis on a standalone Drupal module is a bit tricky, so we use a helper script to run the analysis:

```
docker compose run --rm php ./scripts/code-analysis
```

**Note**: Currently the code analysis is only run on the `os2forms_digital_post` sub-module (cf. [`phpstan.neon`](./phpstan.neon)).

###  Health Score

53

—

FairBetter than 97% of packages

Maintenance57

Moderate activity, may be stable

Popularity28

Limited adoption so far

Community34

Small or concentrated contributor base

Maturity83

Battle-tested with a long release history

 Bus Factor2

2 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 ~18 days

Recently: every ~70 days

Total

117

Last Release

181d ago

Major Versions

2.8.2 → 3.0.12021-12-09

2.9.1 → 3.1.02022-01-12

2.10.0 → 3.2.12022-01-19

3.22.2 → 4.0.02025-03-06

4.1.0 → 5.0.02025-11-18

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/827308?v=4)[Jørn Skifter Andersen](/maintainers/skifter)[@skifter](https://github.com/skifter)

![](https://www.gravatar.com/avatar/62f8489b69aecc84322f8899d288c3ab41d3022532d49c849ae4ca10e20f4df7?d=identicon)[andriyun](/maintainers/andriyun)

![](https://www.gravatar.com/avatar/134c42b216718e3d28298bcec8772eeb309c8c94afff3462dac1245b06c06cc5?d=identicon)[stanbellcom](/maintainers/stanbellcom)

![](https://www.gravatar.com/avatar/9d838759fdace714b1c00ca64212935cb06568a6d641169301aa2ed05eed16f9?d=identicon)[rimi-itk](/maintainers/rimi-itk)

![](https://avatars.githubusercontent.com/u/28791660?v=4)[Mads Nørgaard](/maintainers/madsnorgaard)[@madsnorgaard](https://github.com/madsnorgaard)

---

Top Contributors

[![stankut](https://avatars.githubusercontent.com/u/1537807?v=4)](https://github.com/stankut "stankut (290 commits)")[![jekuaitk](https://avatars.githubusercontent.com/u/78410897?v=4)](https://github.com/jekuaitk "jekuaitk (237 commits)")[![rimi-itk](https://avatars.githubusercontent.com/u/11267554?v=4)](https://github.com/rimi-itk "rimi-itk (116 commits)")[![andriyun](https://avatars.githubusercontent.com/u/5544994?v=4)](https://github.com/andriyun "andriyun (109 commits)")[![skifter](https://avatars.githubusercontent.com/u/827308?v=4)](https://github.com/skifter "skifter (29 commits)")[![cableman](https://avatars.githubusercontent.com/u/111397?v=4)](https://github.com/cableman "cableman (28 commits)")[![martinyde](https://avatars.githubusercontent.com/u/545272?v=4)](https://github.com/martinyde "martinyde (26 commits)")[![inuitviking](https://avatars.githubusercontent.com/u/11981709?v=4)](https://github.com/inuitviking "inuitviking (21 commits)")[![juuliabellcom](https://avatars.githubusercontent.com/u/5367428?v=4)](https://github.com/juuliabellcom "juuliabellcom (18 commits)")[![jeppekroghitk](https://avatars.githubusercontent.com/u/106669866?v=4)](https://github.com/jeppekroghitk "jeppekroghitk (14 commits)")[![hra-novicell](https://avatars.githubusercontent.com/u/42935954?v=4)](https://github.com/hra-novicell "hra-novicell (7 commits)")[![ds-bellcom](https://avatars.githubusercontent.com/u/139229719?v=4)](https://github.com/ds-bellcom "ds-bellcom (6 commits)")[![madsnorgaard](https://avatars.githubusercontent.com/u/28791660?v=4)](https://github.com/madsnorgaard "madsnorgaard (3 commits)")[![franzskaaning](https://avatars.githubusercontent.com/u/1532252?v=4)](https://github.com/franzskaaning "franzskaaning (3 commits)")[![ChatBotBerg](https://avatars.githubusercontent.com/u/195424626?v=4)](https://github.com/ChatBotBerg "ChatBotBerg (1 commits)")

---

Tags

composerdrupaldrupal8drupal8-moduleos2os2forms-drupalphpwebform

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/os2forms-os2forms/health.svg)

```
[![Health](https://phpackages.com/badges/os2forms-os2forms/health.svg)](https://phpackages.com/packages/os2forms-os2forms)
```

###  Alternatives

[thunder/thunder-distribution

The thunder distribution

50634.8k3](/packages/thunder-thunder-distribution)[voidagency/vactory_starter_kit

Vactory is a custom Drupal profile which is developed and released by VOID Agency.

1019.7k](/packages/voidagency-vactory-starter-kit)[drupalwxt/wxt

Project template for Drupal 10 sites built with the WxT distribution.

29159.8k8](/packages/drupalwxt-wxt)

PHPackages © 2026

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