diff --git a/CMakeModules/astyle.cmake b/CMakeModules/astyle.cmake
index 4fb06da8181f694a4546379c31c17c06734be276..17351d0ec244468e6df16bb1ca786d659c5d7216 100644
--- a/CMakeModules/astyle.cmake
+++ b/CMakeModules/astyle.cmake
@@ -7,7 +7,7 @@ if(ASTYLE_EXECUTABLE)
 		${ASTYLE_EXECUTABLE} -i
 			--exclude=${PROJECT_BINARY_DIR}
 			--recursive -n --style=google  --indent=spaces=4 --max-code-length=120
-			--max-instatement-indent=50 --pad-oper --align-pointer=type
+			--max-instatement-indent=50 --pad-oper --align-pointer=type --quiet
 			"${PROJECT_SOURCE_DIR}/*.cpp" "${PROJECT_SOURCE_DIR}/*.h"
 		WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
 		VERBATIM	
diff --git a/common/cpp/src/data_structs/data_structs.cpp b/common/cpp/src/data_structs/data_structs.cpp
index 71b58f1ebcefcef61651071d3ac876c2378f5d25..25bd2622004db2b0b1d9cbee3aaf93c132789223 100644
--- a/common/cpp/src/data_structs/data_structs.cpp
+++ b/common/cpp/src/data_structs/data_structs.cpp
@@ -186,7 +186,7 @@ std::string IsoDateFromEpochNanosecs(uint64_t time_from_epoch_nanosec) {
     sprintf(buff, "%.4d-%.2d-%.2dT%.2d:%.2d:%.2d", timetm.tm_year + 1900, timetm.tm_mon + 1, timetm.tm_mday,
             timetm.tm_hour, timetm.tm_min, timetm.tm_sec);
     if (zz > 0) {
-        sprintf(buff + 19, ".%.9ld", zz);
+        sprintf(buff + 19, ".%.9llu", zz);
     }
 
     return buff;
diff --git a/common/cpp/src/json_parser/CMakeLists.txt b/common/cpp/src/json_parser/CMakeLists.txt
index eddf5735d2efa5be900c33392fbafed3b5111c4c..07bbdb809b9269a1e56a6a9cc6ed712bd19ee212 100644
--- a/common/cpp/src/json_parser/CMakeLists.txt
+++ b/common/cpp/src/json_parser/CMakeLists.txt
@@ -20,4 +20,6 @@ set(TEST_SOURCE_FILES ../../unittests/json_parser/test_json_parser.cpp)
 
 set(TEST_LIBRARIES "${TARGET_NAME};system_io")
 include_directories(${ASAPO_CXX_COMMON_INCLUDE_DIR} ${CMAKE_SOURCE_DIR}/3d_party/rapidjson/include)
+include_directories(SYSTEM ${CMAKE_SOURCE_DIR}/3d_party/rapidjson/include)
+
 gtest(${TARGET_NAME} "${TEST_SOURCE_FILES}" "${TEST_LIBRARIES}")
diff --git a/consumer/api/cpp/src/tcp_consumer_client.cpp b/consumer/api/cpp/src/tcp_consumer_client.cpp
index 7eb9432aa335186766cd067f2b765c5b8e101c01..11ea5626fbc11fff505ebbb5e1093df0a7d6a155 100644
--- a/consumer/api/cpp/src/tcp_consumer_client.cpp
+++ b/consumer/api/cpp/src/tcp_consumer_client.cpp
@@ -56,6 +56,8 @@ Error TcpConsumerClient::ReceiveResponce(SocketDescriptor sd) const noexcept {
         case kNetErrorNoData:
             connection_pool__->ReleaseConnection(sd);
             break;
+        default:
+            break;
         }
         return ConvertRdsResponseToError(response.error_code);
     }
diff --git a/consumer/api/cpp/unittests/test_consumer_impl.cpp b/consumer/api/cpp/unittests/test_consumer_impl.cpp
index bb279cff58b4e7e3ae99908eee85bc19186a0576..e734a6043627a8a9ed75e4fa2e146e0856aaa4c2 100644
--- a/consumer/api/cpp/unittests/test_consumer_impl.cpp
+++ b/consumer/api/cpp/unittests/test_consumer_impl.cpp
@@ -1261,7 +1261,7 @@ TEST_F(ConsumerImplTests, FileTransferReadsFileSize) {
                                                     5,
                                                     _)).WillOnce(DoAll(
                                                             SetArgPointee<5>(HttpCode::OK),
-                                                            AssignArg3(nullptr),
+                                                            AssignArg3(false),
                                                             Return(nullptr)
                                                             ));
 
diff --git a/consumer/api/python/CMakeLists_Linux.cmake b/consumer/api/python/CMakeLists_Linux.cmake
index c099a14d424918d4a3dcdf5dde31cbc949f990e2..35dd630b484e73e604f7ae95111568c103066c3c 100644
--- a/consumer/api/python/CMakeLists_Linux.cmake
+++ b/consumer/api/python/CMakeLists_Linux.cmake
@@ -19,7 +19,7 @@ set (ASAPO_CONSUMER_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../cpp/include)
 
 configure_files(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} @ONLY)
 
-ADD_CUSTOM_TARGET(python-lib-consumer ALL COMMAND ${Python_EXECUTABLE} setup.py build_ext --inplace --force)
+ADD_CUSTOM_TARGET(python-lib-consumer ALL COMMAND ${Python_EXECUTABLE} setup.py --quiet build_ext --inplace --force)
 
 ADD_DEPENDENCIES(python-lib-consumer asapo-consumer)
 
diff --git a/consumer/api/python/asapo_consumer.pyx.in b/consumer/api/python/asapo_consumer.pyx.in
index 1efc446dc622ab7fc7d1043f9a0be1cea6cde6e4..f4232d7c74a914ee65d19a50f82d9782ac7fc977 100644
--- a/consumer/api/python/asapo_consumer.pyx.in
+++ b/consumer/api/python/asapo_consumer.pyx.in
@@ -7,6 +7,7 @@ import json
 from cpython.version cimport PY_MAJOR_VERSION
 from libcpp.string cimport string
 
+
 np.import_array()
 
 cdef extern from "numpy/ndarraytypes.h":
@@ -144,7 +145,7 @@ cdef class PyConsumer:
         cdef char* ptr = <char*> data.release()
         dims[0] = meta['size']
         arr =  np.PyArray_SimpleNewFromData(1, dims, np.NPY_BYTE, ptr)
-        PyArray_ENABLEFLAGS(arr,np.NPY_OWNDATA)
+        PyArray_ENABLEFLAGS(arr,np.NPY_ARRAY_OWNDATA)
         return arr,meta
     def get_next(self, group_id, meta_only = True, stream = "default"):
         return self._op("next",group_id,stream,meta_only,0)
@@ -169,7 +170,7 @@ cdef class PyConsumer:
         dims[0] = meta['size']
         cdef char* ptr = <char*> data.release()
         arr =  np.PyArray_SimpleNewFromData(1, dims, np.NPY_BYTE, ptr)
-        PyArray_ENABLEFLAGS(arr,np.NPY_OWNDATA)
+        PyArray_ENABLEFLAGS(arr,np.NPY_ARRAY_OWNDATA)
         return arr
     def get_current_size(self, stream = "default"):
         cdef Error err
diff --git a/consumer/api/python/setup.py.in b/consumer/api/python/setup.py.in
index 655dd52cb18c5630a51cd97a4c1426aaabc7c146..24a0c166ccbcac6b75d1e5fbfc48b4dc340adedd 100644
--- a/consumer/api/python/setup.py.in
+++ b/consumer/api/python/setup.py.in
@@ -8,6 +8,7 @@ import numpy
 module = Extension("asapo_consumer", ["asapo_consumer.pyx"],
                        extra_objects=['$<TARGET_FILE:asapo-consumer>','$<TARGET_FILE:asapo-fabric>',
                                       '@CURL_LIBRARIES@'],
+                       define_macros=[("NPY_NO_DEPRECATED_API", "NPY_1_7_API_VERSION")],
                        include_dirs=["@ASAPO_CXX_COMMON_INCLUDE_DIR@","@ASAPO_CONSUMER_INCLUDE_DIR@",numpy.get_include()],
                        extra_compile_args=@EXTRA_COMPILE_ARGS@,
                        extra_link_args=@EXTRA_LINK_ARGS@,
@@ -15,6 +16,6 @@ module = Extension("asapo_consumer", ["asapo_consumer.pyx"],
          )
 
 
-ext_modules = cythonize([module],compiler_directives={'embedsignature': True})
+ext_modules = cythonize([module],compiler_directives={'embedsignature': True,'language_level': 2})
 
 setup(ext_modules = ext_modules)
diff --git a/examples/producer/dummy-data-producer/dummy_data_producer.cpp b/examples/producer/dummy-data-producer/dummy_data_producer.cpp
index d0626ac4910598d259ee6c48c76ffecf57ddeb52..3c0345b09a3f53599caf626fb1c44b0c71a63ec8 100644
--- a/examples/producer/dummy-data-producer/dummy_data_producer.cpp
+++ b/examples/producer/dummy-data-producer/dummy_data_producer.cpp
@@ -133,7 +133,8 @@ bool SendDummyData(asapo::Producer* producer, size_t number_of_byte, uint64_t it
 
     asapo::Error err;
     if (iterations == 0) {
-        err = producer->SendMetadata("{\"dummy_meta\":\"test\"}", &ProcessAfterMetaDataSend);
+        auto mode = asapo::MetaIngestMode{asapo::MetaIngestOp::kReplace, true};
+        err = producer->SendBeamtimeMetadata("{\"dummy_meta\":\"test\"}", mode, &ProcessAfterMetaDataSend);
         if (err) {
             std::cerr << "Cannot send metadata: " << err << std::endl;
             return false;
diff --git a/producer/api/cpp/include/asapo/producer/producer.h b/producer/api/cpp/include/asapo/producer/producer.h
index 9d09d71f8ee4093f503052a0a57df5332ff9ee33..f77aae08db7c90be4c523a48128a01670e8269af 100644
--- a/producer/api/cpp/include/asapo/producer/producer.h
+++ b/producer/api/cpp/include/asapo/producer/producer.h
@@ -134,6 +134,7 @@ class Producer {
     //! Sends beamtime metadata to the receiver
     /*!
       \param metadata - a JSON string with metadata
+      \param MetaIngestMode - a JSON string with metadata
       \param callback - callback function
       \return Error - will be nullptr on success
     */
diff --git a/producer/api/python/CMakeLists_Linux.cmake b/producer/api/python/CMakeLists_Linux.cmake
index de40245e9da800c6b40124f03d59d855ec7650b0..566598a58ebac1efee88fd1115f49372dca9903e 100644
--- a/producer/api/python/CMakeLists_Linux.cmake
+++ b/producer/api/python/CMakeLists_Linux.cmake
@@ -15,7 +15,7 @@ configure_files(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} @ONLY)
 file(GENERATE OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/setup.py INPUT ${CMAKE_CURRENT_BINARY_DIR}/setup.py)
 
 ADD_CUSTOM_TARGET(python-lib-producer ALL
-        COMMAND ${Python_EXECUTABLE} setup.py build_ext --inplace --force)
+        COMMAND ${Python_EXECUTABLE} setup.py  --quiet build_ext --inplace --force)
 
 ADD_DEPENDENCIES(python-lib-producer asapo-producer)
 
diff --git a/producer/api/python/asapo_producer.pyx.in b/producer/api/python/asapo_producer.pyx.in
index d0101a01b7e853d53350f2413296230c7fe6cff7..0f236b9888173fd6a06c1b29258f554ebb043fd0 100644
--- a/producer/api/python/asapo_producer.pyx.in
+++ b/producer/api/python/asapo_producer.pyx.in
@@ -1,5 +1,5 @@
 #distutils: language=c++
-
+#cython: language_level=2
 
 cimport asapo_producer
 import numpy as np
diff --git a/producer/api/python/setup.py.in b/producer/api/python/setup.py.in
index 75da93f36dc9089f197759b1a042245b2b8eb4c6..00b03adb041f4b9ef219b17d4b5310b133ca3da9 100644
--- a/producer/api/python/setup.py.in
+++ b/producer/api/python/setup.py.in
@@ -8,15 +8,13 @@ import numpy
 module = Extension("asapo_producer", ["asapo_producer.pyx"],
                        extra_objects=['$<TARGET_FILE:asapo-producer>',
                                       '@CURL_LIBRARIES@'],
+                       define_macros=[("NPY_NO_DEPRECATED_API", "NPY_1_7_API_VERSION")],
                        include_dirs=["@ASAPO_CXX_COMMON_INCLUDE_DIR@","@ASAPO_PRODUCER_INCLUDE_DIR@",numpy.get_include()],
                        extra_compile_args=@EXTRA_COMPILE_ARGS@,
                        extra_link_args=@EXTRA_LINK_ARGS@,
                        language="c++",
          )
 
-ext_modules = cythonize([module],compiler_directives={'embedsignature': True})
+ext_modules = cythonize([module],compiler_directives={'embedsignature': True,'language_level': 2})
 
-setup(ext_modules = ext_modules,
-      setup_requires=["numpy","cython>=0.28"],
-      install_requires=["numpy","cython>=0.28"]
-)
+setup(ext_modules = ext_modules)
diff --git a/receiver/src/receiver_data_server/request_handler/receiver_data_server_request_handler.cpp b/receiver/src/receiver_data_server/request_handler/receiver_data_server_request_handler.cpp
index 59406f7f2606fb5ac28394527a61d3d1d0166799..6de6edf6f542a6c9c1091ad2ea703cc957b799ff 100644
--- a/receiver/src/receiver_data_server/request_handler/receiver_data_server_request_handler.cpp
+++ b/receiver/src/receiver_data_server/request_handler/receiver_data_server_request_handler.cpp
@@ -101,6 +101,8 @@ void ReceiverDataServerRequestHandler::HandleInvalidRequest(const ReceiverDataSe
     case NetworkErrorCode::kNetErrorNotSupported:
         log__->Error("unsupported client, version: " + std::string(receiver_request->header.api_version));
         break;
+    default:
+        break;
     };
 
 }
diff --git a/tests/automatic/producer/beamtime_metadata/beamtime_metadata.cpp b/tests/automatic/producer/beamtime_metadata/beamtime_metadata.cpp
index 65054a791bdf64f41473bae37a08d33b09e9052e..5bfcc200d8bee4069cf011988795c3caac46250e 100644
--- a/tests/automatic/producer/beamtime_metadata/beamtime_metadata.cpp
+++ b/tests/automatic/producer/beamtime_metadata/beamtime_metadata.cpp
@@ -53,8 +53,8 @@ void ProcessAfterSend(asapo::RequestCallbackPayload payload, asapo::Error err) {
 }
 
 bool SendMetaData(asapo::Producer* producer) {
-
-    auto err = producer->SendMetadata("hello", &ProcessAfterSend);
+    auto mode = asapo::MetaIngestMode{asapo::MetaIngestOp::kReplace, true};
+    auto err = producer->SendBeamtimeMetadata("hello", mode, &ProcessAfterSend);
     if (err) {
         std::cerr << "Cannot send metadata: " << err << std::endl;
         return false;