/// <summary>
        /// Connect only DI Api
        /// </summary>
        /// <param name="serverName">SQL Server Name</param>
        /// <param name="serverType">Server type</param>
        /// <param name="companyDb"></param>
        /// <param name="dbUsername"></param>
        /// <param name="dbPassword"></param>
        /// <param name="username">SBO Username</param>
        /// <param name="password">SBO Password</param>
        /// <param name="licenceServer">Licence Server</param>
        public static void DiConnect(string serverName, SAPbobsCOM.BoDataServerTypes serverType, string companyDb,
                                     string dbUsername = null, string dbPassword = null, string username = null, string password = null, string licenceServer = null)
        {
            _diCompany = new SAPbobsCOM.Company
            {
                Server       = serverName,
                DbServerType = serverType,
                CompanyDB    = companyDb
            };

            if (licenceServer != null)
            {
                _diCompany.LicenseServer = licenceServer;
            }

            if (string.IsNullOrEmpty(username))
            {
                _diCompany.UseTrusted = true;
            }
            else
            {
                _diCompany.UseTrusted = false;
                _diCompany.UserName   = username;
                _diCompany.Password   = password;
                _diCompany.DbUserName = dbUsername;
                _diCompany.DbPassword = dbPassword;
            }

            var connectResponse = _diCompany.Connect();

            if (connectResponse != 0)
            {
                int    errCode;
                string errMsg;
                _diCompany.GetLastError(out errCode, out errMsg);

                Logger.Debug($"Servername={serverName}, CompanyDb={companyDb}, ServerType={serverType}, " +
                             $"DbUsername={dbUsername}, DbPassword={dbPassword}, " +
                             $"SboUsername={username}, SboPassword={password}, " +
                             $"UseTrusted={_diCompany.UseTrusted}, " +
                             $"LicenceServer={licenceServer}");

                throw new Exception($"DI Connect Error: {errCode} {errMsg}");
            }

            if (serverType == BoDataServerTypes.dst_HANADB)
            {
                HanaHandlers.Register();
            }
        }
        private static void InitializeServerVariables(out SAPbobsCOM.BoDataServerTypes dbType, out String DatabaseName, out String Server, out String LicenseServer, out String User, out String Password
                                                      , out String sUseTrusted, out String dbUserName, out String dbPassword)
        {
            TWM_Licence.TWM_SAP oEncrypter = new TWM_Licence.TWM_SAP(new Byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 10, 73, 1, 5, 75, 1, 8 });
            //Initialize all the environment variable for config file.
            //If nonspecified strings, write the default to config file.

            //Get the dbServerType
            if (frmSetting.GetConfigLine(sConfig_File, "dbServerType") != null)
            {
                dbType = (SAPbobsCOM.BoDataServerTypes) int.Parse(frmSetting.GetConfigLine(sConfig_File, "dbServerType"));
            }
            else
            {
                dbType = SAPbobsCOM.BoDataServerTypes.dst_MSSQL2008;
                frmSetting.WriteConfigFile(sConfig_File, "dbServerType", ((int)dbType).ToString(), frmSetting.WriteType.Append);
            }


            //Get the DatabaseName
            if (frmSetting.GetConfigLine(sConfig_File, "DatabaseName") != null)
            {
                DatabaseName = frmSetting.GetConfigLine(sConfig_File, "DatabaseName");
            }
            else
            {
                DatabaseName = "UNZA";
                frmSetting.WriteConfigFile(sConfig_File, "DatabaseName", DatabaseName, frmSetting.WriteType.Append);
            }


            //Get the Server
            if (frmSetting.GetConfigLine(sConfig_File, "ServerName") != null)
            {
                Server = frmSetting.GetConfigLine(sConfig_File, "ServerName");
            }
            else
            {
                Server = "sapserver";
                frmSetting.WriteConfigFile(sConfig_File, "ServerName", Server, frmSetting.WriteType.Append);
            }


            //Get the License Server
            if (frmSetting.GetConfigLine(sConfig_File, "LicenseServer") != null)
            {
                LicenseServer = frmSetting.GetConfigLine(sConfig_File, "LicenseServer");
            }
            else
            {
                LicenseServer = "sapserver:30000";
                frmSetting.WriteConfigFile(sConfig_File, "LicenseServer", LicenseServer, frmSetting.WriteType.Append);
            }


            //Get the User
            if (frmSetting.GetConfigLine(sConfig_File, "User") != null)
            {
                User = frmSetting.GetConfigLine(sConfig_File, "User");
            }
            else
            {
                User = "******";
                frmSetting.WriteConfigFile(sConfig_File, "User", User, frmSetting.WriteType.Append);
            }

            //Get the Password
            if (frmSetting.GetConfigLine(sConfig_File, "Password") != null)
            {
                Password = frmSetting.GetConfigLine(sConfig_File, "Password");
                Password = oEncrypter.Decrypt(Password);
            }
            else
            {
                Password = "******";
                String EncryptedPass = oEncrypter.Encrypt(Password);
                frmSetting.WriteConfigFile(sConfig_File, "Password", EncryptedPass, frmSetting.WriteType.Append);
            }


            //Get the UseTrusted
            if (frmSetting.GetConfigLine(sConfig_File, "UseTrusted") != null)
            {
                sUseTrusted = frmSetting.GetConfigLine(sConfig_File, "UseTrusted");
            }
            else
            {
                sUseTrusted = "0";
                frmSetting.WriteConfigFile(sConfig_File, "UseTrusted", sUseTrusted, frmSetting.WriteType.Append);
            }


            //if Not UseTrusted, Get The DBUserName And DBPassword
            if (sUseTrusted != "1")
            {
                //Get the User
                if (frmSetting.GetConfigLine(sConfig_File, "DBUserName") != null)
                {
                    dbUserName = frmSetting.GetConfigLine(sConfig_File, "DBUserName");
                }
                else
                {
                    dbUserName = "******";
                    frmSetting.WriteConfigFile(sConfig_File, "DBUserName", dbUserName, frmSetting.WriteType.Append);
                }


                //Get the Password
                if (frmSetting.GetConfigLine(sConfig_File, "DBPassword") != null)
                {
                    dbPassword = frmSetting.GetConfigLine(sConfig_File, "DBPassword");
                    dbPassword = oEncrypter.Decrypt(dbPassword);
                }
                else
                {
                    dbPassword = "******";
                    String EncryptedPass = oEncrypter.Encrypt(dbPassword);
                    frmSetting.WriteConfigFile(sConfig_File, "DBPassword", EncryptedPass, frmSetting.WriteType.Append);
                }
            }
            else
            {
                dbUserName = "";
                dbPassword = "";
            }
        }
        static void Main(String[] Args)
        {
            //Create an Event Log
            if (Args.Length == 0)
            {
                SAPbouiCOM.SboGuiApi oGUI = new SAPbouiCOM.SboGuiApi();
                oGUI.Connect(eCommon.SBOConnectionString);
                try
                {
                    eCommon.SetApplication(oGUI.GetApplication(-1), gcAddOnName, true);
                    //SBOAddon_DB addOnDb = new SBOAddon_DB();

                    SBOAddon oAddOn = new SBOAddon();
                    if (oAddOn.Connected)
                    {
                        System.Windows.Forms.Application.Run();
                    }
                }
                catch (Exception Ex)
                {
                    System.Windows.Forms.MessageBox.Show("ERROR - Connection failed: " + Ex.Message);;
                }
            }
            else
            {
                switch (Args[0].ToUpper())
                {
                case "READNUPDATE":
                    eCommon.CreateLogFileNoUI();
                    try
                    {
                        SAPbobsCOM.BoDataServerTypes ServerType = BoDataServerTypes.dst_MSSQL2012;
                        String Server     = null;
                        String LicServer  = null;
                        String CompDB     = null;
                        String UserName   = null;
                        String Password   = null;
                        String UseTrusted = "0";
                        String DBUserName = null;
                        String DBPassword = null;
                        InitializeServerVariables(out ServerType, out CompDB, out Server, out LicServer, out UserName, out Password, out UseTrusted, out DBUserName, out DBPassword);
                        eCommon.InitCompany(ServerType, Server, LicServer, CompDB, UserName, Password);
                    }
                    catch (Exception Ex)
                    {
                        eCommon.WriteEventLog("Could not connect to company. " + Ex.Message);
                    }

                    if (eCommon.oCompany.Connected)
                    {
                        ReadAndUpdateDB _rnu = new ReadAndUpdateDB();
                    }

                    break;

                case "SETTING":
                    frmSetting frm = new frmSetting();
                    frm.ShowDialog();
                    break;
                }
            }
        }