diff --git a/lib/register-modem.js b/lib/register-modem.js
index 96442bf..7802fec 100644
--- a/lib/register-modem.js
+++ b/lib/register-modem.js
@@ -3,9 +3,13 @@
 const path = require('path');
 const request = require('request');
 
+const locks = require('locks');
+
 const config = require('komodo-sdk/config');
 const logger = require('komodo-sdk/logger');
 
+const mutex = locks.createMutex();
+
 function reportUrl() {
     if (config.report_url.register_modem) {
         return config.report_url.register_modem;
@@ -16,29 +20,33 @@ function reportUrl() {
 }
 
 module.exports = (modemInfo) => {
-    const requestOptions = {
-        url: reportUrl(),
-        qs: {
-            modem: config.name,
-            modem_device: config.modem.device,
-            modem_imsi: modemInfo.imsi,
-            modem_msisdn: modemInfo.msisdn,
-            modem_network_id: modemInfo.networkId,
-            modem_network_name: modemInfo.networkName,
-            modem_signal_strength: modemInfo.signalStrength,
-            uptime: Math.floor(process.uptime()),
-            report_port: config.http_command_server.listen_port,
-            report_apikey: config.http_command_server.apikey,
-            report_path_sms: '/sms',
-        },
-    };
-
-    logger.info('Sending modem registration to center');
-    request(requestOptions, (err, res) => {
-        if (err) {
-            logger.warn(`Error registering modem. ${err.toString()}`);
-        } else if (res.statusCode !== 200) {
-            logger.warn(`SMS center respond with HTTP status code ${res.statusCode}.`);
-        }
-    });
+    if (mutex.tryLock()) {
+        const requestOptions = {
+            url: reportUrl(),
+            qs: {
+                modem: config.name,
+                modem_device: config.modem.device,
+                modem_imsi: modemInfo.imsi,
+                modem_msisdn: modemInfo.msisdn,
+                modem_network_id: modemInfo.networkId,
+                modem_network_name: modemInfo.networkName,
+                modem_signal_strength: modemInfo.signalStrength,
+                uptime: Math.floor(process.uptime()),
+                report_port: config.http_command_server.listen_port,
+                report_apikey: config.http_command_server.apikey,
+                report_path_sms: '/sms',
+            },
+        };
+
+        logger.info('Sending modem registration to center');
+        request(requestOptions, (err, res) => {
+            mutex.unlock();
+
+            if (err) {
+                logger.warn(`Error registering modem. ${err.toString()}`);
+            } else if (res.statusCode !== 200) {
+                logger.warn(`SMS center respond with HTTP status code ${res.statusCode}.`);
+            }
+        });
+    }
 };