diff --git a/services/TS29222_CAPIF_Auditing_API/Dockerfile b/services/TS29222_CAPIF_Auditing_API/Dockerfile
index d7030b67013b0e43402f59ff7374a52c099a6b9d..4908c19cbc4b57479053a5f908561f10da17d7eb 100644
--- a/services/TS29222_CAPIF_Auditing_API/Dockerfile
+++ b/services/TS29222_CAPIF_Auditing_API/Dockerfile
@@ -12,6 +12,6 @@ COPY . /usr/src/app
 
 EXPOSE 8080
 
-ENTRYPOINT ["python3"]
+ENTRYPOINT ["gunicorn"]
 
-CMD ["-m", "logs"]
\ No newline at end of file
+CMD ["--bind", "0.0.0.0:8080", "--chdir", "/usr/src/app/logs", "wsgi:app"]
\ No newline at end of file
diff --git a/services/TS29222_CAPIF_Auditing_API/logs/__main__.py b/services/TS29222_CAPIF_Auditing_API/logs/app.py
similarity index 97%
rename from services/TS29222_CAPIF_Auditing_API/logs/__main__.py
rename to services/TS29222_CAPIF_Auditing_API/logs/app.py
index 385f0b589919612de7fc19c5315fea86f73d6e05..b89c1a681aaa2b0a1f9b434776932e990315d295 100644
--- a/services/TS29222_CAPIF_Auditing_API/logs/__main__.py
+++ b/services/TS29222_CAPIF_Auditing_API/logs/app.py
@@ -3,8 +3,8 @@
 import connexion
 import logging
 from logging.handlers import RotatingFileHandler
-from logs import encoder
-from .config import Config
+import encoder
+from config import Config
 import os
 from fluent import sender
 from opentelemetry.instrumentation.flask import FlaskInstrumentor
@@ -112,5 +112,5 @@ config = Config()
 if eval(os.environ.get("MONITORING").lower().capitalize()):
     configure_monitoring(app.app, config.get_config())
 
-if __name__ == '__main__':
-    app.run(port=8080)
+# if __name__ == '__main__':
+#     app.run(port=8080)
diff --git a/services/TS29222_CAPIF_Auditing_API/logs/config.py b/services/TS29222_CAPIF_Auditing_API/logs/config.py
index d04bd1acd87603f491b09f464d8db1d6cdc52ad7..97ab831fc7a69163163f7182f1f8c61bd9e3ffc4 100644
--- a/services/TS29222_CAPIF_Auditing_API/logs/config.py
+++ b/services/TS29222_CAPIF_Auditing_API/logs/config.py
@@ -5,7 +5,7 @@ import os
 class Config:
 	def __init__(self):
 		self.cached = 0
-		self.file="./config.yaml"
+		self.file="../config.yaml"
 		self.my_config = {}
 
 		stamp = os.stat(self.file).st_mtime
diff --git a/services/TS29222_CAPIF_Auditing_API/logs/controllers/default_controller.py b/services/TS29222_CAPIF_Auditing_API/logs/controllers/default_controller.py
index c330f47dcf64184d10590cbf343373a19c255099..ead9ec5341d13bf3150ad460f174c3c91e714f3c 100644
--- a/services/TS29222_CAPIF_Auditing_API/logs/controllers/default_controller.py
+++ b/services/TS29222_CAPIF_Auditing_API/logs/controllers/default_controller.py
@@ -1,21 +1,8 @@
-import connexion
-import six
-import sys
-
-from logs.models.interface_description import InterfaceDescription  # noqa: E501
-from logs.models.invocation_log import InvocationLog  # noqa: E501
-from logs.models.operation import Operation  # noqa: E501
-from logs.models.problem_details import ProblemDetails  # noqa: E501
-from logs.models.protocol import Protocol  # noqa: E501
-from logs import util
 
+from ..util import deserialize_datetime
 from ..core.auditoperations import AuditOperations
-import json
 from flask import Response, request, current_app
-from ..encoder import JSONEncoder
-from cryptography import x509
-from cryptography.hazmat.backends import default_backend
-import pymongo
+
 from ..core.responses import bad_request_error
 
 audit_operations = AuditOperations()
@@ -65,8 +52,8 @@ def api_invocation_logs_get(aef_id=None, api_invoker_id=None, time_range_start=N
                                  cause="Mandatory parameters missing", invalid_params=[
                 {"param": "aef_id or api_invoker_id", "reason": "missing"}])
 
-    time_range_start = util.deserialize_datetime(time_range_start)
-    time_range_end = util.deserialize_datetime(time_range_end)
+    time_range_start = deserialize_datetime(time_range_start)
+    time_range_end = deserialize_datetime(time_range_end)
 
     query_params = {"aef_id": aef_id,
                     "api_invoker_id": api_invoker_id,
diff --git a/services/TS29222_CAPIF_Auditing_API/logs/core/auditoperations.py b/services/TS29222_CAPIF_Auditing_API/logs/core/auditoperations.py
index ac83701ce453c122e8445e41d808b9d658fd3928..6632d2808e8ec3f82bf19ff9a2a947dc1b6de2c6 100644
--- a/services/TS29222_CAPIF_Auditing_API/logs/core/auditoperations.py
+++ b/services/TS29222_CAPIF_Auditing_API/logs/core/auditoperations.py
@@ -1,11 +1,9 @@
-import sys
 
 from flask import current_app, Flask, Response
 import json
-import sys
-from datetime import datetime
+
 from .resources import Resource
-from bson import json_util
+
 from ..util import dict_to_camel_case, clean_empty
 from .responses import bad_request_error, not_found_error, forbidden_error, internal_server_error, make_response
 from ..models.invocation_log import InvocationLog
@@ -57,11 +55,9 @@ class AuditOperations (Resource):
             if not result['logs']:
                 return not_found_error(detail="Parameters do not match any log entry", cause="No logs found")
 
-
-            result = dict_to_camel_case(clean_empty(result))
-            invocation_log = InvocationLog(result['aefId'], result['apiInvokerId'], result['logs'],
-                                           result['supportedFeatures'])
-            res = make_response(object=invocation_log, status=200)
+            invocation_log = InvocationLog(result['aef_id'], result['api_invoker_id'], result['logs'],
+                                           result['supported_features'])
+            res = make_response(object=dict_to_camel_case(clean_empty(invocation_log.to_dict())), status=200)
             current_app.logger.debug("Found invocation logs")
             return res
 
diff --git a/services/TS29222_CAPIF_Auditing_API/logs/core/resources.py b/services/TS29222_CAPIF_Auditing_API/logs/core/resources.py
index d55b30c74cf87bf22eec115dfc1bd0e6d413a018..d5a3552d6b3459a77d30df65d0bbda4a86c7fa61 100644
--- a/services/TS29222_CAPIF_Auditing_API/logs/core/resources.py
+++ b/services/TS29222_CAPIF_Auditing_API/logs/core/resources.py
@@ -1,5 +1,5 @@
-from abc import ABC, abstractmethod
-from ..db.db import MongoDatabse
+from abc import ABC
+from db.db import MongoDatabse
 
 
 class Resource(ABC):
diff --git a/services/TS29222_CAPIF_Auditing_API/logs/core/responses.py b/services/TS29222_CAPIF_Auditing_API/logs/core/responses.py
index 5986c5000910cc9c0f0d579051db9477f5943c17..9d5ea092050de02f5813149bde790f9becaa3c90 100644
--- a/services/TS29222_CAPIF_Auditing_API/logs/core/responses.py
+++ b/services/TS29222_CAPIF_Auditing_API/logs/core/responses.py
@@ -1,6 +1,7 @@
 from ..models.problem_details import ProblemDetails
 from ..encoder import JSONEncoder
 from flask import Response
+from ..util import dict_to_camel_case, clean_empty
 import json
 
 mimetype = "application/json"
@@ -15,22 +16,38 @@ def make_response(object, status):
 def internal_server_error(detail, cause):
     prob = ProblemDetails(title="Internal Server Error", status=500, detail=detail, cause=cause)
 
+    prob = prob.to_dict()
+    prob = clean_empty(prob)
+    prob = dict_to_camel_case(prob)
+
     return Response(json.dumps(prob, cls=JSONEncoder), status=500, mimetype=mimetype)
 
 
 def forbidden_error(detail, cause):
     prob = ProblemDetails(title="Forbidden", status=403, detail=detail, cause=cause)
 
+    prob = prob.to_dict()
+    prob = clean_empty(prob)
+    prob = dict_to_camel_case(prob)
+
     return Response(json.dumps(prob, cls=JSONEncoder), status=403, mimetype=mimetype)
 
 
 def bad_request_error(detail, cause, invalid_params):
     prob = ProblemDetails(title="Bad Request", status=400, detail=detail, cause=cause, invalid_params=invalid_params)
 
+    prob = prob.to_dict()
+    prob = clean_empty(prob)
+    prob = dict_to_camel_case(prob)
+
     return Response(json.dumps(prob, cls=JSONEncoder), status=400, mimetype=cause)
 
 
 def not_found_error(detail, cause):
     prob = ProblemDetails(title="Not Found", status=404, detail=detail, cause=cause)
 
+    prob = prob.to_dict()
+    prob = clean_empty(prob)
+    prob = dict_to_camel_case(prob)
+
     return Response(json.dumps(prob, cls=JSONEncoder), status=404, mimetype=mimetype)
\ No newline at end of file
diff --git a/services/TS29222_CAPIF_Auditing_API/logs/db/db.py b/services/TS29222_CAPIF_Auditing_API/logs/db/db.py
index f3286d22125674dd3cbd9cc5b8dccc2dba73f25c..17a93fe7e254ad1192a95b7fe0300c4384a31623 100644
--- a/services/TS29222_CAPIF_Auditing_API/logs/db/db.py
+++ b/services/TS29222_CAPIF_Auditing_API/logs/db/db.py
@@ -1,9 +1,8 @@
-import atexit
+
 import time
 from pymongo import MongoClient
 from pymongo.errors import AutoReconnect
-from ..config import Config
-from bson.codec_options import CodecOptions
+from config import Config
 import os
 from opentelemetry.instrumentation.pymongo import PymongoInstrumentor
 
diff --git a/services/TS29222_CAPIF_Auditing_API/logs/encoder.py b/services/TS29222_CAPIF_Auditing_API/logs/encoder.py
index 55259f5fafc566e72cad147c9f1fada83c2d5130..80bad8fa9220ab873e044b7adc0a849746088ad5 100644
--- a/services/TS29222_CAPIF_Auditing_API/logs/encoder.py
+++ b/services/TS29222_CAPIF_Auditing_API/logs/encoder.py
@@ -1,7 +1,7 @@
 from connexion.apps.flask_app import FlaskJSONEncoder
 import six
 
-from logs.models.base_model_ import Model
+from models.base_model_ import Model
 
 
 class JSONEncoder(FlaskJSONEncoder):
diff --git a/services/TS29222_CAPIF_Auditing_API/logs/util.py b/services/TS29222_CAPIF_Auditing_API/logs/util.py
index ff812577975f62d6488f6ebc71bbed8492b7c0d3..ec1430110f5a167f67a8c083cfda84af63a678d4 100644
--- a/services/TS29222_CAPIF_Auditing_API/logs/util.py
+++ b/services/TS29222_CAPIF_Auditing_API/logs/util.py
@@ -1,8 +1,8 @@
 import datetime
 
 import six
-import typing
-from logs import typing_utils
+import typing_utils
+
 
 def clean_empty(d):
     if isinstance(d, dict):
@@ -15,6 +15,7 @@ def clean_empty(d):
         return [v for v in map(clean_empty, d) if v]
     return d
 
+
 def dict_to_camel_case(my_dict):
 
 
diff --git a/services/TS29222_CAPIF_Auditing_API/logs/wsgi.py b/services/TS29222_CAPIF_Auditing_API/logs/wsgi.py
new file mode 100644
index 0000000000000000000000000000000000000000..6026b0fa96078634d3455ab93d71dcdc78774276
--- /dev/null
+++ b/services/TS29222_CAPIF_Auditing_API/logs/wsgi.py
@@ -0,0 +1,4 @@
+from app import app
+
+if __name__ == "__main__":
+    app.run()
diff --git a/services/TS29222_CAPIF_Auditing_API/requirements.txt b/services/TS29222_CAPIF_Auditing_API/requirements.txt
index 197399ff21107a2e3f2edc6519445c38b38de335..cb1e43905a79b1fdcbe01282175cd884eb958efa 100644
--- a/services/TS29222_CAPIF_Auditing_API/requirements.txt
+++ b/services/TS29222_CAPIF_Auditing_API/requirements.txt
@@ -18,3 +18,5 @@ opentelemetry-api == 1.17.0
 opentelemetry-sdk == 1.17.0
 flask_executor == 1.0.0
 pyopenssl == 23.0.0
+gunicorn==22.0.0
+packaging==24.0
\ No newline at end of file