diff --git a/common/cpp/include/asapo/common/networking.h b/common/cpp/include/asapo/common/networking.h
index bc8cae313624397fe059db3f01b8adb172a534a0..a52c437c2657251a14c0cae36e6a9c6c14fec469 100644
--- a/common/cpp/include/asapo/common/networking.h
+++ b/common/cpp/include/asapo/common/networking.h
@@ -18,16 +18,18 @@ enum class NetworkConnectionType : uint32_t {
     kFabric, // Fabric connection (Primarily used for InfiniBand verbs)
 };
 
+
+// do not forget to add new codes to the end!
 enum Opcode : uint8_t {
     kOpcodeUnknownOp = 1,
     kOpcodeTransferData,
     kOpcodeTransferDatasetData,
     kOpcodeStreamInfo,
-    kOpcodeDeleteStream,
     kOpcodeLastStream,
     kOpcodeGetBufferData,
     kOpcodeAuthorize,
     kOpcodeTransferMetaData,
+    kOpcodeDeleteStream,
     kOpcodeCount,
 };
 
diff --git a/common/cpp/src/database/mongodb_client.cpp b/common/cpp/src/database/mongodb_client.cpp
index 43a97531831d3dc097c7256fe7a45fca003297b0..ba8969ed7a3d3cd187f46ea5039b65b29c0f3187 100644
--- a/common/cpp/src/database/mongodb_client.cpp
+++ b/common/cpp/src/database/mongodb_client.cpp
@@ -361,7 +361,7 @@ Error MongoDBClient::GetDataSetById(const std::string &collection,
 
 }
 
-Error UpdateStreamInfoFromEarliestRecord(const std::string &earliest_record_str,
+Error   UpdateStreamInfoFromEarliestRecord(const std::string &earliest_record_str,
                                          StreamInfo* info) {
     std::chrono::system_clock::time_point timestamp_created;
     auto parser = JsonStringParser(earliest_record_str);
@@ -428,6 +428,10 @@ Error MongoDBClient::GetStreamInfo(const std::string &collection, StreamInfo* in
     std::string last_record_str, earliest_record_str;
     auto err = GetRecordFromDb(collection, 0, GetRecordMode::kLast, &last_record_str);
     if (err) {
+        if (err == DBErrorTemplates::kNoRecord) { // with noRecord error it will return last_id = 0 which can be used to understand that the stream is not started yet
+            *info = StreamInfo{};
+            return nullptr;
+        }
         return err;
     }
     err = GetRecordFromDb(collection, 0, GetRecordMode::kEarliest, &earliest_record_str);
diff --git a/tests/automatic/mongo_db/insert_retrieve/insert_retrieve_mongodb.cpp b/tests/automatic/mongo_db/insert_retrieve/insert_retrieve_mongodb.cpp
index e7724e3c871f8a9cc2672c35b57d1aab9da134da..ac95431b257f15d3cfc9d3279937a7ec042c1fdf 100644
--- a/tests/automatic/mongo_db/insert_retrieve/insert_retrieve_mongodb.cpp
+++ b/tests/automatic/mongo_db/insert_retrieve/insert_retrieve_mongodb.cpp
@@ -101,15 +101,15 @@ int main(int argc, char* argv[]) {
         db.Insert("acks_test_blabla1", fi, false);
         db.DeleteStream("test");
         err = db.GetStreamInfo("data_test", &info);
-        M_AssertTrue(err!=nullptr);
+        M_AssertTrue(info.last_id == 0);
         err = db.GetStreamInfo("inprocess_test_blabla", &info);
-        M_AssertTrue(err!=nullptr);
+        M_AssertTrue(info.last_id == 0);
         err = db.GetStreamInfo("inprocess_test_blabla1", &info);
-        M_AssertTrue(err!=nullptr);
+        M_AssertTrue(info.last_id == 0);
         err = db.GetStreamInfo("acks_test_blabla", &info);
-        M_AssertTrue(err!=nullptr);
+        M_AssertTrue(info.last_id == 0);
         err = db.GetStreamInfo("acks_test_blabla1", &info);
-        M_AssertTrue(err!=nullptr);
+        M_AssertTrue(info.last_id == 0);
         err = db.DeleteStream("test1");
         M_AssertTrue(err==nullptr);
     }
diff --git a/tests/automatic/producer/python_api/producer_api.py b/tests/automatic/producer/python_api/producer_api.py
index 10c981da4702ac11d2f9a154d3346482f816d753..2d6de1c5321425cf5f37bcd76ae72c6aa1a1bb7a 100644
--- a/tests/automatic/producer/python_api/producer_api.py
+++ b/tests/automatic/producer/python_api/producer_api.py
@@ -187,19 +187,20 @@ info = producer.stream_info('stream')
 assert_eq(info['lastId'], 3, "last id from different stream")
 assert_eq(info['finished'], True, "stream finished")
 
+info = producer.stream_info('not_exist')
+assert_eq(info['lastId'], 0, "last id from non existing stream")
+
+
 info_last = producer.last_stream()
 assert_eq(info_last['name'], "stream", "last stream")
 assert_eq(info_last['timestampCreated'] <= info_last['timestampLast'], True, "last is later than first")
 
 #delete_streams
 producer.delete_stream('stream')
-try:
-    producer.stream_info('stream')
-except asapo_producer.AsapoWrongInputError as e:
-    print(e)
-else:
-    print("should be error on stream info after stream was deleted")
-    sys.exit(1)
+producer.stream_info('stream')
+assert_eq(info['lastId'], 0, "last id from non deleted stream")
+
+
 producer.delete_stream('unknown_stream',error_on_not_exist = False)
 try:
     producer.delete_stream('unknown_stream',error_on_not_exist = True)