diff --git a/src/account.cpp b/src/account.cpp
index 0271277d845736678721825fdd4350ead08c6d8b..0efbb8e3c60db6faae663956f125c54ed5935bb6 100644
--- a/src/account.cpp
+++ b/src/account.cpp
@@ -211,7 +211,7 @@ join_string(const std::vector<unsigned> &v)
 }
 
 void
-Account::serialize(YAML::Emitter& out)
+Account::serialize(YAML::Emitter& out) const
 {
     const auto& activeCodecs = join_string(getActiveCodecs(MEDIA_ALL));
 
diff --git a/src/account.h b/src/account.h
index f2ad5c569abd5f5772d24936c50314f0bacde33c..87448e888e66c01f8f7b2161f36575885f1e061b 100644
--- a/src/account.h
+++ b/src/account.h
@@ -105,7 +105,7 @@ class Account : public Serializable, public std::enable_shared_from_this<Account
          */
         virtual void loadConfig() = 0;
 
-        virtual void serialize(YAML::Emitter &out);
+        virtual void serialize(YAML::Emitter &out) const;
         virtual void unserialize(const YAML::Node &node);
 
         /**
diff --git a/src/config/serializable.h b/src/config/serializable.h
index 9cda8bf6585e58c6e978252e1a6300126613d27f..8b73dbf370da8b5878f44874d14b659f1ecfe282 100644
--- a/src/config/serializable.h
+++ b/src/config/serializable.h
@@ -32,7 +32,7 @@ class Serializable {
 
     public:
         virtual ~Serializable() {};
-        virtual void serialize(YAML::Emitter &out) = 0;
+        virtual void serialize(YAML::Emitter &out) const = 0;
         virtual void unserialize(const YAML::Node &node) = 0;
 };
 
diff --git a/src/jamidht/jamiaccount.cpp b/src/jamidht/jamiaccount.cpp
index 03497bbc583efd04f08588318f262e727d91ea09..64ed42f268b23753799b27e7450c5d3264f7cd8f 100644
--- a/src/jamidht/jamiaccount.cpp
+++ b/src/jamidht/jamiaccount.cpp
@@ -637,7 +637,7 @@ JamiAccount::SIPStartCall(SIPCall& call, IpAddr target)
     return true;
 }
 
-void JamiAccount::serialize(YAML::Emitter &out)
+void JamiAccount::serialize(YAML::Emitter &out) const
 {
     std::lock_guard<std::mutex> lock(configurationMutex_);
 
diff --git a/src/jamidht/jamiaccount.h b/src/jamidht/jamiaccount.h
index 3eb7868ff069a74f49208a6753f3dc04da7c6daf..24324076d19d1604760acd00237d473a29f49b54 100644
--- a/src/jamidht/jamiaccount.h
+++ b/src/jamidht/jamiaccount.h
@@ -121,7 +121,7 @@ class JamiAccount : public SIPAccountBase {
          * Serialize internal state of this account for configuration
          * @param YamlEmitter the configuration engine which generate the configuration file
          */
-        virtual void serialize(YAML::Emitter &out) override;
+        virtual void serialize(YAML::Emitter &out) const override;
 
         /**
          * Populate the internal state for this account based on info stored in the configuration file
diff --git a/src/media/video/video_device_monitor.cpp b/src/media/video/video_device_monitor.cpp
index 1861ad65f7cb57d8454dd9990fe55a46f38e0b4f..924ffd7e4518e4e334056b5b075f64649eb8d6b4 100644
--- a/src/media/video/video_device_monitor.cpp
+++ b/src/media/video/video_device_monitor.cpp
@@ -312,7 +312,7 @@ VideoDeviceMonitor::overwritePreferences(VideoSettings settings)
 }
 
 void
-VideoDeviceMonitor::serialize(YAML::Emitter &out)
+VideoDeviceMonitor::serialize(YAML::Emitter &out) const
 {
     std::lock_guard<std::mutex> l(lock_);
     out << YAML::Key << "devices" << YAML::Value << preferences_;
diff --git a/src/media/video/video_device_monitor.h b/src/media/video/video_device_monitor.h
index 955f1aaad1a900b455ab11d40d07890343cd48df..71f681aadd42640a115d60de23f122e17e492781 100644
--- a/src/media/video/video_device_monitor.h
+++ b/src/media/video/video_device_monitor.h
@@ -69,8 +69,8 @@ class VideoDeviceMonitor : public Serializable
         /*
          * Interface to load from/store to the (YAML) configuration file.
          */
-        void serialize(YAML::Emitter &out);
-        virtual void unserialize(const YAML::Node &in);
+        void serialize(YAML::Emitter &out) const override;
+        virtual void unserialize(const YAML::Node &in) override;
 
     private:
         NON_COPYABLE(VideoDeviceMonitor);
diff --git a/src/preferences.cpp b/src/preferences.cpp
index 33b36f44d1dfaf328a8996637ee48fca416b7eb0..73469669a23e7963a15a5b2f28b319ad15cc3ca1 100644
--- a/src/preferences.cpp
+++ b/src/preferences.cpp
@@ -205,7 +205,7 @@ void Preferences::removeAccount(const std::string &oldAccountID)
         accountOrder_.erase(start, oldAccountID.length() + 1);
 }
 
-void Preferences::serialize(YAML::Emitter &out)
+void Preferences::serialize(YAML::Emitter &out) const
 {
     out << YAML::Key << CONFIG_LABEL << YAML::Value << YAML::BeginMap;
 
@@ -243,7 +243,7 @@ VoipPreference::VoipPreference() :
     , symmetricRtp_(true)
 {}
 
-void VoipPreference::serialize(YAML::Emitter &out)
+void VoipPreference::serialize(YAML::Emitter &out) const
 {
     out << YAML::Key << CONFIG_LABEL << YAML::Value << YAML::BeginMap;
     out << YAML::Key << PLAY_DTMF_KEY << YAML::Value << playDtmf_;
@@ -292,7 +292,7 @@ std::map<std::string, std::string> HookPreference::toMap() const
     return settings;
 }
 
-void HookPreference::serialize(YAML::Emitter &out)
+void HookPreference::serialize(YAML::Emitter &out) const
 {
     out << YAML::Key << CONFIG_LABEL << YAML::Value << YAML::BeginMap;
     out << YAML::Key << NUMBER_ADD_PREFIX_KEY << YAML::Value << numberAddPrefix_;
@@ -431,7 +431,7 @@ AudioPreference::createAudioLayer()
     return nullptr;
 }
 
-void AudioPreference::serialize(YAML::Emitter &out)
+void AudioPreference::serialize(YAML::Emitter &out) const
 {
     out << YAML::Key << CONFIG_LABEL << YAML::Value << YAML::BeginMap;
     // alsa submap
@@ -538,7 +538,7 @@ void ShortcutPreferences::setShortcuts(std::map<std::string, std::string> map)
 }
 
 
-void ShortcutPreferences::serialize(YAML::Emitter &out)
+void ShortcutPreferences::serialize(YAML::Emitter &out) const
 {
     out << YAML::Key << CONFIG_LABEL << YAML::Value << YAML::BeginMap;
     out << YAML::Key << HANGUP_SHORT_KEY << YAML::Value << hangup_;
@@ -567,7 +567,7 @@ VideoPreferences::VideoPreferences()
 {
 }
 
-void VideoPreferences::serialize(YAML::Emitter &out)
+void VideoPreferences::serialize(YAML::Emitter &out) const
 {
     out << YAML::Key << CONFIG_LABEL << YAML::Value << YAML::BeginMap;
 #ifdef RING_ACCEL
diff --git a/src/preferences.h b/src/preferences.h
index 0b6cb61f452e35a77bdc43497068489fd367ff4a..61851efb54ee009aa32b62c2a1396c4843457b75 100644
--- a/src/preferences.h
+++ b/src/preferences.h
@@ -45,8 +45,8 @@ class Preferences : public Serializable {
 
         Preferences();
 
-        void serialize(YAML::Emitter &out);
-        void unserialize(const YAML::Node &in);
+        void serialize(YAML::Emitter &out) const override;
+        void unserialize(const YAML::Node &in) override;
 
         std::string getAccountOrder() const {
             return accountOrder_;
@@ -142,8 +142,8 @@ class VoipPreference : public Serializable {
     public:
         VoipPreference();
 
-        void serialize(YAML::Emitter &out);
-        void unserialize(const YAML::Node &in);
+        void serialize(YAML::Emitter &out) const override;
+        void unserialize(const YAML::Node &in) override;
 
         bool getPlayDtmf() const {
             return playDtmf_;
@@ -197,8 +197,8 @@ class HookPreference : public Serializable {
         HookPreference();
         HookPreference(const std::map<std::string, std::string> &settings);
 
-        void serialize(YAML::Emitter &out);
-        void unserialize(const YAML::Node &in);
+        void serialize(YAML::Emitter &out) const override;
+        void unserialize(const YAML::Node &in) override;
 
         std::string getNumberAddPrefix() const {
             if (numberEnabled_)
@@ -235,8 +235,8 @@ class AudioPreference : public Serializable {
             audioApi_ = api;
         }
 
-        void serialize(YAML::Emitter &out);
-        void unserialize(const YAML::Node &in);
+        void serialize(YAML::Emitter &out) const override;
+        void unserialize(const YAML::Node &in) override;
 
         // alsa preference
         int getAlsaCardin() const {
@@ -394,8 +394,8 @@ class AudioPreference : public Serializable {
 class ShortcutPreferences : public Serializable {
     public:
         ShortcutPreferences();
-        void serialize(YAML::Emitter &out);
-        void unserialize(const YAML::Node &in);
+        void serialize(YAML::Emitter &out) const override;
+        void unserialize(const YAML::Node &in) override;
 
         void setShortcuts(std::map<std::string, std::string> shortcuts);
         std::map<std::string, std::string> getShortcuts() const;
@@ -454,8 +454,8 @@ class VideoPreferences : public Serializable {
     public:
         VideoPreferences();
 
-        void serialize(YAML::Emitter &out);
-        void unserialize(const YAML::Node &in);
+        void serialize(YAML::Emitter &out) const override;
+        void unserialize(const YAML::Node &in) override;
 
         bool getDecodingAccelerated() const {
             return decodingAccelerated_;
diff --git a/src/sip/sipaccount.cpp b/src/sip/sipaccount.cpp
index c3bd94f5b2774b90445ec424a003e6d3a05501e3..81d66999164253853bb9b540ac58e3bcb638bd4f 100644
--- a/src/sip/sipaccount.cpp
+++ b/src/sip/sipaccount.cpp
@@ -390,7 +390,7 @@ SIPAccount::SIPStartCall(std::shared_ptr<SIPCall>& call)
     return true;
 }
 
-void SIPAccount::serialize(YAML::Emitter &out)
+void SIPAccount::serialize(YAML::Emitter &out) const
 {
     std::lock_guard<std::mutex> lock(configurationMutex_);
 
diff --git a/src/sip/sipaccount.h b/src/sip/sipaccount.h
index 7e18ba617568bc3d7d1053f1fd6ae3fd5931516c..82e89670233b220b6635e6307ee19fa0fdc656d6 100644
--- a/src/sip/sipaccount.h
+++ b/src/sip/sipaccount.h
@@ -116,7 +116,7 @@ class SIPAccount : public SIPAccountBase {
          * Serialize internal state of this account for configuration
          * @param out Emitter to which state will be saved
          */
-        virtual void serialize(YAML::Emitter &out) override;
+        virtual void serialize(YAML::Emitter &out) const override;
 
         /**
          * Populate the internal state for this account based on info stored in the configuration file
diff --git a/src/sip/sipaccountbase.cpp b/src/sip/sipaccountbase.cpp
index 0d92317acbda3e84f03666fbb1d9140db7e2f8a2..4bbc12950c38859476593a0747b32ea92896923b 100644
--- a/src/sip/sipaccountbase.cpp
+++ b/src/sip/sipaccountbase.cpp
@@ -142,7 +142,7 @@ addRangeToDetails(std::map<std::string, std::string> &a, const char *minKey,
     a.emplace(maxKey, jami::to_string(range.second));
 }
 
-void SIPAccountBase::serialize(YAML::Emitter &out)
+void SIPAccountBase::serialize(YAML::Emitter &out) const
 {
     Account::serialize(out);
 
@@ -167,7 +167,7 @@ void SIPAccountBase::serialize(YAML::Emitter &out)
     out << YAML::Key << Conf::TURN_SERVER_REALM_KEY << YAML::Value << turnServerRealm_;
 }
 
-void SIPAccountBase::serializeTls(YAML::Emitter &out)
+void SIPAccountBase::serializeTls(YAML::Emitter &out) const
 {
     out << YAML::Key << Conf::CALIST_KEY << YAML::Value << tlsCaListFile_;
     out << YAML::Key << Conf::CERTIFICATE_KEY << YAML::Value << tlsCertificateFile_;
diff --git a/src/sip/sipaccountbase.h b/src/sip/sipaccountbase.h
index 6c8c8e7154388eb1d3c60eddf4985b9ab1cfc276..df6a09e16bb45d358ad1a2de763eb5ed7069e7ae 100644
--- a/src/sip/sipaccountbase.h
+++ b/src/sip/sipaccountbase.h
@@ -298,8 +298,8 @@ public: // overloaded methods
     virtual void flush() override;
 
 protected:
-    virtual void serialize(YAML::Emitter &out) override;
-    virtual void serializeTls(YAML::Emitter &out);
+    virtual void serialize(YAML::Emitter &out) const override;
+    virtual void serializeTls(YAML::Emitter &out) const;
     virtual void unserialize(const YAML::Node &node) override;
 
     virtual void setAccountDetails(const std::map<std::string, std::string> &details) override;