DerivedCharging =============== DerivedCharging is the process of forking original request into a number (configured) of emulated ones, derived from the original parameters. This mechanism used in combination with multi-tenancy supported by default by **CGRateS** can give out complex charging scenarios, needed for example in case of whitelabel-ing. DerivedCharging occurs in two separate places: - SessionManager: necessary to handle each derived (emulated) session in it's individuall loop (eg: individual resellers will have their own charging policies implemented, some paying per minute, others per second and so on) and keep them in sync (eg: one reseller is left out of money, original call should be disconnected and all emulated sessions should end their debit loops). - Mediator: necessary to fork the CDRs into a number of derived ones influenced by the derived charging configuration and rate them individually. Configuration ------------- DerivedCharging is configured in two places: - Platform level configured within *cgrates.cfg* file. - Account level configured as part of TarrifPlans defition or interactively via RPC methods. One DerivedCharger object will be configured by an internal object like: :: type DerivedCharger struct { RunId string // Unique runId in the chain RunFilters string // Only run the charger if all the filters match ReqTypeField string // Field containing request type info, number in case of csv source, '^' as prefix in case of static values DirectionField string // Field containing direction info TenantField string // Field containing tenant info CategoryField string // Field containing tor info AccountField string // Field containing account information SubjectField string // Field containing subject information DestinationField string // Field containing destination information SetupTimeField string // Field containing setup time information AnswerTimeField string // Field containing answer time information UsageField string // Field containing usage information } **CGRateS** is able to attach an unlimited number of DerivedChargers to a single request, based on configuration.