Professional Documents
Culture Documents
Learn How To Manage Your Cfs Translations
Learn How To Manage Your Cfs Translations
Learn How To Manage Your Cfs Translations
Estella Chesneau
CONFIDENTIAL
Copyright 2000 – 2018 Metaswitch Networks. All rights reserved.
Metaswitch Networks reserves the right to, without notice, modify or revise all
or part of this document and/or change product features or specifications and
shall not be responsible for any loss, cost, or damage, including consequential
damage, caused by reliance on these materials.
01 February 2018
Version: 3
CONFIDENTIAL
Contents
Extend the built-in Attributes using Line Class Codes and User Defined Attributes.............60
Do thorough testing and build a test suite using Route Verification Tests............................81
CONFIDENTIAL
Contents
Get started with long distance call services and the associated terminology.....................124
Glossary...........................................................................................................................136
CONFIDENTIAL
CONFIDENTIAL
Get to grips with the guide
Get to grips with the guide
If you're new to CFS translations, then this guide is designed for you. If you're looking to refresh
your memory or for a reference guide then you can use it too!
This guide is based on the classroom translations courses that we have been running and
developing for several years. It assumes no prior knowledge of translations, either on the CFS
or on any other switch. If you start at What are “translations”? on page 8 and work through
the guide in order then the topics should flow comfortably and you will build up a very solid
understanding of the translations on the CFS.
The guide does assume that:
• You are comfortable with using MetaView Explorer to edit the configuration in the object
tree (also known as the Tree View Panel).
• You do not have a NANP (North American Number Plan) deployment. If you do have a
NANP system then everything in this guide is still correct but please be aware that this
version of the guide does not cover some key extra NANP features, such as carrier code
handling and LNP lookups.
Note: Use the MetaView Explorer User's Guide if you want to learn about using the MetaView
Explorer.
Some of the chapters include suggested exercises and we recommend doing them. Since
we don't know exactly what configuration you've got on your CFS, the exercises are just
suggestions for things to try and there are no definitive answers. If you've got other ideas
that you'd like to investigate, then that's fine. Most people learn a lot more by doing than by
reading. In fact, my experience is that people learn most by making mistakes and then fixing
them, so just have a go!
Note: At Metaswitch we like technical terms and we really like acronyms. The Glossary on page 136
will help you make sense of the terminology you'll come across in translations.
CONFIDENTIAL 7
What are "translations"?
Are translations really the heart of your CFS? The translation configuration is my favourite CFS
topic so I may be biased, while the software and hardware developers who've spent years
working in other areas think their areas are the most important! So, it probably depends on
who you're talking to.
Translations do 6 key things during a call.
• Collect the dialed digits.
• Modify digits, usually those in the destination number.
• Classify the call. For example, work out if it's a national call, an emergency call etc.
• Look for the called number in the CFS's subscriber database.
• Choose the outgoing trunk for calls going to the network.
• Control some of the signaling messages used for calls.
If you want to do any of these then get ready to dive into translations.
Don't panic
If you've not dealt with switch translations before, or if you've just realized how long this manual
is, then you may be starting to worry that there's too much to learn.
8 CONFIDENTIAL
What are "translations"?
The translations configuration on your CFS is immensely powerful and potentially very complex.
However, you don't have to build it from scratch or on your own.
We provide an initial configuration (often called the base configuration) that provides most of
the configuration that you need to handle calls in your particular country or region. This base
configuration is added to your CFS as part of the initial commissioning phase. (We'll look at
base configurations and regions in more detail in Identify your base configuration on page 10.)
Once the base configuration is installed you then just need to make small changes to the base
configuration to match your particular deployment. We also expect service providers to make
basic changes to maintain the configuration, for example by adding support when a new area
code is turned up or a trunk is added.
You will now receive email notifications about new content in the Translations space. It's a
great way to keep up-to-date with translations news.
6. If you require further help with translations, contact your Metaswitch CSE or Account
Manager. They will be happy to answer your questions.
CONFIDENTIAL 9
Identify your base configuration
Note: Most of the screenshots in this guide were taken on an International system. If you have a
NANP deployment, don't be surprised if the configuration in the screenshots doesn't match
your own configuration exactly.
Checkpoint: You now know whether you have a NANP or International system, so you're ready
to jump into the configuration. Let's begin at the top with how to Manage your translations using
Config Sets on page 11.
10 CONFIDENTIAL
Manage your translations using Config Sets
Manage your translations using Config Sets
Config Sets are the key top-level configuration objects in translations. Even if you never edit
translations yourself, you may still need to manage Config Sets provided by other people, such
as Metaswitch Professional Services. So, what is a Config Set and how do you use it?
A Config Set contains all of the configuration you need to define the translations on your CFS.
(Actually it's not exactly all of the configuration if you use some of the advanced features, but
for now it's much simpler to remember that a Config Set is everything you need!) We’ll soon
look at what’s inside a Config Set, but first we need to look at how you use Config Sets to
manage your translations.
Does it seem odd to start managing Config Sets before you know what's inside them? Don't
worry - there is a reason for starting here! The first step whenever you edit translations is to
create a new Config Set, so doing this section first means you can start practicing translations
as quickly as possible.
You'll find the Config Sets under Trunk Routing and Policy Services under the Call Feature
Server.
We're using MetaView Explorer because you can't view or edit translations using MetaView
Web (it's intended for subscriber management). If you have a distributed softswitch then also
remember that all translations configuration is on the CFS, not the UMG, since it’s to do with
phone numbers and only the CFS is aware of phone numbers.
Trunk Routing and Policy Services also includes Line Class Codes and User Defined Attributes,
but we’re going to ignore those for now because they're an optional and advanced topic. (We'll
cover them later in Extend the built-in Attributes using Line Class Codes and User Defined Attributes
on page 60, when you'll be ready for them.)
Finally, before we look at the actual objects, I really recommend that you 'bookmark' the Trunk
Routing and Policy Services object by creating a new custom object view in MetaView Explorer,
as shown in this example.
CONFIDENTIAL 11
Manage your translations using Config Sets
Using a custom view makes it much easier to get back to this area in the future. I suggest also
creating views for other key objects when you're working on them.
Note: See the Custom Object Views section in the MetaView Explorer User's Guide if you want
more information on how to create and use custom views.
Deactivated or disabled Config Sets can be edited. You cannot use them for live traffic or test
them using Route Verification Tests (RVTs). In terms of editing and traffic, the disabled and
deactivated states are the same. The key difference is that disabled Config Sets are not loaded
in memory. This is why we recommend disabling Config Sets when you’re not using them.
Note: Route Verification Tests will be covered later in Do thorough testing and build a test suite using
Route Verification Tests on page 81.
12 CONFIDENTIAL
Manage your translations using Config Sets
Once you've finished editing your deactivated or disabled Config Set, you need to test it, so
you need to make it active. Again, you can easily recognize active Config Sets in the object
tree.
When you activate a Config Set, the CFS does internal consistency checking to make sure that
any references are valid; for example, to ensure that one piece of configuration doesn’t reference
another piece that has been deleted. If you try to activate a Config Set with a consistency error
then it will fail with an appropriate error message.
Once a Config Set has been activated, you can no longer edit it, but you can use it for live traffic
and test it using Route Verification Tests.
Finally, only 1 Config Set can be in use for live traffic. This is known as the live or in-use Config
Set and it must be an active Config Set. Once a Config Set is live, you can still test it using
RVTs but it can’t be deactivated, edited or deleted (in other words, you can't change it at all).
(Actually you can temporarily put test traffic through non-live Config Sets but we'll cover that
later in Decide how to test your translations on page 77, so for now just assume that all traffic
goes through the live Config Set!)
Checkpoint: You can now identify what state a Config Set is in, and you know how the states
affect what you can do with the Config Set. Now let's see exactly how you will use Config Sets.
Calls go through the live Config Set sequentially, i.e. one call completes routing before the next
call enters the Config Set. The CFS won't swap to a new live Config Set until it has finished
processing the current call, so you don't need to worry about the Config Set changing while
processing a call.
CONFIDENTIAL 13
Manage your translations using Config Sets
Note: For some customers this method for editing translations does not fit well with their working
practices. If this sounds like you, don't panic. We'll look at some alternative methods later in
Choose how to edit your translations on page 118.
14 CONFIDENTIAL
Manage your translations using Config Sets
The rest of this section goes through the 7 stages in more detail. You haven't yet learned how
to edit or test Config Sets, but you'll still be able to follow the remaining steps to create a new
Config Set that's an exact copy of an existing one.
Checkpoint: There is now a new Config Set in the object tree. It will have a blank name.
CONFIDENTIAL 15
Manage your translations using Config Sets
• Type the new Config Set name into the Config Set name field on the new Config Set
object.
• Click on apply to apply the new name.
Checkpoint: The new Config Set now has a useful name.
Step 3: Edit the new Config Set
The rest of this guide will teach you how to edit a Config Set and then you'll be able to carry
out this step. We're not going to look at this step in any more detail here. For now simply don't
edit the Config Set.
Note: If you make changes over a long period of time, or if you want to check when a Config Set
was last edited, then the Last modification time field on the Config Set shows the time and
date of the last change.
Checkpoint: The Config Set is now fully active and has a green triangle icon in the object tree.
Step 5: Test the changes
Later in this guide you'll learn how to test a Config Set and then you'll be able to carry out this
step. We're not going to look at this step in any more detail here. For now you don’t need to
test the new Config Set because you haven't edited it.
Unless you're a translations genius (or just very lucky!), then you'll probably discover that you
made a mistake. In which case, deactivate the Config Set (there's no need to disable it), make
your corrections and then activate and test it again.
Checkpoint: You should now be happy that your changes are correct.
16 CONFIDENTIAL
Manage your translations using Config Sets
Step 6: Make the new Config Set live
You now need to make your new Config Set live, so that all traffic goes through the new Config
Set. Depending on the size of your changes and how busy your system is, you may prefer to
do this during a quiet period in case there's a mistake in the new Config Set.
• Select the Trunk Routing and Policy Services object.
• Click on the … button for the Trunk Routing Config Set field. This will produce a popup
window listing the active Config Sets.
Checkpoint: The new Config Set is now live and appears as a reference under the Trunk
Routing and Policy Services object in the tree.
Note: If your new Config Set is active but doesn't appear in the list of available Config Sets,
it usually means that your new Config Set is missing a Digit Map that's referenced by a
Subscriber Group. We'll look at Digit Maps and Subscriber Groups later in Collect digits using
Digit Maps on page 23.
Checkpoint: The old live Config Set is now disabled. You should now have a go at the exercises
below to test what you've learned in this chapter.
CONFIDENTIAL 17
Manage your translations using Config Sets
Suggested exercises
1. Find the Trunk Routing and Policy Services configuration on your CFS.
2. Create a new view in the Trunk Routing and Policy Services object for easy navigation.
3. Identify which Config Set is currently in-use on your system.
4. Check that most Config Sets are disabled.
5. Follow the first two tasks in the procedure above to create a new Config Set that's an exact
copy of the current live Config Set on your system. As you go through the guide you can
edit and test your new Config Set.
6. Since it's currently an exact copy, if you want you can practice making this new Config Set
the live Config Set and then swapping back to the original Config Set. Please don't do this
on a busy system, just in case you've made a mistake!
Checkpoint: You now know exactly how to create a new Config Set and make it live on your
system. Well done! In the rest of this guide you'll learn more about the placeholder steps -
editing and testing your new Config Set. Next we need to Look inside a Config Set on page 19.
18 CONFIDENTIAL
Look inside a Config Set
Look inside a Config Set
We’ve already said that a Config Set contains all of the configuration you need to make your
CFS translations work, but what exactly is "all of the configuration"? To answer that question,
let’s look inside a Config Set.
For now we'll ignore the italic references, so there are 4 areas of configuration in a Config Set:
• Digit Maps
• Number Validation
• On-Switch Lookups (note, this is ‘On-Switch and LNP Lookups’ for a NANP system)
• Trunk Routing
A new call passing through the CFS will go through all of these stages in turn, so let’s see what
they all do.
CONFIDENTIAL 19
Look inside a Config Set
Note: In the NANP scheme this configuration section is called On Switch and LNP Lookups since it
also tells the CFS when to do an LNP (Local Number Portability) lookup. We won't cover
LNP lookups in this guide.
Suggested exercises
1. Open the new Config Set that you created earlier and confirm that it contains all 4
translations areas.
Checkpoint: You now know, at a simple level, all of the 4 translations stages when processing
a call. You also know which stages don't apply for Class 4 systems and which ones don't apply
to calls from trunks. Now you'll learn how the 4 stages of translations fit into the "7 steps" view
of call processing that we teach for troubleshooting.
20 CONFIDENTIAL
Fit translations into the 7 steps
Fit translations into the 7 steps
The "7 steps" is a simple way to gain a good understanding of how the CFS processes a call.
Knowing the 7 steps means you can easily interpret diagnostics and work out if, and where,
a call is going wrong. In this chapter you'll learn how the 4 stages of translations (Digit Maps,
Number Validation, On-Switch Lookups and Trunk Routing) fit into the 7 steps.
Let's start with the standard 7 steps diagram. You've probably seen this in other training
courses and material.
Translations are key to this diagram. Translations account for steps 2, 4 and 5 and can influence
the other 4 steps. Let's go through the steps in detail.
Step 1 is Signaling in, which is the incoming signaling message that initiates the call. For calls
from trunks and some subscribers this signaling is determined by other devices. However, for
some types of subscriber, such as GR-303, the CFS provides the Digit Map and so translations
can affect the contents of the incoming signaling message.
Step 2 is Number Validation. This is the second, and largest, stage of translations. It's where
the CFS classifies the call.
Step 3 is the appropriate Caller's CFS services, such as call barring. Why doesn't the CFS do
the outgoing call services first, as soon as the call arrives? You now have enough translations
knowledge to answer this question. The call services need Number Validation to classify the
call first. For example, the call barring service needs to know the call type. The translations
configuration therefore has a big influence on this step because the services rely on work done
by Number Validation.
Step 4 is where the CFS looks on the switch to find the called number. This is part of the
3rd stage of translations - On-Switch Lookups. Calls always go through this step but if they're
going to a trunk then the CFS doesn't do any database lookup.
Step 5 is Trunk Routing, which is the 4th stage of translations. Like Step 4, calls always go
through this step. If the CFS has already determined that the call is going to a subscriber, then
the CFS just doesn't bother going through the Trunk Routing configuration.
Step 6 is the called party's call services, if the call has been routed to a subscriber. Like step
3, this may depend on the call properties as determined by Number Validation.
Step 7 is the outgoing signaling to the called party. Translations can have some influence
over the contents of the signaling.
CONFIDENTIAL 21
Fit translations into the 7 steps
Checkpoint: You now have a good idea of how translations fit into the standard "7 steps" view
of how a call is processed on the CFS. This will help you when troubleshooting calls on your
own system. We're now going to look at the stages in turn, starting with Digit Maps.
22 CONFIDENTIAL
Collect digits using Digit Maps
Collect digits using Digit Maps
Note: Using only SIP or ISDN subscribers? You can ignore this chapter! For these subscribers the
end device is responsible for deciding which digits to send to the CFS and it will usually send
the full set of dialed digits to the CFS in a single message.
Digit Maps are the first step in processing a call from a subscriber (except for SIP and ISDN
subscribers). They define how many and which digits to collect before passing the set of
dialed digits to the CFS. In this chapter you'll learn why you need Digit Maps and how they're
configured on the CFS.
Here's an example of why we need digit maps. In the UK the number for the emergency
services is 999. If a subscriber starts by dialing 99, then the system must wait for them to dial
the final 9 and then pass the resulting ‘999’ to the CFS, rather than just immediately passing
up the ‘99’.
The Digit Maps are defined under the Config Set. For easier reading, each Digit Map definition
is split into Digit Map Sections. The screenshot below shows the section that covers freephone
calls (also known as toll-free calls) for this particular CFS. (We'll cover the notation in the next
section, so don't worry about understanding it at the moment.)
Note that the names of the Digit Map sections are there to help you find the appropriate
configuration; they are not used to define the type of a call. For example, just because a dialed
call matches something in a section called National numbers does not mean that it will
automatically be handled as a national call. It's Number Validation that actually identifies the
type of the call.
As you can see in the screenshot above, you can have multiple Digit Maps defined on a CFS.
For a simple system this may not be required but you will need multiple Digit Maps if different
groups of subscribers can dial different sets of digits. For example, some subscribers may
be able to call local numbers without using an area code while subscribers in another area
always have to use an area code, so these 2 groups of subscribers need different Digit Maps.
Subscribers are linked to specific Digit Maps via the Subscriber Group object.
CONFIDENTIAL 23
Collect digits using Digit Maps
Did you know? The English word digit comes from the Latin digitus, meaning finger or
toe. Since people often count on their fingers, 'digit' came to mean 'numeral' as well. This
isn't true for other languages though, so perhaps English speakers are particularly keen on
counting with their fingers!
Note that the Subscriber Group field is mandatory for a subscriber and the Digit Map field
is mandatory on a Subscriber Group object. This means that even if you don't use the Digit
Maps on the CFS because you only have SIP or ISDN subscribers, you must still have 1 Digit
Map and Subscriber Group configured just so that you can set the Subscriber Group field
on your subscribers. In this situation the actual contents of the Digit Map are irrelevant since
it'll never be used.
In early versions of the CFS, Subscriber Groups were also often used to separate groups
of subscribers that needed special processing. For example, all subscribers in a particular
town, such as London, would be associated with a specific Subscriber Group. The translations
would then look at the Subscriber Group to decide what area code to add and other related
processing. On most CFSs this function is now performed by Line Class Codes, also known
as LCCs. We'll cover LCCs later in Record call properties using Attributes on page 53; for now
you just need to know that the main purpose of Subscriber Groups is to link subscribers to
Digit Maps.
24 CONFIDENTIAL
Collect digits using Digit Maps
Note: Digit Maps are slightly more complex if you need to deal with Business Group subscribers
(also known as HPBX or Business Services). In this case, the CFS first sends the Business
Group Line an auto-generated Digit Map based on the Business Group's external line code,
intercom codes, short codes etc.
If the subscriber dials an intercom code or short code then the CFS converts the code to the
full destination number before passing the call into Number Validation.
If the subscriber dials the external line code, the CFS sends the standard Digit Map to collect
the destination number. This destination number is then passed into Number Validation.
Checkpoint: You can now explain why the CFS needs Digit Maps for certain types of subscriber.
Now we need to look at how Digit Maps are defined.
. Repeat the value directly before the "." any number of times, including zero times.
For example, 79. will match any of 7, 79, 799, 7999 and so on.
- The hyphen is used to specify a range of possible values. This is always used in
square brackets.
For example, 1[1-3] will match 11, 12 or 13.
T The critical timer. We'll look at this parameter in more detail in the next section.
CONFIDENTIAL 25
Collect digits using Digit Maps
The critical timer is defined in a Digit Map as "T" and is typically 4 seconds long. This timer is
used when a valid digit string also forms part of a longer valid string. Once the subscriber has
dialed the first valid string, the device starts the critical timer. If the subscriber does not dial
more digits before the timer expires, the first valid string is passed to the CFS. If the subscriber
dials more digits, the device assumes that the subscriber is trying to dial the longer valid string.
Did you know? While we're talking about maps… The distinctive London Underground
(or "Tube") map was first designed by Harry Beck in 1931 as a personal project in his spare
time. Since then his topological, rather than geographical, style has been widely adopted
by other networks around the world. In 2006 it was voted 2nd on a list of 20th Century
British design icons in a television poll, beaten only by Concorde.
For example, in the USA "0" and "00" are both valid phone numbers (they're used for operator
calls). In addition, 011 and 01 are valid number prefixes (they're used for international calls and
international calls with operator). So, if the subscriber dials "0", how on earth can the device
tell what number the subscriber is trying to call?! Here's the relevant part of the Digit Map that
makes it work.
0T|00|01[2-9]XXX.T|011[2-9]XXX.T
So, when the subscriber dials 0, the device starts the critical timer then waits to see what
happens.
• If the subscriber doesn't dial anything else before the timer expires, then the device matches
0T and passes the digit string to the CFS.
• If the subscriber dials a second 0 before the timer expires, then the device matches 00 and
passes the digit string to the CFS.
• If the subscriber dials 1 before the timer expires, then the device cancels the timer and
waits for more digits to see whether the subscriber is dialing an 01 or 011 international
call. Numbers can be different lengths in different countries so international calls can be
of variable length. Hence, both international call digit map sections end with X.T. This
indicates that the device must wait for any number of digits (including none) followed by
the critical timer.
The partial timer is used when a subscriber has started to dial something that matches the
first part of a valid string. As an example, consider a Digit Map that contains the following
section
02XXXXXXXXX
(This section matches on 02 followed by 9 digits.) If the subscriber dials 0212345 then
pauses, the device will start the partial timer. If the subscriber then starts dialing again, the
timer is canceled and the device continues collecting digits. If the subscriber doesn't dial any
more digits, the device sends the incomplete string to the CFS. The partial timer defaults to 16
seconds, which gives a subscriber plenty of time if, for example, they need to refer back to their
address book while dialing a number.
26 CONFIDENTIAL
Collect digits using Digit Maps
Suggested exercises
Make sure you use your new Config Set (which you created in Manage your translations using
Config Sets on page 11) for all of the exercises.
1. Find the Digit Map(s) configured on your CFS.
2. Check that you understand all of the Digit Map sections - what types of call do they match
on?
3. Configure a Digit Map to accept a new length of Speed Dial code, by editing or adding a
Section.
4. Create a new Digit Map with a critical timer of 5 seconds and a partial timer of 12 seconds.
5. List a selection of dialed digits that would match the Digit Map (101XXXX|950XXXX|[0-9*].#).
6. List a selection of dialed digits that would match the digit map (0T|00|555XXXX).
7. Add a new Digit Map Section for some test numbers that you are going to use, where the
test numbers can be either: 101 or 1011 or 100 or 102-109, or 7 digits in length prefixed
by 958 or 959.
Checkpoint: You can now find and understand the Digit Map configuration on your CFS,
including the challenges of using timers to distinguish similar number patterns. That's everything
you need to know about Digit Maps (they're really not very difficult), so now we're going to get
to the heart of translations and learn how to Modify, classify and block calls in Number Validation
on page 28.
CONFIDENTIAL 27
Modify, classify and block calls in Number Validation
Note: You can also edit numbers in Trunk Routing, but typically you only do this if you need to make
a last-minute edit, such as removing the area code, because the call is going to a specific
trunk or destination.
Number Validation is also where you can block bad calls. For example, if a subscriber
accidentally misdials a number and dials too many digits, then Number Validation should reject
the call. Similarly, Number Validation may block incoming trunk calls if the called number format
is not recognized. Digit Maps (covered earlier in Collect digits using Digit Maps on page 23) will
also help to stop misdials and remote switches hopefully will not send bad numbers, but
Number Validation is the most powerful place to check numbers.
Once you have blocked misdials and normalized the digits, the main purpose of Number
Validation is to classify the call by identifying the properties of the call. Number Validation
analyzes the call and records the properties of the call in Attributes (which we’ll cover later
in Record call properties using Attributes on page 53). The rest of the CFS then just acts on the
Attributes, rather than needing to re-analyze the call.
Checkpoint: You now know what Number Validation does, so you can probably spot that it
contains quite a lot of configuration! You're now ready to start looking at the configuration,
starting with an overview.
28 CONFIDENTIAL
Modify, classify and block calls in Number Validation
Get an overview of Number Validation configuration
We're now going to look at the concept behind Number Validation configuration before we dive
into the actual configuration objects. This is all generic information and applies regardless of
which base scheme we’ve installed on your system.
It can be overwhelming the first time you open up the Number Validation configuration because
the tree looks very full, but don’t panic!
The concept behind Number Validation is actually very simple – it’s just a flow chart. If you can
represent your translations as a flow chart, then you can configure it.
Your flow chart is then configured using just 2 types of object – Tables and Entries. Tables are
the boxes in your flow chart, while Entries are the arrows between the boxes.
CONFIDENTIAL 29
Modify, classify and block calls in Number Validation
Note: Please don't use this as an example of how to name your Tables! You should give your
Tables and other objects names that make clear what they do. This makes it much easier to
understand the configuration. In this example, the Table should ideally be named something
like "Block calls to certain countries".
Another way of looking at Number Validation is that Tables ask the questions – “which trunk
did this call come from?” – and Entries are the possible answers – “SIP Trunk A”, “ISUP Trunk
B” etc. As you may spot from the diagram, the Entries are also where you can modify numbers
and record information about the call, e.g. “this is an international call”.
Checkpoint: You now know what Number Validation does and you know how the configuration
fits together to create a flow chart to handle the different types of call. Now we can move onto
the actual configuration objects, starting with Tables.
Looking at the sample screenshot above, if a call arrives from a subscriber then the call will
first start in Number Validation Table 50, while calls from trunks start in Number Validation Table
10000. Depending on your configuration you may see similar looking references in the tree to
Attributes Sets. We’ll cover Attributes later, so ignore them for now and make sure that you’re
looking at the Call from subscriber/trunk: Number Validation Table references!
If you click twice on the reference, it’ll open up the Number Validation configuration and take
you to the appropriate Table. In the following screenshot I’ve followed the reference for a call
coming from a trunk.
30 CONFIDENTIAL
Modify, classify and block calls in Number Validation
Note: Get into the habit of using the references in translations. It's faster (and much less error
prone!) than opening the tree and trying to find the relevant object manually.
Once you have chosen the type of number you want to look at, there are 3 types of match,
controlled by the Search type field - Complete, Unique and Prefix.
CONFIDENTIAL 31
Modify, classify and block calls in Number Validation
• In a Complete match Table, the entire number must match a child Entry. This means both
the contents of the digits and the number of digits must match. This type of Table is used if
you want to separate calls based on the number's length; for example, to identify different
permitted speed dial number calls from subscribers.
• The Unique match type is only used if you're doing overlap signaling, where the destination
digits can arrive at the CFS split between more than one signaling message. In comparison,
the majority of CFSs deal with enbloc signaling, where the destination address arrives in a
single message. We're going to ignore overlap signaling for now (we'll cover it later in Get
ready to discuss overlap signaling on page 64), so just ignore this option for now.
• With a Prefix match Table, the start of the number you're looking at needs to match one
of the child Entries. This type of Table is used to identify calls with a distinctive prefix, such
as international calls.
Most Tables in Number Validation are typically configured to do a Prefix match on the
Destination number (i.e. the called number).
As well as matching on the number, you can match on up to 3 other parameters by using the
Match Attribute fields. In the following example the Table is matching on the source address,
plus Match Attribute 1 is set to “Incoming Media” which means the Table will also look at the
incoming trunk (a.k.a. media channel).
When you create Entries in a Table, the Entries are automatically created with the fields that
correspond to the match type(s) set on the parent Table. For the example above, Entries in the
Table will have fields to define the required source address plus fields to define the required
incoming trunk. We’ll look at configuring Entries later in this chapter.
For a call to pass successfully through a Table, it must find a matching Entry. Before we look at
Number Validation Entry objects in detail, let's quickly consider a couple of error cases.
Firstly, what happens if a Table has more than one Entry that matches a call? There must not
be more than one Entry in a Table that matches identically; this is a misconfiguration. The CFS
will choose the Entry with the lowest index so that it can continue to process the call, but it will
also produce an error log stating that it found 2 possible matches. Note that it's fine to have
more than one possible match, as long as one of the Entries is a better match than the others.
We'll look at this in more detail in the next section.
Secondly, what happens if there's no possible matching Entry in a Table? In this situation the
default behaviour is for the call to be rejected. In many cases this is probably not an error! For
example, in the screenshot below there are Entries for all speed dial formats supported on this
particular CFS. If a call doesn’t match one of the Entries then it’s a misdial and we do want the
call to be rejected.
32 CONFIDENTIAL
Modify, classify and block calls in Number Validation
In other words, it's a white list model because a call must match one of the Entries to pass.
Note: The numbers shown in brackets at the end of the Entries in the tree, such as (7) and (9), are
the Entry index numbers. As with Table index numbers, each Entry in a Table has a unique
index but it's not used for matching so you can generally ignore it.
Occasionally you may want the opposite behaviour; it may be easier to configure a Table so
that all calls pass by default unless they match one of the Entries. In this case you can use the
Action if no match field on the Table to control what happens if no match is found.
Checkpoint: You now know how to configure a Number Validation Table object to match on
certain call parameters; effectively, to ask a question about the call. You also know how to
block misdialed calls by not having a matching Entry in a Table. Now let's see how the child
Number Validation Entries provide possible answers to the question asked by the Table.
Note: The Minimum match length field only applies if you're doing overlap signaling, so you can
ignore it here. We'll cover overlap signaling later in Get ready to discuss overlap signaling on
page 64.
The value of the Number field needs to match the appropriate number associated with the call
(as defined by the Address match type field on the parent Table). Here's a list of the notation
used for the Number field.
CONFIDENTIAL 33
Modify, classify and block calls in Number Validation
The notation used for Number field notation is intentionally very similar to the Digit Map notation
(which we covered earlier in Collect digits using Digit Maps on page 23), but there are slight
differences. In particular, in Number Validation you can do explicit prefix matches which only
look at the start of a number. Therefore there is no need for the “.” symbol; in Digit Maps this
means repeat a symbol any number of times. There’s also no need for the “T” symbol (critical
timer) since generally the complete number will be passed onto Number Validation in one go.
Note: Note that, as in Digit Maps, the “*” matches the star on the keypad and is not used as a
wildcard. The only wildcard symbol is the X, which will match any digit 0-9.
It's also acceptable to leave the Number field blank. If this is a complete match Table, then a
blank Number field will only match if there's no number present. If this is a prefix match Table,
then a blank Number field will match any number. This is how you can configure a Number
Validation Table that effectively ignores the number and just looks at the Match Attributes.
The CFS will choose the best match based on the Number field. If there are multiple possible
matches then the CFS has to find the most specific match. For example, consider a prefix
Table with the following Entries (the numbers in brackets at the end are the Entry indices so you
can ignore them when considering matches).
If the call is to 321, then all 3 Entries are possible matches, but the 321 Entry is the more
precise match. Similarly if the call is to 324, then both 32 and 32X will match, but 32X is the
better match because it is closer in length. If you can’t work out which Entry is the best match,
then it probably means you need to configure your Tables differently so that it’s clearer!
Make sure you check whether the Search type field on the Table is Prefix match or Complete
match when looking to find a match based on the number. If you use a prefix match, the dialed
digits must be at least as long as the prefix defined in the Number field. For example, an Entry
with 1234 will match 1234 or 12345, but not 123. On the other hand, if you use a complete
34 CONFIDENTIAL
Modify, classify and block calls in Number Validation
match then the full length of the number must match. For example, an Entry with 1234X will
only match a set of 5 dialed digits (e.g. 12345), not 1234 or 123456.
If the number matches, the CFS then looks at the other match parameters, as defined by the
Match Attributes on the Table, to decide which Entry is the best match. These match fields
are in the Attribute values section and only appear if you've set the Match Attribute fields
on the parent Table. We'll cover call properties and Attributes in more detail in the next chapter
(Record call properties using Attributes on page 53), but here's a quick example with 2 Entries that
match on an incoming trunk.
You can see that a call arriving on the TR_1000 SIP trunk will match the second Entry because
this is the better match, while a call arriving on any other SIP trunk will match the first Entry.
Checkpoint: You can now look at the Entries in a Number Validation Table and identify which
Entry is the best match for a particular call. This is the Entry that the CFS will use to process
the call. Now let's learn how the Entry controls what happens to the call.
Find out what happens when a Number Validation Entry matches a call
When a call matches a specific Entry in Number Validation, the configuration on that Entry tells
the CFS what to do with the call, so now we need to look at what the remaining fields in an
Entry do.
This configuration has two parts - modifications to the call and what to do next, after the
modifications. I find that the fastest way to understand what an Entry does is actually to start
with the second part - what to do next. This behaviour is controlled by the Next action field,
which is mandatory.
CONFIDENTIAL 35
Modify, classify and block calls in Number Validation
The Next action field is usually set to one of the following two values.
• Complete validation. This means that we’ve done everything we want to do in Number
Validation, so the CFS can now move to the next stage of translations.
• Look up. This tells the CFS to continue Number Validation by looking for a match in the
next Table, as defined in the Next Number Validation Table field. Don't let the name of
this option confuse you - it's nothing to do with looking for the number in a database!
Using these two values builds up your Number Validation flow chart.
You'll see the other possible values for the Next action field less frequently but you will still
come across them. Here's the full list of values and what they do.
Use default This means the Next action for the Entry is taken from the
Default next action field on the parent Table. The Default next
action field on a Table takes the same values as the Next action
field on an Entry.
Complete validation As described above, this means the call has finished Number
Validation.
Reject and announce Reject the call immediately and play an error announcement. By
default this will be a generic error announcement, but you can
also apply Attributes to choose a specific announcement. We'll
cover Attributes later in Record call properties using Attributes on
page 53. For now, just remember that it's possible to control
which announcement is played.
Announce and This is the same as Reject and announce except that after
complete validation playing the announcement the CFS will complete Number
Validation so that the call moves on to the next stage of
processing.
36 CONFIDENTIAL
Modify, classify and block calls in Number Validation
Next action What it does
Announce and lookup This is the same as Reject and announce except that the
CFS will move to another Number Validation Table after playing
the announcement. The next Table will be defined by the Next
Number Validation Table field.
Store carrier ID and This is typically used in NANP deployments where a subscriber
restart can choose the carrier for a call by dialing 101CCCC before the
number, where CCCC is the carrier's unique code. This is referred
to as casual dialing. This Next action value will store the CCCC
code and then restart Number Validation with the rest of the
dialed digits, which will be the final destination number. Carrier
calls are not covered in this version of the guide.
Store carrier ID and This is the same as Store carrier ID and restart, except that the
lookup CFS will move to another Number Validation Table, which will be
defined by the Next Number Validation Table field.
Handle as SAC This means the call has been identified as a Service Access Code
(SAC). Number Validation will now finish and the CFS will try to
find the call service which owns the SAC. The call service will then
handle the call.
Fail ANI Screening ANI Screening is where calls are blocked or permitted based on
the caller's number. We'll cover this service and its configuration
in detail later in Maintain and understand the configuration for ANI
Screening on page 124.
Checkpoint: You can now use the Next action field to understand how the Entry fits into the
Number Validation flowchart. Now you need to learn how Entries can modify calls, starting with
changing the numbers associated with a call.
CONFIDENTIAL 37
Modify, classify and block calls in Number Validation
Note: Don't be confused - the Number action fields are below the Next action field, but the CFS will
only do the Next action when it has finished doing everything else configured on the Entry,
including the Number action.
An Entry can only modify the type of number that it matches on. For example, if the Table
matches on the destination then the child Entries will only have the Called number action
field. If the Table matches on the source then you can modify more numbers, but only those
associated with the calling party. If you want to modify both the source and destination numbers
then you will need to use multiple Tables.
The notation used in the Number action fields is very simple. There are two types of action
you can use: automatic actions that normalize the number into a particular format and manual
ones that let you edit the number more precisely.
The following number actions perform automatic number normalization for the locale set on
your CFS:
• NF<NDP>: national format with national dialing prefix (typically a 1 or 0).
• NF<NAT>: national format without national dialing prefix.
• NF<IAC>: international format with access code.
• NF<INT>: international format without access code.
There are also lots of number actions that let you manually edit the number. These are the key
ones:
• PA<string> (Prefix Append). Add <string> to the start of the number.
• PD<number> or SD<number> (Prefix/Suffix Delete). Delete <number> of digits from start/
end.
• SD#. Delete the trailing # symbol, if there is one.
• R<new string>. Replace the existing number with <new string>.
38 CONFIDENTIAL
Modify, classify and block calls in Number Validation
Note: Here's a handy tip for those of us who don't have photographic memories! Scroll to the
bottom of the help panel in MetaView Explorer to see the notation and options for all the
available number actions.
Checkpoint: You now know how to modify numbers in Number Validation. We're now going to
finish learning about Entries by looking briefly at the other things Entries can do to a call.
The first field is the Number Validation Entry name. This isn't mandatory but I wish it was
because a good name makes it much easier to understand what an Entry is supposed to
do! Using the name fields effectively is a common theme throughout this guide. When you're
actively working in translations a lot, then you may be able to remember what a particular
object does. However, if someone else needs to understand your configuration, or if you have
a break from translations, then it really helps if things are clearly labeled.
After the name, the Number and Minimum match length fields tell the CFS what number
this Entry will match. We've already looked at number matching in detail earlier in this chapter.
The next field is the Routing Attribute Set. Attributes are used to record properties of the call
for use later in the call by translations, and also by other CFS components. Number Validation
classifies calls by adding Attributes. Attributes deserve their own chapter, so we'll cover them
later in Record call properties using Attributes on page 53.
After the Routing Attribute Set, the Next action field tells the CFS what to do next. We've
already covered this field. The Next action field is followed by two billing-related fields - Use
number for main billing record and Use number in billing Module 611. These fields
are used if a number is going to be modified in Number Validation but you want to use the
original number in the billing records, rather than the modified final number. The billing fields are
followed by the Number action section, which we looked at earlier; it's where you can modify
the numbers associated with a call.
The final fields are in the Attribute values section. We've covered these earlier in the chapter;
they're used to match on other call properties.
CONFIDENTIAL 39
Modify, classify and block calls in Number Validation
Suggested Exercises
1. Choose a type of call, such as local or national, and draw a flow chart for how you expect
it to be processed in Number Validation.
2. Identify the first Number Validation Table in your Config Set for calls from subscribers and
for calls from trunks.
3. Consider a Complete match Table with an Entry with the Number field set to [3-9]11.
Which numbers will this match?
4. Consider a Prefix match Table with 3 Entries that match on 123XX, 12XXX and XXXXX. If
the incoming number is 12345, which Entry will the CFS use?
5. If the incoming destination number is 56789, and the Called number action field is set to
PD3PA101, what is the resulting destination number?
6. If your configuration contains a Table called something like "Digits main table",
"Digits main" or "main", then look at the Table and its child Entries and make sure you
understand what each Entry will match on.
Checkpoint: You now have a good understanding of how Number Validation Tables and Entries
work together to process calls (ignoring Attributes for now, because we'll cover them later).
We're now going to take a slight detour from specific configuration objects and look at how you
can use selection fields effectively.
40 CONFIDENTIAL
Use search selection fields to set values easily in translations
Use search selection fields to set values easily in translations
Many fields in translations that refer to other objects are set using search selection fields.
This type of field has a magnifying glass button at the right-hand side of the field.
This button works in a similar way to dialog selection fields (the ones with the '…' button),
except that you can type in match parameters in the field box before clicking on this button as
a short cut to find the object you want. This is particularly useful in translations where you may
have, for example, hundreds of Number Validation Tables, so waiting for the full list of Tables to
appear in the popup will be tedious.
The main two ways to search are by prefix and by index. To search by prefix, type the prefix,
for example Fan in the example above, in the field box before hitting the search button. To
search by index, type =Index in the box, for example =10 in the example above. You can also
search by a range of prefixes or indices. For full details of these see the MetaView Explorer
User's Guide.
Searching by name or index is particularly useful if you have a standard naming or numbering
convention. For example, in the NANP translations scheme, the Number Validation Tables for
particular local calling areas have distinctive indices. This numbering was designed so that
users can make full use of this search selection feature. You may want to do something similar
if you have a large number of objects.
Checkpoint: You've now learned a trick that will be very useful if you have large numbers of
translation objects. After that short aside, we're going to use what you learned in the previous
chapter to follow a sample call through Number Validation.
CONFIDENTIAL 41
Follow a call through Number Validation
Note: If you have a NANP scheme then the Tables will be different but the techniques for following
a call are still the same. We covered the two different schemes earlier in Identify your base
configuration on page 10.
Once we've followed this specific call, we'll then take a step back and take a high-level look at
the International translations scheme.
The fastest way to get to the first Table is to click twice on the reference, then the MetaView
Explorer will take you to the Table. Remember that the first Table may not be the one at the top
of the list in MetaView Explorer. In our example, it's a call from a subscriber, which means we'll
start at Table 50: "Application server preprocessing".
It can be easy to get lost in the translations configuration because there are so many objects.
However, don't panic! If you end up on the wrong object then just use the back button until you
get back to somewhere that you recognize.
42 CONFIDENTIAL
Follow a call through Number Validation
Did you know? New York is the considered to
be the world's most linguistically diverse city, with
around 800 languages spoken. Only 51% of New
Yorkers speak English at home, with the most popular
non-English languages being Spanish, Chinese and
Russian.
Every Table matches on a number. In this example, the Table will do a Prefix match on the
Destination. This means the Entries will look at the start of the called number. If the called
number matches, the Entries will look at up to 3 other properties.
In this example the Table is matching on the Called Address Scope. We'll cover scope
in more detail later in Record call properties using Attributes on page 53, but for now you can
simply assume that scope indicates the type of the call. Remote ISUP destinations can signal
this parameter as the Nature of Address Indicator (NOA). Remote SIP destinations can signal
international scope by putting a + on the front of the destination in the URI, or they may omit
the + and simply include the appropriate international dialing prefix as part of the destination
number.
CONFIDENTIAL 43
Follow a call through Number Validation
This Table is interested in the scope because it's responsible for converting any calls from
Application Servers, such as the MetaSphere Enhanced Application Server (EAS), to the same
format that a subscriber would use to dial the call. When an Application Server makes a call,
it may not dial the call in the format required by your particular country. For example, it may
include the country code for all calls, even if they're going to the local country. This Table is
responsible for changing the destination number to the same dial plan format that a subscriber
would use.
Since we're following a national call dialed by a subscriber, just by looking at the Entry names
you can guess that the call should match the All other calls Entry. As you can see, giving
objects sensible names makes your life much easier! However, before we look at that Entry
in detail, the other two Entries are interesting, so I'm going to take a closer look at them first.
First, here's the Add intl prefix to international calls Entry.
You can see that the Number field is effectively blank. Since this is a Prefix match Table,
that means that the Entry will match any possible number and will therefore match all calls.
Since the number matches, the CFS will then look at the Attribute values section. We'll look
at Attributes later (in Record call properties using Attributes on page 53), but you can see that it's
matching on International scope calls.
44 CONFIDENTIAL
Follow a call through Number Validation
This Entry will therefore match any calls made from Application Servers where the Server has
flagged the call as international. The Number action section then shows that the CFS will add
a prefix of 00, which is the international dialing code on this system.
The other special Entry is Calls dialed as international to local country.
This Entry spots calls that the Application Server has dialed as international calls but that are
actually for the local country.
The Entry spots these calls by looking for an international scope and a country code of 428 (the
country code in this example). The Entry then modifies the called number by doing PD3PA0.
This removes the first 3 digits and then appends a 0, which converts the number to a standard
national call.
In our example we'll assume the call was dialed directly by a subscriber, so the scope will not
have been set yet. The call will therefore not match either of these Entries. Instead, the best
match is the All other calls Entry, which matches on any possible value of the scope,
including no scope.
CONFIDENTIAL 45
Follow a call through Number Validation
If you really want a detailed view of the call processing then you should also check the Routing
Attribute Set field. However, Attributes can cause confusion and they're not essential at this
stage, so ignore them for now (we'll cover them later in Record call properties using Attributes
on page 53).
This means the call will now go to Table 100, "Digits prefix table".
46 CONFIDENTIAL
Follow a call through Number Validation
The "Digits prefix table" is responsible for doing the initial separation of calls into different types.
It identifies 3 types of call that are easily distinguished by their prefix - Service Access Codes,
international and all others.
Service Access Codes (SACs) can be identified by their prefix - either * or #. Remember
that the * represents the star on a keypad; it's not a wildcard (we covered the notation in
Modify, classify and block calls in Number Validation on page 28).
These calls are sent to Table 5000, "Service Access Code call processing", which has Entries
that match on the expected SAC dial patterns. For example, your CFS may support access
codes of the form *XX*, but not *X*. The Entries in Table 5000 have the Next action field set
to Handle as SAC. The CFS will then complete Number Validation and find the call service that
owns the dialed access code. The call service will then handle the call.
International calls can be identified by the international dial prefix. It's a good idea to
separate them out from other calls early in the processing. This is mostly because international
destination numbers don't have a known, fixed length (since different countries have different
dial plans). That means you can't use Complete match Tables when dealing with international
calls.
CONFIDENTIAL 47
Follow a call through Number Validation
International calls are sent to Table 3000, "International preprocessing", where the international
dialing prefix is removed (on the assumption that the prefix should not be included when the
call goes to the network). After that, Table 3020, "International processing", records the length
of the country code because some types of signaling, such as MF, may signal the country code
separately.
This is followed by two Tables to try to reduce call fraud. Table 3040 bars calls to high-risk
countries. You can control this feature on a per-subscriber basis using Line Class Codes. We'll
cover these later in Extend the built-in Attributes using Line Class Codes and User Defined Attributes
on page 60. Table 50000 then bars calls that have been forwarded rather than dialed directly.
This is because we've seen call fraud at some service providers where criminals get access to
someone else's account and set up forwarding to international destinations so that they can
make free calls. You can remove or edit these Tables if you want to change the behaviour, but
be careful: they're there to protect you and your revenue!
All other calls match the Default entry in Table 100. The Number field is blank so that it
matches all possible numbers. Our example national call will use this Entry.
Like the other Entries in this Table, this Entry itself doesn't do anything. It simply sends the call
to another Table - "Digits main table".
Before we look at that Table, it's worth noting that the International base scheme is designed
so that the Table index values increment as the call flows through. This means that calls always
start near the top of the Number Validation object list and then go down the Tables. The Tables
are designed this way because it makes it easier to understand the configuration and follow
a call. If you add Tables we recommend that you set their index to retain this downward flow.
(The NANP configuration, on the other hand, has evolved more and calls jump up and down
the Number Validation Tables, which is harder to follow!)
48 CONFIDENTIAL
Follow a call through Number Validation
As before, start by finding out what the Table matches on. In this case it does a Complete
match on the Destination. Since it's a Complete match, the length of the number needs to
match exactly, not just the prefix.
The Table contains lots of Entries, each of which matches on a specific type of call. Obviously
the exact contents of this Table depend on your particular dial plan. Here are the Entries in the
example configuration I'm using.
The main purpose of this Table is to split the calls by type and send them to other Tables
for type-specific processing. Since the Table is doing a Complete match, the Entries can
distinguish calls based on the length, as well as the prefix. So, for example, there are Entries to
separate 2-digit numbers and 3-digit numbers.
CONFIDENTIAL 49
Follow a call through Number Validation
Again, good naming means it should be easy to identify the best match Entry for your call.
In this case, it's the National geographical call processing Entry. It's called a
geographic call because the 01632 prefix is belongs to a specific area rather than being a
national code.
This Entry adds an Attribute Set to the call. We'll cover Attribute Sets later in Record call
properties using Attributes on page 53. For the moment just ignore Attributes. The Entry then
sends the call to Table 1200, "National geographical preprocessing".
50 CONFIDENTIAL
Follow a call through Number Validation
This means that coming out of Number Validation we'll have a number that contains the area
code plus the subscriber number. This is the required format if the CFS needs to look for the
number in the subscriber database. It's also the most common format for signaling calls on
trunks. If a particular trunk needs a different format then the number modification is usually
done in Trunk Routing. We'll cover this later in Route a call off the CFS using Trunk Routing on
page 95.
After normalizing the number, the call then passes to Table 60000, "Outbound post-processing
portal".
Having all calls go through a single Table means it's easy to add processing that applies to
all calls, rather than having to find and update different final Tables for different call types. In
addition, both of these post-processing Tables have very high indices. This is so that you can
add extra Tables and still keep these Tables at the bottom of the Number Validation Table, so
that it's easy to see the flow. This is an example of how we use our experience of dealing with
many systems to design a base configuration that is easy to maintain and extend.
CONFIDENTIAL 51
Follow a call through Number Validation
Suggested Exercises
1. Follow some other types of call, such as an emergency call, through your Number Validation
Tables. Record which Tables and Entries are used to process the call. Are these calls
processed as you'd expect?
2. Follow a typical call arriving at your CFS from a trunk through Number Validation. Record
which Tables and Entries are used to process the call. Does this match how you expect
that call to be processed?
Checkpoint: You've now followed a simple call through Number Validation and you can describe
roughly how the International translations scheme works. Now you're ready to look at how call
classification works in more detail, by learning how to Record call properties using Attributes on
page 53.
52 CONFIDENTIAL
Record call properties using Attributes
Record call properties using Attributes
Attributes are used on the CFS to represent different properties of a call and can have a
huge influence on how the CFS handles a particular call. They're set in various places as the
CFS learns about the call and then components such as Trunk Routing or Billing look at the
Attributes to decide how to process the call (rather than having to analyze the call again). In this
chapter you'll learn how Attributes are associated with a call and how you can use Attributes
to change how a call is processed.
Attributes are recorded for a call at 2 main points – when the call arrives and when the call
passes through Number Validation.
When the call first arrives, the CFS automatically adds Attributes for the call properties it can
deduce from the incoming signaling and where the call came from. For example, it may add
these Attributes:
• The incoming trunk (obviously only applies for calls from the network!)
• The nature of address parameter (if this was signalled)
• Useful information from the database record for the subscriber (and this only applies for
calls from subscribers!)
You can't control how these Attributes are added, but you can access them in Number
Validation.
Number Validation is the second place where Attributes are added. This is the area we're
going to be looking at in this guide. As the call passes through Number Validation, the CFS
adds more Attributes based on its analysis of the call. For example, the call type (emergency,
international, local etc.) is set by analyzing the called number. You can also edit some of the
original Attributes added to the call if required.
Note: One way to think of Attributes is that they are like sticky notes added to a call with one
note per property. The notes are written in pencil so you can edit them as you learn more
about the call. The notes are added when the call arrives and during Number Validation.
Call Services and other components can then read the sticky notes if they’re interested in a
particular property.
Other CFS components after Number Validation can then use the Attributes to decide how
to process the call, which is more efficient than every component re-analyzing the call. For
example, the Call Barring service will look at the call type and compare it with the subscriber’s
CONFIDENTIAL 53
Record call properties using Attributes
configuration to decide if they’re allowed to make a particular call. Similarly, Trunk Routing
will use the Attributes to set the parameters, such as the nature of address, in the outgoing
signaling message.
The base configuration that we put on your CFS will ensure that the key Attributes are set
correctly by the time a call leaves Number Validation. If you edit Number Validation then make
sure you've set the Attributes correctly; otherwise, calls may behave oddly.
As with the Number Validation Tables and Entries, we provide a base configuration that adds
the appropriate Attributes with the necessary values for your deployment, so you don’t need to
set up this configuration yourself.
Did you know? In the Hitchhiker's Guide to the Galaxy, the Babel fish was a small fish
that you inserted into your ear where it would perform instant translations. The hero of the
book discovers it early on, thereby allowing him to communicate seamlessly with aliens for
the rest of the story. It's also the name of two different online translation services started
in 1995 and 1997. The history of these Babel Fish applications (according to Wikipedia) is
even more complicated than the plot of the Hitchhiker's Guide.
Very few people know what all of the Attributes do and some of the Attributes are only used
in a few deployments, so you may never come across them. If you want to know what an
Attribute does, the Help panel in MetaView Explorer should explain how the Attribute is used.
If an Attribute can be added in Number Validation then the most informative help is usually for
the Attribute value field on the Attribute object. The contents of the Help panel are also in the
MetaView Explorer Object Reference manual, which can be handy if you're not logged in to
MetaView Explorer.
Note: If you don’t understand the help or it doesn’t give you enough information, please let us
know! If you find the help unhelpful then we need to fix it before other people hit the same
problem.
Checkpoint: You now know what Attributes do and when they're set during a call. You also
know that you don't need to memorize what all of the Attributes do. Now let's see how
Attributes are actually applied and edited in Number Validation.
54 CONFIDENTIAL
Record call properties using Attributes
To recap: to match on a particular Attribute value simply set the Match Attribute field(s) on the
Table to the appropriate Attribute type and then set the appropriate Attribute value field(s) on
the Entry. The screenshot below shows an example.
So, we now need to look at how to apply Attributes. Since you often need to apply more
than one Attribute at a time, Attributes are applied in Attribute Sets, which are just groups of
Attributes. You can find these under Number Validation.
If you want, you can apply an additional group of Attributes at the start of Number Validation
by default. These are defined on the Config Set object using the Attribute Set – call from
subscriber and Attribute Set – call from trunk fields for the different incoming types of call.
These Attributes are applied before the call enters the first Number Validation Table, so it's a
handy way to add any Attributes that you want to apply to all calls.
CONFIDENTIAL 55
Record call properties using Attributes
Once you’ve entered the main body of Number Validation, Attributes are applied using the
Routing Attribute Set field on an Entry. Note that it’s not mandatory to apply an Attribute Set
in each Entry.
In the previous chapter I mentioned that some of the Next action field values result in an
announcement being played to the caller. You can choose which announcement is played by
applying Attributes. The Announcement ID attribute lets you choose from a range of pre-
configured announcements, such as Bad area code, while the Customer Announcement
ID lets you select a custom announcement that you've uploaded previously to the UMG. If you
use announcement Attributes, make sure to read the Announcement Parameters section
at the bottom of the MetaView Explorer help for Attribute Entries - this contains important
information about how to define the extra parameters required for some announcements.
If lots of Entries in the same Table will apply the same Attribute Set, then you may find it
simpler to configure the Default Routing Attribute Set on the Table and then set the Routing
Attribute Set field on the Entries to Default. This makes it slightly easier if you often add new
Entries to a Table (for example, it may list the prefixes in a local calling area) because you just
need to leave the Routing Attribute Set field as Default (which is the default value) rather than
having to set the field to the appropriate Attribute Set.
The downside of this approach is that you cannot set the Routing Attribute Set field to None.
So, if you want the majority of Entries to use the Default Routing Attribute Set and some
56 CONFIDENTIAL
Record call properties using Attributes
Entries to use no Attributes, you will need to create an empty Attribute Set for those Entries to
use.
CONFIDENTIAL 57
Record call properties using Attributes
The scope of an address is the area over which the number is unique. As an example, consider
our UK office number….
Our full number is 442083661177, where 44 is the UK country code. This is an international
scope number, because it uniquely identifies a particular party across the entire world.
If you’re in the UK, then I’d give our office number as 2083661177, where 20 is the area code
for London. This number has a national scope because the number is unique in the country.
However, if you tried dialing the digits from a different country then you’d be connected to a
completely different party (or it may be an unallocated number, etc.).
Note: Actually, I’d usually give our office number as “02083661177” with an area code of “020”.
Technically, the 0 is the national prefix (also known as the trunk prefix or long-distance code),
which you dial when you want to make a long-distance call rather than part of the area code,
but the custom in the UK is to say the “0” as part of your number. For comparison, in the
USA you need to dial 1 for a long distance (intra or inter LATA) call, but you don’t normally
include the “1” when giving someone your number.
Note: Depending on your requirements, subscribers on your CFS may be configured with or
without the national prefix. This is something we'll discuss with you when commissioning your
CFS.
If you are in the local London area, then the number is 83661177. This has a subscriber-level
scope because those digits only identify the subscriber uniquely if you’re in the local area. If
you try dialing those digits from a phone in a different town then again you’ll be connected to a
completely different party. Call service access codes are another example of subscriber scope
numbers. Dialing *72 may enable call forwarding for a certain subscriber on a certain CFS but
may have no effect when dialed from another subscriber or from another CFS.
The Called address scope must be set before the call leaves Number Validation for calls
made by subscribers. It’s equivalent to the ISUP “Nature of Address Indicator” (noa) parameter,
so if a call arrives on an ISUP trunk then this Attribute is automatically set when the call arrives.
Similarly, if a call is signaled out over an ISUP trunk then the Called address scope Attribute
set in Number Validation is used to determine the value of the Nature of Address parameter.
Finally, note that the scope must be set to National at the end of Number Validation if you
want to route a call to a subscriber. This is because subscribers are stored in the CFS database
indexed by their national scope phone number (i.e. the area code plus the local number). If you
complete Number Validation with any other scope then the CFS won’t be able to find the called
number in its database.
58 CONFIDENTIAL
Record call properties using Attributes
UK call type (US call type in NANP deployments)
Despite the name, the UK Call Type Attribute applies to all international CFSs, not just those in
the UK. This Attribute is used to record the type of call, for example Local, Mobile or Operator.
This Attribute is used by Billing and ETSI-style Call Barring, so they don’t need to re-analyze
the called number. There’s a very similar Attribute – US Call Type – which is used for Telcordia-
style deployments.
Note: Why is this Attribute called the UK Call Type? It was originally developed for use on a
UK system running ETSI services. The Attribute is now used for all ETSI systems but, for
backwards compatibility, the name has not been changed.
Your system may produce different types of billing records (e.g. call types and structure codes if
you use BAF billing files) based on the Call Type. Therefore this Attribute must be set to a value
other than Unknown before the call leaves Number Validation.
Be careful not to confuse this Attribute with two similar-looking values for the Attribute type field:
Called address type and Billing - call type! The Called address type Attribute indicates
the format of the destination digits and can be either Dialed digits or E.164. The Billing - call
type Attribute only applies if you use BAF format billing records. These billing records contain
a numerical field which is the call type; for example, "5" indicates a local call. The Billing - call
type Attribute lets you override the default call type code in the billing record for a call.
Suggested Exercises
1. Get a pad of sticky notes and a piece of paper. Follow a call from a subscriber through
Number Validation and record the Tables and Entries on the paper. Each time an Attribute
is set, write the details on a sticky note and stick them to the paper. At the end of Number
Validation, check what all of the Attributes are, particularly the Call Type and the Called
address scope.
2. Use the MetaView Explorer help (or read the MetaView Object Reference manual) to find
out what each of the Attributes applied during the call does.
Checkpoint: You can now explain what Attributes are and how they're set and used. You also
know how to get more information on any particular Attribute, which will be very helpful as you
do more advanced things in translations. You're now ready to learn how to Extend the built-in
Attributes using Line Class Codes and User Defined Attributes on page 60.
CONFIDENTIAL 59
Extend the built-in Attributes using Line Class Codes and User Defined Attributes
The key difference between LCCs and UDAs is that LCCs can be set on the subscriber objects
themselves (in addition to Number Validation), while UDAs are can only be set in Number
Validation. They're both then used during Number Validation and Trunk Routing. The rest of this
chapter looks at LCCs and UDAs in more detail.
60 CONFIDENTIAL
Extend the built-in Attributes using Line Class Codes and User Defined Attributes
Line Class Codes (LCCs)
LCCs are used to define extra properties for a subscriber, beyond those defined by the standard
fields. In the first scenario above, you may decide that LCC2 represents the “Limited duration
international calls” call service subscription. LCCs (and UDAs) are numerical fields, so you
could use LCC2 = 0 to mean the subscriber does not have the service while LCC2 = 1 means
the subscriber does have the service.
In the screenshot above you can see that values can be Validated or Non-validated. If it is
possible to provide a complete list of all possible values, then we recommend using Validated
LCC values, so that people can't accidentally set an LCC to an invalid value. It's also a very
good idea to include a text description for each value, so that it's easy to see which value
you need to use for a particular subscriber. While we're on the subject of making provisioning
easy, you can also use MetaView Web Templates to set LCCs, which is another way to reduce
configuration errors!
Once the LCCs have been defined, you can then match on LCC2 Attribute using the Match
Attribute fields on the Table (we covered these in Modify, classify and block calls in Number
Validation on page 28) to decide whether or not to apply the Maximum call duration Attribute.
An example of this is shown below. Note that the Match Attribute field drop-down only
includes the LCCs that you have defined and it includes the Display name to make it easy to
find the correct LCC.
CONFIDENTIAL 61
Extend the built-in Attributes using Line Class Codes and User Defined Attributes
Note that LCCs can be used for both on-switch subscribers and long-distance subscribers.
We'll cover long-distance subscribers later in Get started with long distance call services and the
associated terminology on page 124.
In Number Validation, once you’ve worked out which trunk to use, apply the UDA10 Attribute
with the appropriate value. Note that only the UDAs that you have defined will appear in the
Attribute type drop-down list, and the Display name is included to make it easy to find the
correct UDA.
In Trunk Routing you can then match on UDA10 and route to the trunk based on the value,
without needing to re-analyze the number. We’ll cover Trunk Routing later, so for the moment
just remember that you can use UDAs to record and transfer information about a call that’s not
covered by the standard Attributes.
If you plan ahead the Attribute Set index can reflect value of the UDA. For example, UDA1
= 104 could be set in Attribute Set 1104. This isn't necessary but makes it easier to use
the search selection button to select the Attribute Set if you've got lots of Attribute Sets.
(We covered search selection buttons earlier in Use search selection fields to set values easily in
translations on page 41.)
Note: In addition to UDAs, there are also User Defined String Attributes or UDSAs. These work
exactly the same as UDAs but can store much longer values: UDA values can be numbers up
to 9 digits long, whereas UDSAs can store strings up to 255 characters long comprising of
numbers, the letters A-F, * and # (that is, the characters you see in a dialing string).
62 CONFIDENTIAL
Extend the built-in Attributes using Line Class Codes and User Defined Attributes
Suggested Exercises
You need to be very careful when playing with Line Class Codes because, unlike Config Sets,
there's only one set of LCCs on the CFS. For example, if you add a new LCC, it will immediately
appear in the list of LCCs in MetaView Web, which may confuse anyone doing provisioning.
Also, if you add a new validated LCC, any subscriber that doesn't have that LCC set to a
permitted value will immediately alarm, which could cause confusion! I therefore suggest you
only try these exercises on a lab system.
1. Add a new validated Line Class Code with a list of permitted values with good names. Make
sure that one of the permitted values is 0. This is the default value for a Line Class Code
on a subscriber so including it in the list of permitted values will ensure that subscribers will
not alarm.
2. Edit a subscriber in MetaView Web or MetaView Explorer and check that there is now
a field for the new Line Class Code. Check that you can only set the field to one of the
permitted values.
3. (Advanced exercise) Create a Number Validation Table that matches on this new Line
Class Code. Create Entries to match on all of the permitted values and Complete Number
Validation. Make all calls from subscribers go through this Table at the end of Number
Validation.
4. Add a new User Defined Attribute.
5. Create an Attribute Set that applies the new UDA.
6. (Advanced exercise) Update your new Number Validation Table to apply the new Attribute
Set to all calls.
Checkpoint: You now know what Line Class Codes and User Defined Attributes are, why you
might use them and how to use them. Now that you've covered Attributes fully, we're going
to go back to Number Validation to consider overlap signaling, which we previously ignored.
CONFIDENTIAL 63
Get ready to discuss overlap signaling
As well as turning support for inbound SIP-I overlap signaling on and off, you can configure the
amount of time the CFS will wait after each INVITE before considering the address complete
using the Inter-digit timeout option.
64 CONFIDENTIAL
Get ready to discuss overlap signaling
Permit routing for incomplete numbers
If the CFS will be sending overlap messages to a remote switch (known as overlap to overlap
signaling), you need to make sure that your Config Set will let calls with incomplete destination
numbers complete Number Validation. This is controlled by the Routing on incomplete call
number allowed option on the Config Set. If this option is not set, then the CFS can still
receive overlap signaling messages but a call cannot enter Trunk Routing until the number is
complete.
CONFIDENTIAL 65
Get ready to discuss overlap signaling
If the destination number is currently "12" and the Called address complete Attribute has not
been set (so the CFS knows that more digits may arrive) then all of these Entries are possible
matches. The CFS will therefore wait until more digits arrive.
If the next digit is 3, making the destination "123", then Entry A is the best match. If the next
digit is anything else then Entry B is the best match. If no more digits arrive then Entry C is the
best match. Once the CFS has identified the best match Entry then the CFS will process that
Entry just as it did for enbloc signaling.
When the call reaches the end of Number Validation, the CFS will look at the Called address
complete Attribute. If this Attribute has not been set then the CFS will check that the Config
Set is configured to permit routing with an incomplete number. If so, the call will skip over On-
Switch Lookups and go to Trunk Routing. If the Config Set is not configured to support routing
incomplete numbers then the call will be rejected.
The call will then pass through Trunk Routing and be routed to a trunk. Any additional signaling
messages (such as SAMs for ISUP) will be passed through directly to the destination, without
going through translations.
If the CFS is transiting overlap to overlap calls, the configuration is generally fairly simple. The
CFS just needs to collect enough digits to identify calls by their prefix (for example, the area
code or the country code) and then the CFS will route based on that prefix.
However, sometimes the CFS may need to handle overlap to enbloc calls. For example, the
CFS will need to convert a call to enbloc signaling if:
• The outgoing trunk uses a protocol that does not support overlap signaling (e.g. plain SIP).
• The call might terminate to a subscriber on the CFS. The CFS will only look for the called
number in the subscriber database if the Called address complete Attribute is set.
In this scenario the CFS needs to collect all of the digits before setting the Called address
complete Attribute and then finishing Number Validation.
66 CONFIDENTIAL
Get ready to discuss overlap signaling
This is often done by configuring Number Validation Prefix match Tables which have Entries that
match on the possible lengths of call number, based on the numerical prefix. For example, a
national number that starts 0208 in the UK will have 7 additional digits, so can be represented
by an Entry with the Number field set to 0208XXXXXXX. The CFS will continue to gather digits
until the number matches one of the Entries, which means we must have gathered all of the
digits. At this point the Called address complete Attribute is added and the call can complete
Number Validation.
Checkpoint: You now know the configuration options involved with supporting overlap
signaling, so you can discuss with Metaswitch Support how overlap signaling should be
implemented for your specific deployment. Now let's move back from theoretical discussions
to real configuration and look at file based Number Validation Tables.
CONFIDENTIAL 67
Use file-based Number Validation Tables
Did you know? The most famous Table Mountain overlooks Cape Town in South Africa
but it's actually a common name for flat-topped mountains around the world. These include
Crug Hywel in the UK (that's Welsh for Table Mountain), the Stolowe (Polish for Table)
Mountains in Poland and not one but four different Table Mountains in California.
So, how are file-based Number Validation Tables different from the Number Validation Tables
we’ve looked at so far? With a file-based Number Validation Table, there is still an object in
the tree representing a Number Validation Table, but the child Entries are defined in a text file
stored on the CFS, rather than as objects in the MVE tree. The Number Validation text file is in
a CSV format, with each row representing an Entry. The content of the Table can be updated at
any time by uploading a new version of the text file. (We'll look at creating and updating these
Tables in more detail later in this chapter).
There are several advantages to using file-based Number Validation Tables, as listed below. For
some customers these advantages mean that they definitely need to use file-based Number
Validation Tables.
• Better support for large Tables. Tables with hundreds of Entries can be difficult to work with
in the object tree while File-based Number Validation Tables can contain up to 500k Entries.
68 CONFIDENTIAL
Use file-based Number Validation Tables
For example, you may need very large Tables if you need to include national lists of ported
subscribers in Number Validation.
• Updates without changing to another Config Set. The live Config Set is not editable in the
object tree, so if you want to make changes via the object tree then you have to copy it, edit
it and then swap to the new Config Set. To update a file-based Number Validation Table
simply upload the new text file - there’s no need to swap to another Config Set.
• Better support for multiple users. If multiple people want to make translations changes
via the object tree at the same time then you need to have processes in place to ensure
that one person creates a new Config Set then everyone makes their changes to the
new Config Set and then one person makes the new Config Set live once all changes are
complete. With file-based Number Validation Tables everyone can upload new Table files
to the live Config Set, so you just need to make sure that only 1 person is trying to edit any
particular Table at a particular time.
However, there are also some disadvantages that you should be aware of before deciding to
use file-based Number Validation Tables.
• You can’t view the Entries in the object tree, which can make it harder to follow and
troubleshoot the processing.
• Not all Number Validation features are supported in file-based Number Validation Tables;
the features are limited to the ones most demanded by customers. Firstly, Entries can only
match on a number; you cannot match on other Attributes. Secondly, Entries can only do 1
of 3 different things (as of V8.2) – add UDAs, change the number or set a Location Routing
Number (LRN).
• All Entries have to have the same Next Action. However, you can often work around this by
setting a UDA in the file-based Table and then using the UDA in a later Table to do different
things to different calls.
Note: There's also a different type of file-based Number Validation Table called a File-based
Attribute Matching Table, which lets you efficiently assign routing policy for use during Trunk
Routing. These tables are pretty advanced so we're not going to cover them here, but if you
want to more check out Number validation: file-based attribute matching (for flexible routing
policy) in the MetaSphere CFS Management Guide.
Checkpoint: You can now choose when to use file-based Number Validation Tables for a given
deployment. Now let's see how to use them.
CONFIDENTIAL 69
Use file-based Number Validation Tables
70 CONFIDENTIAL
Use file-based Number Validation Tables
Step 2 - Upload the file using SFTP
The Uploading number validation files section in the MetaSphere CFS Management Guide
gives more information on how to upload the file. The key things to note are that:
• the files go directly to the CFS, not the MVS (which is where you need to upload MVE
import files)
• the files go into the ftp/nvfiles subdirectory.
When you activate the parent Config Set, the file will now be loaded up into memory and the
fields highlighted above will change to show you what happened. The File header line and the
Number of entries loaded should match the contents of your file. If the upload failed, click on
the button next to the File status log correlator field to see the error. (The button is greyed
out in this screenshot because the upload was successful.)
CONFIDENTIAL 71
Use file-based Number Validation Tables
• While the CFS is processing the new file, the Number Validation Table will contain a mix of
Entries from the old file and the new file, so calls may be processed by old or new Entries.
Once the file is fully processed, all old Entries will be removed.
Suggested Exercises
1. Read through the lists of advantages and disadvantages and decide if you might use file-
based Number Validation Tables on your CFS.
If you think you might use file-based Number Validation Tables then try the following.
2. Find the section in the manuals that describes the format for file-based Number Validation
Tables.
3. Choose a type of file-based Number Validation Table that might be useful for your system.
4. Create a short file-based Number Validation input file of that type with a few Entries.
5. Upload the file to the CFS.
6. Create a file-based Number Validation Table in your Config Set that uses the input file and
check that the file is loaded into memory correctly.
Checkpoint: You now have enough knowledge to choose when to use file-based Number
Validation Tables and you know how to create and maintain them. You may also be getting very
bored with Number Validation! If so, you'll be pleased to know that we're now leaving Number
Validation and moving on to On Switch Lookups.
72 CONFIDENTIAL
Look for the called number on the CFS in On-Switch Lookups
Look for the called number on the CFS in On-Switch
Lookups
Once a call has passed through the Number Validation Tables, the destination number will be
in the right format for looking for the number in the CFS subscriber database. Here you'll learn
about the On-Switch Lookups (On-Switch and LNP Lookups on a NANP system) configuration
that controls the lookup behaviour. If you have a pure Class 4 deployment with no subscribers
configured on the CFS then you may want to skip this chapter.
Before we look at the configuration in MetaView Explorer, one key thing to understand is that
lookups are actually a two-stage process. Firstly, after passing through the Number Validation
Tables, Number Validation looks at the On-Switch Lookups configuration section to see if the
called number might be on the switch and sets appropriate flags.
Secondly, after the call has passed through Number Validation completely, it is passed to the
Lookup (also known as On switch routing or Local routing) component which looks at the flags
set by Number Validation and, if required, looks for the number in the subscriber database.
This separation is a fairly subtle distinction and often we talk about On-Switch Lookups as if it’s
a single step, so why should you care that it’s actually done in 2 stages? It's mostly because
you'll see the two stages in the SAS trace (we'll look at SAS traces later in Get diagnostics for a
call using the Service Assurance Server on page 90).
Note: Remember from Record call properties using Attributes on page 53 that the CFS will only bother
looking for a number on the switch if the Called address scope is set to National and the
Called address complete Attribute has been applied. Both of these will automatically be set
correctly in the base configuration so most of the time you can ignore this reminder!
Now let’s dive in and look at the configuration. It’s under the On-Switch Lookups (or On-Switch
and LNP Lookups) section of a Config Set.
Compared with Number Validation, you’ll be pleased to hear that the configuration here is
much, much simpler! The On-Switch lookups configuration defines 2 things.
1. Which called numbers to look for in the CFS subscriber database.
2. What to do if we look but don’t find the called number in the database.
On-Switch lookups therefore consist of a list of prefixes, called Lookup Number Blocks. If the
called number matches one of the prefixes, then the CFS should look for the number in the
database. If the called number doesn’t match one of the prefixes, then the CFS won’t look in
the database, thereby avoiding unnecessary lookups. As you may be able to tell, for a pure
Class 4 switch (where there are no on-switch subscribers), the On-Switch Lookups section will
be empty.
CONFIDENTIAL 73
Look for the called number on the CFS in On-Switch Lookups
So, the presence of a Lookup Number Block tells the CFS to look for the called number in the
subscriber database. The Number block type of the Lookup Number Block then tells the
CFS what to do if it didn’t find a matching subscriber record. For example, you may want the
CFS to reject the call, or you may want to route the call to an outgoing trunk.
Now let's look at the Lookup Number Block types in more detail. The values that you will need
to use will depend on whether porting is supported and how it's implemented in your network.
However, let’s start by considering the simplest situation, where there’s no subscriber porting.
In this situation each switch owner is given a block of numbers that they can assign to
subscribers on that switch. If someone calls a number in the switch’s block and the CFS can’t
find a matching subscriber record, then we know the number is unassigned or unallocated – it
won’t be on any other switch. Therefore the CFS should reject the call. To get this behaviour,
set the Number block type field to Owned.
Once you introduce porting, you will probably need to use some of the other Number Block
types. Most of the Number block types are only used in NANP deployments where they use
Local Number Portability (LNP) lookups to find the current home switch for a called number.
This version of the guide doesn't cover NANP deployments so we'll ignore those values. That
means we only need to consider the simplest way to implement porting in Lookup Number
Blocks, which is the Sparsely owned option.
Note: We'll look at ways to implement number portability in more detail later on, in Get ready to
discuss Number Portability on page 121.
If the Number block type is set to Sparsely owned then it tells the CFS that it doesn't
uniquely own all of the phone numbers in that block. If the CFS can’t find a matching subscriber
record then, rather than failing, the call will automatically move into Trunk Routing and be
routed down an outgoing trunk. You will need to ensure that your Trunk Routing is configured
to send it to the appropriate place.
Note: We’ll look at Trunk Routing configuration later in Route a call off the CFS using Trunk Routing on
page 95.
The Sparsely owned type is also useful if you’ve split a number block between the CFS and
another switch, for example, as part of migrating subscribers from a legacy switch to the CFS.
In this case, set the appropriate Lookup Number Block to Sparsely owned. The CFS will look
for the called number on the CFS first, but if it doesn’t find it, it will route the call to the legacy
switch. If the legacy switch also doesn't find the called number then it should fail the call.
74 CONFIDENTIAL
Look for the called number on the CFS in On-Switch Lookups
Avoid confusion! Lookup Number Blocks are not Number Ranges
Before we finish On-Switch Lookups, I want to take a quick look at something that can cause
confusion. Lookup Number Block objects in translations and Number Range objects under
Subscribers have similar names and they both define a block of numbers that might contain
subscribers – what’s the difference?
Number Blocks in translations tell the CFS which called numbers it should look for in the
subscriber database and, if it doesn’t find them, what to do next (reject call, reroute to trunk,
do an LNP query etc.). If you configure a subscriber in a new number range and you don’t add
a corresponding Number Block then the subscriber will be able to make calls, but the CFS will
never route calls to the subscriber.
Number Ranges under Subscribers are there to let the CFS do number space management.
You should configure Number Ranges for all blocks of numbers that you own (i.e. where you
can choose how to assign the numbers to your subscribers). When you add a new subscriber,
the CFS will check that the subscriber’s directory number is within one of the defined Number
Ranges. If it isn’t then the CFS will reject the configuration on the assumption that you have
mistyped the number!
The exception to this rule is if you set the Number status field on the subscriber to Ported
to. This tells the CFS that you do not own the subscriber's phone number so the CFS will not
check that the phone number is in a Number Range.
The CFS also uses the configured Number Ranges to suggest available numbers when you're
creating a subscriber. This can be particularly helpful when configuring Business Groups and
PBXs if you want to assign a block of numbers.
CONFIDENTIAL 75
Look for the called number on the CFS in On-Switch Lookups
So, if you start putting a new set of subscribers on your CFS in a new owned block of numbers
(e.g. you’ve just moved into a new area code), then you will need to add both Number Ranges
(to let you configure the subscriber objects) and Lookup Number Blocks (so that translations
knows to look for the new numbers in the database).
Suggested exercises
1. Find the On-Switch Lookups section on your CFS.
2. Look at the Lookup Number Blocks on your CFS and check that the Number block type
field is set as you expect for each block of numbers.
3. Check that you understand what will happen for each configured block if the CFS does not
find a subscriber that matches the called number for a call.
4. Find the Number Range configuration on your CFS. Check that there are Number Ranges
configured for each owned block of numbers, but not for any numbers ported to the CFS.
Checkpoint: You now know how to configure On Switch Lookups based on how your
deployment handles portability. That's all there is to the On Switch Lookups section, so now
you can move on to testing your translations configuration.
76 CONFIDENTIAL
Decide how to test your translations
Decide how to test your translations
If someone reports a problem that you think may be caused by translations, or if you have
made a change and you want to check that the change is correct before it goes live, you need
a way to test your configuration. In this chapter we'll look at the options for testing and in the
next chapters we'll look at these options in more detail.
Note: Why are we learning about testing translations now, when we haven't finished learning about
configuring them? Because you now know enough to start making changes to Number
Validation and that means you know enough to be dangerous! If you edit your translations
then you should always test the changes before you make them live. So, get into a good
habit and always remember to do testing!
One obvious way to test your translations is to make calls from a test line using the live Config
Set and then look at the trace output to check the call behaved as expected (we'll cover this
later in Get diagnostics for a call using the Service Assurance Server on page 90). However, this
approach has some definite disadvantages.
• You need access to phones that can trigger the right type of call. This may be especially
difficult for calls that arrive at the CFS from the network.
• It only tests the live Config Set. This is fine if someone reports a problem, but if you've made
a configuration change then it's much better to test your change before it goes live!
The CFS therefore supports 2 other ways to test your translations, which avoid these issues.
• Live testing using an Override Config Set. This lets you make real calls using a non-live
Config Set.
• Route Verification Tests (RVTs), which simulate and test a call going through translations.
You can use RVTs to create a test suite to check a Config Set before making the Config
Set live.
If you're new to CFS translations then making test calls using Overriding Config Sets is the
easiest way to start testing your configuration, so we're going to cover those first. However,
there are several situations where you have to use Route Verification Tests, so make sure you
don't skip the RVT chapter!
Checkpoint: You should now know what the options are for testing your translations. In the
next chapters you'll learn how to use Override Config Sets and then how to use RVTs.
CONFIDENTIAL 77
Do live testing using Override Config Sets
Note: We covered Line Class Codes earlier in Extend the built-in Attributes using Line Class Codes and
User Defined Attributes on page 60.
If you're working in MetaView Web then the Overriding Config Set field is on the Diagnostics
tab for the subscriber.
78 CONFIDENTIAL
Do live testing using Override Config Sets
Remember to set the Overriding Config Set back to None when you've finished. If you forget
to change it, you may be surprised in the future when calls from your test line don't behave as
you expect!
Finally, it's worth noting that live testing is the only way you can test the translations for calls
from a Business Group Line. We'll look at why when we cover RVTs later (in Do thorough testing
and build a test suite using Route Verification Tests on page 81).
CONFIDENTIAL 79
Do live testing using Override Config Sets
Once created, the Call Trace objects have the same fields, regardless of the signaling type,
as shown below. Set the Called number and / or Calling number fields to the appropriate
values to catch your test call(s) and then set the Overriding Config Set field to the Config Set
that you want to test.
Remember to set the Overriding Config Set field back to None (or just delete the Trace
object) when you've finished, so that all calls go through the live Config Set.
Suggested Exercises
1. Change a subscriber so that it uses your Config Set rather than the live Config Set. If you
don't have a suitable subscriber, set up a Call Trace for an incoming call on a trunk.
2. Make a call from the subscriber or trunk. Check that the call works.
3. Deactivate your Config Set and make the call again. Check that the call now fails. (Later
in Get diagnostics for a call using the Service Assurance Server on page 90 we'll see how you
can use SAS to check which Config Set is used for a call, which is a better method than
intentionally breaking the Config Set!)
4. (Advanced exercise) Update your Config Set to play an announcement for calls from your
test subscriber and check that you hear the announcement. (Hint: Use a Number Validation
Table that matches on the source address and applies the appropriate Announcement
Attributes.)
5. Remember to unset the Overriding Config Set field or delete the Call Trace when you've
finished.
Checkpoint: You can now use the Override Config Set feature to test translations using
live calls. However, you also now know that live testing is not always the best way to test
translations! So next we'll look at testing using Route Verification Tests.
80 CONFIDENTIAL
Do thorough testing and build a test suite using Route Verification Tests
Do thorough testing and build a test suite using Route
Verification Tests
Route Verification Tests (RVTs) simulate and test a call going through a Config Set. We
strongly recommend building up a test suite of RVTs on your CFS covering a wide range of
calls, and then running them after each change. RVTs are also useful when you cannot make
a suitable real test call for some reason, e.g. you don't have access to the required remote
switch. In this chapter you'll learn how to configure, run and interpret RVTs.
Did you know? Even if two people nominally speak the same language, they can
still have problems with translation. For example, in America pants means trousers. It's
therefore perfectly acceptable to compliment someone on their 'nice pants'. However, in
Britain, where we also speak English, pants means underwear. It's absolutely not a good
idea to compliment a British citizen on their 'nice pants'!
When you run an RVT, the RVT component initiates a new call, using the information provided
on the RVT such as the called number. The call is then passed into translations at the start of
Number Validation and, as far as the translations component is concerned, it's a real call.
The RVT component interrupts the call after Number Validation (which includes the On-Switch
Lookups section) and records the results, such as any change to the called number and which
Attributes have been added to the call. The CFS then continues processing the call, treating it
as a real call. The RVT component then interrupts the call again after Trunk Routing, records
the results again and then terminates the call. Therefore an RVT is effectively a real call but it
won't trigger a billing record and no signaling messages will leave the CFS.
Note: The RVT component is actually implemented in the code as a call service. Therefore in
SAS you'll see traces saying that a call service has initiated a call and that a call service has
terminated a call.
RVTs have several advantages over live testing (which we covered in the previous chapter, Do
live testing using Override Config Sets on page 77).
• You don't need access to a real phone to test a call.
• They are much faster to run than a real call because you don't have to dial digits and there's
no external signaling involved.
• You can create lots of RVTs and run them in groups, thereby testing lots of your translations
very quickly.
• You can see the details of how the call was processed, such as the Attributes added, not
just whether the call was connected or not.
We strongly recommend configuring a wide range of RVTs on your CFS and running them
after each change. These RVTs should test all of the paths that calls might take through your
configuration. For example, you should have RVTs to test all of the types of call (local, national,
international, operator etc.) from all of the subscriber areas that you support.
You should also have RVTs that test calls that you expect to fail, such as misdials or calls to
numbers that may be blocked. Before making a new Config Set live simply run your standard
RVTs to check they all behave as expected; you can then be confident that the new Config Set
is good to go live.
However, as with everything, there are some disadvantages to RVTs.
• They only test the configuration on the CFS. If there's a problem in your network then RVTs
won't find it.
CONFIDENTIAL 81
Do thorough testing and build a test suite using Route Verification Tests
Note: I recommend 'bookmarking' the Trunk Routing and Policy Services object by creating a
new custom view. This makes it much easier to find your way around, especially if you're
swapping between a Config Set and the RVTs while you're doing testing.
Under the Route Verification Tests object, the RVTs are then split into Route Verification Test
Groups.
These Groups serve a couple of purposes. Firstly, you can set default values on the RVT
Groups, which the child RVTs then inherit. This makes it faster and simpler to configure RVTs.
Secondly, putting RVTs into groups of related tests, e.g. incoming calls from a particular SIP
trunk, makes it easier to find and run specific RVTs. It's therefore a good idea to split your RVTs
into convenient groups, rather than having a few very large groups.
82 CONFIDENTIAL
Do thorough testing and build a test suite using Route Verification Tests
Under an RVT Group there are then 2 types of RVT: Subscriber and Trunk. Subscriber Route
Verification Tests mimic calls from a subscriber on the CFS. Trunk Route Verification Tests
mimic calls arriving at the CFS from a trunk. You can have both types of RVT in the same Group
but the configuration is usually simpler if each RVT Group only contains one type of RVT.
We'll now look at how to create an RVT Group and then how to create individual RVTs. Once
we've covered the configuration, we'll look at how to run and interpret your RVTs.
The next mandatory field is the Default subscriber type, which can be Configured or
Hypothetical.
If you choose Configured then you must fill in the Default subscriber directory number,
which must match an existing subscriber on the CFS. (Remember that you can't use a Business
Group Line with RVTs.) The RVT will then mimic calls from that subscriber and use values taken
CONFIDENTIAL 83
Do thorough testing and build a test suite using Route Verification Tests
from the subscriber's record, such as the Subscriber Group and Line Class Code values. It's
simplest if you have a suitable subscriber that you can use for this field.
The other Default subscriber type is Hypothetical. In this case the RVT Group exposes
fields allowing you to set a Subscriber Group, Billing type etc. This means you have to do more
work to set up the RVT Group, but allows you to run RVTs when you don't have a suitable
existing subscriber. For example, you can use RVTs with hypothetical subscribers to test the
configuration before you migrate some subscribers to the CFS. You will also need to use this
option if you have a pure Class 4 system with no subscribers.
The remaining mandatory fields on the RVT Group will only apply to child Trunk RVTs and
represent fields that may be signaled to the CFS in an incoming message.
The simplest possible RVT Group is one with just the Test name field plus the mandatory
fields set. However, depending on your translations configuration, you will need to set some
additional fields to test parts of your configuration. For example, if you have a Number Validation
Table that matches on the incoming trunk type, you should set the Remote media channel
field on some RVTs so that you can test that Table.
84 CONFIDENTIAL
Do thorough testing and build a test suite using Route Verification Tests
The other settable fields on a Subscriber RVT object let you override values set on the RVT
Group. As with the RVT Group, you will use these if you want to test specific areas of your
configuration that match on particular Attributes.
Note: Both Subscriber and Trunk RVTs can be created by using the MetaView Explorer import
feature, which is great for bulk creation. This useful feature isn't specific to translations so
isn't covered in detail in this guide. For more information see the Exporting and Importing
Configuration Appendix in the MetaView Explorer User's Guide.
After filling in the Test name, the required fields will depend completely on your configuration.
As with setting up the RVT Group object, if your translations match on a particular Attribute
then you should set the corresponding field on the RVT or the parent RVT Group.
CONFIDENTIAL 85
Do thorough testing and build a test suite using Route Verification Tests
To run an RVT, make sure it is enabled and then use the run test button. You can also run all
RVTs in a Group using the run all tests button on the RVT Group object. (These actions are
also available on the right-click menu for the objects.)
The Test
result field is at the end of the configurable fields on the RVT object. An example is shown
below.
After the Test result field is the Expected result section. We'll cover this later in the chapter,
so ignore it for now. After that is the Number Validation section. This section shows the call
properties when the call left Number Validation. This includes all of the Attributes that were set
on the call and the final versions of any numbers associated with the call. For example, you can
see if the called number was modified as expected (prefix added, prefix deleted etc.)
86 CONFIDENTIAL
Do thorough testing and build a test suite using Route Verification Tests
Below the Number Validation section is the Routing section, which contains similar
information about the results of the On Switch Lookup and Trunk Routing sections. Here you
can see where the CFS routed the call.
For example, it shows the called number, which may have been modified.
Checkpoint: You can now configure RVTs to test calls from subscribers and from trunks, and
you know how to read the fields on the RVT to see if a call behaved as you expected. Now let's
see how we can make RVTs even more useful by setting the Expected result.
CONFIDENTIAL 87
Do thorough testing and build a test suite using Route Verification Tests
You should aim to set the Expected result as explicitly as you can. For example, set the specific
trunk the call should use, rather than leaving the Expected destination as Any media channel
or on-switch subscriber (the default value). This makes your RVTs more effective as they will
detect any deviation from the expected behaviour. In particular, it lets you fully test the effect of
calls being rerouted because of trunks being unavailable. (We'll cover rerouting later in Handle
trunk failures and rerouting on page 107.)
When you run an RVT with an Expected result, the status icon and name shown in the object
tree show you if the RVT works as expected, as shown in the examples below. The failure is
also passed up to the parent RVT Group, so it's very easy to spot any failed RVTs, even if you
have hundreds of RVTs split into many Groups.
88 CONFIDENTIAL
Do thorough testing and build a test suite using Route Verification Tests
Suggested Exercises
1. Create a new Route Verification Test Group, using your Config Set and with a real subscriber
as the default subscriber value.
2. In the RVT Group, create a new Subscriber RVT to test a national call from that subscriber.
3. Run the new RVT and check that it succeeds. Check that the Called address scope is set
to a suitable value (usually National) when the call completes Number Validation.
4. Deactivate your Config Set and run the RVT again. Check that the RVT fails. This is a
common mistake when editing and testing your configuration! Reactivate the Config Set
afterwards.
5. In the RVT Group, create another new Subscriber RVT that tests a call to a misdialed
number.
6. Run the new RVT and check that it fails.
7. Set the Expected result fields to show that you expect the misdial RVT to succeed. Rerun
the RVT and confirm that the RVT is now alarmed in the tree.
8. Change the Expected result fields to show that you expect the misdial RVT to fail. Rerun
the RVT and check that the RVT is no longer alarmed in the tree.
9. In the RVT Group, create a new Trunk RVT to test an incoming call to a subscriber from
a particular trunk. Use the Expected result fields to make it easy to spot that the RVT is
behaving as expected.
10. Run all of the RVTs in the Group by using the Run all tests button on the Group.
Checkpoint: You now know how to configure, run and interpret RVTs effectively. You'll find
these a great tool for checking your translations configuration. Now we're going to look at
getting translations diagnostics for calls.
CONFIDENTIAL 89
Get diagnostics for a call using the Service Assurance Server
If your SAS is monitoring multiple Metaswitch devices then it's a good idea to use the filter
drop-down so that you're only looking at events from the CFS. In particular, the translations
trace from a Perimeta Session Border Controller can look very similar to the trace from a CFS,
so it can be easy to get them mixed up.
The trace shows 3 stages of translations - Number Validation, On-Switch Lookups and
Trunk Routing. The trace from the CFS doesn't show the details of any Digit Map processing
since this is handled either by the UMG or by the end device. Let's look at the individual events
in order.
The first translations event is Starting number validation. It shows the starting numbers
associated with the call, and also the Config Set used for the call. If you're running Route
Verification Tests or making test calls, make sure to check that your call went through the right
Config Set!
90 CONFIDENTIAL
Get diagnostics for a call using the Service Assurance Server
If Number Validation modifies the number, then you'll see events like NV has changed the
called address of the call.
Once Number Validation has finished going through the Number Validation Tables, you will
see events recording the first part of looking for the called number on the CFS. Remember
that lookups are actually a two-stage process, where the first stage is done as part of Number
Validation. (We covered this in Look for the called number on the CFS in On-Switch Lookups on page
73.) In the example above, the CFS found the called number in an On-Switch Lookup Number
Block. The CFS also checked that the Attributes on the call do not block doing a lookup; we
also covered this in the chapter on On-Switch Lookups.
If the call does not need a lookup, then you won't see these events.
The next event, NV succeeds, summarizes the call's flow through Number Validation. This
event is particularly useful because it lists which Tables and Entries were chosen.
The history format is: (Table index, Entry index, Attribute Set index). You can use these index
values in the MetaView Explorer to find the exact configuration that was used for the call. The
CONFIDENTIAL 91
Get diagnostics for a call using the Service Assurance Server
next action is shown at the end in a slightly abbreviated format. The full list of next actions is
shown at the bottom of the event.
So, rather than manually working out which Tables and Entries a call will use, as we did in
Follow a call through Number Validation on page 42, you can now be lazy and just use SAS!
The next event in our example, Call is being routed to a local subscriber, shows the
second part of the lookup processing, where the CFS actually looks for the called number in
its subscriber database.
If Number Validation decided that no lookup was required then you'll see an event saying A
local subscriber lookup is not required instead.
Finally, the call will pass into Trunk Routing. If the call has already been routed to a subscriber
then Trunk Routing won't do anything and the Routing begins and Routing succeeds
events will look like these.
92 CONFIDENTIAL
Get diagnostics for a call using the Service Assurance Server
If, on the other hand, the call was not routed to a subscriber, then Trunk Routing is responsible for
sending the call to a specific trunk. You haven't yet learned about Trunk Routing configuration,
so I'll just say that the SAS event when a call exits Trunk Routing, like the event when the call
exits Number Validation, shows you everything that happened to the call in Trunk Routing. We'll
cover Trunk Routing configuration soon in Route a call off the CFS using Trunk Routing on page 95.
CONFIDENTIAL 93
Get diagnostics for a call using the Service Assurance Server
The only differences between RVTs and real calls are at the start and at the end of the trace.
At the start of the trace you'll see events recording that the RVT component has initiated a
call. The RVT feature is actually implemented as a call service on the CFS, hence some of the
events refer to "a call service".
The next events then show a call passing through translations as normal. The RVT component
then terminates the call after Trunk Routing (or earlier if the call fails earlier in the processing).
This generates a generic event saying A call service has hit an error, since normally it is an
error if a call service hits a problem and terminates the call!
Suggested Exercises
1. Make a call that uses the CFS, either by making a call from a subscriber or from a trunk.
Find the call in SAS and go to the Detailed timeline tab. Make sure that you're looking at
events from the CFS.
2. Find the event showing the start of Number Validation and check that the call is using the
correct Config Set.
3. Find the event showing that Number Validation has succeeded or failed. Check that the
Tables and Entries shown in the history match how you expected the call to be processed
in Number Validation.
4. Run an RVT and then find the call record in SAS. Check that you can tell from the events
that it's an RVT, not a real call.
Checkpoint: You can now use the Service Assurance Server to get a lot of useful diagnostic
information about how the CFS translations handled a call. Now let's get back to configuration
and look at the final stage of translations - Trunk Routing.
94 CONFIDENTIAL
Route a call off the CFS using Trunk Routing
Route a call off the CFS using Trunk Routing
Trunk Routing follows the On-Switch Lookups section and is the final stage of translations.
The Trunk Routing section chooses the outgoing trunk for a call, handles rerouting if necessary
and also controls some of the outgoing signaling.
The implementation of Trunk Routing is very similar to the implementation of Number Validation
(which we covered in Modify, classify and block calls in Number Validation on page 28) - it's a flow
chart.
The two key configuration objects are Routing Tables (equivalent to Number Validation Tables
in Number Validation) and Routing Actions (equivalent to Entries).
CONFIDENTIAL 95
Route a call off the CFS using Trunk Routing
Each Routing Table matches on one or more parameters and the child Actions match on
specific values for those parameters and then define what to do with the call. Again, this is very
similar to the configuration in Number Validation. The call passes between Tables until an
Action sends the call to a particular Trunk.
Did you know? Talking of trunks, an elephant can store up to 11 litres of water in its
trunk. For those of you from an American background, that's 10 quarts (short for 'quarter
of a gallon'). To be precise it's 10 United States liquid quarts, which are 0.946 litres. Don't
get US liquid quarts mixed up with US dry quarts, which are 1.101 litres. And neither type of
US quart should be confused with Imperial quarts, used in other countries, which are 1.14
litres. Phew, and you thought CFS translations were tricky!
Despite the similarities in configuration model, there are some significant differences between
Trunk Routing and Number Validation. The two main differences are:
• there are no standard Routing Tables
• Trunk Routing supports rerouting on failure.
The lack of a standard base configuration for Trunk Routing is the more obvious difference.
Compared with Number Validation, the Trunk Routing configuration varies a lot between different
deployments. Number Validation looks very similar on all systems because all deployments
need to identify national, international, operator etc. calls and therefore we provide a base
configuration that provides this functionality. However, once specific call types have been
identified, every deployment has different routing requirements. Therefore there is no standard
set of Routing Tables.
Rerouting is where the CFS will try sending the call to another trunk if the first trunk fails.
Handling rerouting is actually the more important difference between Trunk Routing and
Number Validation because it has a number of subtle impacts on how things are configured
and how this works. However, this probably feels rather theoretical to you at the moment so
I'm going to skip this topic for now (we'll cover it later in Handle trunk failures and rerouting on
page 107). Instead let's get our hands dirty with some real configuration first!
Checkpoint: You now know what Trunk Routing does and you know how the configuration fits
together to create a flow chart to decide where to send particular calls. Now we can move onto
the actual configuration objects, starting with Tables.
96 CONFIDENTIAL
Route a call off the CFS using Trunk Routing
The fields that you'll see on the Table will then depend on the Routing Table type field, as
illustrated below. These fields are equivalent to the Address match type and Match Attribute
fields on a Number Validation Table and define what the Table is looking for.
There are many Table types; many are the same call properties that you can match on in
Number Validation, such as the incoming trunk, but others are specific to Trunk Routing, such
as the time of day. The table below outlines what the different Routing Table type values do
(for full definitions see the appropriate MetaView Object Reference manual for your system).
The Routing Table type value on the parent Table then controls which match fields are shown
on the child Action objects, which we'll cover later in this chapter.
Destination address These options let you match on the called or calling address.
and source address As you'll learn later in this chapter, these types match on the scope
of the address, as well as the digits. Using the scope (covered
earlier in Record call properties using Attributes on page 53) is an
easy way to split out the key types of call, such as national and
international.
Transit address (North This matches the carrier chosen for the call. This type is only used
America only) in NANP deployments.
Current time This option is used for time-of-day routing. For example, Trunk A
may be cheaper during the week while Trunk B may be cheaper at
the weekend.
Sequential selection With sequential selection each Routing Action is used in turn,
thereby distributing the calls evenly across all of the Actions in the
Table.
CONFIDENTIAL 97
Route a call off the CFS using Trunk Routing
Weighted random In a Weighted random Table, you assign a weighting to each Action
and then the Actions are chosen randomly according to those
weightings. This lets you spread the calls across all of the Actions
to achieve the required distribution.
Call gapping In a Call gapping Table each Routing Action can only be used
once within an assigned period of time. The CFS will choose the
Action with the lowest index. Once an Action has been used, it is
effectively removed from the configuration until the call gapping
period has finished. If a call arrived during this period, the CFS will
look for the Action with the next lowest index in the Table.
Using call gapping Tables lets you restrict the traffic load on a trunk,
for example to comply with a contractual agreement or as a form of
congestion control.
If you want to use Call gapping Tables, make sure you read Handle
trunk failures and rerouting on page 107, so that you know how Call
gapping Tables interact with rerouting.
Incoming media type This lets you match on the incoming media. You can match on the
type (SIP, ISUP, ISDN etc.), the remote exchange or the specific
trunk. For example, a very simple way to implement transit routing
is to route all calls from Trunk A to Trunk B.
This Table type is equivalent to setting one of the Match Attributes
to Incoming Media on a Number Validation Table.
Subscriber NV and There are a few translations-specific attributes that can be set in the
routing attributes Number Validation and routing attributes field on a subscriber,
such as whether or not they are a Fax or Modem subscriber. You
may want to provide different processing in translations for these
subscribers.
This option is rarely used now because Line Class Codes (LCCs)
give more flexibility when defining subscriber properties. (We
covered LCCs in Extend the built-in Attributes using Line Class Codes
and User Defined Attributes on page 60.)
98 CONFIDENTIAL
Route a call off the CFS using Trunk Routing
Routing Table type When to use this type
Incoming release This is used if the CFS has previously tried to route a call and it
cause failed. The release cause from the previous rerouting attempt can
then be used to decide where to reroute the call. We'll look at how
to use this Table type later in Handle trunk failures and rerouting on
page 107.
Bearer capability The incoming signaling for a transit call may have specified the
bearer capability - the type of media channel that is required for the
call. Sample values are 64kps data or speech. This type of table
lets you select an Action based on this signaled bearer capability.
Checkpoint: You now know how to configure a Trunk Routing Table object to match on certain
call parameters. Now let's see how the CFS chooses the child Routing Action for a given call.
CONFIDENTIAL 99
Route a call off the CFS using Trunk Routing
If there are multiple possible matches then the CFS will choose the most specific match. For
example, an Action that matches a specific property value is more specific than an Action that
matches any value. The following screenshots show a couple of examples of matching on
simple properties.
Identifying the best match for most Table types is simple. However, I think that the configuration
to match on numbers (destination, source or transit) is potentially confusing, so we'll look at
these match types specifically.
Before we do, there's one other interesting fact about matches in Routing: it's fine to have
multiple identical matches (unlike in Number Validation where this is a configuration error). This
is to support rerouting on failures, which we'll cover properly later in Handle trunk failures and
rerouting on page 107. The CFS will choose the identical Action with the lowest index. If this
initial route fails then it will use the other Actions.
100 CONFIDENTIAL
Route a call off the CFS using Trunk Routing
Match on Destination, Source or Transit address
The configuration to match on numbers (such as the destination or called number) is slightly
more complicated than in Number Validation. First create a Table with the Routing Table type
set to Destination address, Source address or Transit address. Any child Actions will then
automatically contain several address match fields.
Let's go through these fields in order and see how to use them.
Start by filling in the Description field with a good description of what this Action does. By
this point in the guide I hope that you've learned to fill in any name or description fields, even
if they're not mandatory!
Next set the Address type field. The options here are Not present, E.164 or Network ID.
If you're matching on the source or destination address, you need to choose between Not
present if there will be no number associated with the call (e.g. some operator calls have no
destination number by the time they reach Trunk Routing), or E.164 if there will be a number.
The Network ID value is only used if you're matching on the Transit address, which is used to
route by carrier in a NANP deployment, so we won't cover it here.
In the vast majority of cases there will be a number so you'll use the E.164 setting, so let's look
at that first. When you choose this value, the Address Scope field will appear. You must now
set the scope that you want to match. The scope defines the area over which the number is
unique (we covered the concept of scope in Record call properties using Attributes on page 53).
Using Match any means the CFS will effectively ignore the scope. Setting any other value,
such as National, will mean that the Action only matches that specific scope.
You then need to set the Wildcard address type field. This is the field that can confuse
people.
CONFIDENTIAL 101
Route a call off the CFS using Trunk Routing
The Wildcard address type field has 4 possible values. Firstly, if you only care about the
scope and not the actual digits, then use the Full wildcard - this type value.
If you want to match on the actual content of the number, then you need to use Explicit
wildcard or Part wildcard header. Explicit wildcard lets you define the number that you
want to match. It's like a complete match in Number Validation because the length has to
match, as well as the individual digits. Similarly, Part wildcard header is like a prefix match in
Number Validation: it lets you define the start of the number that you want to match.
For both of these values, you then need to fill in the Wildcard address field to define the match
number, as shown in the examples below. Unlike Number Validation, you must define the digits
and characters explicitly. In other words you can only use 0-9, the characters A, B, C and D,
and the * and # (representing the * and the # on the keypad).
The Wildcard address effective prefix length field for Part wildcard header matches is
rarely used. Despite the name, it's not really to do with the actual length of the match number.
Instead it's used to distinguish between two Actions with an identical match - the one with the
102 CONFIDENTIAL
Route a call off the CFS using Trunk Routing
large prefix length is treated as a better match. Unless you really know you need this function,
just leave this field as zero which means it won't be used!
That leaves one final value for the Wildcard address type field - Full wildcard - any type.
This option is a very wild wildcard and will match on any digits, from any type of number. In
other words it'll match on the source, destination or transit address. This value is likely to cause
confusion and you're unlikely to ever need to use it, so just ignore it.
That finishes the configuration for when you expect a number to be present. Now let's look at
an Address type of Not present, which means that there's no number associated with the
call. This may sound illogical, but can happen if Number Validation completely removes the
dialed digits, which is sometimes done for operator calls.
In this case, when you set the Address type to Not present, the Wildcard Address Type field
will appear with the same options we saw above.
Since there are no address digits in this case, you don’t want to use the Explicit wildcard
or Part wildcard - this type options and, as described above, you should ignore the Full
wildcard - any type option. That means you'll always use the Full wildcard - this type
option if there's no address present.
Checkpoint: You can now look at the Actions in a Trunk Routing Table and identify which
Action is the best match for a particular call, even in the potentially confusing case of matching
on an address. This best match Action is the one that the CFS will use to process the call. Now
let's learn how the Action controls what happens to the call.
CONFIDENTIAL 103
Route a call off the CFS using Trunk Routing
• Routing complete. Trunk Routing has finished analysing the call and the call will now be
sent to a specific trunk, as defined by the Media channel field.
• Reject. This will reject the call. Note that the CFS will not reroute the call if an Action
explicitly rejects a call. We'll cover rerouting properly in the next chapter, Handle trunk
failures and rerouting on page 107.
• Return for reroute. This will pass the call back to the previous Routing Table that the call
came from. This option is rarely used but occasionally comes in handy if it's easier to define
the list of things that shouldn't match a call than to define the things that do match the call.
In this case create a Routing Table with the things that don’t match and set the Action fields
to Return for reroute. Make sure that the previous Table has an Action that will match the
call and route it appropriately.
These values build up the flow chart we described at the start of the chapter.
Checkpoint: You can now use the Action field to understand how the Action fits into the Trunk
Routing flowchart. Now you need to learn how Routing Actions can modify calls, starting with
changing the numbers associated with a call.
The notation for these Number action fields is the same as the modification fields in Number
Validation. Refer back to Modify, classify and block calls in Number Validation on page 28 if you
want more information. Note that, unlike Number Validation, you can modify all 3 numbers at
the same time and you can modify the numbers even if the Table doesn't match on an address.
There's one big difference between number actions in Number Validation and number actions
in Trunk Routing: in Trunk Routing, the number action is only applied at the end. This has two
important consequences.
• In Trunk Routing, address matches in subsequent Routing Tables match on the original
number, not the modified number.
• You can't combine number actions from multiple Routing Tables. If multiple number actions
are applied while routing a call, only the last one is used at the end.
Number modification is normally done in Number Validation so these Routing fields are typically
used only if the particular destination or route has a specific requirement for the number format.
For example, the remote exchange may require the number to be sent without the area code
prefix. Since the required modification depends on the destination trunk, it's easiest to make
the change in Trunk Routing once you've identified the target trunk.
104 CONFIDENTIAL
Route a call off the CFS using Trunk Routing
Since the modifications are assumed to be destination-specific, if the routing fails then the
modifications are rolled back appropriately. We'll cover this in more detail later in Handle trunk
failures and rerouting on page 107.
Checkpoint: You now know when you might want to modify numbers in Trunk Routing and you
know how to modify them. We'll now look at the final part of configuring an Action - Optional
attributes.
CONFIDENTIAL 105
Route a call off the CFS using Trunk Routing
Once set, the attributes are maintained if the call passes to another Table. For example, in
some cases it may be neater to set some of the optional attributes in one Table and then pass
the call into another Table containing lots of Actions which route the call to specific trunks.
However, since these attributes are destination or trunk-specific, they will only be used if the
call is successfully routed. If the call is rerouted then the optional attributes are rolled back
appropriately. We'll look at this, and the AAR allowed and ARR allowed attributes, in more
detail in the next chapter.
Suggested Exercises
1. Follow a national, international and emergency call through your Trunk Routing configuration.
Check that these calls are handled as you expect.
2. Create an RVT that will test a call that goes through Trunk Routing. Run the RVT and find
the call record in SAS. Use the events in SAS to check which Routing Tables and Actions
are used for that call.
The rest of these suggestions form an advanced exercise.
1. Choose an existing Action that routes a call to a trunk. Change the Action to send calls to a
new Table that load-balances the calls between the original trunk and another trunk. (Hint:
the new Table can be either a Sequential selection or a Weighted random Table.) Make sure
your Actions and Tables have clear names to make it clear what they do!
2. Create a new RVT that will send a call to the new Table. Run the RVT several times and use
SAS to check that calls are load-balanced between the two trunks.
Checkpoint: You now know how Number Validation configuration fits together to create a
simple flowchart for processing calls and you can now follow a call through Trunk Routing.
Now let's make things more interesting by learning how to Handle trunk failures and rerouting
on page 107.
106 CONFIDENTIAL
Handle trunk failures and rerouting
Handle trunk failures and rerouting
One key feature of Trunk Routing is that it handles rerouting; if the initial route is unavailable
for some reason then Trunk Routing can try rerouting to other trunks. Here you'll learn how to
configure rerouting (also known as overflowing) and also how to block rerouting.
A trunk may be unavailable to process a call for various reasons. For example:
• the configuration for the trunk has been deactivated or disabled
• the trunk is out of service, e.g. the cable has been disconnected
• the Trunk is already full of calls.
If the initial route fails then you need to decide if you want to fail the call or reroute it to another
trunk. If you allow rerouting then the CFS will look for the next best Routing Action in the final
Table. If there's no possible matching Action in the Table then the CFS will move back through
the Tables until it finds a possible match. Once it has found a suitable next best match the CFS
will continue forward through the Routing Tables as usual.
Let's see that in some real configuration. Consider the following two Routing Tables and a
national scope call (see Record call properties using Attributes on page 53 for more on scope)
going to a destination that starts with 510. This will take a bit of thinking, so make sure you've
had your morning coffee!
In this example the call will start in Routing Table 19, match Routing Action 1 and then go into
Table 20, where it will match on Action 1 (since it's the more specific match in this Table) and
then be routed to Trunk A. What happens if Trunk A is unavailable for some reason?
If the CFS is configured to support rerouting then the CFS will first look for another possible
matching Action in Table 20. It will match on Action 2, since this matches all possible prefixes,
and be routed to Trunk B.
If Trunk B is unavailable and the CFS is configured to support multiple reroutes then the CFS
will look for another possible matching Action in Table 20. It won't find one, so the CFS will then
go back to the previous Table, Table 19, and look for an alternative match there. It has already
used Action 1, so now it will choose Action 3 and send the call to Trunk C.
Note: Choosing good names for your objects can really help you, and everyone else, to understand
how your particular Trunk Routing configuration works. For example, if an Action is only used
as a backup, then call it something like "Backup route for all national calls".
As you can see, if you don't consider how you want to handle trunk failures when you design
your Trunk Routing then you can end up with calls rerouting to unexpected places! This is
something that Metaswitch Support will discuss with you when designing and commissioning
your translations.
In the rest of this chapter we'll look in more detail at how to control rerouting, how attributes
and number modifications are affected by rerouting and how to test that your Trunk Routing
will reroute calls correctly.
CONFIDENTIAL 107
Handle trunk failures and rerouting
Checkpoint: You now know that Trunk Routing supports rerouting if a routing attempt fails, and
you know that you have to consider rerouting at the design stage. Now we'll look in more detail
at how to control rerouting.
Secondly, you can permit or block rerouting for two different levels of failure.
• Switch-level rerouting is when a call is rerouted before it leaves the switch. For example,
a call may be rerouted if the trunk is full or isn't suitable for the type of call. This level
of rerouting is called Automatic Alternative Routing (AAR) and is controlled by the AAR
allowed Optional attribute.
• Network-level rerouting is when a call needs to be rerouted after leaving the switch. For
example, a call may be rerouted if the original remote destination rejected the call attempt.
This level of rerouting is called Automatic Re-Routing (ARR) and is controlled by the ARR
allowed Optional attribute.
108 CONFIDENTIAL
Handle trunk failures and rerouting
These two attributes are usually set in parallel, i.e. both AAR allowed and ARR allowed
are either both true or both false for a call. By default they are both true, in other words both
levels of rerouting are permitted. If you want to change the values, use the check boxes in the
Optional attributes section and then use the drop-down fields to change the value. (See
Route a call off the CFS using Trunk Routing on page 95 for more on setting Optional attributes in
Trunk Routing.)
A trunk where overflow routing is blocked is sometimes known as a choke trunk. Choke trunks
are used where you want to make sure one type of traffic does not use up all of the capacity
and block other calls from getting through. As with all translations make sure you configure
RVTs that test what happens if the choke trunk is unavailable. In this case, the call should be
rejected rather than rerouting to another trunk. We'll look at how to configure RVTs to test
rerouting later in this chapter.
Checkpoint: Now you know how to allow or block rerouting. Now let's see how the call
properties are affected if a call is rerouted.
Let's assume we start with the destination number 510 1234567. The call starts in Routing
Table 19 and matches Action 1, which has a number action to remove the first digit from
the prefix, giving us 10 1234567. The call then passes into Routing Table 20 and matches
Action 1 (remember we match on the original number not the modified number). Action 1 has
a number action which adds a prefix of 11, which overrides the number action we applied in
Routing Table 19, so the destination number passed to Trunk A is therefore 11510 1234567.
If Trunk A fails, the PA11 is rolled back, giving us 10 1234567 as the destination number
again, which is what the destination number was when the CFS first entered Table 20. The call
is then passed to Action 2, which adds a prefix of 22. Once again this overrides the number
action that was applied in Routing Table 19, therefore 22510 1234567 is the destination
number passed to Trunk B.
If Trunk B also fails, the PA22 is rolled back so the destination is now back to 10 1234567
again. The CFS looks for another possible match in Table 20 but since it doesn't find one it has
to move back to Table 19. Action 1 in Table 19 has already been tried but it failed, so the PD1
CONFIDENTIAL 109
Handle trunk failures and rerouting
from that action is rolled back, so the destination is now back to 510 1234567, which was
the destination number when the CFS first entered Table 19.
The CFS then looks for another possible match in Table 19 and sends the call to Action 3
(which doesn't modify the number) and the call is sent to Trunk C with a destination of 510
1234567. In other words, the result of the number modifications is always the same when you
get to a given Action, regardless of whether the call was rerouted before reaching the Action.
This example looked at number modifications but the same mechanism applies to how optional
attributes are handled during rerouting. (See Route a call off the CFS using Trunk Routing on page
95 for more on optional attributes.)
Note: There's a lot more information on release cause values at the bottom of the MetaView
Explorer help for the Routing Action object.
Once you've configured the "route by error release code" Table, update the appropriate
overflow/backup Actions to go into the new Table. Here's an example configuration so you can
see how it might look.
110 CONFIDENTIAL
Handle trunk failures and rerouting
Test your rerouting
As you've probably realized by now, it's important to consider in advance how you want to
handle trunk failures, so that calls are either rejected or rerouted appropriately. It's therefore a
very good idea to set up RVTs that test the effect of trunks being unavailable. This is simple
to do - just use the appropriate configuration in the Included media channels section of the
RVT. By default all media channels are included but you can change this to provide a list of the
good trunks or the bad trunks, or to specify that no trunks are available. This screenshot shows
an example of this.
CONFIDENTIAL 111
Handle trunk failures and rerouting
This is one situation where you definitely want to use the Expected results section on the RVTs,
so that you can check that calls are rerouted to the expected trunk, or blocked if you prefer.
See Do thorough testing and build a test suite using Route Verification Tests on page 81 for more
on using Expected results.
Checkpoint: You can now configure Trunk Routing to support rerouting (or to block rerouting)
and you can configure RVTs that test that calls will reroute as expected. We're now going to
finish looking at a topic that we started in the last chapter - how rerouting means that Trunk
Routing differs from Number Validation.
Note: If you're mathematically minded, then the differences in requirements mean that finding the
best match in a Routing Table is an O(N) operation, while finding the best match in a Number
Validation Table is O(log N).
A common example is where you want to route national calls by the area code. The most
obvious approach is probably to have some very large Tables in Routing that list all of the area
codes and route each code to the appropriate trunk. However, this is not efficient. The better
approach is to have the area code lists as Tables in Number Validation. The Entries in the Tables
then set User Defined Attributes (I told you they'd be useful! See Extend the built-in Attributes
using Line Class Codes and User Defined Attributes on page 60 if you want to refresh your memory)
to identify which trunks to use. Trunk Routing then just needs to look at a short list of UDAs to
decide where to route the calls.
Another example is file-based Tables, which are often used for very large Tables. Since it's
best to have your large Tables in Number Validation, the CFS supports file-based Number
Validation Tables (covered in Use file-based Number Validation Tables on page 68) but not file-
based Trunk Routing Tables. Again, this may impact how you and Metaswitch Support design
your translations.
112 CONFIDENTIAL
Handle trunk failures and rerouting
simply based on the index value. (We covered the different Routing Table types earlier in Route
a call off the CFS using Trunk Routing on page 95.)
Note: Once you've created a Routing Action, you can't edit the index. If you need to edit lots of
index values, you can export and then re-import the configuration with the updated indices.
If you only need to swap a few Actions then it's easiest just to edit the non-index fields
manually to swap the names and trunks.
It's also fine to have a Routing Table with no matching Actions, unlike in Number Validation.
In this case the CFS will back-track to the previous Table and look for a match there. This will
typically happen if the one matching Action in the Table has already been used but failed.
Suggested Exercises
1. Check your Config Set object to see how many reroutes are permitted on your system.
2. Follow some sample calls through Trunk Routing and check what happens if the initial
routing attempt fails. Are the calls rerouted; if so, where to? Are calls rerouted to the correct
trunks?
3. Create RVTs to test some of the rerouting scenarios by using the Media channel included
to test the effect of some trunks being unavailable. Use the Expected result fields to make
it easy to spot if the call is not rerouted to the correct trunk.
4. Find an existing Action that routes a call to a trunk. Convert this to a choke trunk by setting
AAR allowed and ARR allowed to false. Use an RVT to check that calls that use this
Action will not be rerouted if the trunk is unavailable.
Checkpoint: You now know how rerouting impacts Trunk Routing configuration and how it may
impact the overall design of your translations. We've now covered all of the configuration areas
for translations so it's time to take a step back and consider the ways in which you can edit
translations.
CONFIDENTIAL 113
Follow a call through Trunk Routing
The fastest way to get to the first Table is to click twice on the reference, then MetaView
Explorer will take you to the Table. Remember that the first Table may not be the one at the top
of the list in MetaView Explorer. In our example, it is Table 1000: "Destination Selection".
114 CONFIDENTIAL
Follow a call through Trunk Routing
Table 1000: "Destination Selection"
Now that you've got to the starting Table, you need to find out what the Table is matching on.
To find this, look at the Routing Table type field:
In this example, the table is matching on Number Validation Attributes. Looking at the
Match Attribute fields below tells us that the table is matching on the value of UDA 20 only -
the other two possible attributes aren't being used.
Before we started, we said that in Number Validation we'd assigned UDA 20 the value 5002
for this call. So, we just need to go through the Routing Actions until we find one that matches
this value.
Let's take a look at Routing Action 3:
Looking at the Attribute values section of the Action, you can see that we're looking for an
Exact match of the UDA 20 value, and that value has to be 5002. This exactly matches the
UDA 20 value of our call, so there's no need to look at any other Routing Actions - this will be
the one we match first.
CONFIDENTIAL 115
Follow a call through Trunk Routing
So, we continue by going to Table 5002. Note that the table index is the same as the value of
UDA 20 - while the value of UDA 20 could have been arbitrary, we've designed things so that
the table indexes and UDA 20 values match up, making it easy to tell which destination table
you'll end up in just from the value of UDA 20.
Here the Routing Table Type is set to Weighted Random. That means we'll be picking one
of the routing actions at random, with some actions having a higher probability of being chosen
depending on their weight.
Let's take a look at the actions:
There are two Actions, and as you can probably tell by the names we're going to choose Action
1 60% of the time, and Action 2 the other 40%. This is determined by the Action probability
field on each Action.
On each of Routing Actions 1 and 2, the Action field has the value Routing Complete,
indicating we have reached the end of Trunk Routing! The trunk we are going to use is specified
in the Media channel field.
116 CONFIDENTIAL
Follow a call through Trunk Routing
Now that we've found our destination trunk, that's the end of Trunk Routing. Of course, if it
turned out that the trunk was busy or unavailable we may have to go back in to reroute it to
an alternative trunk - for example, the Routing Action in table 5002 that we didn't pick in our
random selection. But I don't want to take you round in circles, so let's say in this example that
our call went through successfully!
Suggested Exercises
1. Follow some calls through the Routing Tables in your deployment. Record which Tables
and Entries are used to process the call.
2. Test the calls you followed in Exercise 1 using RVTs - do the results match the path you
followed?
Checkpoint: You've now followed a simple call through Trunk Routing and you can describe
roughly how the International Trunk Routing scheme works.
CONFIDENTIAL 117
Choose how to edit your translations
Advantages Disadvantages
It's easy. You just need to point and click. It's a manual process so it can be tedious
and error-prone if you frequently make
similar changes.
You can see the configuration in the tree, so It can be difficult to navigate the tree if
it's relatively easy to work out how a call will there's lots of configuration. For example,
be processed. Tables with hundreds of Entries can be slow
to open up.
You get full access to all of the translations If you have multiple users they need to
features and options. coordinate together so that everyone is
editing the same new Config Set.
If you want to address the final disadvantage and speed up bulk changes then you can import
files using MetaView Explorer. A lot of the translations configuration (including Route
Verification Tests) can be edited using the import feature. The import feature is not specific to
translations so we won't cover it in any detail in this guide.
Note: For more information on importing configuration see the Exporting and Importing
Configuration Appendix in the MetaView Explorer User's Guide.
Importing configuration from text files is a great way to do bulk additions and in fact Metaswitch
Support use this method when commissioning CFS systems. However, importing configuration
118 CONFIDENTIAL
Choose how to edit your translations
is fundamentally still editing the object tree directly, so it shares some of the disadvantages of
editing the configuration manually.
Advantages Disadvantages
It's a very easy way to add a large number The configuration is added as objects in the
of objects quickly. tree. After importing the configuration it can
be difficult to navigate the tree if there's lots
of configuration.
You don't need any programming If you have multiple users they need to
experience. For example, you can create the coordinate together so that everyone is
import files using mail merge (see https:// editing the same new Config Set.
communities.metaswitch.com/docs/DOC-
8545).
Advantages Disadvantages
You can have much larger Number File-based Entries are not shown in the
Validation Tables - up to 500 000 Entries (as object tree, which may make troubleshooting
of V8.2). harder.
Entries aren't shown in the object tree, so It only applies to Number Validation. This is
it's easy to navigate around the object tree. because you should not have large Tables
in Trunk Routing; we covered this at the end
of Handle trunk failures and rerouting on page
107.
You can update a Number Validation Table Only a limited amount of functionality is
without needing to change the live Config available. In particular, File-based Entries
Set. This makes it easier for multiple people can only match on a number, not on other
to work on the configuration at the same Attributes, and file-based Entries can only do
time. a limited number of things.
The combination of these 3 methods addresses most customer requirements, but there is one
final option - the CORBA programmatic API - that is worth knowing about. This API gives
you programmatic access to all of the objects and options that you see in MetaView Explorer,
which lets you move away from manual updates. The API is documented in the Innovators
section of Communities (https://communities.metaswitch.com/community/innovators/).
CONFIDENTIAL 119
Choose how to edit your translations
Advantages Disadvantages
You get full access to all of the translations It's best for changes that you make
features and options. frequently or can be predicted. Infrequent
and one-off changes are probably best
done manually.
You can make some or all of your changes You need a reasonable level of programming
programmatically. This will be faster, less skill!
error-prone and less boring than making the
changes manually.
As you can see, all of the methods have their own advantages and no single method is perfect,
so many customers decide to use a mix of methods. It's also fine to choose to use one method
now and then move to using other methods in the future when you've got more experience.
Checkpoint: You can now decide how you want to edit your translations configuration. We're
now going to change topic completely and take a high-level look at number portability.
120 CONFIDENTIAL
Get ready to discuss Number Portability
Get ready to discuss Number Portability
Number Portability is where a user can keep their phone number when moving to a different
service provider. If your CFS needs to handle Number Portability (and most CFSs do), then
Metaswitch Support will discuss this with you and implement the appropriate configuration
during the commissioning phase. This chapter gives you the necessary background information
so that you're prepared for any discussions.
Note: Number Portability was introduced to increase competition between service providers
because without number portability you have to change your phone number if you move to
a different service provider, which means people tend to stick with their original provider. In
some countries the telecommunications regulators have made number portability mandatory.
You may also hear people talking about Local Number Portability (LNP). This is where
number portability is supported but only within the same local area. In other words, users
can port their number but only to a service provider covering the same local calling area. This
restriction has the advantage that billing for a call is the same whether the destination number
is ported or not. This is important in areas such as the USA where local calls are typically free.
In a network with number porting, when someone makes a call the network needs a way to
find out where the destination number is currently based, rather than just routing based on the
area code. This has been implemented in different ways in different countries and networks. As
part of the commissioning process we'll discuss your exact requirements with you. This section
will give you some background information that will be useful when you come to discuss
number portability with us.
The CFS supports all of the four most commonly deployed Number Portability mechanisms,
which are summarized in the table below.
CONFIDENTIAL 121
Get ready to discuss Number Portability
There 3 types of network (also known as service providers or operators) that are involved in
handling ported numbers:
• Originating - the operator hosting the caller who is making a call to a number that may
have been ported.
• Donor - the operator that originally owned the number held by a subscriber who has
ported that number to another operator.
• Recipient - the operator now providing service to the ported subscriber.
Keeping these network definitions in mind, let's look at the four Number Portability methods
in more detail.
All Call Query (ACQ)
In ACQ, the originating operator checks a centralized database for all calls to get the details of
the current service provider.
Note: In NANP deployments with Local Number Portability, the originating operator does not do the
portability query for long-distance calls. Instead the query is done when the call reaches the
local network for the destination number.
The originating operator then routes the call to the recipient network. The CFS supports 3
mechanisms for accessing a portability database.
• TCAP queries - typically carried over the SS7 network. TCAP queries are mostly used in
NANP deployments so are not covered in this guide.
• SIP to a redirect server - this is invisible to translations. Trunk Routing simply routes calls
to a SIP trunk which goes to the redirect server.
• A local copy of the number portability database - usually implemented using File-
Based Number Validation Tables (see Use file-based Number Validation Tables on page 68 for
more information).
The simplest way to implement ACQ is for the Originating CFS to have file-based Number
Validation Tables listing the ported numbers. After finding the destination number in one of
these Tables, the CFS will route the call using one of the following methods.
• Concatenated addressing with a routing prefix.
• Explicit addressing with a network-number.
• Transit Network Selection.
• Location Routing Number of the destination exchange (North America).
• Dedicated trunks for ported traffic.
The Donor CFS does not need any special configuration to support portability; simply delete a
subscriber if they port away. Remember not to re-use the phone number though!
122 CONFIDENTIAL
Get ready to discuss Number Portability
On the Recipient CFS you need to make sure that there is an On-Switch Lookup Number Block
that will match the ported subscriber's number. The subscriber object itself must be configured
with a Number Status of Ported to, so that the CFS knows that the phone number will not be
in a configured Number Range. (We covered Lookup Number Blocks, Number Ranges and the
Number Status field earlier in Look for the called number on the CFS in On-Switch Lookups on page
73.) Finally, depending on how the call is routed, the Recipient CFS may also need to remove
a routing prefix when the call arrives in Number Validation from a trunk.
Onward Routing (OR)
In Onward Routing, the originating operator sends the call to the donor operator. If necessary
the donor operator reroutes the call to the recipient operator. This doesn't need a co-ordinated
database, but will result in multiple onward routings if a number is ported more than once. In
this situation, the Originating CFS requires no special porting configuration since it is unaware
if a destination number has been ported and just sends the call to the donor operator.
The Donor CFS needs a local database listing which numbers have been ported and where
they've gone. This is done using file-based Number Validation Tables. The call can then be
routed from the Donor CFS to the recipient operator using any of the methods listed above for
ACQ and the Number Validation configuration on the Recipient CFS is the same as for ACQ
(remove any routing prefix).
Query on Release (QoR)
In QoR, the originating operator checks all calls with the donor operator. If the donor operator
says that it no longer possesses the number, the originating operator checks with a centralized
database, as in ACQ. If most numbers are unported then this method results in fewer database
queries than ACQ. However, if you use an on-switch database on the Originating CFS (by using
file-based Number Validation Tables) it makes more sense for the Originating CFS to query all
calls, since this avoids unnecessarily routing ported calls to the donor network.
For QoR the configuration on the Donor CFS is the same as for Onward Routing (use file-based
Number Validation to keep track of subscribers that have ported away) and the configuration
on the Recipient CFS is the same as for ACQ (remove any routing prefix).
Return to Pivot
In Return to Pivot, the originating operator checks all calls with the donor operator. The donor
operator responds with the route to the recipient operator. The originating operator then routes
the call to the recipient operator. Like Onward Routing this avoids needing a co-ordinated
database, but can result in multiple onward routings. This method is rarely used.
With Return to Pivot the Originating CFS does not have a database of ported subscribers; it
just handles the reroute after getting the response from the donor. The configuration on the
Donor CFS is similar to that for Onward Routing (use file-based Number Validation to keep
track of subscribers that have ported away) while the configuration on the Recipient CFS is the
same as for ACQ (remove any routing prefix).
Checkpoint: You now know the options on the CFS for supporting number portability, so that
you can discuss with Metaswitch Support how number portability should be implemented for
your specific deployment. Now let's finish learning about the configuration by considering long
distance call services.
CONFIDENTIAL 123
Get started with long distance call services and the associated terminology
Note: ANI stands for Automatic Number Identification. It's a feature of the network that allows
a phone number that identifies the caller to be passed through the network. This number is
usually the billing number. This number is separate from the caller ID, which is the number
that may be displayed on the called phone. Even if the caller withholds their caller ID, their
ANI (billing number) will be passed through the network so that it can be used for features
such as ANI Screening.
If the call is permitted then it will go into Trunk Routing and will be routed as required. From a
subscriber's perspective, when they make a long-distance call their call will either work (because
it was permitted and routed off the CFS) or the call will be blocked with an announcement. The
subscriber can only invoke the ANI Screening service if they call from their own phone because
the call needs to arrive at the CFS with their phone number as the calling number.
Authorization codes on the other hand require more interaction from the caller. The caller first
dials a number to access the long distance service provider. For example, this number may
be a special toll-free number that's routed to a long distance carrier such as AT&T in the US.
The CFS recognizes the special called number and asks the caller to enter a valid authorization
code. The caller may also need to enter a PIN. If the authorization code (and PIN if required) is
accepted then the caller can dial the phone number that they wish to call.
124 CONFIDENTIAL
Get started with long distance call services and the associated terminology
This service is typically used to let subscribers make long distance calls that are billed to a
particular carrier, regardless of which phone they call from. For example, a business woman
can call a freephone number from a hotel phone, then enter her authorization code and PIN
and then call an international number as the final destination. This avoids paying hotel rates for
international calls, which are typically high. The carrier may provide a small card with the details
of the Freephone number and the authorization code so that users can carry it in their wallet for
easy reference. As a result, the authorization code service is also known as the calling card
service.
The configuration for Authorization codes consists mostly of a list of acceptable codes, with
the associated PIN if required. We'll cover the configuration in more detail later in Maintain and
understand the configuration for Authorization codes on page 124.
Note: Authorization and Account codes (also known as Mandatory Account Codes) sound very
similar but are different services. As discussed, with Authorization codes the caller needs to
dial the initial access number, then the authorization code (plus potentially a PIN) and finally
the number that they want to call. With Account codes, the caller starts by dialing the number
they want to call and then, depending on the type of call, they have to dial an account code.
See the Mandatory Account Codes section (under Outgoing Call Services) in the MetaSphere
CFS and Metaswitch AGC Call Services Manual for more information on account codes.
Finally, note that the CFS does not store any financial information on subscribers, so neither
long distance service can check to see if the caller has sufficient funds to make the call. If you
want to screen the call based on financial information then you will need to configure Trunk
Routing to route the call to an off-switch platform which performs the check.
Before we look at the individual services in more detail, there's one final important point to
cover. You need to make sure the long distance call services are turned on before you can use
them! This is controlled by the Long Distance Service support field.
Checkpoint: You now know which long distance services are supported on the CFS and what
they do from a subscriber's perspective.
• If you won't be deploying these services and you don't want to know about them, you can
skip ahead to Celebrate - you’ve finished! on page 135.
• If you want to deploy these services then keep your coffee cup topped up and move on to
the next chapters - Maintain and understand the configuration for ANI Screening on page 124
and Maintain and understand the configuration for Authorization codes on page 124!
CONFIDENTIAL 125
Maintain and understand the configuration for ANI Screening
Each ANI Screening Table contains a list of ANI Screening Entries where each Entry defines
the ANI number that it matches and whether the number is Allowed or Denied. You can have
multiple ANI Screening Tables because, for example, you may have different sets of long
distance subscribers on different trunks.
Now let's look at the ANI Screening Table object in more detail.
As well as defining a name for the Table, you need to set a Default locale that will be used
for the child ANI Screening Entries. This is the language that will be used for announcements.
Use the Default second locale field if you want bilingual announcements. These values can
be overridden on a per-Entry basis. You can only use languages that have been installed on
your system, so please talk to Metaswitch Support if you need a language that isn't listed on
the CFS.
126 CONFIDENTIAL
Maintain and understand the configuration for ANI Screening
The ANI Screening Table also defines whether the child Entries will have a fixed length. This lets
the CFS check that any configured ANI Screening Entries are defined with the correct length.
When you add a child Entry, the key two fields are the ANI, which defines which number this
Entry matches, and the Entry type, which defines whether the caller is Allowed or Denied.
Setting the Entry type to Allowed or Denied does not actually permit or block the call
immediately. Instead the call is passed back into Number Validation with an Allowed or Denied
flag. Number Validation then decides how to handle the call. You may decide that you want
to block Denied callers, but you could also decide to route them via different trunks, bill them
differently etc.
Since ANI Screening Entries can be Allowed or Denied, you can choose whether to use a
white list or black list approach. With a white list all calls are blocked unless they match an ANI
Screening Entry while with a blacklist all calls are permitted unless the caller matches an ANI
Screening Entry. There's no difference in functionality between the approaches - just use the
one that's easiest to configure for your particular deployment!
To make the configuration even easier, the ANI field can either be an explicit complete match,
or it can be a prefix match. To configure a prefix match set the ANI field to the digits (including
A-D) that you want to match, followed by enough Xs to match numbers of the correct length.
This lets you simplify your configuration by defining blocks of numbers that are allowed or
denied, rather than having to define each ANI Screening number individually.
Looking at the rest of the ANI Screening Entry object, you can define other properties for
the ANI. In effect this is a type of subscriber, so you can configure the key properties that
you can configure for on-switch subscribers. So, you can suspend their service (typically
for non-payment), set Number Validation and Routing attributes and define the locale for
announcements. The other key subscriber properties used in Number Validation and Routing
are the Line Class Codes, which are set via a Long Distance Service Class object.
Note: We covered Line Class Codes earlier in Extend the built-in Attributes using Line Class Codes and
User Defined Attributes on page 60.
CONFIDENTIAL 127
Maintain and understand the configuration for ANI Screening
Checkpoint: You now know how to add and configure ANI Screening Entries in an ANI
Screening Table. Now you need to learn how Number Validation invokes and handles ANI
Screening when processing a call.
Note: Originally ANI Screening (and some other features) were only supported in North American
deployments and the fields were named to reflect this, such as the ANI Screening lookup
(North America only) Attribute. The restriction has now been removed but, to maintain
backwards compatibility, the field names were not always changed. Don't worry - this feature
is now supported in all regions!
If the ANI Screening lookup Attribute is present when a call completes Number Validation,
then the CFS will compare the call against the appropriate ANI Screening Table and record
whether the ANI is allowed or denied in the ANI Screening Entry Attribute. Note that a denied
call will not be blocked at this point. After checking the ANI Screening Table, the call will be
passed back into Number Validation for further processing. This time the call will start at the
Post ANI Screening lookup Table defined on the Config Set.
128 CONFIDENTIAL
Maintain and understand the configuration for ANI Screening
This Post ANI Screening lookup Table then needs to match on the ANI Screening Entry, to see
whether the call is allowed or denied. The Next action then defines what to do with the call.
Typically you will accept allowed calls by completing validation or passing to another Number
Validation Table. An example of this is shown below.
Obviously this is a very simple example where no additional processing is required after ANI
Screening. Depending on your deployment you may need to pass the call to another Number
Validation Table, for example to do processing based on the Line Class Codes applied by the
Screening Entry.
CONFIDENTIAL 129
Maintain and understand the configuration for ANI Screening
Similarly your configuration will typically reject denied calls. In this situation you need to decide
what announcement you want to play to callers. If you set the Next action field to Fail ANI
Screening then they will get an announcement saying that the carrier code is not valid. If
you set the Next action field to Reject and announce then they will hear a generic failure
announcement or tone. An example of this is shown below.
Note: By default you cannot modify Attributes after doing the ANI Screening lookup. This can be
modified by Metaswitch Support so it's something we'll discuss with you during the design
and commissioning stage.
Note also that this example Entry is set up to catch any ANI Screening Entry value, including
no ANI Screening Entry set. This is cautious design to ensure that only calls that have been
Allowed by ANI Screening are permitted and any other types of call going through this Table
are rejected.
Checkpoint: You now know how to maintain your ANI Screening lists and you have a reasonable
idea of what the Number Validation configuration associated with ANI Screening looks like.
That's all you need to know about ANI Screening, so now we'll take a look at the other long
distance service - Authorization codes.
130 CONFIDENTIAL
Maintain and understand the configuration for Authorization codes
Maintain and understand the configuration for Authorization
codes
In this chapter you'll learn how to maintain the Authorization code lists. You'll also learn
about the Number Validation configuration required to support Authorization codes. Typically
Metaswitch Support will set up the Number Validation side of things during commissioning and
then the service provider is responsible for maintaining the list of Authorization codes and any
associated PINs. So, first let's consider the Authorization code lists.
Each Authorization Code Table contains a list of permitted Authorization Codes. Each Code
object defines a particular Code and the associated call properties if a call uses that Code.
You can have multiple Authorization Code Tables because you may want to support different
Codes for different types of calls. All Codes in a Table also need to be the same length, so you
will need multiple Tables if you want to use Codes with different lengths.
Now let's look at the Authorization Code Table object in more detail.
CONFIDENTIAL 131
Maintain and understand the configuration for Authorization codes
Most of the fields control which announcements or tones to play at the various points in the call
where the CFS needs to ask the caller for input. You can also define the Second locale field if
you want bilingual announcements.
Looking at a child Code object, the key fields are for the actual authorization code and for the
PIN (if it's required by the parent Table). Here's an example of an Authorization Code with a PIN.
The Code is also linked to a Long Distance Service Class, which lets you associate Line Class
Codes with the call. This is the same as for an ANI Screening Entry object (see Maintain and
understand the configuration for ANI Screening on page 124) so I won't cover it again here.
If there's a PIN associated with the Code then the Code will be blocked if a caller tries to enter
the wrong PIN too many times. The limit is controlled by the Maximum incorrect attempts
field on the parent Authorization Code Table. Normally the Service blocked field is read-only
but if the limit is exceeded and the Code is blocked then the field will be changed to an editable
field so that you can change it back to False to unblock the Code.
Checkpoint: You now know how to add and configure Authorization Codes in an Authorization
Code Table. Now you need to learn how Number Validation invokes and handles Authorization
codes when processing a call.
132 CONFIDENTIAL
Maintain and understand the configuration for Authorization codes
When you have identified the relevant calls, you must then add the Authorization Code
Service Attribute. When Number Validation completes, the CFS will then ask the caller for the
code and PIN. In the example below, Number Validation processing will complete immediately,
but this is not a requirement. You can add the Attribute to several tables before completing
validation if that is easier to configure.
Now let's look at the Authorization Code Service Attribute in more detail, as shown in
the example below. The key parameter is the Authorization Code Operation field, which
determines how the switch should get the code. To implement a standard Authorization Code
service where the CFS asks the caller to enter a code, this field will be set to On-Switch
Calling Card / Hotline. The CFS will ask the caller for a code and will then use the specified
Authorization Code list to validate the code (and PIN).
Once the CFS has collected and checked the code (and PIN), the CFS will then play an
announcement to ask the caller to enter the number they wish to call. The Authorization Code
Table, which we covered earlier, controls which prompts are played. Once the caller has dialed
the number, the call needs to come back into Number Validation for processing, effectively as
a new call to the new destination number. The entry Table for this second round of Number
Validation is defined by the Number Validation Table - post Authorization Code Table field
on the Config Set, as shown in the example below.
CONFIDENTIAL 133
Maintain and understand the configuration for Authorization codes
The behaviour at this point depends on your deployment. You may consider this to be a call
from a subscriber and put it through similar (or even the same) Tables as a call directly from an
on-switch subscriber. On the other hand, you may want to do just minimal digit checking in
Number Validation and then route the call directly to the network.
Checkpoint: You now know how to maintain your Authorization Code lists and you have a
reasonable idea of what the Number Validation configuration associated with Authorization
Codes looks like. That's all you need to know about Authorization Codes, which means you're
ready for a quick conclusion and then you've finished this guide!
134 CONFIDENTIAL
Celebrate - you've finished!
Celebrate - you've finished!
You've now completed this Learn How To guide and you're ready to start managing your CFS
Translations. Before you leave, here's a quick recap of the key things that you've learned…
• There are 4 stages in CFS translations.
• Digit Maps
• Number Validation
• On Switch Lookups
• Trunk Routing
• Digit Maps and On-Switch Lookups are simple to configure.
• The Number Validation and Trunk Routing configuration are more complicated to configure.
They are both based on flowcharts.
• Do as much processing as possible in Number Validation and keep Trunk Routing as simple
as possible.
• If there's a name field, use it and use it wisely.
• Test, test and test again. Build up a test suite of Route Verification Tests so you can quickly
check that everything is working as expected.
• The translations configuration can seem overwhelming but we will provide you with a base
configuration that gives you a lot of the necessary functionality.
And finally - Don't Panic! Metaswitch Communities, Support and Professional Services are all
here to help you make a success of your translations!
CONFIDENTIAL 135
Glossary
Glossary
Translations are particularly rich with acronyms and specialist jargon and you won't be the first
person to complain that they don't understand it! This final chapter provides a quick reference
to the terminology used in this guide and in the translations configuration.
If there is anything that you still don't know after looking here, make a suggestion to Metaswitch
to include it in the next version of the guide and then go and look it up!
Abbreviations
There are expanded definitions for most of these abbreviations in the following Terminology
section.
AAR Automatic Alternative Routing
ACQ All Call Query
ANI Automatic Number Identification
ARR Automatic Re-Routing
C4 Class 4
C5 Class 5
CFS Metaswitch Call Feature Server
ETSI European Telecommunications Standards Institute
FB NV File-based Number Validation
LCC Line Class Code
LNP Local Number Portability
LRN Location Routing Number
NANP North American Numbering Plan
NANPA North American Numbering Plan Administration
NV Number Validation
OR Onward Routing
QoR Query on Release
SAC Service Access Code
SAS Service Assurance Server
UDA User Defined Attributes
UK United Kingdom
UMG Universal Media Gateway
US United States. Shortened version of United States of America
RVT Route Verification Test
Terminology
7 Steps: A simple list showing how a call is processed on the CFS.
All Call Query (ACQ): An implementation of Number Portability.
136 CONFIDENTIAL
Glossary
ANI Screening service: A call service that permits or blocks calls based on the caller's
number. ANI Screening is a long distance service.
Attribute: A property of a call, such as which trunk it came from. Attributes are added when a
call arrives and in Number Validation.
Attribute Set: A group of attributes. In Number Validation attributes are applied to a call by
applying an Attribute Set.
Authorization code service: A call service where the call has to enter an authorization code
(and potentially a PIN) before they can dial their final destination number. This is also known as
a calling card service. Authorization codes are a long distance service.
Automatic Alternative Routing (AAR): A feature that allows the CFS to reroute a call if it
decides the initial trunk was not suitable, before the call was routed off the switch. Compare
with Automatic Re-Routing.
Automatic Number Identification (ANI). A network feature that lets a phone number that
identifies the caller be passed through the network. It's typically used to mean the caller's
phone number.
Automatic Re-Routing: A feature that allows the CFS to reroute a call if the call is rejected
after it has been routed off the switch. Compare with Automatic Alternative Routing.
Base configuration: The initial translations configuration that Metaswitch Support provides
for your CFS. This will either be the NANP version or the International version.
Called address complete: An Attribute that indicates that the CFS has received all of the
digits for the destination number. This Attribute is important when dealing with overlap signaling.
Carrier ID: A unique code used to identify a carrier. Typically used in NANP deployments.
Class 4: A telecoms switch that has no directly associated subscribers.
Class 5: A telecoms switch that has directly associated subscribers.
Complete match Table: A type of Number Validation Table that looks at all of a number, both
the contents and the length.
Config Set: The high-level object that contains almost all of the configuration you need to
define your translations.
CORBA API: The CORBA API is used between the MetaView Explorer and the MetaView
Server. The details of the CORBA API are published on the Innovators section of Communities,
so that you can use it as a programmatic API.
Digit Maps: The translations component that collects the dialed digits from a subscriber.
Destination: Another name for the terminating or called number or address.
E.164: A number format standard for the telephone network developed by the ITU-T.
Enbloc signaling: In enbloc signaling the entire destination number is signaled in a single
message. Compare with overlap signaling.
European Telecommunications Standards Institute (ETSI): An organization that produces
globally-applicable standards for telecoms (and other technologies). ETSI plays a similar role
to Telcordia in the US.
Expected result: You can set Expected result fields on a Route Verification Test. If the test
result does not match the Expected result then the test object will alarm in the object tree.
File based Number Validation: A Number Validation feature that lets you define large Tables
as text files, rather than as MetaView Explorer objects.
Freephone: It's free to call a Freephone number. Also known as a toll-free number.
CONFIDENTIAL 137
Glossary
Import: A MetaView Explorer feature that lets you upload plain text files to create configuration.
International base configuration: (Also known as the International scheme.) A generic,
easy-to-customize, initial translations configuration that Metaswitch Support will put on your
CFS if you're not part of the NANP scheme.
International Telecommunication Union (ITU): A United Nations agency that develops
global standards for information and communication technologies.
ITU-T: The division of the ITU that deals with telecommunications.
Line Class Code (LCC): A special type of customizable Attribute that's used to define per-
subscriber features.
Live Config Set: The Config Set that is currently carrying all of your traffic. Also known as the
in-use Config Set.
Local Number Portability: Number portability but only within the local calling area.
Local subscriber: Another name for an on-switch subscriber.
Locale: The language used for announcements.
Location Routing Number (LRN): In some forms of Number Portability, each switch is
identified by a unique phone number, known as its Location Routing Number.
Long distance services: A group of call services that are typically applied to long distance
calls. These services include ANI Screening and Authorization codes.
Long distance subscriber: A subscriber who uses the long distance call services on the
CFS. The subscriber may or may not be managed directly by the CFS, but their long-distance
calls are routed via the CFS. Compare with on-switch subscriber.
Media Channel: Another name for Trunk or Trunk Group.
Metaswitch Universal Media Gateway (UMG): A device that handles interconnects
between legacy signaling protocols and TDM media to IP signaling and media. It also provides
media service function, for example to play announcements.
NANP base configuration: (Also known as the NANP scheme.) The initial translations
configuration that Metaswitch Support will put on your CFS if you're part of the NANP scheme.
North American Numbering Plan: A telephone numbering scheme that's used in several
countries and territories, mostly in North America. We have a separate standard base
configuration for use in NANP deployments which is optimized for their numbering plan
requirements. People sometimes use NANP and NANPA interchangeably.
North American Numbering Plan Administration: The organization that is responsible for
organizing the NANP numbering resources. NANPA, i.e. the organization, is often used when
people really mean NANP, i.e. the numbering plan itself.
Number Block: The object in On Switch Lookups which defines a block of numbers that may
reside on the CFS.
Number Portability: The ability to keep your phone number if you move your service to a
different service provider.
Number Range: An object used in the subscriber configuration area for number space
management. Do not confuse this with Number Blocks.
Number Validation: The translations component responsible for classifying calls. It also has
the main responsibility for modifying calls and rejecting bad calls.
On Switch Lookups (On Switch and LNP Lookups on NANP systems): The translations
component that's responsible for looking for the called number in the CFS subscriber database.
138 CONFIDENTIAL
Glossary
On-switch subscriber: A subscriber that is managed directly by the CFS. All calls from on-
switch subscribers are initially handled by the CFS. Compare with a long-distance subscriber.
Onward Routing (OR): An implementation of Number Portability.
Optional attributes: Attributes that can be added in Trunk Routing.
Overlap signaling: Also known as overlap addressing. In overlap signaling the destination
number may be sent spread over several signaling messages.
Overriding Config Set: The Override Config Set feature lets you put real phone calls through a
non-live Config Set. This is used for testing purposes. It's configured by setting the Overriding
Config Set field on a subscriber, for calls from subscribers, or Call Trace object, for calls from
trunks.
Prefix match Table: A type of Number Validation Table that only looks at the start of a number.
Compare with Complete match Table.
Query on Release (QoR): An implementation of Number Portability.
Return to Pivot: An implementation of Number Portability.
Route Verification Test: A MetaView Explorer object that lets you send a test call into the
translations configuration and check that the call is handled as expected.
Scope: The area over which a number is unique. For example, a national scope number
includes the area code but not the country code.
Service Access Code (SAC): A special phone number used to invoke a call service.
Service Assurance Server: A MetaView component that automatically collects detailed call
traces for all calls passing through Metaswitch components.
Source: Another name for the originating or calling number or address.
Subscriber Group: A MetaView Explorer object used to link subscribers to the Digit Map
for those subscribers. On older systems it may also be used to distinguish different groups of
subscribers in translations.
Telcordia: A research and development company based in the US and currently owned by
Ericsson. It defines many telecommunication standards for the US. Telcordia plays a similar role
to ETSI in the other regions.
Trunk: Also known as a Media Channel or Trunk Group. This is a protocol-independent name
for the connection that carries a call between systems.
Trunk Routing: The translations component that chooses the trunk for outgoing calls to other
switches.
Unique match Table: A rare type of Number Validation Table that looks for a number between
two lengths.
User Defined Attribute (UDA): A special type of customizable Attribute.
CONFIDENTIAL 139
Tell us what you think!
Metaswitch is interested to know what you think about this Learn How To Guide. If
you have any feedback, or you spot any inconsistencies while using it, please don’t
hesitate to contact us.
You can send any general comments or report any specific issues to:
LHTfeedback@metaswitch.com.
Thanks for your time on this; your support will help us to make these guides better
and even more useful for you!
CONFIDENTIAL