/// <summary>
        /// Adds new Emails route.
        /// </summary>
        /// <param name="pattern">Match pattern.</param>
        /// <param name="mailbox">Mailbox to route.</param>
        /// <param name="Description">Description.</param>
        /// <param name="domainID">DomainName ID.</param>
        /// <returns></returns>
        public DataRow AddRoute(string pattern,string mailbox,string Description,string domainID)
        {
            DataRow retVal = null;

            switch(m_DB_Type)
            {
                #region DB_Type.XML

                case DB_Type.XML:
                    //-- Find domainName from domainID ---------------------------//
                    string domainName = "";
                    foreach(DataRowView drV in this.GetDomainList()){
                        if(drV["DomainID"].ToString().ToUpper() == domainID.ToUpper()){
                            domainName = drV["DomainName"].ToString();
                        }
                    }

                    DataSet dsRoutingCopy = dsRouting.Copy();

                    DataRow dr = dsRoutingCopy.Tables["Routing"].NewRow();
                    dr["RouteID"]     = Guid.NewGuid().ToString();
                    dr["Pattern"]     = pattern;
                    dr["Mailbox"]     = mailbox;
                    dr["Description"] = Description;
                    dr["DomainID"]    = domainID;
                    dr["DomainName"]  = domainName;

                    dsRoutingCopy.Tables["Routing"].Rows.Add(dr);
                    dsRoutingCopy.Tables["Routing"].Columns.Remove("Length");
                    dsRoutingCopy.WriteXml(m_DataPath + "Routing.xml",XmlWriteMode.IgnoreSchema);

                    if(!dsRoutingCopy.Tables["Routing"].Columns.Contains("Length")){
                        dsRoutingCopy.Tables["Routing"].Columns.Add("Length",Type.GetType("System.String"),"Len(Pattern)");
                    }

                    retVal = dr;

                    break;

                #endregion

                #region DB_Type.MSSQL

                    case DB_Type.MSSQL:
                        using(WSqlCommand sqlCmd = new WSqlCommand(m_ConStr,"lspr_AddRoute")){
                            sqlCmd.AddParameter("@Pattern"     ,SqlDbType.NVarChar         ,pattern);
                            sqlCmd.AddParameter("@Mailbox"     ,SqlDbType.NVarChar         ,mailbox);
                            sqlCmd.AddParameter("@Description" ,SqlDbType.NVarChar         ,Description);
                            sqlCmd.AddParameter("@DomainID"    ,SqlDbType.UniqueIdentifier ,domainID);

                            DataSet ds = sqlCmd.Execute();
                            ds.Tables[0].TableName = "Routing";

                            if(ds.Tables["Routing"].Rows.Count > 0){
                                return ds.Tables["Routing"].Rows[0];
                            }
                        }
                        break;

                    #endregion

                #region DB_Type.WebServices

                case DB_Type.WebServices:
                    using(RemoteAdmin eng = new RemoteAdmin()){
                        _Core.InitWebService(m_WebServicesUrl,m_WebServicesPwd,m_WebServicesUser,eng);

                        return eng.AddRoute(pattern,mailbox,Description,domainID).Tables["Routing"].Rows[0];
                    }

                #endregion
            }

            return retVal;
        }