diff --git a/policy_module/setup.py b/policy_module/setup.py
new file mode 100644
index 0000000..d5c3562
--- /dev/null
+++ b/policy_module/setup.py
@@ -0,0 +1,72 @@
+# -*- coding: utf-8 -*-
+
+# Copyright 2018 Whitestack, LLC
+# *************************************************************
+
+# This file is part of OSM Monitoring module
+# All Rights Reserved to Whitestack, LLC
+
+# 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.
+
+# For those usages not covered by the Apache License, Version 2.0 please
+# contact: bdiaz@whitestack.com or glavado@whitestack.com
+##
+import setuptools
+
+
+def parse_requirements(requirements):
+    with open(requirements) as f:
+        return [l.strip('\n') for l in f if l.strip('\n') and not l.startswith('#') and '://' not in l]
+
+
+_author = "Benjamín Díaz"
+_name = 'osm_policy_module'
+_author_email = 'bdiaz@whitestack.com'
+_version = '1.0'
+_description = 'OSM Policy Module'
+_maintainer = 'Benjamín Díaz'
+_maintainer_email = 'bdiaz@whitestack.com'
+_license = 'Apache 2.0'
+_url = 'https://osm.etsi.org/gitweb/?p=osm/MON.git;a=tree'
+
+setuptools.setup(
+    name=_name,
+    version=_version,
+    description=_description,
+    long_description=open('README.rst').read(),
+    author=_author,
+    author_email=_author_email,
+    maintainer=_maintainer,
+    maintainer_email=_maintainer_email,
+    url=_url,
+    license=_license,
+    packages=setuptools.find_packages(),
+    include_package_data=True,
+    install_requires=[
+        'kafka==1.3.*',
+        'peewee==3.1.*',
+        'jsonschema==2.6.*',
+        'six==1.11.*',
+        'pyyaml==3.*',
+        'python-logstash==0.4.*',
+        'osm-common==4.*'
+    ],
+    entry_points={
+        "console_scripts": [
+            "osm-policy-agent = osm_policy_module.cmd.policy_module_agent:main",
+        ]
+    },
+    dependency_links=[
+        'git+https://osm.etsi.org/gerrit/osm/common.git@v4.0.1#egg=osm-common'
+    ]
+)
