I synch users from NW to LDAP (Qmail)

The environment are
Source : NW 6.5 sp6, eDir 8.7.3.9, IDM 3.5
Destination : Linux Enterprise 4 openldap 2.2.13-3, Qmail

Customer's requirement are
Our customer's admin insert Unique name (Login name) in NW via Console
One, then I want to modify the field and send to mailAlternateAddress in
LDAP.
Ex. When new user 'Jackie Chan' join the company.
Customer's admin will insert 'jackiech' for Login name in Console
One in NW.
I have to create jackie.ch@abc.com in mailAlternateAddress in LDAP
for Qmail Application.
I create this rule in SubScriber Creation Policy. Users can synch from NW
to LDAP but I need to customize this field following customer's
requirement which is jackiech (NW) --> jackie.ch (LDAP)

What I put in the Subscriber Creation policy is
<conditions>
<and>
<if-class-name op="equal">User</if-class-name>
</and>
</conditions>
<actions>
<do-set-dest-attr-value name="mailAlternateAddress">
<arg-value type="string">
<token-substring length="8">
<token-src-name/>
</token-substring>
<token-text xml:space="preserve">.</token-text>
<token-substring length="3" start="-2">
<token-src-name/>
</token-substring>
<token-text xml:space="preserve">@abc.com</token-text>
</arg-value>
</do-set-dest-attr-value>
</actions>
This rule cannot meet customer's requirement.

The Question is
1. Which function can split String(Text) to 2 groups then put '.' between
it? The second group of String will ALWAYS has 2 characters.
The first group of String has vary length of characters.

Thanks,
Nat