diff --git a/config.sample.json b/config.sample.json
new file mode 100644
index 0000000..65a82b7
--- /dev/null
+++ b/config.sample.json
@@ -0,0 +1,230 @@
+{
+    "handler_name": "MKIOS-TEST",
+    "pull_interval_ms": 300,
+    "partner": {
+        "pin": "1212",
+        "modem": {
+            "dev": "/home/adhisimon/ttyUSB0ksa"
+        }
+    },
+    "products": [
+        "_TST1",
+        "_DUMMY5",
+        "_DUMMY10",
+        "TSEL5",
+        "TSEL10",
+        "TSEL15",
+        "TSEL20",
+        "TSEL25",
+        "TSEL40",
+        "TSEL50",
+        "TSEL100",
+        "TSEL150",
+        "TSEL200"
+
+    ],
+    "remote_products": {
+        "TST1": "*777*<DESTINATION>*5*<PIN>#,5000",
+        "DUMMY5": "*369*3*<DESTINATION>*5*<PIN>#,5000",
+        "_DUMMY10": "*369*3*<DESTINATION>*10*<PIN>#,10000",
+        "_DUMMY5": "*369*2*<DESTINATION>*1*101*<PIN>#,2GBCOMBO",
+        "DUMMY10": "*777*<DESTINATION>*025*<PIN>#,10000",
+        "TSEL5": "*777*<DESTINATION>*5*<PIN>#,5000",
+        "TSEL10": "*777*<DESTINATION>*10*<PIN>#,10000",
+        "TSEL15": "*777*<DESTINATION>*10*<PIN>#,15000",
+        "TSEL20": "*777*<DESTINATION>*020*<PIN>#,20000",
+        "TSEL25": "*777*<DESTINATION>*025*<PIN>#,25000",
+        "TSEL40": "*777*<DESTINATION>*040*<PIN>#,40000",
+        "TSEL50": "*777*<DESTINATION>*050*<PIN>#,50000",
+        "TSEL100": "*777*<DESTINATION>*0100*<PIN>#,100000",
+        "TSEL150": "*777*<DESTINATION>*0150*<PIN>#,150000",
+        "TSEL200": "*777*<DESTINATION>*0200*<PIN>#,200000"
+
+    },
+    "ussd_parser": {
+        "destination": [
+            { "pattern": "Transaksi ke (\\d+) pada" },
+            { "pattern": "Pembelian 1 buah voucher <.+?> senilai <\\d+> untuk <(\\d+)" },
+            { "pattern": "Transaksi bulk <\\d+ IDR> untuk <\\d+" }
+        ],
+        "product": [
+            { "pattern": "senilai SimPATI: (\\d+) " },
+            { "pattern": "senilai <\\d+> untuk"},
+            { "pattern": "Transaksi bulk <(\\d+) IDR>"}
+        ],
+        "sn": [
+            { "pattern": "SN <(\\d+)>"}
+        ],
+        "rc": [
+            { "pattern": "berhasil", "rc": "00"},
+            { "pattern": "Nomer tidak ditemukan", "rc": "14" },
+            { "pattern": "Nomer tdk ditemukan", "rc": "14" },
+            { "pattern": "dalam blacklist", "rc": "14" },
+
+            { "pattern": "sistem sedang sibuk", "rc": "90" },
+            { "pattern": "tidak dapat mengisi", "rc": "40" },
+            { "pattern": "telah melebihi batas pembelian", "rc": "40" },
+            { "pattern": "tidak dapat membelikan", "rc": "40" },
+            { "pattern": "tidak bisa mengulang", "rc": "40" },
+            { "pattern": "tidak dapat mendaftar paket", "rc": "40" },
+            { "pattern": "yg anda miliki telah habis", "rc": "40" },
+            { "pattern": "nomor yang anda isi telah terkunci", "rc": "14" },
+            { "pattern": "tidak dapat kami proses", "rc": "40" },
+            { "pattern": "sisa pulsa dari pengisian pulsa telah melewati batas limit", "rc": "40" },
+            { "pattern": "kode akses tidak sesuai dengan tipe kartu", "rc": "40" },
+            { "pattern": "belum bisa diproses", "rc": "40" },
+            { "pattern": "tidak memungkinkan untuk diisi ulang pada saat ini", "rc": "40" },
+            { "pattern": "stock voucher yang diminta tidak mencukupi", "rc": "12" },
+            { "pattern": "tidak dapat dilakukan", "rc": "40" },
+            { "pattern": "Nmr plg ditolak", "rc": "14" },
+            { "pattern": "Nmr expired atau over limit", "rc": "14" },
+            { "pattern": "Nmr plg exp atau pulsa over", "rc": "14" },
+            { "pattern": "Pulsa over kuota", "rc": "40" },
+            { "pattern": "Nmr plg exp", "rc": "14" },
+            { "pattern": "Kode Paket yang Anda masukkan tidak tersedia", "rc": "12" },
+
+            { "pattern": "Maaf,", "rc": "40" },
+            { "pattern": "Gagal", "rc": "40" },
+            { "pattern": "gagal", "rc": "40" }
+        ],
+        "stock": {
+            "product": [
+                { "pattern": "Stok anda (.+?)=" }
+            ],
+            "balance": [
+                { "pattern": "Stok anda .+?=(\\d+)" }
+            ]
+        }
+    },
+    "sms_parser": {
+        "allowed_sender": [
+            "MKIOS",
+            "3636"
+        ],
+        "destination": [
+            { "pattern": "Isi ulang paket Flash (\\d+) pd .+? .+? berhasil. Voucher senilai Rp\\.\\d+\\. Nomor seri \\d+"},
+            { "pattern": "Isi ulang (\\d+) pd", "prefix": "0" },
+            { "pattern": "Transaksi ke (\\d+) pada", "prefix": "0" },
+            { "pattern": "Pembelian 1 buah voucher <.+?> senilai <\\d+> untuk <(\\d+)", "prefix": "0" },
+            { "pattern": "Transaksi bulk <\\d+ IDR> untuk <\\d+", "prefix": "0" }
+        ],
+        "product": [
+            { "pattern": "Isi ulang paket Flash \\d+ pd .+? .+? berhasil. Voucher senilai Rp\\.(\\d+)\\. Nomor seri \\d+"},
+            { "pattern": "Voucher SimPATI senilai (.+?)\\." },
+            { "pattern": "senilai SimPATI: (\\d+) " },
+            { "pattern": "senilai <\\d+> untuk"},
+            { "pattern": "Transaksi bulk <(\\d+) IDR>"}
+        ],
+        "trx_date": [
+            { "pattern": "Isi ulang paket Flash \\d+ pd (.+?) .+? berhasil. Voucher senilai Rp\\.\\d+\\. Nomor seri \\d+"},
+            { "pattern": "Isi ulang \\d+ pd\\s+(.+?) \\d" },
+            { "pattern": "Transaksi ke \\d+ pada\\s+(.+?) \\d" }
+        ],
+        "sn": [
+            { "pattern": "Nomor seri (\\d+)"},
+            { "pattern": "SN (\\d+)"},
+            { "pattern": "SN <(\\d+)>"}
+        ],
+        "rc": [
+            { "pattern": "berhasil", "value": "00"},
+            { "pattern": "Nomer tidak ditemukan", "value": "14" },
+            { "pattern": "dalam blacklist", "value": "14" },
+            { "pattern": "gagal", "value": "40"}
+        ],
+        "stock": {
+            "product": [
+                { "pattern": "stock Anda saat ini (.+?)=" },
+                { "pattern": "Sisa stok (.+?)=" },
+                { "pattern": "Stok anda (.+?)=" },
+                { "pattern": "voucher (bulk) anda yang tersedia:"},
+                { "pattern": "Stok Anda setelah pengisian adalah <\\d+ (IDR)>."}
+            ],
+            "balance": [
+                { "pattern": "stock Anda saat ini .+?=(\\d+)" },
+                { "pattern": "Sisa stok .+?=(\\d+)" },
+                { "pattern": "Stok anda .+?=(\\d+)" },
+                { "pattern": "voucher bulk anda yang tersedia:\\s+(\\d+) IDR" },
+                { "pattern": "Stok Anda setelah pengisian adalah <(\\d+) IDR>." }
+            ],
+            "multistock": {
+                "must_have_pattern": "Stok voucher Anda yang tersedia: SimPATI",
+                "pattern": "V\\d+=\\d+",
+                "flags": "g",
+                "separator": "="
+            }
+        }
+    },
+    "remote_product_alias": {
+        "bulk": "BULK",
+        "IDR": "BULK",
+        "1rb": "1000",
+        "5rb": "5000",
+        "10rb": "10000",
+        "15rb": "15000",
+        "20rb": "20000",
+        "25rb": "25000",
+        "40rb": "40000",
+        "50rb": "50000",
+        "80rb": "80000",
+        "100rb": "100000",
+        "150rb": "150000",
+        "200rb": "200000",
+        "300rb": "300000",
+        "500rb": "500000",
+        "1jt": "1000000",
+        "1K": "1000",
+        "5K": "5000",
+        "10K": "10000",
+        "15K": "15000",
+        "20K": "20000",
+        "25K": "25000",
+        "40K": "40000",
+        "50K": "50000",
+        "80K": "80000",
+        "100K": "100000",
+        "150K": "150000",
+        "200K": "200000",
+        "300K": "300000",
+        "500K": "500000",
+        "1000K": "1000000",
+        "1": "1000",
+        "5": "5000",
+        "10": "10000",
+        "15": "15000",
+        "20": "20000",
+        "25": "25000",
+        "40": "40000",
+        "50": "50000",
+        "80": "80000",
+        "100": "100000",
+        "150": "150000",
+        "200": "200000",
+        "300": "300000",
+        "500": "500000",
+        "1000": "1000000",
+        "V1": "1000",
+        "V5": "5000",
+        "V10": "10000",
+        "V15": "15000",
+        "V20": "20000",
+        "V25": "25000",
+        "V40": "40000",
+        "V50": "50000",
+        "V80": "80000",
+        "V100": "100000",
+        "V150": "150000",
+        "V200": "200000",
+        "V300": "300000",
+        "V500": "500000",
+        "V1000": "1000000"
+    },
+    "control_panel": {
+        "listen_port": "37201",
+        "url": "http://localhost:37201/"
+    },
+    "apiserver": {
+        "port": "37202",
+        "apikey": "ccc558f508c289078f7d652458921aad66cf9b1b",
+        "url": "http://localhost:37202/apikey/ccc558f508c289078f7d652458921aad66cf9b1b"
+    }
+}
diff --git a/lib/partner-mkios.js b/lib/partner-mkios.js
index 6bf239f..6fb0c6b 100644
--- a/lib/partner-mkios.js
+++ b/lib/partner-mkios.js
@@ -12,6 +12,11 @@ const matrix = require('komodo-sdk/matrix');
 
 const modemDashboard = require('./modem-dashboard');
 
+if (!config || !config.partner || !config.partner.pin) {
+    logger.warn('Undefined PIN');
+    process.exit(1);
+}
+
 matrix.modem = {};
 matrix.not_ready = true;
 matrix.stock = {};
@@ -29,7 +34,15 @@ let last_trx_id = null;
 
 modem.on('open', function() {
     logger.info('Modem opened');
-    modem.sendUSSD('*776*' + config.partner.pin + '#', function() {});
+
+    const ussd_command = '*776*' + config.partner.pin + '#';
+    db.run("INSERT INTO ussd VALUES (?, ?, 'OUT', ?, ?)", moment().format('YYYY-MM-DD HH:mm:ss'), moment().format('YYYY-MM-DD'), matrix.modem.imsi, 'AT+CUSD=1,"' + ussd_command + '",15', function(err) {
+        if (err) {
+            logger.warn('Error inserting ussd command (stock check) to local database', {err: err});
+        }
+    });
+
+    modem.sendUSSD(ussd_command, function() {});
 })
 
 modem.on('imsi', function(imsi) {
diff --git a/pid.txt b/pid.txt
index b606877..c599513 100644
--- a/pid.txt
+++ b/pid.txt
@@ -1 +1 @@
-6300
\ No newline at end of file
+6543
\ No newline at end of file