diff --git a/docs/source/changelog.rst b/docs/source/changelog.rst
index 43ee6bb..66bed9d 100644
--- a/docs/source/changelog.rst
+++ b/docs/source/changelog.rst
@@ -1,4 +1,4 @@
-.. Created by changelog.py at 2020-01-16, command
+.. Created by changelog.py at 2020-01-17, command
    '/Users/giffler/.cache/pre-commit/repont7o94ca/py_env-default/bin/changelog docs/source/changes compile --output=docs/source/changelog.rst'
    based on the format of 'https://keepachangelog.com/'
 
@@ -6,7 +6,7 @@
 CHANGELOG
 #########
 
-[Unreleased] - 2020-01-16
+[Unreleased] - 2020-01-17
 =========================
 
 Added
@@ -17,6 +17,7 @@ Added
 * Add support for COBalD legacy object initialisation
 * The machine name has been added as a default tag in the telegraf monitoring plugin, can be overwritten.
 * An optional and per site configurable drone minimum lifetime has been added
+* Add the possibility to use an unified `COBalD` and `TARDIS` configuration
 
 Fixed
 -----
diff --git a/docs/source/changes/125.add_unified_configuration.yaml b/docs/source/changes/125.add_unified_configuration.yaml
new file mode 100644
index 0000000..74847ac
--- /dev/null
+++ b/docs/source/changes/125.add_unified_configuration.yaml
@@ -0,0 +1,6 @@
+category: added
+summary: Add the possibility to use an unified `COBalD` and `TARDIS` configuration
+pull requests:
+  - 125
+description: |
+  The possibility to combine the `COBalD` and the `TARDIS` configuration in one single `yaml` has been added.
diff --git a/docs/source/index.rst b/docs/source/index.rst
index dd507f0..ba69e33 100644
--- a/docs/source/index.rst
+++ b/docs/source/index.rst
@@ -141,6 +141,75 @@ Configuration of TARDIS
               Memory: 16
               Disk: 160
 
+Unified Configuration
+=====================
+
+.. content-tabs:: left-col
+
+    Alternatively a unified ``COBalD`` and ``TARDIS`` configuration can be used. In this case, the ``TARDIS``
+    part of the configuration is represented by a ``tardis`` MappingNode.
+
+    .. warning::
+        In case of the unified configuration you can currently not use the yaml tag ``!TardisPoolFactory`` to initialize
+        the pool factory, please use the `COBalD` legacy object initialisation
+        ``__type__: tardis.resources.poolfactory.create_composite_pool`` instead!
+
+.. content-tabs:: right-col
+
+    .. rubric:: Example configuration
+    .. code-block:: yaml
+
+        pipeline:
+          # Makes decision to add remove resources based utilisation and allocation
+          - !LinearController
+            low_utilisation: 0.90
+            high_allocation: 0.90
+            rate: 1
+          # Limits the demand for a resource
+          - !Limiter
+            minimum: 1
+          # Log changes
+          - !Logger
+            name: 'changes'
+          # Factory function to create composite resource pool
+          - __type__: tardis.resources.poolfactory.create_composite_pool
+        tardis:
+            Plugins:
+              SqliteRegistry:
+                db_file: drone_registry.db
+
+            BatchSystem:
+              adapter: FakeBatchSystem
+              allocation: 1.0
+              utilization: !PeriodicValue
+                           period: 3600
+                           amplitude: 0.5
+                           offset: 0.5
+                           phase: 0.
+              machine_status: Available
+
+            Sites:
+              - name: Fake
+                adapter: FakeSite
+                quota: 8000 # CPU core quota
+
+            Fake:
+              api_response_delay: !RandomGauss
+                                  mu: 0.1
+                                  sigma: 0.01
+              resource_boot_time: !RandomGauss
+                                  mu: 60
+                                  sigma: 10
+              MachineTypes:
+                - m1.infinity
+              MachineTypeConfiguration:
+                m1.infinity:
+              MachineMetaData:
+                m1.infinity:
+                  Cores: 8
+                  Memory: 16
+                  Disk: 160
+
 Start-up your instance
 ======================
 
diff --git a/setup.py b/setup.py
index c96442b..b4005f5 100644
--- a/setup.py
+++ b/setup.py
@@ -41,7 +41,10 @@ setup(
     entry_points={
         "cobald.config.yaml_constructors": [
             "TardisPoolFactory = tardis.resources.poolfactory:create_composite_pool"
-        ]
+        ],
+        "cobald.config.sections": [
+            "tardis = tardis.configuration.configuration:Configuration"
+        ],
     },
     keywords=package_about["__keywords__"],
     packages=find_packages(exclude=["tests"]),
diff --git a/tardis/configuration/configuration.py b/tardis/configuration/configuration.py
index f5ea52d..24abfd6 100644
--- a/tardis/configuration/configuration.py
+++ b/tardis/configuration/configuration.py
@@ -33,10 +33,13 @@ def translate_config(obj):
 class Configuration(Borg):
     _shared_state = AttributeDict()
 
-    def __init__(self, config_file: str = None):
+    def __init__(self, configuration: [str, dict] = None):
         super(Configuration, self).__init__()
-        if config_file:
-            self.load_config(config_file)
+        if configuration:
+            if isinstance(configuration, str):  # interpret string as file name
+                self.load_config(configuration)
+            else:
+                self.update_config(configuration)
 
     def load_config(self, config_file: str) -> None:
         """
@@ -45,6 +48,14 @@ class Configuration(Borg):
         :type config_file: str
         """
         with open(config_file, "r") as config_file:
-            self._shared_state.update(
-                translate_config(convert_to_attribute_dict(yaml.safe_load(config_file)))
-            )
+            self.update_config(yaml.safe_load(config_file))
+
+    def update_config(self, configuration: dict):
+        """
+        Updates the shared state of the configuration borg
+        :param configuration: Dictionary containing the configuration
+        :type configuration: dict
+        """
+        self._shared_state.update(
+            translate_config(convert_to_attribute_dict(configuration))
+        )
diff --git a/tardis/resources/poolfactory.py b/tardis/resources/poolfactory.py
index a80a379..6b2aa2a 100644
--- a/tardis/resources/poolfactory.py
+++ b/tardis/resources/poolfactory.py
@@ -27,7 +27,7 @@ def str_to_state(resources):
     return resources
 
 
-def create_composite_pool(configuration: str = "tardis.yml") -> WeightedComposite:
+def create_composite_pool(configuration: str = None) -> WeightedComposite:
     configuration = Configuration(configuration)
 
     composites = []

Unified COBalD/TARDIS configuration
End user configuration would be easier if we had one *single* file used by both TARDIS and COBalD. We should embed one in the other or have a unified configuration that has both side-by-side.
diff --git a/tests/configuration_t/OpenStack.yml b/tests/configuration_t/OpenStack.yml
new file mode 100644
index 0000000..61c323d
--- /dev/null
+++ b/tests/configuration_t/OpenStack.yml
@@ -0,0 +1,3 @@
+OpenStack:
+  api_key: qwertzuiop
+  api_secret: katze123
diff --git a/tests/configuration_t/test_configuration.py b/tests/configuration_t/test_configuration.py
index 81d1155..00a6c49 100644
--- a/tests/configuration_t/test_configuration.py
+++ b/tests/configuration_t/test_configuration.py
@@ -1,8 +1,10 @@
 from tardis.configuration.configuration import Configuration
 from tardis.utilities.executors.sshexecutor import SSHExecutor
+from tardis.utilities.attributedict import AttributeDict
 
 from unittest import TestCase
 import os
+import yaml
 
 
 class TestConfiguration(TestCase):
@@ -36,6 +38,15 @@ class TestConfiguration(TestCase):
             {"api_key": "asdfghjkl", "api_secret": "qwertzuiop"},
         )
 
+    def test_update_configuration(self):
+        with open(os.path.join(self.test_path, "OpenStack.yml"), "r") as config_file:
+            config_file_content = yaml.safe_load(config_file)
+        self.configuration1 = Configuration(config_file_content)
+        self.assertEqual(
+            self.configuration1.OpenStack,
+            AttributeDict(api_key="qwertzuiop", api_secret="katze123"),
+        )
+
     def test_translate_config(self):
         b64_result = (
             b"I2Nsb3VkLWNvbmZpZwoKd3JpdGVfZmlsZXM6CiAgLSBwYXRoOiAvZXRjL2huc2NpY2xvdWQvc2l0ZS1pZC5jZmcKICAgIGNvbn",

pip install -e .[contrib]
parse_log_pytest
pytest
pytest flake8
apt-get update apt-get install -y gcc
3.7
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
aiohttp==3.8.6
aiosignal==1.3.1
aiotelegraf==0.4.0
aiotools==1.6.1
async-timeout==4.0.3
AsyncOpenStackClient==0.9.0
asyncssh==2.14.2
asynctest==0.13.0
attrs @ file:///croot/attrs_1668696182826/work
black==23.3.0
certifi @ file:///croot/certifi_1671487769961/work/certifi
cffi==1.15.1
charset-normalizer==3.4.1
click==8.1.8
CloudStackAIO==0.0.8
cobald==0.13.0
-e git+https://github.com/MatterMiners/tardis.git@2f569a2b421c08883f78e2ed17e53f40812e2231#egg=cobald_tardis
cryptography==44.0.2
entrypoints==0.4
exceptiongroup==1.2.2
flake8==5.0.4
flake8-bugbear==23.3.12
flit_core @ file:///opt/conda/conda-bld/flit-core_1644941570762/work/source/flit_core
frozenlist==1.3.3
idna==3.10
importlib-metadata==4.2.0
iniconfig @ file:///home/linux1/recipes/ci/iniconfig_1610983019677/work
json-encoder==0.4.4
mccabe==0.7.0
multidict==6.0.5
mypy-extensions==1.0.0
outcome==1.3.0.post0
packaging @ file:///croot/packaging_1671697413597/work
pathspec==0.11.2
platformdirs==2.6.1
pluggy @ file:///tmp/build/80754af9/pluggy_1648042572264/work
py @ file:///opt/conda/conda-bld/py_1644396412707/work
pycodestyle==2.9.1
pycparser==2.21
pyflakes==2.5.0
pytelegraf==0.3.3
pytest==7.1.2
python-dateutil==2.8.0
python-status==1.0.1
PyYAML==6.0.1
requests==2.31.0
simple-rest-client==0.5.4
simplejson==3.16.0
singledispatch==4.0.0
six==1.17.0
sniffio==1.3.1
sortedcontainers==2.4.0
tomli @ file:///opt/conda/conda-bld/tomli_1657175507142/work
toposort==1.10
trio==0.22.2
typed-ast==1.5.5
typing-extensions==3.10.0.2
urllib3==2.0.7
yarl==1.9.4
zipp @ file:///croot/zipp_1672387121353/work

name: tardis
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - attrs=22.1.0=py37h06a4308_0
  - ca-certificates=2025.2.25=h06a4308_0
  - certifi=2022.12.7=py37h06a4308_0
  - flit-core=3.6.0=pyhd3eb1b0_0
  - importlib_metadata=4.11.3=hd3eb1b0_0
  - iniconfig=1.1.1=pyhd3eb1b0_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.4.4=h6a678d5_1
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=1.1.1w=h7f8727e_0
  - packaging=22.0=py37h06a4308_0
  - pip=22.3.1=py37h06a4308_0
  - pluggy=1.0.0=py37h06a4308_1
  - py=1.11.0=pyhd3eb1b0_0
  - pytest=7.1.2=py37h06a4308_0
  - python=3.7.16=h7a1cb2a_0
  - readline=8.2=h5eee18b_0
  - setuptools=65.6.3=py37h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - tomli=2.0.1=py37h06a4308_0
  - wheel=0.38.4=py37h06a4308_0
  - xz=5.6.4=h5eee18b_1
  - zipp=3.11.0=py37h06a4308_0
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - aiohttp==3.8.6
      - aiosignal==1.3.1
      - aiotelegraf==0.4.0
      - aiotools==1.6.1
      - async-timeout==4.0.3
      - asyncopenstackclient==0.9.0
      - asyncssh==2.14.2
      - asynctest==0.13.0
      - black==23.3.0
      - cffi==1.15.1
      - charset-normalizer==3.4.1
      - click==8.1.8
      - cloudstackaio==0.0.8
      - cobald==0.13.0
      - cryptography==44.0.2
      - entrypoints==0.4
      - exceptiongroup==1.2.2
      - flake8==5.0.4
      - flake8-bugbear==23.3.12
      - frozenlist==1.3.3
      - idna==3.10
      - importlib-metadata==4.2.0
      - json-encoder==0.4.4
      - mccabe==0.7.0
      - multidict==6.0.5
      - mypy-extensions==1.0.0
      - outcome==1.3.0.post0
      - pathspec==0.11.2
      - platformdirs==2.6.1
      - pycodestyle==2.9.1
      - pycparser==2.21
      - pyflakes==2.5.0
      - pytelegraf==0.3.3
      - python-dateutil==2.8.0
      - python-status==1.0.1
      - pyyaml==6.0.1
      - requests==2.31.0
      - simple-rest-client==0.5.4
      - simplejson==3.16.0
      - singledispatch==4.0.0
      - six==1.17.0
      - sniffio==1.3.1
      - sortedcontainers==2.4.0
      - toposort==1.10
      - trio==0.22.2
      - typed-ast==1.5.5
      - typing-extensions==3.10.0.2
      - urllib3==2.0.7
      - yarl==1.9.4
prefix: /opt/conda/envs/tardis

tests/configuration_t/test_configuration.py::TestConfiguration::test_update_configuration
tests/configuration_t/test_configuration.py::TestConfiguration::test_access_missing_attribute tests/configuration_t/test_configuration.py::TestConfiguration::test_configuration_instances tests/configuration_t/test_configuration.py::TestConfiguration::test_load_configuration tests/configuration_t/test_configuration.py::TestConfiguration::test_shared_state tests/configuration_t/test_configuration.py::TestConfiguration::test_translate_config
setup.py docs/source/index.rst docs/source/changes/125.add_unified_configuration.yaml tardis/resources/poolfactory.py tardis/configuration/configuration.py docs/source/changelog.rst
setup.py docs/source/index.rst docs/source/changes/125.add_unified_configuration.yaml tardis/resources/poolfactory.py tardis/configuration/configuration.py docs/source/changelog.rst