diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000..16acbbf
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,17 @@
+#   Copyright 2020 Canonical Ltd.
+#
+#   Licensed under the Apache License, Version 2.0 (the "License");
+#   you may not use this file except in compliance with the License.
+#   You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+#   Unless required by applicable law or agreed to in writing, software
+#   distributed under the License is distributed on an "AS IS" BASIS,
+#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#   See the License for the specific language governing permissions and
+#   limitations under the License.
+
+[submodule "installers/charm/pla/mod/operator"]
+	path = installers/charm/pla/mod/operator
+	url = https://github.com/canonical/operator
diff --git a/installers/charm/pla/.yamllint.yaml b/installers/charm/pla/.yamllint.yaml
new file mode 100644
index 0000000..ab52c60
--- /dev/null
+++ b/installers/charm/pla/.yamllint.yaml
@@ -0,0 +1,23 @@
+# Copyright 2020 Canonical Ltd.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+#     Unless required by applicable law or agreed to in writing, software
+#     distributed under the License is distributed on an "AS IS" BASIS,
+#     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#     See the License for the specific language governing permissions and
+#     limitations under the License.
+---
+extends: default
+
+yaml-files:
+  - "*.yaml"
+  - "*.yml"
+  - ".yamllint"
+ignore: |
+  .tox
+  mod
diff --git a/installers/charm/pla/README.md b/installers/charm/pla/README.md
new file mode 100644
index 0000000..8d486d0
--- /dev/null
+++ b/installers/charm/pla/README.md
@@ -0,0 +1,14 @@
+<!-- #   Copyright 2020 Canonical Ltd.
+#
+#   Licensed under the Apache License, Version 2.0 (the "License");
+#   you may not use this file except in compliance with the License.
+#   You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+#   Unless required by applicable law or agreed to in writing, software
+#   distributed under the License is distributed on an "AS IS" BASIS,
+#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#   See the License for the specific language governing permissions and
+#   limitations under the License. -->
+# PLA Charm
\ No newline at end of file
diff --git a/installers/charm/pla/config.yaml b/installers/charm/pla/config.yaml
new file mode 100644
index 0000000..92bb422
--- /dev/null
+++ b/installers/charm/pla/config.yaml
@@ -0,0 +1,42 @@
+# -*- coding: utf-8 -*-
+
+# Copyright 2020 Arctos Labs Scandinavia AB
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+# implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+options:
+  image:
+    description: Docker image name
+    type: string
+    default: opensourcemano/pla:8.0.0rc1
+  port:
+    description: Port number
+    type: int
+    default: 8080 # Fake port
+  kafka_host:
+    description: Kafka Hostname
+    type: string
+    default: kafka-k8s
+  kafka_port:
+    description: Kafka Port
+    type: int
+    default: 9092
+  mongo_uri:
+    description: Mongo URI
+    type: string
+    default: mongodb://mongodb-k8s:27017
+  log_level:
+    description: Log level
+    type: string
+    default: INFO
diff --git a/installers/charm/pla/hooks/start b/installers/charm/pla/hooks/start
new file mode 120000
index 0000000..25b1f68
--- /dev/null
+++ b/installers/charm/pla/hooks/start
@@ -0,0 +1 @@
+../src/charm.py
\ No newline at end of file
diff --git a/installers/charm/pla/lib/ops b/installers/charm/pla/lib/ops
new file mode 120000
index 0000000..d934193
--- /dev/null
+++ b/installers/charm/pla/lib/ops
@@ -0,0 +1 @@
+../mod/operator/ops
\ No newline at end of file
diff --git a/installers/charm/pla/metadata.yaml b/installers/charm/pla/metadata.yaml
new file mode 100644
index 0000000..37b6214
--- /dev/null
+++ b/installers/charm/pla/metadata.yaml
@@ -0,0 +1,31 @@
+#   Copyright 2020 Canonical Ltd.
+#
+#   Licensed under the Apache License, Version 2.0 (the "License");
+#   you may not use this file except in compliance with the License.
+#   You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+#   Unless required by applicable law or agreed to in writing, software
+#   distributed under the License is distributed on an "AS IS" BASIS,
+#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#   See the License for the specific language governing permissions and
+#   limitations under the License.
+
+name: pla
+summary: A Placement charm for Opensource MANO
+description: |
+  Placement module for OSM
+series:
+  - kubernetes
+min-juju-version: 2.7.0
+deployment:
+  type: stateless
+  service: cluster
+requires:
+  kafka:
+    interface: kafka
+  mongo:
+    interface: mongo
+  mysql:
+    interface: mysql
\ No newline at end of file
diff --git a/installers/charm/pla/mod/operator b/installers/charm/pla/mod/operator
new file mode 160000
index 0000000..a84ce87
--- /dev/null
+++ b/installers/charm/pla/mod/operator
@@ -0,0 +1 @@
+Subproject commit a84ce8776b368a8b2bccdb173716e342db9a6b36
diff --git a/installers/charm/pla/src/charm.py b/installers/charm/pla/src/charm.py
new file mode 100755
index 0000000..b94d62b
--- /dev/null
+++ b/installers/charm/pla/src/charm.py
@@ -0,0 +1,124 @@
+#!/usr/bin/env python3
+#   Copyright 2020 Canonical Ltd.
+#
+#   Licensed under the Apache License, Version 2.0 (the "License");
+#   you may not use this file except in compliance with the License.
+#   You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+#   Unless required by applicable law or agreed to in writing, software
+#   distributed under the License is distributed on an "AS IS" BASIS,
+#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#   See the License for the specific language governing permissions and
+#   limitations under the License.
+
+import sys
+import logging
+
+sys.path.append("lib")
+
+from ops.charm import CharmBase
+from ops.framework import StoredState, Object
+from ops.main import main
+from ops.model import (
+    ActiveStatus,
+    MaintenanceStatus,
+)
+
+from glob import glob
+from pathlib import Path
+from string import Template
+
+logger = logging.getLogger(__name__)
+
+
+class PLACharm(CharmBase):
+    state = StoredState()
+
+    def __init__(self, framework, key):
+        super().__init__(framework, key)
+        self.state.set_default(spec=None)
+
+        # Observe Charm related events
+        self.framework.observe(self.on.config_changed, self.on_config_changed)
+        self.framework.observe(self.on.start, self.on_start)
+        self.framework.observe(self.on.upgrade_charm, self.on_upgrade_charm)
+
+    def _apply_spec(self):
+        # Only apply the spec if this unit is a leader.
+        if not self.framework.model.unit.is_leader():
+            return
+        new_spec = self.make_pod_spec()
+        if new_spec == self.state.spec:
+            return
+        self.framework.model.pod.set_spec(new_spec)
+        self.state.spec = new_spec
+
+    def make_pod_spec(self):
+        config = self.framework.model.config
+
+        ports = [
+            {"name": "port", "containerPort": config["port"], "protocol": "TCP",},
+        ]
+
+        kubernetes = {
+            "readinessProbe": {
+                "tcpSocket": {"port": config["port"]},
+                "timeoutSeconds": 5,
+                "periodSeconds": 5,
+                "initialDelaySeconds": 10,
+            },
+            "livenessProbe": {
+                "tcpSocket": {"port": config["port"]},
+                "timeoutSeconds": 5,
+                "initialDelaySeconds": 45,
+            },
+        }
+        config_spec = {
+            "OSMPLA_MESSAGE_DRIVER": "kafka",
+            "OSMPLA_MESSAGE_HOST": config["kafka_host"],
+            "OSMPLA_MESSAGE_PORT": config["kafka_port"],
+            "OSMPLA_DATABASE_DRIVER": "mongo",
+            "OSMPLA_DATABASE_URI": config["mongo_uri"],
+            "OSMPLA_GLOBAL_LOG_LEVEL": config["log_level"],
+        }
+
+        spec = {
+            "version": 2,
+            "containers": [
+                {
+                    "name": self.framework.model.app.name,
+                    "image": "{}".format(config["image"]),
+                    "ports": ports,
+                    "kubernetes": kubernetes,
+                    "config": config_spec,
+                }
+            ],
+        }
+
+        return spec
+
+    def on_config_changed(self, event):
+        """Handle changes in configuration"""
+        unit = self.model.unit
+        unit.status = MaintenanceStatus("Applying new pod spec")
+        self._apply_spec()
+        unit.status = ActiveStatus("Ready")
+
+    def on_start(self, event):
+        """Called when the charm is being installed"""
+        unit = self.model.unit
+        unit.status = MaintenanceStatus("Applying pod spec")
+        self._apply_spec()
+        unit.status = ActiveStatus("Ready")
+
+    def on_upgrade_charm(self, event):
+        """Upgrade the charm."""
+        unit = self.model.unit
+        unit.status = MaintenanceStatus("Upgrading charm")
+        self.on_start(event)
+
+
+if __name__ == "__main__":
+    main(PLACharm)
diff --git a/installers/charm/pla/tox.ini b/installers/charm/pla/tox.ini
new file mode 100644
index 0000000..d2a8c53
--- /dev/null
+++ b/installers/charm/pla/tox.ini
@@ -0,0 +1,56 @@
+#   Copyright 2020 Canonical Ltd.
+#
+#   Licensed under the Apache License, Version 2.0 (the "License");
+#   you may not use this file except in compliance with the License.
+#   You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+#   Unless required by applicable law or agreed to in writing, software
+#   distributed under the License is distributed on an "AS IS" BASIS,
+#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#   See the License for the specific language governing permissions and
+#   limitations under the License.
+
+[tox]
+envlist = pep8
+skipsdist = True
+
+[testenv]
+setenv = VIRTUAL_ENV={envdir}
+         PYTHONHASHSEED=0
+whitelist_externals = juju
+passenv = HOME TERM CS_API_* OS_* AMULET_*
+deps = -r{toxinidir}/test-requirements.txt
+install_command =
+  pip install {opts} {packages}
+
+[testenv:black]
+basepython = python3
+deps =
+    black
+    yamllint
+commands =
+    black --check --diff src
+    yamllint .
+
+[testenv:pep8]
+basepython = python3
+deps=charm-tools
+commands = charm-proof
+
+[testenv:func-noop]
+basepython = python3
+commands =
+    true
+
+[testenv:func]
+basepython = python3
+commands = functest-run-suite
+
+[testenv:func-smoke]
+basepython = python3
+commands = functest-run-suite --keep-model --smoke
+
+[testenv:venv]
+commands = {posargs}
