diff --git a/config/cdrccfg.go b/config/cdrccfg.go
index 0a43c6cf9..bfe5c8bf9 100644
--- a/config/cdrccfg.go
+++ b/config/cdrccfg.go
@@ -19,6 +19,7 @@ along with this program. If not, see
package config
import (
+ "strings"
"time"
"github.com/cgrates/cgrates/utils"
@@ -29,7 +30,7 @@ type CdrcCfg struct {
Enabled bool // Enable/Disable the profile
DryRun bool // Do not post CDRs to the server
CdrsConns []*HaPoolConfig // The address where CDRs can be reached
- CdrFormat string // The type of CDR file to process
+ CdrFormat string // The type of CDR file to process <*csv|*opensips_flatstore>
FieldSeparator rune // The separator to use when reading csvs
DataUsageMultiplyFactor float64 // Conversion factor for data usage
Timezone string // timezone for timestamps where not specified <""|UTC|Local|$IANA_TZ_DB>
@@ -73,7 +74,7 @@ func (self *CdrcCfg) loadFromJsonCfg(jsnCfg *CdrcJsonCfg) error {
}
}
if jsnCfg.Cdr_format != nil {
- self.CdrFormat = *jsnCfg.Cdr_format
+ self.CdrFormat = strings.TrimPrefix(*jsnCfg.Cdr_format, "*")
}
if jsnCfg.Field_separator != nil && len(*jsnCfg.Field_separator) > 0 {
sepStr := *jsnCfg.Field_separator
diff --git a/config/config_defaults.go b/config/config_defaults.go
index 1fd836086..dd015dccd 100755
--- a/config/config_defaults.go
+++ b/config/config_defaults.go
@@ -33,7 +33,7 @@ const CGRATES_CFG_JSON = `
"log_level": 6, // control the level of messages logged (0-emerg to 7-debug)
"http_skip_tls_verify": false, // if enabled Http Client will accept any TLS certificate
"rounding_decimals": 5, // system level precision for floats
- "dbdata_encoding": "msgpack", // encoding used to store object data in strings:
+ "dbdata_encoding": "*msgpack", // encoding used to store object data in strings: <*msgpack|*json>
"tpexport_dir": "/var/spool/cgrates/tpe", // path towards export folder for offline Tariff Plans
"poster_attempts": 3, // number of attempts before considering post request failed (eg: *call_url, CDR replication)
"failed_posts_dir": "/var/spool/cgrates/failed_posts", // directory path where we store failed requests
@@ -245,7 +245,7 @@ const CGRATES_CFG_JSON = `
"cdrs_conns": [
{"address": "*internal"} // address where to reach CDR server. <*internal|x.y.z.y:1234>
],
- "cdr_format": "csv", // CDR file format
+ "cdr_format": "*csv", // CDR file format <*csv|*freeswitch_csv|*fwv|*opensips_flatstore|*partial_csv>
"field_separator": ",", // separator used in case of csv files
"timezone": "", // timezone for timestamps where not specified <""|UTC|Local|$IANA_TZ_DB>
"run_delay": 0, // sleep interval in seconds between consecutive runs, 0 to use automation via inotify
diff --git a/config/generalcfg.go b/config/generalcfg.go
index 81b9f2a01..a67217020 100644
--- a/config/generalcfg.go
+++ b/config/generalcfg.go
@@ -19,6 +19,7 @@ along with this program. If not, see
package config
import (
+ "strings"
"time"
"github.com/cgrates/cgrates/utils"
@@ -66,7 +67,7 @@ func (gencfg *GeneralCfg) loadFromJsonCfg(jsnGeneralCfg *GeneralJsonCfg) (err er
}
if jsnGeneralCfg.Dbdata_encoding != nil {
- gencfg.DBDataEncoding = *jsnGeneralCfg.Dbdata_encoding
+ gencfg.DBDataEncoding = strings.TrimPrefix(*jsnGeneralCfg.Dbdata_encoding, "*")
}
if jsnGeneralCfg.Default_request_type != nil {
gencfg.DefaultReqType = *jsnGeneralCfg.Default_request_type
diff --git a/config/migratorcfg.go b/config/migratorcfg.go
index beb282ef4..cca8b990d 100644
--- a/config/migratorcfg.go
+++ b/config/migratorcfg.go
@@ -18,6 +18,10 @@ along with this program. If not, see
package config
+import (
+ "strings"
+)
+
type MigratorCgrCfg struct {
OutDataDBType string
OutDataDBHost string
@@ -40,7 +44,7 @@ func (mg *MigratorCgrCfg) loadFromJsonCfg(jsnCfg *MigratorCfgJson) (err error) {
return
}
if jsnCfg.Out_dataDB_type != nil {
- mg.OutDataDBType = *jsnCfg.Out_dataDB_type
+ mg.OutDataDBType = strings.TrimPrefix(*jsnCfg.Out_dataDB_type, "*")
}
if jsnCfg.Out_dataDB_host != nil {
mg.OutDataDBHost = *jsnCfg.Out_dataDB_host
@@ -58,7 +62,7 @@ func (mg *MigratorCgrCfg) loadFromJsonCfg(jsnCfg *MigratorCfgJson) (err error) {
mg.OutDataDBPassword = *jsnCfg.Out_dataDB_password
}
if jsnCfg.Out_dataDB_encoding != nil {
- mg.OutDataDBEncoding = *jsnCfg.Out_dataDB_encoding
+ mg.OutDataDBEncoding = strings.TrimPrefix(*jsnCfg.Out_dataDB_encoding, "*")
}
if jsnCfg.Out_dataDB_redis_sentinel != nil {
mg.OutDataDBRedisSentinel = *jsnCfg.Out_dataDB_redis_sentinel
diff --git a/data/conf/cgrates/cgrates.json b/data/conf/cgrates/cgrates.json
index 7f493fb49..d29448fad 100644
--- a/data/conf/cgrates/cgrates.json
+++ b/data/conf/cgrates/cgrates.json
@@ -1,702 +1,702 @@
{
-// Real-time Online/Offline Charging System (OCS) for Telecom & ISP environments
-// Copyright (C) ITsysCOM GmbH
+// Real-time Online/Offline Charging System (OCS) for Telecom & ISP environments
+// Copyright (C) ITsysCOM GmbH
//
-// This file contains the default configuration hardcoded into CGRateS.
-// This is what you get when you load CGRateS with an empty configuration file.
+// This file contains the default configuration hardcoded into CGRateS.
+// This is what you get when you load CGRateS with an empty configuration file.
-// "general": {
-// "node_id": "", // identifier of this instance in the cluster, if empty it will be autogenerated
-// "logger": "*syslog", // controls the destination of logs <*syslog|*stdout>
-// "log_level": 6, // control the level of messages logged (0-emerg to 7-debug)
-// "http_skip_tls_verify": false, // if enabled Http Client will accept any TLS certificate
-// "rounding_decimals": 5, // system level precision for floats
-// "dbdata_encoding": "msgpack", // encoding used to store object data in strings:
-// "tpexport_dir": "/var/spool/cgrates/tpe", // path towards export folder for offline Tariff Plans
-// "poster_attempts": 3, // number of attempts before considering post request failed (eg: *call_url, CDR replication)
-// "failed_posts_dir": "/var/spool/cgrates/failed_posts", // directory path where we store failed requests
-// "default_request_type": "*rated", // default request type to consider when missing from requests: <""|*prepaid|*postpaid|*pseudoprepaid|*rated>
-// "default_category": "call", // default category to consider when missing from requests
-// "default_tenant": "cgrates.org", // default tenant to consider when missing from requests
-// "default_timezone": "Local", // default timezone for timestamps where not specified <""|UTC|Local|$IANA_TZ_DB>
-// "connect_attempts": 3, // initial server connect attempts
-// "reconnects": -1, // number of retries in case of connection lost
-// "connect_timeout": "1s", // consider connection unsuccessful on timeout, 0 to disable the feature
-// "reply_timeout": "2s", // consider connection down for replies taking longer than this value
-// "response_cache_ttl": "0s", // the life span of a cached response
-// "internal_ttl": "2m", // maximum duration to wait for internal connections before giving up
-// "locking_timeout": "0", // timeout internal locks to avoid deadlocks
-// "digest_separator": ",",
-// "digest_equal": ":",
-// },
+// "general": {
+// "node_id": "", // identifier of this instance in the cluster, if empty it will be autogenerated
+// "logger": "*syslog", // controls the destination of logs <*syslog|*stdout>
+// "log_level": 6, // control the level of messages logged (0-emerg to 7-debug)
+// "http_skip_tls_verify": false, // if enabled Http Client will accept any TLS certificate
+// "rounding_decimals": 5, // system level precision for floats
+// "dbdata_encoding": "*msgpack", // encoding used to store object data in strings: <*msgpack|*json>
+// "tpexport_dir": "/var/spool/cgrates/tpe", // path towards export folder for offline Tariff Plans
+// "poster_attempts": 3, // number of attempts before considering post request failed (eg: *call_url, CDR replication)
+// "failed_posts_dir": "/var/spool/cgrates/failed_posts", // directory path where we store failed requests
+// "default_request_type": "*rated", // default request type to consider when missing from requests: <""|*prepaid|*postpaid|*pseudoprepaid|*rated>
+// "default_category": "call", // default category to consider when missing from requests
+// "default_tenant": "cgrates.org", // default tenant to consider when missing from requests
+// "default_timezone": "Local", // default timezone for timestamps where not specified <""|UTC|Local|$IANA_TZ_DB>
+// "connect_attempts": 3, // initial server connect attempts
+// "reconnects": -1, // number of retries in case of connection lost
+// "connect_timeout": "1s", // consider connection unsuccessful on timeout, 0 to disable the feature
+// "reply_timeout": "2s", // consider connection down for replies taking longer than this value
+// "response_cache_ttl": "0s", // the life span of a cached response
+// "internal_ttl": "2m", // maximum duration to wait for internal connections before giving up
+// "locking_timeout": "0", // timeout internal locks to avoid deadlocks
+// "digest_separator": ",",
+// "digest_equal": ":",
+// },
-// "data_db": { // database used to store runtime data (eg: accounts, cdr stats)
-// "db_type": "redis", // data_db type:
-// "db_host": "127.0.0.1", // data_db host address
-// "db_port": 6379, // data_db port to reach the database
-// "db_name": "10", // data_db database name to connect to
-// "db_user": "cgrates", // username to use when connecting to data_db
-// "db_password": "", // password to use when connecting to data_db
-// "redis_sentinel": "", // redis_sentinel is the name of sentinel
-// },
+// "data_db": { // database used to store runtime data (eg: accounts, cdr stats)
+// "db_type": "redis", // data_db type: <*redis|*mongo|*internal>
+// "db_host": "127.0.0.1", // data_db host address
+// "db_port": 6379, // data_db port to reach the database
+// "db_name": "10", // data_db database name to connect to
+// "db_user": "cgrates", // username to use when connecting to data_db
+// "db_password": "", // password to use when connecting to data_db
+// "redis_sentinel": "", // redis_sentinel is the name of sentinel
+// },
-// "stor_db": { // database used to store offline tariff plans and CDRs
-// "db_type": "mysql", // stor database type to use:
-// "db_host": "127.0.0.1", // the host to connect to
-// "db_port": 3306, // the port to reach the stordb
-// "db_name": "cgrates", // stor database name
-// "db_user": "cgrates", // username to use when connecting to stordb
-// "db_password": "", // password to use when connecting to stordb
-// "max_open_conns": 100, // maximum database connections opened, not applying for mongo
-// "max_idle_conns": 10, // maximum database connections idle, not applying for mongo
-// "conn_max_lifetime": 0, // maximum amount of time in seconds a connection may be reused (0 for unlimited), not applying for mongo
-// "cdrs_indexes": [], // indexes on cdrs table to speed up queries, used only in case of mongo
-// },
+// "stor_db": { // database used to store offline tariff plans and CDRs
+// "db_type": "mysql", // stor database type to use: <*mongo|*mysql|*postgres|*internal>
+// "db_host": "127.0.0.1", // the host to connect to
+// "db_port": 3306, // the port to reach the stordb
+// "db_name": "cgrates", // stor database name
+// "db_user": "cgrates", // username to use when connecting to stordb
+// "db_password": "", // password to use when connecting to stordb
+// "max_open_conns": 100, // maximum database connections opened, not applying for mongo
+// "max_idle_conns": 10, // maximum database connections idle, not applying for mongo
+// "conn_max_lifetime": 0, // maximum amount of time in seconds a connection may be reused (0 for unlimited), not applying for mongo
+// "cdrs_indexes": [], // indexes on cdrs table to speed up queries, used only in case of mongo
+// },
-// "listen": {
-// "rpc_json": "127.0.0.1:2012", // RPC JSON listening address
-// "rpc_gob": "127.0.0.1:2013", // RPC GOB listening address
-// "http": "127.0.0.1:2080", // HTTP listening address
-// "rpc_json_tls": "127.0.0.1:2022", // RPC JSON TLS listening address
-// "rpc_gob_tls": "127.0.0.1:2023", // RPC GOB TLS listening address
-// "http_tls": "127.0.0.1:2280", // HTTP TLS listening address
-// "tls_server_certificate": "", // path to server certificate(must conatin server.crt + ca.crt)
-// "tls_server_key": "", // path to server key
-// "tls_client_certificate": "", // path to client certificate(must conatin client.crt + ca.crt)
-// "tls_client_key": "", // path to client key
-// },
+// "listen": {
+// "rpc_json": "127.0.0.1:2012", // RPC JSON listening address
+// "rpc_gob": "127.0.0.1:2013", // RPC GOB listening address
+// "http": "127.0.0.1:2080", // HTTP listening address
+// "rpc_json_tls": "127.0.0.1:2022", // RPC JSON TLS listening address
+// "rpc_gob_tls": "127.0.0.1:2023", // RPC GOB TLS listening address
+// "http_tls": "127.0.0.1:2280", // HTTP TLS listening address
+// "tls_server_certificate": "", // path to server certificate(must conatin server.crt + ca.crt)
+// "tls_server_key": "", // path to server key
+// "tls_client_certificate": "", // path to client certificate(must conatin client.crt + ca.crt)
+// "tls_client_key": "", // path to client key
+// },
-// "tls": {
-// "server_certificate" : "", // path to server certificate
-// "server_key":"", // path to server key
-// "client_certificate" : "", // path to client certificate
-// "client_key":"", // path to client key
-// "ca_certificate":"", // path to CA certificate (populate if used self-sign certificate otherwise let it empty)
-// "server_policy":4, // server_policy determine the TLS Client Authentication (0-NoClientCert, 1-RequestClientCert, 2-RequireAnyClientCert, 3-VerifyClientCertIfGiven, 4-RequireAndVerifyClientCert)
-// "server_name":"",
-// },
+// "tls": {
+// "server_certificate" : "", // path to server certificate
+// "server_key":"", // path to server key
+// "client_certificate" : "", // path to client certificate
+// "client_key":"", // path to client key
+// "ca_certificate":"", // path to CA certificate (populate if used self-sign certificate otherwise let it empty)
+// "server_policy":4, // server_policy determine the TLS Client Authentication (0-NoClientCert, 1-RequestClientCert, 2-RequireAnyClientCert, 3-VerifyClientCertIfGiven, 4-RequireAndVerifyClientCert)
+// "server_name":"",
+// },
-// "http": { // HTTP server configuration
-// "json_rpc_url": "/jsonrpc", // JSON RPC relative URL ("" to disable)
-// "ws_url": "/ws", // WebSockets relative URL ("" to disable)
-// "freeswitch_cdrs_url": "/freeswitch_json", // Freeswitch CDRS relative URL ("" to disable)
-// "http_cdrs": "/cdr_http", // CDRS relative URL ("" to disable)
-// "use_basic_auth": false, // use basic authentication
-// "auth_users": {}, // basic authentication usernames and base64-encoded passwords (eg: { "username1": "cGFzc3dvcmQ=", "username2": "cGFzc3dvcmQy "})
-// },
+// "http": { // HTTP server configuration
+// "json_rpc_url": "/jsonrpc", // JSON RPC relative URL ("" to disable)
+// "ws_url": "/ws", // WebSockets relative URL ("" to disable)
+// "freeswitch_cdrs_url": "/freeswitch_json", // Freeswitch CDRS relative URL ("" to disable)
+// "http_cdrs": "/cdr_http", // CDRS relative URL ("" to disable)
+// "use_basic_auth": false, // use basic authentication
+// "auth_users": {}, // basic authentication usernames and base64-encoded passwords (eg: { "username1": "cGFzc3dvcmQ=", "username2": "cGFzc3dvcmQy "})
+// },
-// "scheduler": {
-// "enabled": false, // start Scheduler service:
-// "cdrs_conns": [], // address where to reach CDR Server, empty to disable CDR capturing <*internal|x.y.z.y:1234>
-// },
+// "scheduler": {
+// "enabled": false, // start Scheduler service:
+// "cdrs_conns": [], // address where to reach CDR Server, empty to disable CDR capturing <*internal|x.y.z.y:1234>
+// },
-// "cache":{
-// "destinations": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // destination caching
-// "reverse_destinations": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // reverse destinations index caching
-// "rating_plans": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // rating plans caching
-// "rating_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // rating profiles caching
-// "lcr_rules": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // lcr rules caching
-// "cdr_stats": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // cdr stats queues caching
-// "actions": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // actions caching
-// "action_plans": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // action plans caching
-// "account_action_plans": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // account action plans index caching
-// "action_triggers": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // action triggers caching
-// "shared_groups": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // shared groups caching
-// "aliases": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // aliases caching
-// "reverse_aliases": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // reverse aliases index caching
-// "derived_chargers": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // derived charging rule caching
-// "timings": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // timings caching
-// "resource_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // control resource profiles caching
-// "resources": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // control resources caching
-// "event_resources": {"limit": -1, "ttl": "1m", "static_ttl": false}, // matching resources to events
-// "statqueue_profiles": {"limit": -1, "ttl": "1m", "static_ttl": false, "precache": false}, // statqueue profiles
-// "statqueues": {"limit": -1, "ttl": "1m", "static_ttl": false, "precache": false}, // statqueues with metrics
-// "threshold_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // control threshold profiles caching
-// "thresholds": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // control thresholds caching
-// "filters": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // control filters caching
-// "supplier_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // control supplier profile caching
-// "attribute_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // control attribute profile caching
-// "charger_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // control charger profile caching
-// "resource_filter_indexes" : {"limit": -1, "ttl": "", "static_ttl": false}, // control resource filter indexes caching
-// "stat_filter_indexes" : {"limit": -1, "ttl": "", "static_ttl": false}, // control stat filter indexes caching
-// "threshold_filter_indexes" : {"limit": -1, "ttl": "", "static_ttl": false}, // control threshold filter indexes caching
-// "supplier_filter_indexes" : {"limit": -1, "ttl": "", "static_ttl": false}, // control supplier filter indexes caching
-// "attribute_filter_indexes" : {"limit": -1, "ttl": "", "static_ttl": false}, // control attribute filter indexes caching
-// "charger_filter_indexes" : {"limit": -1, "ttl": "", "static_ttl": false}, // control charger filter indexes caching
-// },
+// "cache":{
+// "destinations": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // destination caching
+// "reverse_destinations": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // reverse destinations index caching
+// "rating_plans": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // rating plans caching
+// "rating_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // rating profiles caching
+// "lcr_rules": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // lcr rules caching
+// "cdr_stats": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // cdr stats queues caching
+// "actions": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // actions caching
+// "action_plans": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // action plans caching
+// "account_action_plans": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // account action plans index caching
+// "action_triggers": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // action triggers caching
+// "shared_groups": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // shared groups caching
+// "aliases": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // aliases caching
+// "reverse_aliases": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // reverse aliases index caching
+// "derived_chargers": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // derived charging rule caching
+// "timings": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // timings caching
+// "resource_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // control resource profiles caching
+// "resources": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // control resources caching
+// "event_resources": {"limit": -1, "ttl": "1m", "static_ttl": false}, // matching resources to events
+// "statqueue_profiles": {"limit": -1, "ttl": "1m", "static_ttl": false, "precache": false}, // statqueue profiles
+// "statqueues": {"limit": -1, "ttl": "1m", "static_ttl": false, "precache": false}, // statqueues with metrics
+// "threshold_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // control threshold profiles caching
+// "thresholds": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // control thresholds caching
+// "filters": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // control filters caching
+// "supplier_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // control supplier profile caching
+// "attribute_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // control attribute profile caching
+// "charger_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false}, // control charger profile caching
+// "resource_filter_indexes" : {"limit": -1, "ttl": "", "static_ttl": false}, // control resource filter indexes caching
+// "stat_filter_indexes" : {"limit": -1, "ttl": "", "static_ttl": false}, // control stat filter indexes caching
+// "threshold_filter_indexes" : {"limit": -1, "ttl": "", "static_ttl": false}, // control threshold filter indexes caching
+// "supplier_filter_indexes" : {"limit": -1, "ttl": "", "static_ttl": false}, // control supplier filter indexes caching
+// "attribute_filter_indexes" : {"limit": -1, "ttl": "", "static_ttl": false}, // control attribute filter indexes caching
+// "charger_filter_indexes" : {"limit": -1, "ttl": "", "static_ttl": false}, // control charger filter indexes caching
+// },
-// "filters": { // Filters configuration (*new)
-// "stats_conns": [], // address where to reach the stat service, empty to disable stats functionality: <""|*internal|x.y.z.y:1234>
-// "indexed_selects":true, // enable profile matching exclusively on indexes
-// },
+// "filters": { // Filters configuration (*new)
+// "stats_conns": [], // address where to reach the stat service, empty to disable stats functionality: <""|*internal|x.y.z.y:1234>
+// "indexed_selects":true, // enable profile matching exclusively on indexes
+// },
-// "rals": {
-// "enabled": false, // enable Rater service:
-// "thresholds_conns": [], // address where to reach the thresholds service, empty to disable thresholds functionality: <""|*internal|x.y.z.y:1234>
-// "cdrstats_conns": [], // address where to reach the cdrstats service, empty to disable stats functionality: <""|*internal|x.y.z.y:1234>
-// "stats_conns": [], // address where to reach the stat service, empty to disable stats functionality: <""|*internal|x.y.z.y:1234>
-// "pubsubs_conns": [], // address where to reach the pubusb service, empty to disable pubsub functionality: <""|*internal|x.y.z.y:1234>
-// "users_conns": [], // address where to reach the user service, empty to disable user profile functionality: <""|*internal|x.y.z.y:1234>
-// "aliases_conns": [], // address where to reach the aliases service, empty to disable aliases functionality: <""|*internal|x.y.z.y:1234>
-// "rp_subject_prefix_matching": false, // enables prefix matching for the rating profile subject
-// "lcr_subject_prefix_matching": false, // enables prefix matching for the lcr subject
-// "max_computed_usage": { // do not compute usage higher than this, prevents memory overload
-// "*any": "189h",
-// "*voice": "72h",
-// "*data": "107374182400",
-// "*sms": "10000"
-// },
-// },
+// "rals": {
+// "enabled": false, // enable Rater service:
+// "thresholds_conns": [], // address where to reach the thresholds service, empty to disable thresholds functionality: <""|*internal|x.y.z.y:1234>
+// "cdrstats_conns": [], // address where to reach the cdrstats service, empty to disable stats functionality: <""|*internal|x.y.z.y:1234>
+// "stats_conns": [], // address where to reach the stat service, empty to disable stats functionality: <""|*internal|x.y.z.y:1234>
+// "pubsubs_conns": [], // address where to reach the pubusb service, empty to disable pubsub functionality: <""|*internal|x.y.z.y:1234>
+// "users_conns": [], // address where to reach the user service, empty to disable user profile functionality: <""|*internal|x.y.z.y:1234>
+// "aliases_conns": [], // address where to reach the aliases service, empty to disable aliases functionality: <""|*internal|x.y.z.y:1234>
+// "rp_subject_prefix_matching": false, // enables prefix matching for the rating profile subject
+// "lcr_subject_prefix_matching": false, // enables prefix matching for the lcr subject
+// "max_computed_usage": { // do not compute usage higher than this, prevents memory overload
+// "*any": "189h",
+// "*voice": "72h",
+// "*data": "107374182400",
+// "*sms": "10000"
+// },
+// },
-// "cdrs": {
-// "enabled": false, // start the CDR Server service:
-// "extra_fields": [], // extra fields to store in CDRs for non-generic CDRs
-// "store_cdrs": true, // store cdrs in storDb
-// "sessions_cost_retries": 5, // number of queries to sessions_costs before recalculating CDR
-// "chargers_conns": [], // address where to reach the charger service, empty to disable charger functionality: <""|*internal|x.y.z.y:1234>
-// "rals_conns": [
-// {"address": "*internal"} // address where to reach the Rater for cost calculation, empty to disable functionality: <""|*internal|x.y.z.y:1234>
-// ],
-// "pubsubs_conns": [], // address where to reach the pubusb service, empty to disable pubsub functionality: <""|*internal|x.y.z.y:1234>
-// "attributes_conns": [], // address where to reach the attribute service, empty to disable attributes functionality: <""|*internal|x.y.z.y:1234>
-// "users_conns": [], // address where to reach the user service, empty to disable user profile functionality: <""|*internal|x.y.z.y:1234>
-// "aliases_conns": [], // address where to reach the aliases service, empty to disable aliases functionality: <""|*internal|x.y.z.y:1234>
-// "cdrstats_conns": [], // address where to reach the cdrstats service, empty to disable cdrstats functionality: <""|*internal|x.y.z.y:1234>
-// "thresholds_conns": [], // address where to reach the thresholds service, empty to disable thresholds functionality: <""|*internal|x.y.z.y:1234>
-// "stats_conns": [], // address where to reach the stat service, empty to disable stats functionality: <""|*internal|x.y.z.y:1234>
-// "online_cdr_exports": [], // list of CDRE profiles to use for real-time CDR exports
-// },
+// "cdrs": {
+// "enabled": false, // start the CDR Server service:
+// "extra_fields": [], // extra fields to store in CDRs for non-generic CDRs
+// "store_cdrs": true, // store cdrs in storDb
+// "sessions_cost_retries": 5, // number of queries to sessions_costs before recalculating CDR
+// "chargers_conns": [], // address where to reach the charger service, empty to disable charger functionality: <""|*internal|x.y.z.y:1234>
+// "rals_conns": [
+// {"address": "*internal"} // address where to reach the Rater for cost calculation, empty to disable functionality: <""|*internal|x.y.z.y:1234>
+// ],
+// "pubsubs_conns": [], // address where to reach the pubusb service, empty to disable pubsub functionality: <""|*internal|x.y.z.y:1234>
+// "attributes_conns": [], // address where to reach the attribute service, empty to disable attributes functionality: <""|*internal|x.y.z.y:1234>
+// "users_conns": [], // address where to reach the user service, empty to disable user profile functionality: <""|*internal|x.y.z.y:1234>
+// "aliases_conns": [], // address where to reach the aliases service, empty to disable aliases functionality: <""|*internal|x.y.z.y:1234>
+// "cdrstats_conns": [], // address where to reach the cdrstats service, empty to disable cdrstats functionality: <""|*internal|x.y.z.y:1234>
+// "thresholds_conns": [], // address where to reach the thresholds service, empty to disable thresholds functionality: <""|*internal|x.y.z.y:1234>
+// "stats_conns": [], // address where to reach the stat service, empty to disable stats functionality: <""|*internal|x.y.z.y:1234>
+// "online_cdr_exports": [], // list of CDRE profiles to use for real-time CDR exports
+// },
-// "cdre": {
-// "*default": {
-// "export_format": "*file_csv", // exported CDRs format <*file_csv|*file_fwv|*http_post|*http_json_cdr|*http_json_map|*amqp_json_cdr|*amqp_json_map>
-// "export_path": "/var/spool/cgrates/cdre", // path where the exported CDRs will be placed
-// "filters" :[], // new filters for cdre
-// "tenant": "cgrates.org", // tenant used in filterS.Pass
-// "synchronous": false, // block processing until export has a result
-// "attempts": 1, // Number of attempts if not success
-// "field_separator": ",", // used field separator in some export formats, eg: *file_csv
-// "usage_multiply_factor": {
-// "*any": 1 // multiply usage based on ToR field or *any for all
-// },
-// "cost_multiply_factor": 1, // multiply cost before export, eg: add VAT
-// "header_fields": [], // template of the exported header fields
-// "content_fields": [ // template of the exported content fields
-// {"tag": "CGRID", "type": "*composed", "value": "~CGRID"},
-// {"tag":"RunID", "type": "*composed", "value": "~RunID"},
-// {"tag":"TOR", "type": "*composed", "value": "~ToR"},
-// {"tag":"OriginID", "type": "*composed", "value": "~OriginID"},
-// {"tag":"RequestType", "type": "*composed", "value": "~RequestType"},
-// {"tag":"Tenant", "type": "*composed", "value": "~Tenant"},
-// {"tag":"Category", "type": "*composed", "value": "~Category"},
-// {"tag":"Account", "type": "*composed", "value": "~Account"},
-// {"tag":"Subject", "type": "*composed", "value": "~Subject"},
-// {"tag":"Destination", "type": "*composed", "value": "~Destination"},
-// {"tag":"SetupTime", "type": "*composed", "value": "~SetupTime", "layout": "2006-01-02T15:04:05Z07:00"},
-// {"tag":"AnswerTime", "type": "*composed", "value": "~AnswerTime", "layout": "2006-01-02T15:04:05Z07:00"},
-// {"tag":"Usage", "type": "*composed", "value": "~Usage"},
-// {"tag":"Cost", "type": "*composed", "value": "~Cost", "rounding_decimals": 4},
-// ],
-// "trailer_fields": [], // template of the exported trailer fields
-// },
-// },
+// "cdre": {
+// "*default": {
+// "export_format": "*file_csv", // exported CDRs format <*file_csv|*file_fwv|*http_post|*http_json_cdr|*http_json_map|*amqp_json_cdr|*amqp_json_map>
+// "export_path": "/var/spool/cgrates/cdre", // path where the exported CDRs will be placed
+// "filters" :[], // new filters for cdre
+// "tenant": "cgrates.org", // tenant used in filterS.Pass
+// "synchronous": false, // block processing until export has a result
+// "attempts": 1, // Number of attempts if not success
+// "field_separator": ",", // used field separator in some export formats, eg: *file_csv
+// "usage_multiply_factor": {
+// "*any": 1 // multiply usage based on ToR field or *any for all
+// },
+// "cost_multiply_factor": 1, // multiply cost before export, eg: add VAT
+// "header_fields": [], // template of the exported header fields
+// "content_fields": [ // template of the exported content fields
+// {"tag": "CGRID", "type": "*composed", "value": "~CGRID"},
+// {"tag":"RunID", "type": "*composed", "value": "~RunID"},
+// {"tag":"TOR", "type": "*composed", "value": "~ToR"},
+// {"tag":"OriginID", "type": "*composed", "value": "~OriginID"},
+// {"tag":"RequestType", "type": "*composed", "value": "~RequestType"},
+// {"tag":"Tenant", "type": "*composed", "value": "~Tenant"},
+// {"tag":"Category", "type": "*composed", "value": "~Category"},
+// {"tag":"Account", "type": "*composed", "value": "~Account"},
+// {"tag":"Subject", "type": "*composed", "value": "~Subject"},
+// {"tag":"Destination", "type": "*composed", "value": "~Destination"},
+// {"tag":"SetupTime", "type": "*composed", "value": "~SetupTime", "layout": "2006-01-02T15:04:05Z07:00"},
+// {"tag":"AnswerTime", "type": "*composed", "value": "~AnswerTime", "layout": "2006-01-02T15:04:05Z07:00"},
+// {"tag":"Usage", "type": "*composed", "value": "~Usage"},
+// {"tag":"Cost", "type": "*composed", "value": "~Cost", "rounding_decimals": 4},
+// ],
+// "trailer_fields": [], // template of the exported trailer fields
+// },
+// },
-// "cdrstats": {
-// "enabled": false, // starts the cdrstats service:
-// "save_interval": "1m", // interval to save changed stats into dataDb storage
-// },
+// "cdrstats": {
+// "enabled": false, // starts the cdrstats service:
+// "save_interval": "1m", // interval to save changed stats into dataDb storage
+// },
-// "cdrc": [
-// {
-// "id": "*default", // identifier of the CDRC runner
-// "enabled": false, // enable CDR client functionality
-// "dry_run": false, // do not send the CDRs to CDRS, just parse them
-// "cdrs_conns": [
-// {"address": "*internal"} // address where to reach CDR server. <*internal|x.y.z.y:1234>
-// ],
-// "cdr_format": "csv", // CDR file format
-// "field_separator": ",", // separator used in case of csv files
-// "timezone": "", // timezone for timestamps where not specified <""|UTC|Local|$IANA_TZ_DB>
-// "run_delay": 0, // sleep interval in seconds between consecutive runs, 0 to use automation via inotify
-// "max_open_files": 1024, // maximum simultaneous files to process, 0 for unlimited
-// "data_usage_multiply_factor": 1024, // conversion factor for data usage
-// "cdr_in_dir": "/var/spool/cgrates/cdrc/in", // absolute path towards the directory where the CDRs are stored
-// "cdr_out_dir": "/var/spool/cgrates/cdrc/out", // absolute path towards the directory where processed CDRs will be moved
-// "failed_calls_prefix": "missed_calls", // used in case of flatstore CDRs to avoid searching for BYE records
-// "cdr_path": "", // path towards one CDR element in case of XML CDRs
-// "cdr_source_id": "freeswitch_csv", // free form field, tag identifying the source of the CDRs within CDRS database
-// "filters": [], // new filters used in FilterS subsystem
-// "tenant": "cgrates.org", // default tenant
-// "continue_on_success": false, // continue to the next template if executed
-// "partial_record_cache": "10s", // duration to cache partial records when not pairing
-// "partial_cache_expiry_action": "*dump_to_file", // action taken when cache when records in cache are timed-out <*dump_to_file|*post_cdr>
-// "header_fields": [], // template of the import header fields
-// "content_fields":[ // import content_fields template, tag will match internally CDR field, in case of .csv value will be represented by index of the field value
-// {"tag": "TOR", "field_id": "ToR", "type": "*composed", "value": "~2", "mandatory": true},
-// {"tag": "OriginID", "field_id": "OriginID", "type": "*composed", "value": "~3", "mandatory": true},
-// {"tag": "RequestType", "field_id": "RequestType", "type": "*composed", "value": "~4", "mandatory": true},
-// {"tag": "Tenant", "field_id": "Tenant", "type": "*composed", "value": "~6", "mandatory": true},
-// {"tag": "Category", "field_id": "Category", "type": "*composed", "value": "~7", "mandatory": true},
-// {"tag": "Account", "field_id": "Account", "type": "*composed", "value": "~8", "mandatory": true},
-// {"tag": "Subject", "field_id": "Subject", "type": "*composed", "value": "~9", "mandatory": true},
-// {"tag": "Destination", "field_id": "Destination", "type": "*composed", "value": "~10", "mandatory": true},
-// {"tag": "SetupTime", "field_id": "SetupTime", "type": "*composed", "value": "~11", "mandatory": true},
-// {"tag": "AnswerTime", "field_id": "AnswerTime", "type": "*composed", "value": "~12", "mandatory": true},
-// {"tag": "Usage", "field_id": "Usage", "type": "*composed", "value": "~13", "mandatory": true},
-// ],
-// "trailer_fields": [], // template of the import trailer fields
-// "cache_dump_fields": [ // template used when dumping cached CDR, eg: partial CDRs
-// {"tag": "CGRID", "type": "*composed", "value": "~CGRID"},
-// {"tag": "RunID", "type": "*composed", "value": "~RunID"},
-// {"tag": "TOR", "type": "*composed", "value": "~ToR"},
-// {"tag": "OriginID", "type": "*composed", "value": "~OriginID"},
-// {"tag": "RequestType", "type": "*composed", "value": "~RequestType"},
-// {"tag": "Tenant", "type": "*composed", "value": "~Tenant"},
-// {"tag": "Category", "type": "*composed", "value": "~Category"},
-// {"tag": "Account", "type": "*composed", "value": "~Account"},
-// {"tag": "Subject", "type": "*composed", "value": "~Subject"},
-// {"tag": "Destination", "type": "*composed", "value": "~Destination"},
-// {"tag": "SetupTime", "type": "*composed", "value": "~SetupTime", "layout": "2006-01-02T15:04:05Z07:00"},
-// {"tag": "AnswerTime", "type": "*composed", "value": "~AnswerTime", "layout": "2006-01-02T15:04:05Z07:00"},
-// {"tag": "Usage", "type": "*composed", "value": "~Usage"},
-// {"tag": "Cost", "type": "*composed", "value": "~Cost"},
-// ],
-// },
-// ],
-
-
-// "sessions": {
-// "enabled": false, // starts session manager service:
-// "listen_bijson": "127.0.0.1:2014", // address where to listen for bidirectional JSON-RPC requests
-// "chargers_conns": [], // address where to reach the charger service, empty to disable charger functionality: <""|*internal|x.y.z.y:1234>
-// "rals_conns": [
-// {"address": "*internal"} // address where to reach the RALs <""|*internal|127.0.0.1:2013>
-// ],
-// "cdrs_conns": [
-// {"address": "*internal"} // address where to reach CDR Server, empty to disable CDR capturing <*internal|x.y.z.y:1234>
-// ],
-// "resources_conns": [], // address where to reach the ResourceS <""|*internal|127.0.0.1:2013>
-// "thresholds_conns": [], // address where to reach the ThresholdS <""|*internal|127.0.0.1:2013>
-// "stats_conns": [], // address where to reach the StatS <""|*internal|127.0.0.1:2013>
-// "suppliers_conns": [], // address where to reach the SupplierS <""|*internal|127.0.0.1:2013>
-// "attributes_conns": [], // address where to reach the AttributeS <""|*internal|127.0.0.1:2013>
-// "session_replication_conns": [], // replicate sessions towards these session services
-// "debit_interval": "0s", // interval to perform debits on.
-// "min_call_duration": "0s", // only authorize calls with allowed duration higher than this
-// "max_call_duration": "3h", // maximum call duration a prepaid call can last
-// "session_ttl": "0s", // time after a session with no updates is terminated, not defined by default
-// //"session_ttl_max_delay": "", // activates session_ttl randomization and limits the maximum possible delay
-// //"session_ttl_last_used": "", // tweak LastUsed for sessions timing-out, not defined by default
-// //"session_ttl_usage": "", // tweak Usage for sessions timing-out, not defined by default
-// "session_indexes": [], // index sessions based on these fields for GetActiveSessions API
-// "client_protocol": 1.0, // version of protocol to use when acting as JSON-PRC client <"0","1.0">
-// "channel_sync_interval": "0", // sync channels regularly (0 to disable sync session)
-// },
-
-
-// "asterisk_agent": {
-// "enabled": false, // starts the Asterisk agent:
-// "sessions_conns": [
-// {"address": "*internal"} // connection towards session service: <*internal>
-// ],
-// "create_cdr": false, // create CDR out of events and sends it to CDRS component
-// "asterisk_conns":[ // instantiate connections to multiple Asterisk servers
-// {"address": "127.0.0.1:8088", "user": "cgrates", "password": "CGRateS.org", "connect_attempts": 3,"reconnects": 5}
-// ],
-// },
-
-
-// "freeswitch_agent": {
-// "enabled": false, // starts the FreeSWITCH agent:
-// "sessions_conns": [
-// {"address": "*internal"} // connection towards session service: <*internal>
-// ],
-// "subscribe_park": true, // subscribe via fsock to receive park events
-// "create_cdr": false, // create CDR out of events and sends them to CDRS component
-// "extra_fields": [], // extra fields to store in auth/CDRs when creating them
-// //"min_dur_low_balance": "5s", // threshold which will trigger low balance warnings for prepaid calls (needs to be lower than debit_interval)
-// //"low_balance_ann_file": "", // file to be played when low balance is reached for prepaid calls
-// "empty_balance_context": "", // if defined, prepaid calls will be transferred to this context on empty balance
-// "empty_balance_ann_file": "", // file to be played before disconnecting prepaid calls on empty balance (applies only if no context defined)
-// "max_wait_connection": "2s", // maximum duration to wait for a connection to be retrieved from the pool
-// "event_socket_conns": [ // instantiate connections to multiple FreeSWITCH servers
-// {"address": "127.0.0.1:8021", "password": "ClueCon", "reconnects": 5,"alias":""}
-// ],
-// },
-
-
-// "kamailio_agent": {
-// "enabled": false, // starts SessionManager service:
-// "sessions_conns": [
-// {"address": "*internal"} // connection towards session service: <*internal>
-// ],
-// "create_cdr": false, // create CDR out of events and sends them to CDRS component
-// "timezone": "", // timezone of the Kamailio server
-// "evapi_conns": [ // instantiate connections to multiple Kamailio servers
-// {"address": "127.0.0.1:8448", "reconnects": 5}
-// ],
-// },
-
-
-// "diameter_agent": {
-// "enabled": false, // enables the diameter agent:
-// "listen": "127.0.0.1:3868", // address where to listen for diameter requests
-// "dictionaries_path": "/usr/share/cgrates/diameter/dict/", // path towards directory holding additional dictionaries to load
-// "sessions_conns": [
-// {"address": "*internal"} // connection towards SessionService
-// ],
-// "origin_host": "CGR-DA", // diameter Origin-Host AVP used in replies
-// "origin_realm": "cgrates.org", // diameter Origin-Realm AVP used in replies
-// "vendor_id": 0, // diameter Vendor-Id AVP used in replies
-// "product_name": "CGRateS", // diameter Product-Name AVP used in replies
-// "templates": {
-// "*cca": [
-// {"tag": "SessionId", "field_id": "Session-Id", "type": "*composed",
-// "value": "~*req.Session-Id", "mandatory": true},
-// {"tag": "OriginHost", "field_id": "Origin-Host", "type": "*composed",
-// "value": "~*vars.OriginHost", "mandatory": true},
-// {"tag": "OriginRealm", "field_id": "Origin-Realm", "type": "*composed",
-// "value": "~*vars.OriginRealm", "mandatory": true},
-// {"tag": "AuthApplicationId", "field_id": "Auth-Application-Id", "type": "*composed",
-// "value": "~*vars.*appid", "mandatory": true},
-// {"tag": "CCRequestType", "field_id": "CC-Request-Type", "type": "*composed",
-// "value": "~*req.CC-Request-Type", "mandatory": true},
-// {"tag": "CCRequestNumber", "field_id": "CC-Request-Number", "type": "*composed",
-// "value": "~*req.CC-Request-Number", "mandatory": true},
-// ]
-// },
-// "request_processors": [],
-// },
-
-
-// "radius_agent": {
-// "enabled": false, // enables the radius agent:
-// "listen_net": "udp", // network to listen on
-// "listen_auth": "127.0.0.1:1812", // address where to listen for radius authentication requests
-// "listen_acct": "127.0.0.1:1813", // address where to listen for radius accounting requests
-// "client_secrets": { // hash containing secrets for clients connecting here <*default|$client_ip>
-// "*default": "CGRateS.org"
-// },
-// "client_dictionaries": { // per client path towards directory holding additional dictionaries to load (extra to RFC)
-// "*default": "/usr/share/cgrates/radius/dict/", // key represents the client IP or catch-all <*default|$client_ip>
-// },
-// "sessions_conns": [
-// {"address": "*internal"} // connection towards SessionService
-// ],
-// "cdr_requires_session": false, // only create CDR if there is an active session at terminate
-// "request_processors": [],
-// },
-
-
-// "http_agent": [], // HTTP Agents, ie towards cnc.to MVNE platform
-
-
-// "pubsubs": {
-// "enabled": false, // starts PubSub service: .
-// },
-
-
-// "aliases": {
-// "enabled": false, // starts Aliases service: .
-// },
-
-
-// "users": {
-// "enabled": false, // starts User service: .
-// "indexes": [], // user profile field indexes
-// },
-
-
-// "attributes": { // Attribute service
-// "enabled": false, // starts attribute service: .
-// //"string_indexed_fields": [], // query indexes based on these fields for faster processing
-// "prefix_indexed_fields": [], // query indexes based on these fields for faster processing
-// "process_runs": 1, // number of run loops when processing event
-// },
-
-
-// "chargers": { // Charger service
-// "enabled": false, // starts charger service: .
-// "attributes_conns": [], // address where to reach the AttributeS <""|127.0.0.1:2013>
-// //"string_indexed_fields": [], // query indexes based on these fields for faster processing
-// "prefix_indexed_fields": [], // query indexes based on these fields for faster processing
-// },
-
-
-// "resources": { // Resource service (*new)
-// "enabled": false, // starts ResourceLimiter service: .
-// "store_interval": "", // dump cache regularly to dataDB, 0 - dump at start/shutdown: <""|$dur>
-// "thresholds_conns": [], // address where to reach the thresholds service, empty to disable thresholds functionality: <""|*internal|x.y.z.y:1234>
-// //"string_indexed_fields": [], // query indexes based on these fields for faster processing
-// "prefix_indexed_fields": [], // query indexes based on these fields for faster processing
-// },
-
-
-// "stats": { // Stat service (*new)
-// "enabled": false, // starts Stat service: .
-// "store_interval": "", // dump cache regularly to dataDB, 0 - dump at start/shutdown: <""|$dur>
-// "thresholds_conns": [], // address where to reach the thresholds service, empty to disable thresholds functionality: <""|*internal|x.y.z.y:1234>
-// //"string_indexed_fields": [], // query indexes based on these fields for faster processing
-// "prefix_indexed_fields": [], // query indexes based on these fields for faster processing
-// },
-
-
-// "thresholds": { // Threshold service (*new)
-// "enabled": false, // starts ThresholdS service: .
-// "store_interval": "", // dump cache regularly to dataDB, 0 - dump at start/shutdown: <""|$dur>
-// //"string_indexed_fields": [], // query indexes based on these fields for faster processing
-// "prefix_indexed_fields": [], // query indexes based on these fields for faster processing
-// },
-
-
-// "suppliers": { // Supplier service (*new)
-// "enabled": false, // starts SupplierS service: .
-// //"string_indexed_fields": [], // query indexes based on these fields for faster processing
-// "prefix_indexed_fields": [], // query indexes based on these fields for faster processing
-// "attributes_conns": [], // address where to reach the AttributeS <""|127.0.0.1:2013>
-// "rals_conns": [
-// {"address": "*internal"}, // address where to reach the RALs for cost/accounting <*internal>
-// ],
-// "resources_conns": [], // address where to reach the Resource service, empty to disable functionality: <""|*internal|x.y.z.y:1234>
-// "stats_conns": [], // address where to reach the Stat service, empty to disable stats functionality: <""|*internal|x.y.z.y:1234>
-// },
-
-
-// "loaders": [
-// {
-// "id": "*default", // identifier of the Loader
-// "enabled": false, // starts as service: .
-// "tenant": "cgrates.org", // tenant used in filterS.Pass
-// "dry_run": false, // do not send the CDRs to CDRS, just parse them
-// "run_delay": 0, // sleep interval in seconds between consecutive runs, 0 to use automation via inotify
-// "lock_filename": ".cgr.lck", // Filename containing concurrency lock in case of delayed processing
-// "caches_conns": [
-// {"address": "*internal"}, // address where to reach the CacheS for data reload, empty for no reloads <""|*internal|x.y.z.y:1234>
-// ],
-// "field_separator": ",", // separator used in case of csv files
-// "tp_in_dir": "/var/spool/cgrates/loader/in", // absolute path towards the directory where the CDRs are stored
-// "tp_out_dir": "/var/spool/cgrates/loader/out", // absolute path towards the directory where processed CDRs will be moved
-// "data": [ // data profiles to load
-// {
-// "type": "*attributes", // data source type
-// "file_name": "Attributes.csv", // file name in the tp_in_dir
-// "fields": [
-// {"tag": "TenantID", "field_id": "Tenant", "type": "*composed", "value": "~0", "mandatory": true},
-// {"tag": "ProfileID", "field_id": "ID", "type": "*composed", "value": "~1", "mandatory": true},
-// {"tag": "Contexts", "field_id": "Contexts", "type": "*composed", "value": "~2"},
-// {"tag": "FilterIDs", "field_id": "FilterIDs", "type": "*composed", "value": "~3"},
-// {"tag": "ActivationInterval", "field_id": "ActivationInterval", "type": "*composed", "value": "~4"},
-// {"tag": "FieldName", "field_id": "FieldName", "type": "*composed", "value": "~5"},
-// {"tag": "Initial", "field_id": "Initial", "type": "*composed", "value": "~6"},
-// {"tag": "Substitute", "field_id": "Substitute", "type": "*composed", "value": "~7"},
-// {"tag": "Append", "field_id": "Append", "type": "*composed", "value": "~8"},
-// {"tag": "Weight", "field_id": "Weight", "type": "*composed", "value": "~9"},
-// ],
-// },
-// {
-// "type": "*filters", // data source type
-// "file_name": "Filters.csv", // file name in the tp_in_dir
-// "fields": [
-// {"tag": "Tenant", "field_id": "Tenant", "type": "*composed", "value": "~0", "mandatory": true},
-// {"tag": "ID", "field_id": "ID", "type": "*composed", "value": "~1", "mandatory": true},
-// {"tag": "FilterType", "field_id": "FilterType", "type": "*composed", "value": "~2"},
-// {"tag": "FilterFieldName", "field_id": "FilterFieldName", "type": "*composed", "value": "~3"},
-// {"tag": "FilterFieldValues", "field_id": "FilterFieldValues", "type": "*composed", "value": "~4"},
-// {"tag": "ActivationInterval", "field_id": "ActivationInterval", "type": "*composed", "value": "~5"},
-// ],
-// },
-// {
-// "type": "*resources", // data source type
-// "file_name": "Resources.csv", // file name in the tp_in_dir
-// "fields": [
-// {"tag": "Tenant", "field_id": "Tenant", "type": "*composed", "value": "~0", "mandatory": true},
-// {"tag": "ID", "field_id": "ID", "type": "*composed", "value": "~1", "mandatory": true},
-// {"tag": "FilterIDs", "field_id": "FilterIDs", "type": "*composed", "value": "~2"},
-// {"tag": "ActivationInterval", "field_id": "ActivationInterval", "type": "*composed", "value": "~3"},
-// {"tag": "TTL", "field_id": "UsageTTL", "type": "*composed", "value": "~4"},
-// {"tag": "Limit", "field_id": "Limit", "type": "*composed", "value": "~5"},
-// {"tag": "AllocationMessage", "field_id": "AllocationMessage", "type": "*composed", "value": "~6"},
-// {"tag": "Blocker", "field_id": "Blocker", "type": "*composed", "value": "~7"},
-// {"tag": "Stored", "field_id": "Stored", "type": "*composed", "value": "~8"},
-// {"tag": "Weight", "field_id": "Weight", "type": "*composed", "value": "~9"},
-// {"tag": "ThresholdIDs", "field_id": "ThresholdIDs", "type": "*composed", "value": "~10"},
-// ],
-// },
-// {
-// "type": "*stats", // data source type
-// "file_name": "Stats.csv", // file name in the tp_in_dir
-// "fields": [
-// {"tag": "Tenant", "field_id": "Tenant", "type": "*composed", "value": "~0", "mandatory": true},
-// {"tag": "ID", "field_id": "ID", "type": "*composed", "value": "~1", "mandatory": true},
-// {"tag": "FilterIDs", "field_id": "FilterIDs", "type": "*composed", "value": "~2"},
-// {"tag": "ActivationInterval", "field_id": "ActivationInterval", "type": "*composed", "value": "~3"},
-// {"tag": "QueueLength", "field_id": "QueueLength", "type": "*composed", "value": "~4"},
-// {"tag": "TTL", "field_id": "TTL", "type": "*composed", "value": "~5"},
-// {"tag": "Metrics", "field_id": "Metrics", "type": "*composed", "value": "~6"},
-// {"tag": "MetricParams", "field_id": "Parameters", "type": "*composed", "value": "~7"},
-// {"tag": "Blocker", "field_id": "Blocker", "type": "*composed", "value": "~8"},
-// {"tag": "Stored", "field_id": "Stored", "type": "*composed", "value": "~9"},
-// {"tag": "Weight", "field_id": "Weight", "type": "*composed", "value": "~10"},
-// {"tag": "MinItems", "field_id": "MinItems", "type": "*composed", "value": "~11"},
-// {"tag": "ThresholdIDs", "field_id": "ThresholdIDs", "type": "*composed", "value": "~12"},
-// ],
-// },
-// {
-// "type": "*thresholds", // data source type
-// "file_name": "Thresholds.csv", // file name in the tp_in_dir
-// "fields": [
-// {"tag": "Tenant", "field_id": "Tenant", "type": "*composed", "value": "~0", "mandatory": true},
-// {"tag": "ID", "field_id": "ID", "type": "*composed", "value": "~1", "mandatory": true},
-// {"tag": "FilterIDs", "field_id": "FilterIDs", "type": "*composed", "value": "~2"},
-// {"tag": "ActivationInterval", "field_id": "ActivationInterval", "type": "*composed", "value": "~3"},
-// {"tag": "MaxHits", "field_id": "MaxHits", "type": "*composed", "value": "~4"},
-// {"tag": "MinHits", "field_id": "MinHits", "type": "*composed", "value": "~5"},
-// {"tag": "MinSleep", "field_id": "MinSleep", "type": "*composed", "value": "~6"},
-// {"tag": "Blocker", "field_id": "Blocker", "type": "*composed", "value": "~7"},
-// {"tag": "Weight", "field_id": "Weight", "type": "*composed", "value": "~8"},
-// {"tag": "ActionIDs", "field_id": "ActionIDs", "type": "*composed", "value": "~9"},
-// {"tag": "Async", "field_id": "Async", "type": "*composed", "value": "~10"},
-// ],
-// },
-// {
-// "type": "*suppliers", // data source type
-// "file_name": "Suppliers.csv", // file name in the tp_in_dir
-// "fields": [
-// {"tag": "Tenant", "field_id": "Tenant", "type": "*composed", "value": "~0", "mandatory": true},
-// {"tag": "ID", "field_id": "ID", "type": "*composed", "value": "~1", "mandatory": true},
-// {"tag": "FilterIDs", "field_id": "FilterIDs", "type": "*composed", "value": "~2"},
-// {"tag": "ActivationInterval", "field_id": "ActivationInterval", "type": "*composed", "value": "~3"},
-// {"tag": "Sorting", "field_id": "Sorting", "type": "*composed", "value": "~4"},
-// {"tag": "SortingParamameters", "field_id": "SortingParamameters", "type": "*composed", "value": "~5"},
-// {"tag": "SupplierID", "field_id": "SupplierID", "type": "*composed", "value": "~6"},
-// {"tag": "SupplierFilterIDs", "field_id": "SupplierFilterIDs", "type": "*composed", "value": "~7"},
-// {"tag": "SupplierAccountIDs", "field_id": "SupplierAccountIDs", "type": "*composed", "value": "~8"},
-// {"tag": "SupplierRatingPlanIDs", "field_id": "SupplierRatingPlanIDs", "type": "*composed", "value": "~9"},
-// {"tag": "SupplierResourceIDs", "field_id": "SupplierResourceIDs", "type": "*composed", "value": "~10"},
-// {"tag": "SupplierStatIDs", "field_id": "SupplierStatIDs", "type": "*composed", "value": "~11"},
-// {"tag": "SupplierWeight", "field_id": "SupplierWeight", "type": "*composed", "value": "~12"},
-// {"tag": "SupplierBlocker", "field_id": "SupplierBlocker", "type": "*composed", "value": "~13"},
-// {"tag": "SupplierParameters", "field_id": "SupplierParameters", "type": "*composed", "value": "~14"},
-// {"tag": "Weight", "field_id": "Weight", "type": "*composed", "value": "~15"},
-// ],
-// },
-// {
-// "type": "*chargers", // data source type
-// "file_name": "Chargers.csv", // file name in the tp_in_dir
-// "fields": [
-// {"tag": "Tenant", "field_id": "Tenant", "type": "*composed", "value": "~0", "mandatory": true},
-// {"tag": "ID", "field_id": "ID", "type": "*composed", "value": "~1", "mandatory": true},
-// {"tag": "FilterIDs", "field_id": "FilterIDs", "type": "*composed", "value": "~2"},
-// {"tag": "ActivationInterval", "field_id": "ActivationInterval", "type": "*composed", "value": "~3"},
-// {"tag": "RunID", "field_id": "RunID", "type": "*composed", "value": "~4"},
-// {"tag": "AttributeIDs", "field_id": "AttributeIDs", "type": "*composed", "value": "~5"},
-// {"tag": "Weight", "field_id": "Weight", "type": "*composed", "value": "~6"},
-// ],
-// },
-// ],
-// },
+// "cdrc": [
+// {
+// "id": "*default", // identifier of the CDRC runner
+// "enabled": false, // enable CDR client functionality
+// "dry_run": false, // do not send the CDRs to CDRS, just parse them
+// "cdrs_conns": [
+// {"address": "*internal"} // address where to reach CDR server. <*internal|x.y.z.y:1234>
+// ],
+// "cdr_format": "csv", // CDR file format <*csv|*freeswitch_csv|*fwv|*opensips_flatstore|*partial_csv>
+// "field_separator": ",", // separator used in case of csv files
+// "timezone": "", // timezone for timestamps where not specified <""|UTC|Local|$IANA_TZ_DB>
+// "run_delay": 0, // sleep interval in seconds between consecutive runs, 0 to use automation via inotify
+// "max_open_files": 1024, // maximum simultaneous files to process, 0 for unlimited
+// "data_usage_multiply_factor": 1024, // conversion factor for data usage
+// "cdr_in_dir": "/var/spool/cgrates/cdrc/in", // absolute path towards the directory where the CDRs are stored
+// "cdr_out_dir": "/var/spool/cgrates/cdrc/out", // absolute path towards the directory where processed CDRs will be moved
+// "failed_calls_prefix": "missed_calls", // used in case of flatstore CDRs to avoid searching for BYE records
+// "cdr_path": "", // path towards one CDR element in case of XML CDRs
+// "cdr_source_id": "freeswitch_csv", // free form field, tag identifying the source of the CDRs within CDRS database
+// "filters": [], // new filters used in FilterS subsystem
+// "tenant": "cgrates.org", // default tenant
+// "continue_on_success": false, // continue to the next template if executed
+// "partial_record_cache": "10s", // duration to cache partial records when not pairing
+// "partial_cache_expiry_action": "*dump_to_file", // action taken when cache when records in cache are timed-out <*dump_to_file|*post_cdr>
+// "header_fields": [], // template of the import header fields
+// "content_fields":[ // import content_fields template, tag will match internally CDR field, in case of .csv value will be represented by index of the field value
+// {"tag": "TOR", "field_id": "ToR", "type": "*composed", "value": "~2", "mandatory": true},
+// {"tag": "OriginID", "field_id": "OriginID", "type": "*composed", "value": "~3", "mandatory": true},
+// {"tag": "RequestType", "field_id": "RequestType", "type": "*composed", "value": "~4", "mandatory": true},
+// {"tag": "Tenant", "field_id": "Tenant", "type": "*composed", "value": "~6", "mandatory": true},
+// {"tag": "Category", "field_id": "Category", "type": "*composed", "value": "~7", "mandatory": true},
+// {"tag": "Account", "field_id": "Account", "type": "*composed", "value": "~8", "mandatory": true},
+// {"tag": "Subject", "field_id": "Subject", "type": "*composed", "value": "~9", "mandatory": true},
+// {"tag": "Destination", "field_id": "Destination", "type": "*composed", "value": "~10", "mandatory": true},
+// {"tag": "SetupTime", "field_id": "SetupTime", "type": "*composed", "value": "~11", "mandatory": true},
+// {"tag": "AnswerTime", "field_id": "AnswerTime", "type": "*composed", "value": "~12", "mandatory": true},
+// {"tag": "Usage", "field_id": "Usage", "type": "*composed", "value": "~13", "mandatory": true},
+// ],
+// "trailer_fields": [], // template of the import trailer fields
+// "cache_dump_fields": [ // template used when dumping cached CDR, eg: partial CDRs
+// {"tag": "CGRID", "type": "*composed", "value": "~CGRID"},
+// {"tag": "RunID", "type": "*composed", "value": "~RunID"},
+// {"tag": "TOR", "type": "*composed", "value": "~ToR"},
+// {"tag": "OriginID", "type": "*composed", "value": "~OriginID"},
+// {"tag": "RequestType", "type": "*composed", "value": "~RequestType"},
+// {"tag": "Tenant", "type": "*composed", "value": "~Tenant"},
+// {"tag": "Category", "type": "*composed", "value": "~Category"},
+// {"tag": "Account", "type": "*composed", "value": "~Account"},
+// {"tag": "Subject", "type": "*composed", "value": "~Subject"},
+// {"tag": "Destination", "type": "*composed", "value": "~Destination"},
+// {"tag": "SetupTime", "type": "*composed", "value": "~SetupTime", "layout": "2006-01-02T15:04:05Z07:00"},
+// {"tag": "AnswerTime", "type": "*composed", "value": "~AnswerTime", "layout": "2006-01-02T15:04:05Z07:00"},
+// {"tag": "Usage", "type": "*composed", "value": "~Usage"},
+// {"tag": "Cost", "type": "*composed", "value": "~Cost"},
+// ],
+// },
// ],
-// "mailer": {
-// "server": "localhost", // the server to use when sending emails out
-// "auth_user": "cgrates", // authenticate to email server using this user
-// "auth_password": "CGRateS.org", // authenticate to email server with this password
-// "from_address": "cgr-mailer@localhost.localdomain" // from address used when sending emails out
-// },
+// "sessions": {
+// "enabled": false, // starts session manager service:
+// "listen_bijson": "127.0.0.1:2014", // address where to listen for bidirectional JSON-RPC requests
+// "chargers_conns": [], // address where to reach the charger service, empty to disable charger functionality: <""|*internal|x.y.z.y:1234>
+// "rals_conns": [
+// {"address": "*internal"} // address where to reach the RALs <""|*internal|127.0.0.1:2013>
+// ],
+// "cdrs_conns": [
+// {"address": "*internal"} // address where to reach CDR Server, empty to disable CDR capturing <*internal|x.y.z.y:1234>
+// ],
+// "resources_conns": [], // address where to reach the ResourceS <""|*internal|127.0.0.1:2013>
+// "thresholds_conns": [], // address where to reach the ThresholdS <""|*internal|127.0.0.1:2013>
+// "stats_conns": [], // address where to reach the StatS <""|*internal|127.0.0.1:2013>
+// "suppliers_conns": [], // address where to reach the SupplierS <""|*internal|127.0.0.1:2013>
+// "attributes_conns": [], // address where to reach the AttributeS <""|*internal|127.0.0.1:2013>
+// "session_replication_conns": [], // replicate sessions towards these session services
+// "debit_interval": "0s", // interval to perform debits on.
+// "min_call_duration": "0s", // only authorize calls with allowed duration higher than this
+// "max_call_duration": "3h", // maximum call duration a prepaid call can last
+// "session_ttl": "0s", // time after a session with no updates is terminated, not defined by default
+// //"session_ttl_max_delay": "", // activates session_ttl randomization and limits the maximum possible delay
+// //"session_ttl_last_used": "", // tweak LastUsed for sessions timing-out, not defined by default
+// //"session_ttl_usage": "", // tweak Usage for sessions timing-out, not defined by default
+// "session_indexes": [], // index sessions based on these fields for GetActiveSessions API
+// "client_protocol": 1.0, // version of protocol to use when acting as JSON-PRC client <"0","1.0">
+// "channel_sync_interval": "0", // sync channels regularly (0 to disable sync session)
+// },
-// "suretax": {
-// "url": "", // API url
-// "client_number": "", // client number, provided by SureTax
-// "validation_key": "", // validation key provided by SureTax
-// "business_unit": "", // client’s Business Unit
-// "timezone": "Local", // convert the time of the events to this timezone before sending request out
-// "include_local_cost": false, // sum local calculated cost with tax one in final cost
-// "return_file_code": "0", // default or Quote purposes <0|Q>
-// "response_group": "03", // determines how taxes are grouped for the response <03|13>
-// "response_type": "D4", // determines the granularity of taxes and (optionally) the decimal precision for the tax calculations and amounts in the response
-// "regulatory_code": "03", // provider type
-// "client_tracking": "CGRID", // template extracting client information out of StoredCdr; <$RSRFields>
-// "customer_number": "Subject", // template extracting customer number out of StoredCdr; <$RSRFields>
-// "orig_number": "Subject", // template extracting origination number out of StoredCdr; <$RSRFields>
-// "term_number": "Destination", // template extracting termination number out of StoredCdr; <$RSRFields>
-// "bill_to_number": "", // template extracting billed to number out of StoredCdr; <$RSRFields>
-// "zipcode": "", // template extracting billing zip code out of StoredCdr; <$RSRFields>
-// "plus4": "", // template extracting billing zip code extension out of StoredCdr; <$RSRFields>
-// "p2pzipcode": "", // template extracting secondary zip code out of StoredCdr; <$RSRFields>
-// "p2pplus4": "", // template extracting secondary zip code extension out of StoredCdr; <$RSRFields>
-// "units": "^1", // template extracting number of “lines” or unique charges contained within the revenue out of StoredCdr; <$RSRFields>
-// "unit_type": "^00", // template extracting number of unique access lines out of StoredCdr; <$RSRFields>
-// "tax_included": "^0", // template extracting tax included in revenue out of StoredCdr; <$RSRFields>
-// "tax_situs_rule": "^04", // template extracting tax situs rule out of StoredCdr; <$RSRFields>
-// "trans_type_code": "^010101", // template extracting transaction type indicator out of StoredCdr; <$RSRFields>
-// "sales_type_code": "^R", // template extracting sales type code out of StoredCdr; <$RSRFields>
-// "tax_exemption_code_list": "", // template extracting tax exemption code list out of StoredCdr; <$RSRFields>
-// },
+// "asterisk_agent": {
+// "enabled": false, // starts the Asterisk agent:
+// "sessions_conns": [
+// {"address": "*internal"} // connection towards session service: <*internal>
+// ],
+// "create_cdr": false, // create CDR out of events and sends it to CDRS component
+// "asterisk_conns":[ // instantiate connections to multiple Asterisk servers
+// {"address": "127.0.0.1:8088", "user": "cgrates", "password": "CGRateS.org", "connect_attempts": 3,"reconnects": 5}
+// ],
+// },
-// "loader": { // loader for tariff plans out of .csv files
-// "tpid": "", // tariff plan identificator
-// "data_path": "", // path towards tariff plan files
-// "disable_reverse": false, // disable reverse computing
-// "caches_conns": [ // addresses towards cacheS components for reloads
-// {"address": "127.0.0.1:2012", "transport": "*json"}
-// ],
-// "scheduler_conns": [
-// {"address": "127.0.0.1:2012"}
-// ],
-// },
+// "freeswitch_agent": {
+// "enabled": false, // starts the FreeSWITCH agent:
+// "sessions_conns": [
+// {"address": "*internal"} // connection towards session service: <*internal>
+// ],
+// "subscribe_park": true, // subscribe via fsock to receive park events
+// "create_cdr": false, // create CDR out of events and sends them to CDRS component
+// "extra_fields": [], // extra fields to store in auth/CDRs when creating them
+// //"min_dur_low_balance": "5s", // threshold which will trigger low balance warnings for prepaid calls (needs to be lower than debit_interval)
+// //"low_balance_ann_file": "", // file to be played when low balance is reached for prepaid calls
+// "empty_balance_context": "", // if defined, prepaid calls will be transferred to this context on empty balance
+// "empty_balance_ann_file": "", // file to be played before disconnecting prepaid calls on empty balance (applies only if no context defined)
+// "max_wait_connection": "2s", // maximum duration to wait for a connection to be retrieved from the pool
+// "event_socket_conns": [ // instantiate connections to multiple FreeSWITCH servers
+// {"address": "127.0.0.1:8021", "password": "ClueCon", "reconnects": 5,"alias":""}
+// ],
+// },
-// "migrator": {
-// "out_datadb_type": "redis",
-// "out_datadb_host": "127.0.0.1",
-// "out_datadb_port": "6379",
-// "out_datadb_name": "10",
-// "out_datadb_user": "cgrates",
-// "out_datadb_password": "",
-// "out_datadb_encoding": "msgpack",
-// "out_stordb_type": "mysql",
-// "out_stordb_host": "127.0.0.1",
-// "out_stordb_port": "3306",
-// "out_stordb_name": "cgrates",
-// "out_stordb_user": "cgrates",
-// "out_stordb_password": "",
-// },
+// "kamailio_agent": {
+// "enabled": false, // starts SessionManager service:
+// "sessions_conns": [
+// {"address": "*internal"} // connection towards session service: <*internal>
+// ],
+// "create_cdr": false, // create CDR out of events and sends them to CDRS component
+// "timezone": "", // timezone of the Kamailio server
+// "evapi_conns": [ // instantiate connections to multiple Kamailio servers
+// {"address": "127.0.0.1:8448", "reconnects": 5}
+// ],
+// },
-// "dispatcher":{
-// "enabled": false, // starts DispatcherS service: .
-// "rals_conns": [], // address where to reach the RALs for dispatcherS <*internal>
-// "resources_conns": [], // address where to reach the ResourceS <""|127.0.0.1:2013>
-// "thresholds_conns": [], // address where to reach the ThresholdS <""|127.0.0.1:2013>
-// "stats_conns": [], // address where to reach the StatS <""|127.0.0.1:2013>
-// "suppliers_conns": [], // address where to reach the SupplierS <""|127.0.0.1:2013>
-// "attributes_conns": [], // address where to reach the AttributeS <""|127.0.0.1:2013>
-// "sessions_conns": [], // connection towards SessionService
-// "chargers_conns": [], // address where to reach the ChargerS <""|127.0.0.1:2013>
-// "dispatching_strategy": "*first", // strategy for dispatching <*first|*random|*next|*broadcast>
-// },
+// "diameter_agent": {
+// "enabled": false, // enables the diameter agent:
+// "listen": "127.0.0.1:3868", // address where to listen for diameter requests
+// "dictionaries_path": "/usr/share/cgrates/diameter/dict/", // path towards directory holding additional dictionaries to load
+// "sessions_conns": [
+// {"address": "*internal"} // connection towards SessionService
+// ],
+// "origin_host": "CGR-DA", // diameter Origin-Host AVP used in replies
+// "origin_realm": "cgrates.org", // diameter Origin-Realm AVP used in replies
+// "vendor_id": 0, // diameter Vendor-Id AVP used in replies
+// "product_name": "CGRateS", // diameter Product-Name AVP used in replies
+// "templates": {
+// "*cca": [
+// {"tag": "SessionId", "field_id": "Session-Id", "type": "*composed",
+// "value": "~*req.Session-Id", "mandatory": true},
+// {"tag": "OriginHost", "field_id": "Origin-Host", "type": "*composed",
+// "value": "~*vars.OriginHost", "mandatory": true},
+// {"tag": "OriginRealm", "field_id": "Origin-Realm", "type": "*composed",
+// "value": "~*vars.OriginRealm", "mandatory": true},
+// {"tag": "AuthApplicationId", "field_id": "Auth-Application-Id", "type": "*composed",
+// "value": "~*vars.*appid", "mandatory": true},
+// {"tag": "CCRequestType", "field_id": "CC-Request-Type", "type": "*composed",
+// "value": "~*req.CC-Request-Type", "mandatory": true},
+// {"tag": "CCRequestNumber", "field_id": "CC-Request-Number", "type": "*composed",
+// "value": "~*req.CC-Request-Number", "mandatory": true},
+// ]
+// },
+// "request_processors": [],
+// },
-// "analyzers":{
-// "enabled":false // starts AnalyzerS service: .
-// },
+// "radius_agent": {
+// "enabled": false, // enables the radius agent:
+// "listen_net": "udp", // network to listen on
+// "listen_auth": "127.0.0.1:1812", // address where to listen for radius authentication requests
+// "listen_acct": "127.0.0.1:1813", // address where to listen for radius accounting requests
+// "client_secrets": { // hash containing secrets for clients connecting here <*default|$client_ip>
+// "*default": "CGRateS.org"
+// },
+// "client_dictionaries": { // per client path towards directory holding additional dictionaries to load (extra to RFC)
+// "*default": "/usr/share/cgrates/radius/dict/", // key represents the client IP or catch-all <*default|$client_ip>
+// },
+// "sessions_conns": [
+// {"address": "*internal"} // connection towards SessionService
+// ],
+// "cdr_requires_session": false, // only create CDR if there is an active session at terminate
+// "request_processors": [],
+// },
+
+
+// "http_agent": [], // HTTP Agents, ie towards cnc.to MVNE platform
+
+
+// "pubsubs": {
+// "enabled": false, // starts PubSub service: .
+// },
+
+
+// "aliases": {
+// "enabled": false, // starts Aliases service: .
+// },
+
+
+// "users": {
+// "enabled": false, // starts User service: .
+// "indexes": [], // user profile field indexes
+// },
+
+
+// "attributes": { // Attribute service
+// "enabled": false, // starts attribute service: .
+// //"string_indexed_fields": [], // query indexes based on these fields for faster processing
+// "prefix_indexed_fields": [], // query indexes based on these fields for faster processing
+// "process_runs": 1, // number of run loops when processing event
+// },
+
+
+// "chargers": { // Charger service
+// "enabled": false, // starts charger service: .
+// "attributes_conns": [], // address where to reach the AttributeS <""|127.0.0.1:2013>
+// //"string_indexed_fields": [], // query indexes based on these fields for faster processing
+// "prefix_indexed_fields": [], // query indexes based on these fields for faster processing
+// },
+
+
+// "resources": { // Resource service (*new)
+// "enabled": false, // starts ResourceLimiter service: .
+// "store_interval": "", // dump cache regularly to dataDB, 0 - dump at start/shutdown: <""|$dur>
+// "thresholds_conns": [], // address where to reach the thresholds service, empty to disable thresholds functionality: <""|*internal|x.y.z.y:1234>
+// //"string_indexed_fields": [], // query indexes based on these fields for faster processing
+// "prefix_indexed_fields": [], // query indexes based on these fields for faster processing
+// },
+
+
+// "stats": { // Stat service (*new)
+// "enabled": false, // starts Stat service: .
+// "store_interval": "", // dump cache regularly to dataDB, 0 - dump at start/shutdown: <""|$dur>
+// "thresholds_conns": [], // address where to reach the thresholds service, empty to disable thresholds functionality: <""|*internal|x.y.z.y:1234>
+// //"string_indexed_fields": [], // query indexes based on these fields for faster processing
+// "prefix_indexed_fields": [], // query indexes based on these fields for faster processing
+// },
+
+
+// "thresholds": { // Threshold service (*new)
+// "enabled": false, // starts ThresholdS service: .
+// "store_interval": "", // dump cache regularly to dataDB, 0 - dump at start/shutdown: <""|$dur>
+// //"string_indexed_fields": [], // query indexes based on these fields for faster processing
+// "prefix_indexed_fields": [], // query indexes based on these fields for faster processing
+// },
+
+
+// "suppliers": { // Supplier service (*new)
+// "enabled": false, // starts SupplierS service: .
+// //"string_indexed_fields": [], // query indexes based on these fields for faster processing
+// "prefix_indexed_fields": [], // query indexes based on these fields for faster processing
+// "attributes_conns": [], // address where to reach the AttributeS <""|127.0.0.1:2013>
+// "rals_conns": [
+// {"address": "*internal"}, // address where to reach the RALs for cost/accounting <*internal>
+// ],
+// "resources_conns": [], // address where to reach the Resource service, empty to disable functionality: <""|*internal|x.y.z.y:1234>
+// "stats_conns": [], // address where to reach the Stat service, empty to disable stats functionality: <""|*internal|x.y.z.y:1234>
+// },
+
+
+// "loaders": [
+// {
+// "id": "*default", // identifier of the Loader
+// "enabled": false, // starts as service: .
+// "tenant": "cgrates.org", // tenant used in filterS.Pass
+// "dry_run": false, // do not send the CDRs to CDRS, just parse them
+// "run_delay": 0, // sleep interval in seconds between consecutive runs, 0 to use automation via inotify
+// "lock_filename": ".cgr.lck", // Filename containing concurrency lock in case of delayed processing
+// "caches_conns": [
+// {"address": "*internal"}, // address where to reach the CacheS for data reload, empty for no reloads <""|*internal|x.y.z.y:1234>
+// ],
+// "field_separator": ",", // separator used in case of csv files
+// "tp_in_dir": "/var/spool/cgrates/loader/in", // absolute path towards the directory where the CDRs are stored
+// "tp_out_dir": "/var/spool/cgrates/loader/out", // absolute path towards the directory where processed CDRs will be moved
+// "data": [ // data profiles to load
+// {
+// "type": "*attributes", // data source type
+// "file_name": "Attributes.csv", // file name in the tp_in_dir
+// "fields": [
+// {"tag": "TenantID", "field_id": "Tenant", "type": "*composed", "value": "~0", "mandatory": true},
+// {"tag": "ProfileID", "field_id": "ID", "type": "*composed", "value": "~1", "mandatory": true},
+// {"tag": "Contexts", "field_id": "Contexts", "type": "*composed", "value": "~2"},
+// {"tag": "FilterIDs", "field_id": "FilterIDs", "type": "*composed", "value": "~3"},
+// {"tag": "ActivationInterval", "field_id": "ActivationInterval", "type": "*composed", "value": "~4"},
+// {"tag": "FieldName", "field_id": "FieldName", "type": "*composed", "value": "~5"},
+// {"tag": "Initial", "field_id": "Initial", "type": "*composed", "value": "~6"},
+// {"tag": "Substitute", "field_id": "Substitute", "type": "*composed", "value": "~7"},
+// {"tag": "Append", "field_id": "Append", "type": "*composed", "value": "~8"},
+// {"tag": "Weight", "field_id": "Weight", "type": "*composed", "value": "~9"},
+// ],
+// },
+// {
+// "type": "*filters", // data source type
+// "file_name": "Filters.csv", // file name in the tp_in_dir
+// "fields": [
+// {"tag": "Tenant", "field_id": "Tenant", "type": "*composed", "value": "~0", "mandatory": true},
+// {"tag": "ID", "field_id": "ID", "type": "*composed", "value": "~1", "mandatory": true},
+// {"tag": "FilterType", "field_id": "FilterType", "type": "*composed", "value": "~2"},
+// {"tag": "FilterFieldName", "field_id": "FilterFieldName", "type": "*composed", "value": "~3"},
+// {"tag": "FilterFieldValues", "field_id": "FilterFieldValues", "type": "*composed", "value": "~4"},
+// {"tag": "ActivationInterval", "field_id": "ActivationInterval", "type": "*composed", "value": "~5"},
+// ],
+// },
+// {
+// "type": "*resources", // data source type
+// "file_name": "Resources.csv", // file name in the tp_in_dir
+// "fields": [
+// {"tag": "Tenant", "field_id": "Tenant", "type": "*composed", "value": "~0", "mandatory": true},
+// {"tag": "ID", "field_id": "ID", "type": "*composed", "value": "~1", "mandatory": true},
+// {"tag": "FilterIDs", "field_id": "FilterIDs", "type": "*composed", "value": "~2"},
+// {"tag": "ActivationInterval", "field_id": "ActivationInterval", "type": "*composed", "value": "~3"},
+// {"tag": "TTL", "field_id": "UsageTTL", "type": "*composed", "value": "~4"},
+// {"tag": "Limit", "field_id": "Limit", "type": "*composed", "value": "~5"},
+// {"tag": "AllocationMessage", "field_id": "AllocationMessage", "type": "*composed", "value": "~6"},
+// {"tag": "Blocker", "field_id": "Blocker", "type": "*composed", "value": "~7"},
+// {"tag": "Stored", "field_id": "Stored", "type": "*composed", "value": "~8"},
+// {"tag": "Weight", "field_id": "Weight", "type": "*composed", "value": "~9"},
+// {"tag": "ThresholdIDs", "field_id": "ThresholdIDs", "type": "*composed", "value": "~10"},
+// ],
+// },
+// {
+// "type": "*stats", // data source type
+// "file_name": "Stats.csv", // file name in the tp_in_dir
+// "fields": [
+// {"tag": "Tenant", "field_id": "Tenant", "type": "*composed", "value": "~0", "mandatory": true},
+// {"tag": "ID", "field_id": "ID", "type": "*composed", "value": "~1", "mandatory": true},
+// {"tag": "FilterIDs", "field_id": "FilterIDs", "type": "*composed", "value": "~2"},
+// {"tag": "ActivationInterval", "field_id": "ActivationInterval", "type": "*composed", "value": "~3"},
+// {"tag": "QueueLength", "field_id": "QueueLength", "type": "*composed", "value": "~4"},
+// {"tag": "TTL", "field_id": "TTL", "type": "*composed", "value": "~5"},
+// {"tag": "Metrics", "field_id": "Metrics", "type": "*composed", "value": "~6"},
+// {"tag": "MetricParams", "field_id": "Parameters", "type": "*composed", "value": "~7"},
+// {"tag": "Blocker", "field_id": "Blocker", "type": "*composed", "value": "~8"},
+// {"tag": "Stored", "field_id": "Stored", "type": "*composed", "value": "~9"},
+// {"tag": "Weight", "field_id": "Weight", "type": "*composed", "value": "~10"},
+// {"tag": "MinItems", "field_id": "MinItems", "type": "*composed", "value": "~11"},
+// {"tag": "ThresholdIDs", "field_id": "ThresholdIDs", "type": "*composed", "value": "~12"},
+// ],
+// },
+// {
+// "type": "*thresholds", // data source type
+// "file_name": "Thresholds.csv", // file name in the tp_in_dir
+// "fields": [
+// {"tag": "Tenant", "field_id": "Tenant", "type": "*composed", "value": "~0", "mandatory": true},
+// {"tag": "ID", "field_id": "ID", "type": "*composed", "value": "~1", "mandatory": true},
+// {"tag": "FilterIDs", "field_id": "FilterIDs", "type": "*composed", "value": "~2"},
+// {"tag": "ActivationInterval", "field_id": "ActivationInterval", "type": "*composed", "value": "~3"},
+// {"tag": "MaxHits", "field_id": "MaxHits", "type": "*composed", "value": "~4"},
+// {"tag": "MinHits", "field_id": "MinHits", "type": "*composed", "value": "~5"},
+// {"tag": "MinSleep", "field_id": "MinSleep", "type": "*composed", "value": "~6"},
+// {"tag": "Blocker", "field_id": "Blocker", "type": "*composed", "value": "~7"},
+// {"tag": "Weight", "field_id": "Weight", "type": "*composed", "value": "~8"},
+// {"tag": "ActionIDs", "field_id": "ActionIDs", "type": "*composed", "value": "~9"},
+// {"tag": "Async", "field_id": "Async", "type": "*composed", "value": "~10"},
+// ],
+// },
+// {
+// "type": "*suppliers", // data source type
+// "file_name": "Suppliers.csv", // file name in the tp_in_dir
+// "fields": [
+// {"tag": "Tenant", "field_id": "Tenant", "type": "*composed", "value": "~0", "mandatory": true},
+// {"tag": "ID", "field_id": "ID", "type": "*composed", "value": "~1", "mandatory": true},
+// {"tag": "FilterIDs", "field_id": "FilterIDs", "type": "*composed", "value": "~2"},
+// {"tag": "ActivationInterval", "field_id": "ActivationInterval", "type": "*composed", "value": "~3"},
+// {"tag": "Sorting", "field_id": "Sorting", "type": "*composed", "value": "~4"},
+// {"tag": "SortingParamameters", "field_id": "SortingParamameters", "type": "*composed", "value": "~5"},
+// {"tag": "SupplierID", "field_id": "SupplierID", "type": "*composed", "value": "~6"},
+// {"tag": "SupplierFilterIDs", "field_id": "SupplierFilterIDs", "type": "*composed", "value": "~7"},
+// {"tag": "SupplierAccountIDs", "field_id": "SupplierAccountIDs", "type": "*composed", "value": "~8"},
+// {"tag": "SupplierRatingPlanIDs", "field_id": "SupplierRatingPlanIDs", "type": "*composed", "value": "~9"},
+// {"tag": "SupplierResourceIDs", "field_id": "SupplierResourceIDs", "type": "*composed", "value": "~10"},
+// {"tag": "SupplierStatIDs", "field_id": "SupplierStatIDs", "type": "*composed", "value": "~11"},
+// {"tag": "SupplierWeight", "field_id": "SupplierWeight", "type": "*composed", "value": "~12"},
+// {"tag": "SupplierBlocker", "field_id": "SupplierBlocker", "type": "*composed", "value": "~13"},
+// {"tag": "SupplierParameters", "field_id": "SupplierParameters", "type": "*composed", "value": "~14"},
+// {"tag": "Weight", "field_id": "Weight", "type": "*composed", "value": "~15"},
+// ],
+// },
+// {
+// "type": "*chargers", // data source type
+// "file_name": "Chargers.csv", // file name in the tp_in_dir
+// "fields": [
+// {"tag": "Tenant", "field_id": "Tenant", "type": "*composed", "value": "~0", "mandatory": true},
+// {"tag": "ID", "field_id": "ID", "type": "*composed", "value": "~1", "mandatory": true},
+// {"tag": "FilterIDs", "field_id": "FilterIDs", "type": "*composed", "value": "~2"},
+// {"tag": "ActivationInterval", "field_id": "ActivationInterval", "type": "*composed", "value": "~3"},
+// {"tag": "RunID", "field_id": "RunID", "type": "*composed", "value": "~4"},
+// {"tag": "AttributeIDs", "field_id": "AttributeIDs", "type": "*composed", "value": "~5"},
+// {"tag": "Weight", "field_id": "Weight", "type": "*composed", "value": "~6"},
+// ],
+// },
+// ],
+// },
+// ],
+
+
+// "mailer": {
+// "server": "localhost", // the server to use when sending emails out
+// "auth_user": "cgrates", // authenticate to email server using this user
+// "auth_password": "CGRateS.org", // authenticate to email server with this password
+// "from_address": "cgr-mailer@localhost.localdomain" // from address used when sending emails out
+// },
+
+
+// "suretax": {
+// "url": "", // API url
+// "client_number": "", // client number, provided by SureTax
+// "validation_key": "", // validation key provided by SureTax
+// "business_unit": "", // client’s Business Unit
+// "timezone": "Local", // convert the time of the events to this timezone before sending request out
+// "include_local_cost": false, // sum local calculated cost with tax one in final cost
+// "return_file_code": "0", // default or Quote purposes <0|Q>
+// "response_group": "03", // determines how taxes are grouped for the response <03|13>
+// "response_type": "D4", // determines the granularity of taxes and (optionally) the decimal precision for the tax calculations and amounts in the response
+// "regulatory_code": "03", // provider type
+// "client_tracking": "CGRID", // template extracting client information out of StoredCdr; <$RSRFields>
+// "customer_number": "Subject", // template extracting customer number out of StoredCdr; <$RSRFields>
+// "orig_number": "Subject", // template extracting origination number out of StoredCdr; <$RSRFields>
+// "term_number": "Destination", // template extracting termination number out of StoredCdr; <$RSRFields>
+// "bill_to_number": "", // template extracting billed to number out of StoredCdr; <$RSRFields>
+// "zipcode": "", // template extracting billing zip code out of StoredCdr; <$RSRFields>
+// "plus4": "", // template extracting billing zip code extension out of StoredCdr; <$RSRFields>
+// "p2pzipcode": "", // template extracting secondary zip code out of StoredCdr; <$RSRFields>
+// "p2pplus4": "", // template extracting secondary zip code extension out of StoredCdr; <$RSRFields>
+// "units": "^1", // template extracting number of “lines” or unique charges contained within the revenue out of StoredCdr; <$RSRFields>
+// "unit_type": "^00", // template extracting number of unique access lines out of StoredCdr; <$RSRFields>
+// "tax_included": "^0", // template extracting tax included in revenue out of StoredCdr; <$RSRFields>
+// "tax_situs_rule": "^04", // template extracting tax situs rule out of StoredCdr; <$RSRFields>
+// "trans_type_code": "^010101", // template extracting transaction type indicator out of StoredCdr; <$RSRFields>
+// "sales_type_code": "^R", // template extracting sales type code out of StoredCdr; <$RSRFields>
+// "tax_exemption_code_list": "", // template extracting tax exemption code list out of StoredCdr; <$RSRFields>
+// },
+
+
+// "loader": { // loader for tariff plans out of .csv files
+// "tpid": "", // tariff plan identificator
+// "data_path": "", // path towards tariff plan files
+// "disable_reverse": false, // disable reverse computing
+// "caches_conns": [ // addresses towards cacheS components for reloads
+// {"address": "127.0.0.1:2012", "transport": "*json"}
+// ],
+// "scheduler_conns": [
+// {"address": "127.0.0.1:2012"}
+// ],
+// },
+
+
+// "migrator": {
+// "out_datadb_type": "redis",
+// "out_datadb_host": "127.0.0.1",
+// "out_datadb_port": "6379",
+// "out_datadb_name": "10",
+// "out_datadb_user": "cgrates",
+// "out_datadb_password": "",
+// "out_datadb_encoding": "msgpack",
+// "out_stordb_type": "mysql",
+// "out_stordb_host": "127.0.0.1",
+// "out_stordb_port": "3306",
+// "out_stordb_name": "cgrates",
+// "out_stordb_user": "cgrates",
+// "out_stordb_password": "",
+// },
+
+
+// "dispatcher":{
+// "enabled": false, // starts DispatcherS service: .
+// "rals_conns": [], // address where to reach the RALs for dispatcherS <*internal>
+// "resources_conns": [], // address where to reach the ResourceS <""|127.0.0.1:2013>
+// "thresholds_conns": [], // address where to reach the ThresholdS <""|127.0.0.1:2013>
+// "stats_conns": [], // address where to reach the StatS <""|127.0.0.1:2013>
+// "suppliers_conns": [], // address where to reach the SupplierS <""|127.0.0.1:2013>
+// "attributes_conns": [], // address where to reach the AttributeS <""|127.0.0.1:2013>
+// "sessions_conns": [], // connection towards SessionService
+// "chargers_conns": [], // address where to reach the ChargerS <""|127.0.0.1:2013>
+// "dispatching_strategy": "*first", // strategy for dispatching <*first|*random|*next|*broadcast>
+// },
+
+
+// "analyzers":{
+// "enabled":false // starts AnalyzerS service: .
+// },
}
\ No newline at end of file