AA Advanced Customisation Overview
AA Advanced Customisation Overview
Lets take the property class [Link]. The actions which can be
performed on this property class can be found in the actions tab of the property
class record. When the user performs an activity, a set of actions are performed
on a particular property. This information will be stored in the
[Link] table. So, for example, when the user perform a
disbursement on an arrangement, the activity class LENDING-DISBURSE-
[Link] will be accessed, through corresponding activity LENDING-
DISBURSE-COMMITMENT (where COMMITMENT is the instance of
[Link] property class used in the product).
All activity classes perform some action on a property class. That is why the ID
of an activity class is Product Line-Action-Property Class name.
The tables used for building the re-usable components & customising AA screens
are:
• [Link] -> Designed by TEMENOS
• [Link] -> Named copy of Property class
• [Link].<[Link]> -> Used to o design product
conditions by assigning values to attributes of Property class
• Property Class
• Property
• Activity
In this picture, the different levels are from the least specific (Property Class) to
the most specific (Activity). If a conflict arises, the most specific level will take
precedence over the least specific one. This means that when different versions
are associated to two connected levels, the version associated to the most specific
level will take precedence over the other - e.g. if version 1 is associated to the
LENDING-DISBURSE-COMMITMENT Activity and version 2 is associated to
the COMMITMENT Property, when the LENDING-DISBURSE-
COMMITMENT activity takes place, version 1 will be displayed to end-user
instead of version 2.
Now that we have reviewed some important concept about Basic Customisation
in AA, we can focus on a new concept: the [Link] Property class.
Let’s take as an example a scenario in which a bank asks us to add some extra
validation to our AA Screen. For instance, our client wants us to set up a
[Link] local reference field on the COMMITMENT Property
screen of the Personal Loan product when a LENDING-DECREASE-
COMMITMENT Activity is carried out. Than, when a user fill in this field, the
client wants system field [Link] on the ACCOUNT Property
screen to be automatically updated.
Activity Class
There are different types of routines which can be associated with AA screen
versions in [Link] Property Class, set up through the
[Link] application. These are currently:
processing
- Pre-validation routines will get trigger before core level validation. It is used to input or
modify the required fields or else mandatory fields. But “NOINPUT” and “NON-
NEGOTIABLE” fields would not have no effect on this. E.g. If the value for the
mandatory field AMOUNT has to be populated, then the user should use this field. If
the user wish to populate the value for the field and attach it to the field
[Link]
- Validation routines are attached to the [Link] field and will get trigger after
core level validation. For example, a local reference field can be introduced with some
value assigned to it. If the user wish to include a local reference field, then he can
achieve it through this field.
Here you can see the [Link] routines’ flow – as previously explained,
Record routines are invoked as soon as the AA arrangement they operate on is
opened in an ‘input’ mode and before it is Validated/Committed. Pre-validate
routines are a new kind of AA routines introduced from R12; they are invoked
before core validation, while Validate routines are invoked afterwards. Pre-
routines are executed before the action specified in [Link] field is
processed (e.g. INCREASE or DECREASE commitment, CREATE a new
arrangement etc) while, finally, post-routines will be called after the [Link]
has taken place.
Very important technical note – Validate and Pre-validate routines only work in
R12 after the installation of the R12_AA_Framework_5 update. This update
should be installed before you write and test these types of routines.
Once the “User Defined Field” Screen has come up, we input the Id of our new
field and we click on the edit button.
1. We assign a description and a short name to the new local reference field
through the GB Description AND GB Field Name fields.
2. Width Max is a mandatory field through which you state the local field’s
maximum length; on the other hand, you can decide whether the
[Link] has a minimum length through Width Min –
when Width Min is left empty, like in this example, it means that the new
local reference field is not mandatory
3. In this case, we would like the current field to link to the
[Link] table, so that it will display a dropdown list pointing
to the records contained in the aforementioned table. By populating
[Link], the field ENRICHMENT also becomes mandatory. As you
remember, ENRICHMENT contains the number of the field in the
[Link] table whose content will be used as an enrichment for
[Link]
4. If you link a local field to a T24 existing table, like in this example, there’s no
need to specify a TYPE for the local reference field
Once we are finished, we can validate & commit. After committing, the new local
reference field will be automatically live as we are using a self-authorising
version.
Once we are finished, we can validate & commit the record. Please note that the
record will be immediately set to live status, as we are using a self-authorising
version.
Even if we have created a new local reference field and we have linked it to the
[Link] property class, we are not able to view it within an AA screen
quite yet. The end-result we aim for, is to display such new field within the
‘Commitment’ screen of an [Link] record whenever we perform a
LENDING-DECREASE-COMMITMENT activity. In other words, we would like
the new field to be presented to end-users only when they are trying to decrease
the amount of a Personal Loan arrangement.
The fastest way to achieve this, is to find out which version of
[Link] is associated with the LENDING-DECREASE-
COMMITMENT activity for the [Link] product and include our
new [Link] local reference field to such version. But how can we do
this?
From the AA Basic Customisation course, you should remember that you can
associate versions with Property Classes, Properties and Activities through the
[Link] Property Class. In previous workshops, we had created new
product conditions for [Link] and then we had associated these
customised conditions to products, using the PRESENTATION Property.
In this case, however, we would like to modify an existing condition rather than
creating new ones so we should proceed backwards – first we will check which
Conditions are already associated with the [Link] product and then
we will change them so that the [Link] version used for
LENDING-DECREASE-COMMITMENT activity also includes our new field.
Let us check the list of Conditions associated with the [Link]
product. We can get the full list of available products in R12 Model Bank, through Admin
Menu > Product Builder > Products. The [Link] product belongs to the
LENDING Product Line and to the [Link] Product Group. By clicking on
the ‘View’ context workflow link, we are able to check the features of the
[Link] product.
Just by casting a quick look to the [Link] record, we can view from
the ‘Product Designer’ tab that this product is depending on a Parent Product
called [Link]. What are the implications in terms of
Property Conditions?
As we have learnt during the AA Basic Customisation course, a child product will
inherit the parent product’s conditions. However, if there’s a conflict between the
parent’s Property Conditions and the child’s ones, the most specific conditions
will take precedence over the most generic – in other words, the Property
Conditions set at the child level will always take precedence but if no condition is
set at the child level, the parent conditions will be used.
In our case, we should check if the [Link] conditions include
description of the version to be used for the ‘Commitment’ screen while
performing a LENDING-DECREASE-COMMITMENT activity. If these
description is missing in the child’s Property Conditions, we should look at the
parent’s Property Conditions.
We can check which Property Conditions are associated to the current Product by
clicking on the ‘’Property Conditions’ tab. In this case, the Property we are
interested in is PRESENTATION as this is the property in charge of defining
which versions are presented to end-users when a certain Property, Property Class
or Activity is presented. For the [Link] product, the Property
Condition associated to the PRESENTATION Property is also called
‘[Link]’. As we still don’t know whether the [Link]
condition includes a specific [Link] version for the
LENDING-DECREASE-COMMITMENT activity, it would be a good idea to
also check the condition associated to the PRESENTATION Property also for the
[Link] product, which is the parent of
[Link].
We can view the content of a product condition through Admin Menu > Product
Builder > Product Conditions. In this example, the Property Class through which
we can define how customised screens for AA arrangements are presented to end-
users is [Link]. As we have learnt from the AA Basic
Customisation course, each Product Condition associated to
[Link] is listing which versions are associated with
Properties, Property Classes or Activities belonging to one or more Products.
In our case, we have to check the content of both the [Link] and of
the LENDING Product Conditions, to know which version of
[Link] is linked to LENDING-DECREASE-
COMMITMENT activity, if any. We will start with the [Link]
condition record as this belongs specifically to the [Link] Product
(which means that an activity specific version set here would take precedence
over any parent product’s settings).
Important note – if no activity specific version exists in any of the two conditions,
then a Property specific version will be used (in this case, the property would be
‘Commitment’). And if no Property specific version is available, then the
Property Class specific version will be taken in consideration (in this case.
‘[Link]’).
Again, through Admin Menu > Product Builder > Product Conditions, we access
to the list of conditions associated with the [Link]
Property Class and we choose LENDING.
The ‘Default Values’ tab under the LENDING condition record, presents a
number of activities for which both Activity versions and a Simulation versions
are defined. In our case, we want to identify which [Link]
version is used to display the ‘Commitment’ screen (i.e. the screen associated
with the ‘Commitment’ Property) while executing the LENDING-DECREASE-
COMMITMENT activity.
We can easily spot such version, which is
[Link],[Link].
Please note that if no Activity specific screen had been available, we could have
either created one or used the version associated with the [Link]
Property (as there is no version linked to the ‘Commitment’ property in the
LENDING condition either).
Now that we have identified the customised ‘Commitment’ screen used for
decreasing commitments in Personal Loans arrangements, we must update such
version so that it includes our [Link] local reference field.
Our objective now is to write a routine which is invoked only when the
LENDING-DECREASE-COMMITMENT is performed, extracts the content of
the [Link] local reference field on the [Link] Property Class
and updates the system field [Link] on the ACCOUNT
Property Class. We will later learn how it is possible to attach such routine to the
[Link] field on the
[Link],[Link] version.
We need to figure out what the algorithm behind this kind of routine could be. We
should –
I_F.[Link] has the field names equated to field positions for the
ACCOUNT property class. I_F.[Link] has the filed names
equated to field position for [Link] property class.
The INITIALISE section is used to initialise local variables used in the API.
[Link] section does the main process of the API
Incoming Parameters:
[Link] – specifies the field number to be converted; please
note that in this case we are not using the field number directly but using
the common variable [Link], instead. This is
possible because we mentioned the insert file I_F.[Link]
within our routine. I_F.[Link] maps all field
numbers against common variables defining the field
name.
[Link] - specifies the standard selection record
content
Outgoing Parameters:
[Link] – used to hold the returned standard selection field name
(different from the common variable within I_F.[Link]), blank if not found
[Link] - data type is set to “D” by default; in case of error, any other data
type passed back
[Link] - variable to store error messages
If you see the code, the common variables are used to retrieve the
arrangement information. These variables are defined in
I_AA.[Link]
[Link] – holds the property class for which properties are sought
Outgoing Parameters:
PROPERTY - Returns a list of properties (separated by FMs) for the given
property class
Input parameters:
[Link]([Link],
[Link], [Link], [Link],
[Link], [Link], [Link])
Incoming Parameters:
Outgoing Parameters:
ReturnError is the error variable
Please note that, from R12 TAFC release onwards, if you are trying to compile a
program which has got insert files ( e.g.: I_COMMON, I_EQUATE, etc, etc., )
then the syntax should be
We are assuming you have, like in this case, all your inserts in T24_BP (which, as
you know, is a directory under [Link]).
Write, compile, catalogue the routine and then make an entry for the
routine in [Link] application.
@ID – should be the same as the routine @ID
Description – should contain a meaningful description of what this routine
does
Protection level – This is the protection level that is to be followed. The
accepted values are FULL, PARTIAL and NONE
Source Type – Basic or Java are the possible options
Let us now add the new Condition to the [Link] product. We can
get the full list of available products in R12 Model Bank, through Admin Menu >
Product Builder > Products. As we have seen previously, the [Link]
product belongs to the LENDING Product Line and to the [Link]
Product Group. By clicking on the ‘Amend’ context workflow link, we are able
to update the features of the [Link] product.
As you know, in order to authorise any Loan product, we can use the
[Link] composite screen which you find under User
Menu > Retail Operations > Find Loan. Once the composite screen pops up, we
will select the second tab from the left (‘Unauthorised’) and then search by
Arrangement Id.
Once the enquiry output is presented to you, click on the ‘Overview’ context-
workflow icon on the right hand-side of the screen.
Once the ‘Lending Overview – Unauthorised’ composite screen pops up, get the
new record approved. Let us now decrease the commitment of this authorised
Personal Loan arrangement to check if our [Link] local reference field
is displayed within the ‘Commitment’ screen for the LENDING-DECREASE-
COMMITMENT activity and also to make sure that the
[Link] routine works properly – this should extract the
content of [Link] and updates the system field ‘[Link]’
on the ‘Account’ Screen.
As you know, in order to perform a new activity on the authorised personal loan
arrangement, we can use again the [Link] composite
screen available under User Menu > Retail Operations > Find Loan. Once the
composite screen pops up, we will select the first tab from the left (‘Authorised’)
and then search by Arrangement Id.
Once the enquiry output is presented to you, click on the ‘Overview’ context-
workflow icon on the right hand-side of the screen.
Once the ‘Arrangement Overview (Lending)’ composite screen has opened, click
on the ‘New Activity’ hyperlink on the top right-hand side of the screen. An
enquiry output listing New User Activities will pop up and you should now select
the ‘Decrease Commitment’ option, under ‘Term Amount’ property class. In order
to do so, click on the ‘Do activity today’ context-workflow icon.
Again, we can retrieve the unauthorised activity and approve it through User
Menu > Retail Operations > Find Loan. Once the composite screen pops up, we
will select the first tab from the left (‘Authorised’) and then search by
Arrangement Id.
Once the enquiry output is presented to you, click on the ‘Overview’ context-
workflow icon on the right hand-side of the screen.
Let us now jot down the Child Activity Id and check the ‘Commitment’ and
‘Account’ screens on this activity record to see if the update between them has
been carried out successfully between [Link] and ACCOUNT
Property Classes. While executing the LENDING-DECREASE-COMMITMENT
activity, we had populated the local field [Link] on the ‘Commitment’
screen with value ‘4’. If the routine has worked properly, now the content of the system
field [Link] on the ‘Account’ screen should be the same.
And on the same record, also the [Link] system field has been
automatically updated to value ‘4’. This happened because the current
LENDING-DECREASE-COMMITMENT activity, after authorisation, generated
a child activity which updated the ACCOUNT Property as well, thanks to the post
routine we attached to the parent activity. Let us use the Child Activity Id we had
jotted down to check the corresponding record in
[Link].
1) To create our new version, we will access the Screen Designer Composite
screen, as usual, through Admin Menu> Implementation Utilities >
Customization > Screen Designer and then we should click on the New
Version option.
2) As soon as the New Version screen comes up, we should type in the Id of our
new VERSION record (i.e. [Link],[Link]) and then
click on the Edit button.
3) On the main screen, we will jot down a brief description of the Customised
Screen Layout you are creating in GB Description and set the Language field
appropriately. As we have seen, in this version the [Link] field is
defaulted to 1 and cannot be changed.
4) We should now focus on the first Field Definitions tab in order to define the
fields and their basic structure for the [Link],[Link]
version record
5) Each of the requested fields should have an entry in [Link]
6) COL contains instead information about the indentation from the left margin
(i.e. column position).
7) Text Max defines the amount of characters occupied by each field’s label
8) Text field contains the customised label which will be assigned to a specific
field in this version
We can now validate & commit the record. Version Designer is a self-authorising
version and hence our record will become immediately live.
We have created a new customised layout for the TERM AMOUNT Property
Class and our objective is to display this version to end-users whenever they
perform a LENDING-DECREASE-COMMITMENT activity on a Vehicle Loan.
We know that the versions displayed for each Activity, Property or Property Class
are defined through the [Link] Property Class (linked to the
PRESENTATION Property) and that there are different ways to attach a specific
version to an activity – you can create a brand new Condition for
[Link] from scratch and then attach it to a product, you can
update the VERSION in an already created Condition for a product (as we did in
Demo 1 of this presentation) or you can update an already existing
PRESENTATION Condition, including your version. In the past, we have seen
examples for the first and the second scenario, while now we are going to try and
update and existing Condition.
What we should do is check which condition is associated with the
PRESENTATION property in [Link] (if any) and then update such
condition so that our version is linked to the LENDING-DECREASE-
COMMITMENT Activity. Note that, if the PRESENTATION condition is
missing we can either create a new one or update the corresponding condition at
the Parent Product level if [Link] is a Child Product.
We can get the full list of available products in R12 Model Bank, through Admin
Menu > Product Builder > Products. The [Link] product belongs to
the LENDING Product Line and to the [Link] Product Group. By
clicking on the ‘View’ context workflow link, we are able to check the features of
our product.
We can check which Property Conditions are associated to the current Product by
clicking on the ‘’Property Conditions’ tab. In this case, the Property we are
interested in is PRESENTATION as this is the property in charge of defining
which versions are presented to end-users when a certain Property, Property Class
or Activity is presented. For the [Link] product, the Property
Condition associated to the PRESENTATION Property is also called
‘[Link]’.
We will now update the [Link] condition so that it includes our
[Link] version for the LENDING-DECREASE-
COMMITMENT activity.
Again, through Admin Menu > Product Builder > Product Conditions, we access
to the list of conditions associated with the [Link]
Property Class, we choose [Link] and click on the ‘Update’ context-
based workflow icon, just beside this record.
The ‘Default Values’ tab under the [Link] condition record, presents
all activities/properties/property classes for which both Activity versions and a
Simulation versions are defined. Those which are not listed here will be defaulted
from the parent product of [Link], i.e. [Link].
In our case, we want to make sure that a specific [Link]
version is used while executing the LENDING-DECREASE-COMMITMENT
activity.
As we can see, no Activity Version has been defined for the LENDING-
DECREASE-ARRANGEMENT: only the LENDING-NEW-ARRANGEMENT
activity and the SETTLEMENT Property Class have their own versions defined
while the other activities/properties/property classes will inherit their versions
from [Link].
We do not want to interfere with the Parent Product settings, in this case, so we
will simply multi-value the Activity field and add the LENDING-DECREASE-
ARRANGEMENT value. Then, using the Activity and Property associated fields
we will connect the [Link],[Link] version to the
COMMITMENT Property for the aforementioned Activity.
Now that our version is associated to the [Link] Condition, we need to
write a validate routine for inter-field update and attach it to the
[Link] product through [Link]
This Pre-routine is fairly easy as it does not imply the creation of a new
activity but simply the update of the [Link] local
reference field if the [Link] local reference field contains any
value. Within the first part of our routine we will list, as usual, the insert
files we wish to use.
Then we need to identify the content of [Link] – in order to do
so, we will use a different method from the one previously seen, which
relied on the [Link] API (see slides 35-50, Demo 1 of this same
presentation).
In this routine we will take for granted that we already know the position of
[Link] based on the standard selection record for
[Link] and [Link] (we must
remember that that the latter gets automatically updated based on changes made
on the first, together with all the tables linked to the [Link] Property
Class). Checking out Standard Selection, we notice that [Link] appears
to be stored in the first position <1,1> of the [Link] field of the
[Link]-related tables, while [Link] is located on the
second position <1,2>.
So, in order to extract the values of [Link], we use the common
variable [Link] (stored under the insert file
I_F.[Link]) assigning to it the correct position – the content
of [Link] will be located consequently under
[Link] <1,1>. Please note that this parameter is supposed
to be inputted manually by the user and, therefore, we will extract it from the
common variable [Link] – a dimensioned array which, as we know, contains data
from the currently opened record.
Once we have identified the position of [Link], we will initialise the
variable [Link] that contains the message to be displayed within the
[Link] if the condition defined in the IF-THEN-ELSE structure
is true – in this case if the content of [Link] (initialised to the local
variable [Link]) is not null, then we will position the
content of [Link] in [Link]<1,2>, which means where the
[Link] local reference field is positioned. Else
[Link] will be left empty.
The [Link] API will rebuild the arrangement page in case the
validate routine is invoked in CUI.
We can now compile and catalog our routine
Note that also the field ‘Default Negotiable’ is mandatory and should be populated under
the ‘Negotiation Rules’ tab
Let us now add the new Condition to the [Link] product. We can get
the full list of available products in R12 Model Bank, through Admin Menu >
Product Builder > Products. As we have seen previously, the [Link]
product belongs to the LENDING Product Line and to the [Link]
Product Group. By clicking on the ‘Amend’ context workflow link, we are able
to update the features of the [Link] product.
As you know, in order to authorise any Loan product, we can use the
[Link] composite screen which you find under User
Menu > Retail Operations > Find Loan. Once the composite screen pops up, we
will select the second tab from the left (‘Unauthorised’) and then search by
Arrangement Id.
Once the enquiry output is presented to you, click on the ‘Overview’ context-
workflow icon on the right hand-side of the screen.
Once the ‘Lending Overview – Unauthorised’ composite screen pops up, get the
new record approved. Let us now decrease the commitment of this authorised
Vehicle Loan arrangement to check if the [Link],[Link]
version is presented and if our pre routine works properly – this should check the
content of [Link] and updates the local field
[Link] on the ‘Commitment’ screen.
As you know, in order to perform a new activity on the authorised personal loan
arrangement, we can use again the [Link] composite
screen available under User Menu > Retail Operations > Find Loan. Once the
composite screen pops up, we will select the first tab from the left (‘Authorised’)
and then search by Arrangement Id.
Once the enquiry output is presented to you, click on the ‘Overview’ context-
workflow icon on the right hand-side of the screen.
Once the ‘Arrangement Overview (Lending)’ composite screen has opened, click
on the ‘New Activity’ hyperlink on the top right-hand side of the screen. An
enquiry output listing New User Activities will pop up and you should now select
the ‘Decrease Commitment’ option, under ‘Term Amount’ property class. In order
to do so, click on the ‘Do activity today’ context-workflow icon.









