From 81f1d65e0ca7e4542a597db4f28e65f84dbbcd47 Mon Sep 17 00:00:00 2001
From: Christophe Sovant <christophe.sovant@forgerock.com>
Date: Mon, 03 Aug 2009 09:29:27 +0000
Subject: [PATCH] Front port of 2.0 tests to the trunk

---
 opends/tests/staf-tests/stress-tests/testcases/replication/replication_add_modify_multiple.xml         |  437 +++
 opends/tests/staf-tests/stress-tests/testcases/replication/replication_modify.xml                      |  450 +++
 opends/tests/staf-tests/stress-tests/testcases/import_ldif/import_ldif_bin_attr_1m.xml                 |   57 
 opends/tests/staf-tests/stress-tests/testcases/ldap_operation/ldclt_compare.xml                        |   44 
 opends/tests/staf-tests/functional-tests/testcases/indexes/before-add.filters                          |   24 
 opends/tests/staf-tests/shared/xsl/gen-suites-report.xsl                                               |    1 
 opends/tests/staf-tests/stress-tests/testcases/replication/replication_modify_modifyrdn_multiple.xml   |  519 +++
 opends/tests/staf-tests/functional-tests/testcases/indexes/before-modify.filters                       |   10 
 opends/tests/staf-tests/functional-tests/testcases/indexes/search.filters                              |  366 +-
 opends/tests/staf-tests/stress-tests/testcases/replication/replication_add_del_add_del_multiple.xml    |  528 +++
 opends/tests/staf-tests/stress-tests/testcases/replication/replication_add_delete.xml                  |  411 ++
 opends/tests/staf-tests/stress-tests/testcases/replication/replication_search.xml                      |  450 +++
 opends/tests/staf-tests/stress-tests/testcases/replication/replication.xml                             |  107 
 opends/tests/staf-tests/functional-tests/testcases/replication/conflict/conflict.xml                   |  234 
 opends/tests/staf-tests/functional-tests/testcases/replication/replication_cleanup.xml                 |   66 
 opends/tests/staf-tests/stress-tests/testcases/replication/replication_add_mod_delete_search.xml       |  507 +++
 opends/tests/staf-tests/stress-tests/testcases/replication/replication_add_search_multiple.xml         |  436 +++
 opends/tests/staf-tests/functional-tests/testcases/replication/resynchronization/resynchronization.xml |  450 ++
 opends/tests/staf-tests/shared/functions/topology.xml                                                  |  217 +
 opends/tests/staf-tests/shared/functions/environment.xml                                               |    5 
 opends/tests/staf-tests/stress-tests/testcases/replication/replication_add_mod_delete.xml              |  460 +++
 opends/tests/staf-tests/shared/ant/build.properties                                                    |    2 
 opends/tests/staf-tests/shared/functions/dsadm.xml                                                     |    2 
 opends/tests/staf-tests/stress-tests/testcases/replication/replication_add_delete_multiple.xml         |  436 +++
 opends/tests/staf-tests/functional-tests/testcases/indexes/before-remove.filters                       |   24 
 opends/tests/staf-tests/functional-tests/testcases/indexes/after-remove.filters                        |   24 
 opends/tests/staf-tests/shared/topology/basic_topology.txt                                             |    6 
 opends/tests/staf-tests/stress-tests/testcases/import_ldif/import_ldif_bin_attr.xml                    |   77 
 opends/tests/staf-tests/stress-tests/testcases/ldap_operation/ldap_operation_cleanup.xml               |   46 
 opends/tests/staf-tests/functional-tests/testcases/indexes/indexes.xml                                 |   21 
 opends/tests/staf-tests/shared/functions/tools.xml                                                     |  326 ++
 opends/tests/staf-tests/functional-tests/testcases/indexes/after-modify.filters                        |   10 
 opends/tests/staf-tests/shared/functions/utils.xml                                                     |   34 
 opends/tests/staf-tests/stress-tests/testcases/ldap_operation/ldclt_modify.xml                         |   29 
 opends/tests/staf-tests/stress-tests/testcases/import_ldif/import_ldif_bin_attr_3m.xml                 |   63 
 opends/tests/staf-tests/stress-tests/testcases/ldap_operation/ldclt_add_delete.xml                     |   40 
 opends/tests/staf-tests/functional-tests/testcases/tasks/backup_db.xml                                 |    2 
 opends/tests/staf-tests/stress-tests/testcases/ldap_operation/ldclt_search.xml                         |   27 
 opends/tests/staf-tests/stress-tests/testcases/replication/replication_modifyrdn.xml                   |  450 +++
 opends/tests/staf-tests/stress-tests/testcases/import_ldif/import_ldif.xml                             |    2 
 opends/tests/staf-tests/stress-tests/testcases/replication/replication_modify_multiple.xml             |  519 +++
 opends/tests/staf-tests/shared/topology/3server_topology.txt                                           |    8 
 opends/tests/staf-tests/stress-tests/testcases/ldap_operation/ldclt_modifyrdn.xml                      |   27 
 opends/tests/staf-tests/shared/functions/stafcmd.xml                                                   |    6 
 opends/tests/staf-tests/functional-tests/testcases/indexes/after-add.filters                           |   24 
 opends/tests/staf-tests/stress-tests/testcases/replication/replication_modifyrdn_multiple.xml          |  519 +++
 opends/tests/staf-tests/stress-tests/testcases/import_ldif/import_ldif_cleanup.xml                     |   44 
 47 files changed, 7,927 insertions(+), 620 deletions(-)

diff --git a/opends/tests/staf-tests/functional-tests/testcases/indexes/after-add.filters b/opends/tests/staf-tests/functional-tests/testcases/indexes/after-add.filters
index 89e83e2..c30325c 100644
--- a/opends/tests/staf-tests/functional-tests/testcases/indexes/after-add.filters
+++ b/opends/tests/staf-tests/functional-tests/testcases/indexes/after-add.filters
@@ -21,16 +21,16 @@
 # CDDL HEADER END
 #
 #
-#      Copyright 2007-2009 Sun Microsystems, Inc.
+#      Copyright 2007-2008 Sun Microsystems, Inc.
 #
-uid subString uid=j* 0 2 INDEXED
-uid subString (uid=j*) 0 2 INDEXED
-l presence l=* 0 10 INDEXED
-l presence (l=*) 0 10 INDEXED
-l equality l=Cupertino 0 3 INDEXED
-l equality (l=Cupertino) 0 3 INDEXED
-l approximate (l~=ertino) 0 11 NOT-INDEXED
-l substring (l=Cup*) 0 3 INDEXED
-l substring l=Cup* 0 3 INDEXED
-l substring l=*tino 0 11 NOT-INDEXED
-l substring (l=*tino) 0 11 NOT-INDEXED
+uid subString uid=j* 0 INDEXED
+uid subString (uid=j*) 0 INDEXED
+l presence l=* 0 INDEXED
+l presence (l=*) 0 INDEXED
+l equality l=Cupertino 0 INDEXED
+l equality (l=Cupertino) 0 INDEXED
+l approximate (l~=ertino) 0 NOT-INDEXED
+l substring (l=Cup*) 0 INDEXED
+l substring l=Cup* 0 INDEXED
+l substring l=*tino 0 NOT-INDEXED
+l substring (l=*tino) 0 NOT-INDEXED
diff --git a/opends/tests/staf-tests/functional-tests/testcases/indexes/after-modify.filters b/opends/tests/staf-tests/functional-tests/testcases/indexes/after-modify.filters
index 45b0970..0ad42f8 100644
--- a/opends/tests/staf-tests/functional-tests/testcases/indexes/after-modify.filters
+++ b/opends/tests/staf-tests/functional-tests/testcases/indexes/after-modify.filters
@@ -21,9 +21,9 @@
 # CDDL HEADER END
 #
 #
-#      Copyright 2007-2009 Sun Microsystems, Inc.
+#      Copyright 2007-2008 Sun Microsystems, Inc.
 #
-uid subString uid=j* 0 2 INDEXED
-uid subString (uid=j*) 0 2 INDEXED
-uid subString uid=*allace 0 1 INDEXED
-uid subString (uid=*allace) 0 1 INDEXED
+uid subString uid=j* 0 INDEXED
+uid subString (uid=j*) 0 INDEXED
+uid subString uid=*allace 0 INDEXED
+uid subString (uid=*allace) 0 INDEXED
diff --git a/opends/tests/staf-tests/functional-tests/testcases/indexes/after-remove.filters b/opends/tests/staf-tests/functional-tests/testcases/indexes/after-remove.filters
index 6bc519d..d701d87 100644
--- a/opends/tests/staf-tests/functional-tests/testcases/indexes/after-remove.filters
+++ b/opends/tests/staf-tests/functional-tests/testcases/indexes/after-remove.filters
@@ -21,16 +21,16 @@
 # CDDL HEADER END
 #
 #
-#      Copyright 2007-2009 Sun Microsystems, Inc.
+#      Copyright 2007-2008 Sun Microsystems, Inc.
 #
-uid subString uid=j* 0 2 INDEXED
-uid subString (uid=j*) 0 2 INDEXED
-l presence l=* 0 11 NOT-INDEXED
-l presence (l=*) 0 11 NOT-INDEXED
-l equality l=Cupertino 0 11 NOT-INDEXED
-l equality (l=Cupertino) 0 11 NOT-INDEXED
-l approximate (l~=ertino) 0 11 NOT-INDEXED
-l substring (l=Cup*) 0 11 NOT-INDEXED
-l substring l=Cup* 0 11 NOT-INDEXED
-l substring l=*tino 0 11 NOT-INDEXED
-l substring (l=*tino) 0 11 NOT-INDEXED
+uid subString uid=j* 0 INDEXED
+uid subString (uid=j*) 0 INDEXED
+l presence l=* 0 NOT-INDEXED
+l presence (l=*) 0 NOT-INDEXED
+l equality l=Cupertino 0 NOT-INDEXED
+l equality (l=Cupertino) 0 NOT-INDEXED
+l approximate (l~=ertino) 0 NOT-INDEXED
+l substring (l=Cup*) 0 NOT-INDEXED
+l substring l=Cup* 0 NOT-INDEXED
+l substring l=*tino 0 NOT-INDEXED
+l substring (l=*tino) 0 NOT-INDEXED
diff --git a/opends/tests/staf-tests/functional-tests/testcases/indexes/before-add.filters b/opends/tests/staf-tests/functional-tests/testcases/indexes/before-add.filters
index 6bc519d..d701d87 100644
--- a/opends/tests/staf-tests/functional-tests/testcases/indexes/before-add.filters
+++ b/opends/tests/staf-tests/functional-tests/testcases/indexes/before-add.filters
@@ -21,16 +21,16 @@
 # CDDL HEADER END
 #
 #
-#      Copyright 2007-2009 Sun Microsystems, Inc.
+#      Copyright 2007-2008 Sun Microsystems, Inc.
 #
-uid subString uid=j* 0 2 INDEXED
-uid subString (uid=j*) 0 2 INDEXED
-l presence l=* 0 11 NOT-INDEXED
-l presence (l=*) 0 11 NOT-INDEXED
-l equality l=Cupertino 0 11 NOT-INDEXED
-l equality (l=Cupertino) 0 11 NOT-INDEXED
-l approximate (l~=ertino) 0 11 NOT-INDEXED
-l substring (l=Cup*) 0 11 NOT-INDEXED
-l substring l=Cup* 0 11 NOT-INDEXED
-l substring l=*tino 0 11 NOT-INDEXED
-l substring (l=*tino) 0 11 NOT-INDEXED
+uid subString uid=j* 0 INDEXED
+uid subString (uid=j*) 0 INDEXED
+l presence l=* 0 NOT-INDEXED
+l presence (l=*) 0 NOT-INDEXED
+l equality l=Cupertino 0 NOT-INDEXED
+l equality (l=Cupertino) 0 NOT-INDEXED
+l approximate (l~=ertino) 0 NOT-INDEXED
+l substring (l=Cup*) 0 NOT-INDEXED
+l substring l=Cup* 0 NOT-INDEXED
+l substring l=*tino 0 NOT-INDEXED
+l substring (l=*tino) 0 NOT-INDEXED
diff --git a/opends/tests/staf-tests/functional-tests/testcases/indexes/before-modify.filters b/opends/tests/staf-tests/functional-tests/testcases/indexes/before-modify.filters
index 93dd00c..ee2695b 100644
--- a/opends/tests/staf-tests/functional-tests/testcases/indexes/before-modify.filters
+++ b/opends/tests/staf-tests/functional-tests/testcases/indexes/before-modify.filters
@@ -21,9 +21,9 @@
 # CDDL HEADER END
 #
 #
-#      Copyright 2007-2009 Sun Microsystems, Inc.
+#      Copyright 2007-2008 Sun Microsystems, Inc.
 #
-uid subString uid=j* 0 2 INDEXED
-uid subString (uid=j*) 0 2 INDEXED
-uid subString uid=*allace 0 11 NOT-INDEXED
-uid subString (uid=*allace) 0 11 NOT-INDEXED
+uid subString uid=j* 0 INDEXED
+uid subString (uid=j*) 0 INDEXED
+uid subString uid=*allace 0 NOT-INDEXED
+uid subString (uid=*allace) 0 NOT-INDEXED
diff --git a/opends/tests/staf-tests/functional-tests/testcases/indexes/before-remove.filters b/opends/tests/staf-tests/functional-tests/testcases/indexes/before-remove.filters
index 89e83e2..c30325c 100644
--- a/opends/tests/staf-tests/functional-tests/testcases/indexes/before-remove.filters
+++ b/opends/tests/staf-tests/functional-tests/testcases/indexes/before-remove.filters
@@ -21,16 +21,16 @@
 # CDDL HEADER END
 #
 #
-#      Copyright 2007-2009 Sun Microsystems, Inc.
+#      Copyright 2007-2008 Sun Microsystems, Inc.
 #
-uid subString uid=j* 0 2 INDEXED
-uid subString (uid=j*) 0 2 INDEXED
-l presence l=* 0 10 INDEXED
-l presence (l=*) 0 10 INDEXED
-l equality l=Cupertino 0 3 INDEXED
-l equality (l=Cupertino) 0 3 INDEXED
-l approximate (l~=ertino) 0 11 NOT-INDEXED
-l substring (l=Cup*) 0 3 INDEXED
-l substring l=Cup* 0 3 INDEXED
-l substring l=*tino 0 11 NOT-INDEXED
-l substring (l=*tino) 0 11 NOT-INDEXED
+uid subString uid=j* 0 INDEXED
+uid subString (uid=j*) 0 INDEXED
+l presence l=* 0 INDEXED
+l presence (l=*) 0 INDEXED
+l equality l=Cupertino 0 INDEXED
+l equality (l=Cupertino) 0 INDEXED
+l approximate (l~=ertino) 0 NOT-INDEXED
+l substring (l=Cup*) 0 INDEXED
+l substring l=Cup* 0 INDEXED
+l substring l=*tino 0 NOT-INDEXED
+l substring (l=*tino) 0 NOT-INDEXED
diff --git a/opends/tests/staf-tests/functional-tests/testcases/indexes/indexes.xml b/opends/tests/staf-tests/functional-tests/testcases/indexes/indexes.xml
index 38a462f..646990c 100644
--- a/opends/tests/staf-tests/functional-tests/testcases/indexes/indexes.xml
+++ b/opends/tests/staf-tests/functional-tests/testcases/indexes/indexes.xml
@@ -23,7 +23,7 @@
  !
  ! CDDL HEADER END
  !
- !      Copyright 2007-2009 Sun Microsystems, Inc.
+ !      Copyright 2007-2008 Sun Microsystems, Inc.
  ! -->
 <stax>
   <defaultcall function="main_indexes" />
@@ -643,12 +643,11 @@
         class indexTest:
           "Describes an index test with indexed attribute, filter to test with \
            and expected behaviour"
-          def __init__(self, attribute,testName,filter,expectedValue,countEntries,isIndexed):
+          def __init__(self, attribute,testName,filter,expectedValue,isIndexed):
             self.attribute = attribute
             self.name = testName
             self.filter = filter
             self.rc = expectedValue
-            self.count = countEntries
             self.isIndexed=re.compile(r'[\r\n]').sub('',isIndexed)
             self.status='fail'
           
@@ -663,9 +662,6 @@
           
           def getRC(self):
             return self.rc
-
-          def getCount(self):
-            return self.count
             
           def getSearchString(self):
             if self.isIndexed.startswith('NOT'):
@@ -684,7 +680,6 @@
             description += 'test:: attribute=[%s]\n' % self.attribute
             description += 'test:: filter=[%s]\n' % self.filter
             description += 'test:: rc=[%s]\n' % self.rc
-            description += 'test:: count=[%s]\n' % self.count
             description += 'test:: indexed=[%s]\n' % self.isIndexed
             return description
             
@@ -697,7 +692,7 @@
           else: 
             testLine = line.split(' ')
             indexTests.append(indexTest(testLine[0], testLine[1], testLine[2], 
-                              testLine[3], testLine[4], testLine[5]))
+                              testLine[3], testLine[4]))
         f.close()
           
         indexTestNumber=0
@@ -731,7 +726,6 @@
                   'dsBaseDN'         : 'ou=People,dc=example,%s' \
                                         % DIRECTORY_INSTANCE_SFX ,
                   'dsFilter'         : '%s' % test.getFilter(),
-                  'extraParams'      : '--countEntries' ,
                   'attributes'       : 'debugsearchindex',
                   'expectedRC'       : 'noCheck'
                 }
@@ -755,15 +749,6 @@
                  % (test.desc(), searchReturnCode, searchResultString, srt, 
                     test.getSearchString())
               </message>
-
-              <call function="'searchString'">
-                {
-                'expectedString' : '# Total number of matching entries: %s' % test.getCount() ,
-                'returnString'	 : searchResultString ,
-                'expectedRC'     : 0
-                }
-              </call>
-
               <tcstatus result="test.getStatus()" />
               <call function="'testCase_Postamble'" />
               <script>
diff --git a/opends/tests/staf-tests/functional-tests/testcases/indexes/search.filters b/opends/tests/staf-tests/functional-tests/testcases/indexes/search.filters
index 16da0f1..5cd4def 100644
--- a/opends/tests/staf-tests/functional-tests/testcases/indexes/search.filters
+++ b/opends/tests/staf-tests/functional-tests/testcases/indexes/search.filters
@@ -21,187 +21,187 @@
 # CDDL HEADER END
 #
 #
-#      Copyright 2007-2009 Sun Microsystems, Inc.
+#      Copyright 2007-2008 Sun Microsystems, Inc.
 #
-uid presence uid=* 0 1 NOT-INDEXED
-uid presence UID=* 0 11 NOT-INDEXED
-uid presence uId=* 0 11 NOT-INDEXED
-uid presence UiD=* 0 11 NOT-INDEXED
-uid equality uid=jwallace 0 1 INDEXED
-uid equality (uid=jwallace) 0 1 INDEXED
-uid equality (&(uid=jwallace)) 0 1 INDEXED
-uid equality (|(uid=jwallace)) 0 1 INDEXED
-uid equality (&(&(uid=jwallace))) 0 1 INDEXED
-uid equality (&(|(uid=jwallace))) 0 1 INDEXED
-uid equality (|(&(uid=jwallace))) 0 1 INDEXED
-uid equality (|(|(uid=jwallace))) 0 1 INDEXED
-uid equality (|(|(uid=jwallace))) 0 1 INDEXED
-uid substring uid=j* 0 2 INDEXED
-uid substring (uid=j*) 0 2 INDEXED
-uid substring uid=*allace 0 11 NOT-INDEXED
-uid substring (uid=*allace) 0 11 NOT-INDEXED
-uid substring (&(uid=*allace)) 0 11 NOT-INDEXED
-uid substring (|(uid=*allace)) 0 11 NOT-INDEXED
-uid substring (&(&(uid=*allace))) 0 11 NOT-INDEXED
-uid substring (&(|(uid=*allace))) 0 11 NOT-INDEXED
-uid substring (|(&(uid=*allace))) 0 11 NOT-INDEXED
-uid substring (|(|(uid=*allace))) 0 11 NOT-INDEXED
-uid substring uid=jw*ce 0 2 INDEXED
-uid substring (uid=jw*ce) 0 2 INDEXED
-uid approximate uid~=wallace 0 11 NOT-INDEXED
-uid approximate uid~=jwalace 0 11 NOT-INDEXED
-uid negate !(uid=jwallace) 0 11 NOT-INDEXED
-uid negate (!(uid=jwallace)) 0 11 NOT-INDEXED
-uid negate (!(&(uid=jwallace))) 0 11 NOT-INDEXED
-uid negate (!(|(uid=jwallace))) 0 11 NOT-INDEXED
-uid complexAnd (uid=j*&l=sunnyvale) 0 2 INDEXED
-uid complexAnd &(uid=j*)(l=sunnyvale) 0 2 NOT-INDEXED
-uid complexAnd (&(uid=j*)(l=~sunyvale)) 0 2 NOT-INDEXED
-uid complexAnd (&(&(uid=j*)(l=~sunyvale))) 0 2 NOT-INDEXED
-uid complexAnd (uid=j*&!l=cupertino) 0 2 INDEXED
-uid complexAnd (uid=j*&l=sun*) 0 2 INDEXED
-uid complexAnd (&(uid=j*)(l=sun*)) 0 2 INDEXED
-uid complexOr (uid=jwallace|uid=jwalker) 0 0 INDEXED
-uid complexOr (uid=jwallace|l=Sun*) 0 0 INDEXED
-uid complexOr (uid=jwallace|l=~unnyvale) 0 0 INDEXED
-uid complexOr (uid=jwallace|!l=Cupertino) 0 0 INDEXED
-uid complexOr (uid=jwallace|!l=Cuper*) 0 0 INDEXED
-uid complexOr (uid=j*|l=sunnyvale) 0 2 INDEXED
-uid complexOr (uid=j*|!l=Cupertino) 0 2 INDEXED
-uid complexOr (uid=j*|!l=Cuper*) 0 2 INDEXED
-uid complexOr (uid=j*|!l~=Cuperino) 0 2 INDEXED
-uid complexOr (uid=j*|l~=sunyvale) 0 2 INDEXED
-uid complexOr (|(uid=j*)(l=sunnyvale)) 0 11 INDEXED
-uid complexOr (|(&(uid=j*)(uid=*lace))) 0 2 INDEXED
-sn presence sn=* 0 11 NOT-INDEXED
-sn presence SN=* 0 11 NOT-INDEXED
-sn presence sN=* 0 11 NOT-INDEXED
-sn presence Sn=* 0 11 NOT-INDEXED
-sn equality sn=Bergin 0 1 INDEXED
-sn equality (sn=Bergin) 0 1 INDEXED
-sn substring sn=Ber* 0 1 INDEXED
-sn substring (sn=Ber*) 0 1 INDEXED
-sn substring sn=*ergin 0 1 INDEXED
-sn substring (sn=*ergin) 0 1 INDEXED
-sn substring sn=*ergi* 0 1 INDEXED
-sn substring (sn=*ergi*) 0 1 INDEXED
-sn approximate sn~=begin 0 11 NOT-INDEXED
-sn approximate (sn~=begin) 0 11 NOT-INDEXED
-mail presence mail=* 0 11 NOT-INDEXED
-mail presence Mail=* 0 11 NOT-INDEXED
-mail presence MAIL=* 0 11 NOT-INDEXED
-mail presence mAiL=* 0 11 NOT-INDEXED
-mail equality mail=kvaughan@example.com 0 1 INDEXED
-mail equality (mail=kvaughan@example.com) 0 1 INDEXED
-mail substring mail=kvaughan* 0 1 INDEXED
-mail substring (mail=kvaughan*) 0 1 INDEXED
-mail substring mail=*aughan@example.com 0 10 INDEXED
-mail substring (mail=*aughan@example.com) 0 10 INDEXED
-mail substring mail=*aughan@example.* 0 10 INDEXED
-mail substring (mail=*aughan@example.*) 0 10 INDEXED
-givenName presence givenName=* 0 11 NOT-INDEXED
-givenName presence (givenName=*) 0 11 NOT-INDEXED
-givenName presence givenname=* 0 11 NOT-INDEXED
-givenName presence (givenname=*) 0 11 NOT-INDEXED
-givenName presence GIVENNAME=* 0 11 NOT-INDEXED
-givenName presence (GIVENNAME=*) 0 11 NOT-INDEXED
-givenName presence GivenName=* 0 11 NOT-INDEXED
-givenName presence (GivenName=*) 0 11 NOT-INDEXED
-givenName presence GiVeNnaMe=* 0 11 NOT-INDEXED
-givenName presence (GiVeNnaMe=*) 0 11 NOT-INDEXED
-givenName presence gIvEnNaMe=* 0 11 NOT-INDEXED
-givenName presence (gIvEnNaMe=*) 0 11 NOT-INDEXED
-givenName equality givenName=kirsten 0 1 INDEXED
-givenName equality (givenName=kirsten) 0 1 INDEXED
-givenName equality givenName=Kirsten 0 1 INDEXED
-givenName equality (givenName=Kirsten) 0 1 INDEXED
-givenName equality givenname=kirsten 0 1 INDEXED
-givenName equality (givenname=kirsten) 0 1 INDEXED
-givenName equality givenname=KIRSTEN 0 1 INDEXED
-givenName equality (givenname=KIRSTEN) 0 1 INDEXED
-givenName equality GIVENNAME=kirsten 0 1 INDEXED
-givenName equality (GIVENNAME=kirsten) 0 1 INDEXED
-givenName equality GIVENNAME=KIRSTEN 0 1 INDEXED
-givenName equality (GIVENNAME=KIRSTEN) 0 1 INDEXED
-givenName equality gIvEnNaMe=kIrStEn 0 1 INDEXED
-givenName equality (gIvEnNaMe=kIrStEn) 0 1 INDEXED
-givenName substring givenName=kirst* 0 1 INDEXED
-givenName substring (givenName=kirst*) 0 1 INDEXED
-givenName substring GivenName=kirst* 0 1 INDEXED
-givenName substring (GivenName=kirst*) 0 1 INDEXED
-givenName substring givenname=kirst* 0 1 INDEXED
-givenName substring (givenname=kirst*) 0 1 INDEXED
-givenName substring GIVENNAME=kirst* 0 1 INDEXED
-givenName substring (GIVENNAME=kirst*) 0 1 INDEXED
-givenName substring givenName=*rsten 0 1 INDEXED
-givenName substring (givenName=*rsten) 0 1 INDEXED
-givenName substring GivenName=*rsten 0 1 INDEXED
-givenName substring (GivenName=*rsten) 0 1 INDEXED
-givenName substring givenname=*rsten 0 1 INDEXED
-givenName substring (givenname=*rsten) 0 1 INDEXED
-givenName substring givenName=*rste* 0 1 INDEXED
-givenName substring (givenName=*rste*) 0 1 INDEXED
-givenName substring GivenName=*rste* 0 1 INDEXED
-givenName substring (GivenName=*rste*) 0 1 INDEXED
-givenName substring GIVENNAME=*rste* 0 1 INDEXED
-givenName substring (GIVENNAME=*rste*) 0 1 INDEXED
-cn presence cn=* 0 11 NOT-INDEXED
-cn presence (cn=*) 0 11 NOT-INDEXED
-cn presence CN=* 0 11 NOT-INDEXED
-cn presence (CN=*) 0 11 NOT-INDEXED
-cn presence Cn=* 0 11 NOT-INDEXED
-cn presence (Cn=*) 0 11 NOT-INDEXED
-cn substring cn=Andy* 0 1 INDEXED
-cn substring (cn=Andy*) 0 1 INDEXED
-cn substring cn=andy* 0 1 INDEXED
-cn substring (cn=andy*) 0 1 INDEXED
-cn substring CN=aNDY* 0 1 INDEXED
-cn substring (CN=aNDY*) 0 1 INDEXED
-cn substring cN=andy* 0 1 INDEXED
-cn substring (cN=andy*) 0 1 INDEXED
-cn substring cn=andy* 0 1 INDEXED
-cn substring cn=*ergin 0 1 INDEXED
-cn substring (cn=*ergin) 0 1 INDEXED
-cn substring cn=*Bergin 0 1 INDEXED
-cn substring (cn=*Bergin) 0 1 INDEXED
-cn substring cN=*Bergin 0 1 INDEXED
-cn substring (cN=*Bergin) 0 1 INDEXED
-cn substring cn=*bERGIN 0 1 INDEXED
-cn substring (cn=*bERGIN) 0 1 INDEXED
-cn substring CN=*bERGIN 0 1 INDEXED
-cn substring (CN=*bERGIN) 0 1 INDEXED
-cn substring (CN=*bERGIN) 0 1 INDEXED
-cn substring (cn=and*rgin) 0 1 INDEXED
-cn substring (cn=aN*bErGiN) 0 1 INDEXED
-telephoneNumber presence telephoneNumber=* 0 11 NOT-INDEXED
-telephoneNumber presence (telephoneNumber=*) 0 11 NOT-INDEXED
-telephoneNumber presence telephonenumber=* 0 11 NOT-INDEXED
-telephoneNumber presence (telephonenumber=*) 0 11 NOT-INDEXED
-telephoneNumber presence TelephoneNumber=* 0 11 NOT-INDEXED
-telephoneNumber presence (TelephoneNumber=*) 0 11 NOT-INDEXED
-telephoneNumber presence TELEPHONENUMBER=* 0 11 NOT-INDEXED
-telephoneNumber presence (TELEPHONENUMBER=*) 0 11 NOT-INDEXED
-telephoneNumber presence (&(TELEPHONENUMBER=*)) 0 11 NOT-INDEXED
-telephoneNumber presence (|(TELEPHONENUMBER=*)) 0 11 NOT-INDEXED
-telephoneNumber presence (&(&(TELEPHONENUMBER=*))) 0 11 NOT-INDEXED
-telephoneNumber presence (|(|(TELEPHONENUMBER=*))) 0 11 NOT-INDEXED
-telephoneNumber presence (&(|(TELEPHONENUMBER=*))) 0 11 NOT-INDEXED
-telephoneNumber presence (|(&(TELEPHONENUMBER=*))) 0 11 NOT-INDEXED
-telephoneNumber substring telephoneNumber=*8585 0 1 INDEXED
-telephoneNumber substring (telephoneNumber=*8585) 0 1 INDEXED
-telephoneNumber substring telephoneNumber=+1* 0 10 INDEXED
-telephoneNumber substring (telephoneNumber=+1*) 0 10 INDEXED
-telephoneNumber substring telephoneNumber=*408* 0 10 INDEXED
-telephoneNumber substring (telephoneNumber=*408*) 0 10 INDEXED
-telephoneNumber substring telephoneNumber=+1*8585 0 10 INDEXED
-telephoneNumber substring (telephoneNumber=+1*8585) 0 10 INDEXED
-telephoneNumber substring telephoneNumber=+1*08*8585 0 10 INDEXED
-telephoneNumber substring (telephoneNumber=+1*08*8585) 0 10 INDEXED
-telephoneNumber substring (&(telephoneNumber=+1*08*8585)) 0 10 INDEXED
-telephoneNumber substring (|(telephoneNumber=+1*08*8585)) 0 10 INDEXED
-telephoneNumber substring (&(&(telephoneNumber=+1*08*8585))) 0 10 INDEXED
-telephoneNumber substring (&(|(telephoneNumber=+1*08*8585))) 0 10 INDEXED
-telephoneNumber substring (|(&(telephoneNumber=+1*08*8585))) 0 10 INDEXED
-telephoneNumber substring (|(|(|(|(|(|(|(telephoneNumber=+1*08*8585)))))))) 0 10 INDEXED
-telephoneNumber substring (&(&(&(&(&(&(&(&(&(&(&(&(&(&(&(telephoneNumber=+1*08*8585)))))))))))))))) 0 10 INDEXED
-telephoneNumber substring (&(|(&(|(&(|(&(|(&(|(&(|(&(|(&(|(telephoneNumber=+1*08*8585))))))))))))))))) 0 10 INDEXED
+uid presence uid=* 0 NOT-INDEXED
+uid presence UID=* 0 NOT-INDEXED
+uid presence uId=* 0 NOT-INDEXED
+uid presence UiD=* 0 NOT-INDEXED
+uid equality uid=jwallace 0 INDEXED
+uid equality (uid=jwallace) 0 INDEXED
+uid equality (&(uid=jwallace)) 0 INDEXED
+uid equality (|(uid=jwallace)) 0 INDEXED
+uid equality (&(&(uid=jwallace))) 0 INDEXED
+uid equality (&(|(uid=jwallace))) 0 INDEXED
+uid equality (|(&(uid=jwallace))) 0 INDEXED
+uid equality (|(|(uid=jwallace))) 0 INDEXED
+uid equality (|(|(uid=jwallace))) 0 INDEXED
+uid substring uid=j* 0 INDEXED
+uid substring (uid=j*) 0 INDEXED
+uid substring uid=*allace 0 NOT-INDEXED
+uid substring (uid=*allace) 0 NOT-INDEXED
+uid substring (&(uid=*allace)) 0 NOT-INDEXED
+uid substring (|(uid=*allace)) 0 NOT-INDEXED
+uid substring (&(&(uid=*allace))) 0 NOT-INDEXED
+uid substring (&(|(uid=*allace))) 0 NOT-INDEXED
+uid substring (|(&(uid=*allace))) 0 NOT-INDEXED
+uid substring (|(|(uid=*allace))) 0 NOT-INDEXED
+uid substring uid=jw*ce 0 INDEXED
+uid substring (uid=jw*ce) 0 INDEXED
+uid approximate uid~=wallace 0 NOT-INDEXED
+uid approximate uid~=jwalace 0 NOT-INDEXED
+uid negate !(uid=jwallace) 0 NOT-INDEXED
+uid negate (!(uid=jwallace)) 0 NOT-INDEXED
+uid negate (!(&(uid=jwallace))) 0 NOT-INDEXED
+uid negate (!(|(uid=jwallace))) 0 NOT-INDEXED
+uid complexAnd (uid=j*&l=sunnyvale) 0 INDEXED
+uid complexAnd &(uid=j*)(l=sunnyvale) 0 NOT-INDEXED
+uid complexAnd (&(uid=j*)(l=~sunyvale)) 0 NOT-INDEXED
+uid complexAnd (&(&(uid=j*)(l=~sunyvale))) 0 NOT-INDEXED
+uid complexAnd (uid=j*&!l=cupertino) 0 INDEXED
+uid complexAnd (uid=j*&l=sun*) 0 INDEXED
+uid complexAnd (&(uid=j*)(l=sun*)) 0 INDEXED
+uid complexOr (uid=jwallace|uid=jwalker) 0 INDEXED
+uid complexOr (uid=jwallace|l=Sun*) 0 INDEXED
+uid complexOr (uid=jwallace|l=~unnyvale) 0 INDEXED
+uid complexOr (uid=jwallace|!l=Cupertino) 0 INDEXED
+uid complexOr (uid=jwallace|!l=Cuper*) 0 INDEXED
+uid complexOr (uid=j*|l=sunnyvale) 0 INDEXED
+uid complexOr (uid=j*|!l=Cupertino) 0 INDEXED
+uid complexOr (uid=j*|!l=Cuper*) 0 INDEXED
+uid complexOr (uid=j*|!l~=Cuperino) 0 INDEXED
+uid complexOr (uid=j*|l~=sunyvale) 0 INDEXED
+uid complexOr (|(uid=j*)(l=sunnyvale)) 0 INDEXED
+uid complexOr (|(&(uid=j*)(uid=*lace))) 0 INDEXED
+sn presence sn=* 0 NOT-INDEXED
+sn presence SN=* 0 NOT-INDEXED
+sn presence sN=* 0 NOT-INDEXED
+sn presence Sn=* 0 NOT-INDEXED
+sn equality sn=Bergin 0 INDEXED
+sn equality (sn=Bergin) 0 INDEXED
+sn substring sn=Ber* 0 INDEXED
+sn substring (sn=Ber*) 0 INDEXED
+sn substring sn=*ergin 0 INDEXED
+sn substring (sn=*ergin) 0 INDEXED
+sn substring sn=*ergi* 0 INDEXED
+sn substring (sn=*ergi*) 0 INDEXED
+sn approximate sn~=begin 0 NOT-INDEXED
+sn approximate (sn~=begin) 0 NOT-INDEXED
+mail presence mail=* 0 NOT-INDEXED
+mail presence Mail=* 0 NOT-INDEXED
+mail presence MAIL=* 0 NOT-INDEXED
+mail presence mAiL=* 0 NOT-INDEXED
+mail equality mail=kvaughan@example.com 0 INDEXED
+mail equality (mail=kvaughan@example.com) 0 INDEXED
+mail substring mail=kvaughan* 0 INDEXED
+mail substring (mail=kvaughan*) 0 INDEXED
+mail substring mail=*aughan@example.com 0 INDEXED
+mail substring (mail=*aughan@example.com) 0 INDEXED
+mail substring mail=*aughan@example.* 0 INDEXED
+mail substring (mail=*aughan@example.*) 0 INDEXED
+givenName presence givenName=* 0 NOT-INDEXED
+givenName presence (givenName=*) 0 NOT-INDEXED
+givenName presence givenname=* 0 NOT-INDEXED
+givenName presence (givenname=*) 0 NOT-INDEXED
+givenName presence GIVENNAME=* 0 NOT-INDEXED
+givenName presence (GIVENNAME=*) 0 NOT-INDEXED
+givenName presence GivenName=* 0 NOT-INDEXED
+givenName presence (GivenName=*) 0 NOT-INDEXED
+givenName presence GiVeNnaMe=* 0 NOT-INDEXED
+givenName presence (GiVeNnaMe=*) 0 NOT-INDEXED
+givenName presence gIvEnNaMe=* 0 NOT-INDEXED
+givenName presence (gIvEnNaMe=*) 0 NOT-INDEXED
+givenName equality givenName=kirsten 0 INDEXED
+givenName equality (givenName=kirsten) 0 INDEXED
+givenName equality givenName=Kirsten 0 INDEXED
+givenName equality (givenName=Kirsten) 0 INDEXED
+givenName equality givenname=kirsten 0 INDEXED
+givenName equality (givenname=kirsten) 0 INDEXED
+givenName equality givenname=KIRSTEN 0 INDEXED
+givenName equality (givenname=KIRSTEN) 0 INDEXED
+givenName equality GIVENNAME=kirsten 0 INDEXED
+givenName equality (GIVENNAME=kirsten) 0 INDEXED
+givenName equality GIVENNAME=KIRSTEN 0 INDEXED
+givenName equality (GIVENNAME=KIRSTEN) 0 INDEXED
+givenName equality gIvEnNaMe=kIrStEn 0 INDEXED
+givenName equality (gIvEnNaMe=kIrStEn) 0 INDEXED
+givenName substring givenName=kirst* 0 INDEXED
+givenName substring (givenName=kirst*) 0 INDEXED
+givenName substring GivenName=kirst* 0 INDEXED
+givenName substring (GivenName=kirst*) 0 INDEXED
+givenName substring givenname=kirst* 0 INDEXED
+givenName substring (givenname=kirst*) 0 INDEXED
+givenName substring GIVENNAME=kirst* 0 INDEXED
+givenName substring (GIVENNAME=kirst*) 0 INDEXED
+givenName substring givenName=*rsten 0 INDEXED
+givenName substring (givenName=*rsten) 0 INDEXED
+givenName substring GivenName=*rsten 0 INDEXED
+givenName substring (GivenName=*rsten) 0 INDEXED
+givenName substring givenname=*rsten 0 INDEXED
+givenName substring (givenname=*rsten) 0 INDEXED
+givenName substring givenName=*rste* 0 INDEXED
+givenName substring (givenName=*rste*) 0 INDEXED
+givenName substring GivenName=*rste* 0 INDEXED
+givenName substring (GivenName=*rste*) 0 INDEXED
+givenName substring GIVENNAME=*rste* 0 INDEXED
+givenName substring (GIVENNAME=*rste*) 0 INDEXED
+cn presence cn=* 0 NOT-INDEXED
+cn presence (cn=*) 0 NOT-INDEXED
+cn presence CN=* 0 NOT-INDEXED
+cn presence (CN=*) 0 NOT-INDEXED
+cn presence Cn=* 0 NOT-INDEXED
+cn presence (Cn=*) 0 NOT-INDEXED
+cn substring cn=Andy* 0 INDEXED
+cn substring (cn=Andy*) 0 INDEXED
+cn substring cn=andy* 0 INDEXED
+cn substring (cn=andy*) 0 INDEXED
+cn substring CN=aNDY* 0 INDEXED
+cn substring (CN=aNDY*) 0 INDEXED
+cn substring cN=andy* 0 INDEXED
+cn substring (cN=andy*) 0 INDEXED
+cn substring cn=andy* 0 INDEXED
+cn substring cn=*ergin 0 INDEXED
+cn substring (cn=*ergin) 0 INDEXED
+cn substring cn=*Bergin 0 INDEXED
+cn substring (cn=*Bergin) 0 INDEXED
+cn substring cN=*Bergin 0 INDEXED
+cn substring (cN=*Bergin) 0 INDEXED
+cn substring cn=*bERGIN 0 INDEXED
+cn substring (cn=*bERGIN) 0 INDEXED
+cn substring CN=*bERGIN 0 INDEXED
+cn substring (CN=*bERGIN) 0 INDEXED
+cn substring (CN=*bERGIN) 0 INDEXED
+cn substring (cn=and*rgin) 0 INDEXED
+cn substring (cn=aN*bErGiN) 0 INDEXED
+telephoneNumber presence telephoneNumber=* 0 NOT-INDEXED
+telephoneNumber presence (telephoneNumber=*) 0 NOT-INDEXED
+telephoneNumber presence telephonenumber=* 0 NOT-INDEXED
+telephoneNumber presence (telephonenumber=*) 0 NOT-INDEXED
+telephoneNumber presence TelephoneNumber=* 0 NOT-INDEXED
+telephoneNumber presence (TelephoneNumber=*) 0 NOT-INDEXED
+telephoneNumber presence TELEPHONENUMBER=* 0 NOT-INDEXED
+telephoneNumber presence (TELEPHONENUMBER=*) 0 NOT-INDEXED
+telephoneNumber presence (&(TELEPHONENUMBER=*)) 0 NOT-INDEXED
+telephoneNumber presence (|(TELEPHONENUMBER=*)) 0 NOT-INDEXED
+telephoneNumber presence (&(&(TELEPHONENUMBER=*))) 0 NOT-INDEXED
+telephoneNumber presence (|(|(TELEPHONENUMBER=*))) 0 NOT-INDEXED
+telephoneNumber presence (&(|(TELEPHONENUMBER=*))) 0 NOT-INDEXED
+telephoneNumber presence (|(&(TELEPHONENUMBER=*))) 0 NOT-INDEXED
+telephoneNumber substring telephoneNumber=*8585 0 INDEXED
+telephoneNumber substring (telephoneNumber=*8585) 0 INDEXED
+telephoneNumber substring telephoneNumber=+1* 0 INDEXED
+telephoneNumber substring (telephoneNumber=+1*) 0 INDEXED
+telephoneNumber substring telephoneNumber=*408* 0 INDEXED
+telephoneNumber substring (telephoneNumber=*408*) 0 INDEXED
+telephoneNumber substring telephoneNumber=+1*8585 0 INDEXED
+telephoneNumber substring (telephoneNumber=+1*8585) 0 INDEXED
+telephoneNumber substring telephoneNumber=+1*08*8585 0 INDEXED
+telephoneNumber substring (telephoneNumber=+1*08*8585) 0 INDEXED
+telephoneNumber substring (&(telephoneNumber=+1*08*8585)) 0 INDEXED
+telephoneNumber substring (|(telephoneNumber=+1*08*8585)) 0 INDEXED
+telephoneNumber substring (&(&(telephoneNumber=+1*08*8585))) 0 INDEXED
+telephoneNumber substring (&(|(telephoneNumber=+1*08*8585))) 0 INDEXED
+telephoneNumber substring (|(&(telephoneNumber=+1*08*8585))) 0 INDEXED
+telephoneNumber substring (|(|(|(|(|(|(|(telephoneNumber=+1*08*8585)))))))) 0 INDEXED
+telephoneNumber substring (&(&(&(&(&(&(&(&(&(&(&(&(&(&(&(telephoneNumber=+1*08*8585)))))))))))))))) 0 INDEXED
+telephoneNumber substring (&(|(&(|(&(|(&(|(&(|(&(|(&(|(&(|(telephoneNumber=+1*08*8585))))))))))))))))) 0 INDEXED
diff --git a/opends/tests/staf-tests/functional-tests/testcases/replication/conflict/conflict.xml b/opends/tests/staf-tests/functional-tests/testcases/replication/conflict/conflict.xml
index 9109281..46553c3 100644
--- a/opends/tests/staf-tests/functional-tests/testcases/replication/conflict/conflict.xml
+++ b/opends/tests/staf-tests/functional-tests/testcases/replication/conflict/conflict.xml
@@ -142,8 +142,8 @@
                                                                 
               <!-- Add entry to server1 -->
               <script>
-                entry = Entry('uid=tuser-0')
-                entry.addAttr('employeeNumber', '0')
+                myEntry = Entry('uid=tuser-0')
+                myEntry.addAttr('employeeNumber', '0')
               </script>
               <call function="'addAnEntry'">
                 { 'location'       : server1Host,
@@ -152,8 +152,8 @@
                   'dsInstancePort' : server1.getPort(),
                   'dsInstanceDn'   : server1.getRootDn(),
                   'dsInstancePswd' : server1.getRootPwd(),
-                  'DNToAdd'        : entry.getDn(),
-                  'listAttributes' : entry.getAttrList()
+                  'DNToAdd'        : myEntry.getDn(),
+                  'listAttributes' : myEntry.getAttrList()
                 }
               </call>
 
@@ -173,7 +173,7 @@
                     'dsInstancePort'    : server.getPort(),
                     'dsInstanceDn'      : server.getRootDn(),
                     'dsInstancePswd'    : server.getRootPwd(),
-                    'DNToModify'        : entry.getDn(),
+                    'DNToModify'        : myEntry.getDn(),
                     'attributeName'     : 'employeeNumber',
                     'newAttributeValue' : '%i' % (i + 1),
                     'changetype'        : 'replace'
@@ -191,7 +191,7 @@
                       'dsInstancePort' : server.getPort(),
                       'dsInstanceDn'   : server.getRootDn(),
                       'dsInstancePswd' : server.getRootPwd(),
-                      'dsBaseDN'       : entry.getDn(),
+                      'dsBaseDN'       : myEntry.getDn(),
                       'dsFilter'       : 'objectclass=*',
                       'dsAttributes'   : 'employeeNumber',
                       'logStderr'      : False
@@ -228,7 +228,7 @@
                   'dsInstancePort' : server1.getPort(),
                   'dsInstanceDn'   : server1.getRootDn(),
                   'dsInstancePswd' : server1.getRootPwd(),
-                  'dsDn'           : [entry.getDn()]
+                  'dsDn'           : [myEntry.getDn()]
                 }
               </call>
   
@@ -265,9 +265,9 @@
                                                                 
               <!-- Add entry to server1 -->
               <script>
-                entry = Entry('cn=A1')
-                entry.addAttr('description', '1')
-                entry.addAttr('description', '2')
+                myEntry = Entry('cn=A1')
+                myEntry.addAttr('description', '1')
+                myEntry.addAttr('description', '2')
                 server1mods = ['description:3', 'description:4']
                 server2mods = ['description:5', 'description:6']
                 mods = [server1mods, server2mods]
@@ -279,8 +279,8 @@
                   'dsInstancePort' : server1.getPort(),
                   'dsInstanceDn'   : server1.getRootDn(),
                   'dsInstancePswd' : server1.getRootPwd(),
-                  'DNToAdd'        : entry.getDn(),
-                  'listAttributes' : entry.getAttrList()
+                  'DNToAdd'        : myEntry.getDn(),
+                  'listAttributes' : myEntry.getAttrList()
                 }
               </call>
 
@@ -301,7 +301,7 @@
                     'dsInstancePort' : server.getPort(),
                     'dsInstanceDn'   : server.getRootDn(),
                     'dsInstancePswd' : server.getRootPwd(),
-                    'DNToModify'     : entry.getDn(),
+                    'DNToModify'     : myEntry.getDn(),
                     'listAttributes' : mods[i],
                     'changetype'     : 'replace'
                   }
@@ -319,7 +319,7 @@
                       'dsInstancePort' : server.getPort(),
                       'dsInstanceDn'   : server.getRootDn(),
                       'dsInstancePswd' : server.getRootPwd(),
-                      'dsBaseDN'       : entry.getDn(),
+                      'dsBaseDN'       : myEntry.getDn(),
                       'dsFilter'       : 'objectclass=*',
                       'dsAttributes'   : 'description',
                       'logStderr'      : False
@@ -357,7 +357,7 @@
                       'dsInstancePort' : server.getPort(),
                       'dsInstanceDn'   : server.getRootDn(),
                       'dsInstancePswd' : server.getRootPwd(),
-                      'dsBaseDN'       : entry.getDn(),
+                      'dsBaseDN'       : myEntry.getDn(),
                       'dsFilter'       : 'objectclass=*',
                       'dsAttributes'   : 'description',
                       'logStderr'      : False
@@ -393,7 +393,7 @@
                   'dsInstancePort' : server1.getPort(),
                   'dsInstanceDn'   : server1.getRootDn(),
                   'dsInstancePswd' : server1.getRootPwd(),
-                  'dsDn'           : [entry.getDn()]
+                  'dsDn'           : [myEntry.getDn()]
                 }
               </call>
 
@@ -428,8 +428,8 @@
                                                                 
               <!-- Add entry to server1 -->
               <script>
-                entry = Entry('cn=A4')
-                entry.addAttr('employeeNumber', '0')
+                myEntry = Entry('cn=A4')
+                myEntry.addAttr('employeeNumber', '0')
               </script>
               <call function="'addAnEntry'">
                 { 'location'       : server1Host,
@@ -438,8 +438,8 @@
                   'dsInstancePort' : server1.getPort(),
                   'dsInstanceDn'   : server1.getRootDn(),
                   'dsInstancePswd' : server1.getRootPwd(),
-                  'DNToAdd'        : entry.getDn(),
-                  'listAttributes' : entry.getAttrList()
+                  'DNToAdd'        : myEntry.getDn(),
+                  'listAttributes' : myEntry.getAttrList()
                 }
               </call>
 
@@ -460,7 +460,7 @@
                     'dsInstancePort'    : server.getPort(),
                     'dsInstanceDn'      : server.getRootDn(),
                     'dsInstancePswd'    : server.getRootPwd(),
-                    'DNToModify'        : entry.getDn(),
+                    'DNToModify'        : myEntry.getDn(),
                     'attributeName'     : 'employeeNumber',
                     'newAttributeValue' : '%i' % (i + 1),
                     'changetype'        : 'replace'
@@ -479,7 +479,7 @@
                       'dsInstancePort' : server.getPort(),
                       'dsInstanceDn'   : server.getRootDn(),
                       'dsInstancePswd' : server.getRootPwd(),
-                      'dsBaseDN'       : entry.getDn(),
+                      'dsBaseDN'       : myEntry.getDn(),
                       'dsFilter'       : 'objectclass=*',
                       'dsAttributes'   : 'employeeNumber',
                       'logStderr'      : False
@@ -517,7 +517,7 @@
                       'dsInstancePort' : server.getPort(),
                       'dsInstanceDn'   : server.getRootDn(),
                       'dsInstancePswd' : server.getRootPwd(),
-                      'dsBaseDN'       : entry.getDn(),
+                      'dsBaseDN'       : myEntry.getDn(),
                       'dsFilter'       : 'objectclass=*',
                       'dsAttributes'   : 'employeeNumber',
                       'logStderr'      : False
@@ -553,7 +553,7 @@
                   'dsInstancePort' : server1.getPort(),
                   'dsInstanceDn'   : server1.getRootDn(),
                   'dsInstancePswd' : server1.getRootPwd(),
-                  'dsDn'           : [entry.getDn()]
+                  'dsDn'           : [myEntry.getDn()]
                 }
               </call>
 
@@ -593,9 +593,9 @@
                                                                 
               <!-- Add entry to server1 -->
               <script>
-                entry = Entry('cn=A2')
+                myEntry = Entry('cn=A2')
                 for x in range(10):
-                  entry.addAttr('description', '%i' % (x+1))
+                  myEntry.addAttr('description', '%i' % (x+1))
                 server1del = ['description:1']
                 server1add = ['description:11']
                 server2del = ['description:1']
@@ -611,8 +611,8 @@
                   'dsInstancePort' : server1.getPort(),
                   'dsInstanceDn'   : server1.getRootDn(),
                   'dsInstancePswd' : server1.getRootPwd(),
-                  'DNToAdd'        : entry.getDn(),
-                  'listAttributes' : entry.getAttrList()
+                  'DNToAdd'        : myEntry.getDn(),
+                  'listAttributes' : myEntry.getAttrList()
                 }
               </call>
 
@@ -634,7 +634,7 @@
                       'dsInstancePort' : server.getPort(),
                       'dsInstanceDn'   : server.getRootDn(),
                       'dsInstancePswd' : server.getRootPwd(),
-                      'DNToModify'     : entry.getDn(),
+                      'DNToModify'     : myEntry.getDn(),
                       'listAttributes' : mods[i][0],
                       'changetype'     : 'delete'
                     }
@@ -647,7 +647,7 @@
                       'dsInstancePort' : server.getPort(),
                       'dsInstanceDn'   : server.getRootDn(),
                       'dsInstancePswd' : server.getRootPwd(),
-                      'DNToModify'     : entry.getDn(),
+                      'DNToModify'     : myEntry.getDn(),
                       'listAttributes' : mods[i][1],
                       'changetype'     : 'add'
                     }
@@ -666,7 +666,7 @@
                       'dsInstancePort' : server.getPort(),
                       'dsInstanceDn'   : server.getRootDn(),
                       'dsInstancePswd' : server.getRootPwd(),
-                      'dsBaseDN'       : entry.getDn(),
+                      'dsBaseDN'       : myEntry.getDn(),
                       'dsFilter'       : 'objectclass=*',
                       'dsAttributes'   : 'description',
                       'logStderr'      : False
@@ -704,7 +704,7 @@
                       'dsInstancePort' : server.getPort(),
                       'dsInstanceDn'   : server.getRootDn(),
                       'dsInstancePswd' : server.getRootPwd(),
-                      'dsBaseDN'       : entry.getDn(),
+                      'dsBaseDN'       : myEntry.getDn(),
                       'dsFilter'       : 'objectclass=*',
                       'dsAttributes'   : 'description',
                       'logStderr'      : False
@@ -740,7 +740,7 @@
                   'dsInstancePort' : server1.getPort(),
                   'dsInstanceDn'   : server1.getRootDn(),
                   'dsInstancePswd' : server1.getRootPwd(),
-                  'dsDn'           : [entry.getDn()]
+                  'dsDn'           : [myEntry.getDn()]
                 }
               </call>
 
@@ -780,9 +780,9 @@
                                                                 
               <!-- Add entry to server1 -->
               <script>
-                entry = Entry('cn=A3')
+                myEntry = Entry('cn=A3')
                 for x in range(10):
-                  entry.addAttr('description', '%i' % (x+1))
+                  myEntry.addAttr('description', '%i' % (x+1))
                 server1del = ['description:1']
                 server1add = ['description:11']
                 server2del = ['description:10']
@@ -798,8 +798,8 @@
                   'dsInstancePort' : server1.getPort(),
                   'dsInstanceDn'   : server1.getRootDn(),
                   'dsInstancePswd' : server1.getRootPwd(),
-                  'DNToAdd'        : entry.getDn(),
-                  'listAttributes' : entry.getAttrList()
+                  'DNToAdd'        : myEntry.getDn(),
+                  'listAttributes' : myEntry.getAttrList()
                 }
               </call>
 
@@ -821,7 +821,7 @@
                       'dsInstancePort' : server.getPort(),
                       'dsInstanceDn'   : server.getRootDn(),
                       'dsInstancePswd' : server.getRootPwd(),
-                      'DNToModify'     : entry.getDn(),
+                      'DNToModify'     : myEntry.getDn(),
                       'listAttributes' : mods[i][0],
                       'changetype'     : 'delete'
                     }
@@ -834,7 +834,7 @@
                       'dsInstancePort' : server.getPort(),
                       'dsInstanceDn'   : server.getRootDn(),
                       'dsInstancePswd' : server.getRootPwd(),
-                      'DNToModify'     : entry.getDn(),
+                      'DNToModify'     : myEntry.getDn(),
                       'listAttributes' : mods[i][1],
                       'changetype'     : 'add'
                     }
@@ -853,7 +853,7 @@
                       'dsInstancePort' : server.getPort(),
                       'dsInstanceDn'   : server.getRootDn(),
                       'dsInstancePswd' : server.getRootPwd(),
-                      'dsBaseDN'       : entry.getDn(),
+                      'dsBaseDN'       : myEntry.getDn(),
                       'dsFilter'       : 'objectclass=*',
                       'dsAttributes'   : 'description',
                       'logStderr'      : False
@@ -891,7 +891,7 @@
                       'dsInstancePort' : server.getPort(),
                       'dsInstanceDn'   : server.getRootDn(),
                       'dsInstancePswd' : server.getRootPwd(),
-                      'dsBaseDN'       : entry.getDn(),
+                      'dsBaseDN'       : myEntry.getDn(),
                       'dsFilter'       : 'objectclass=*',
                       'dsAttributes'   : 'description',
                       'logStderr'      : False
@@ -927,7 +927,7 @@
                   'dsInstancePort' : server1.getPort(),
                   'dsInstanceDn'   : server1.getRootDn(),
                   'dsInstancePswd' : server1.getRootPwd(),
-                  'dsDn'           : [entry.getDn()]
+                  'dsDn'           : [myEntry.getDn()]
                 }
               </call>
 
@@ -963,7 +963,7 @@
                                                                 
               <!-- Add entry to server1 -->
               <script>
-                entry = Entry('cn=B1')
+                myEntry = Entry('cn=B1')
                 server1add = ['description:1']
                 server2add = ['description:1', 'description:2']
                 server1mods = [server1add]
@@ -977,8 +977,8 @@
                   'dsInstancePort' : server1.getPort(),
                   'dsInstanceDn'   : server1.getRootDn(),
                   'dsInstancePswd' : server1.getRootPwd(),
-                  'DNToAdd'        : entry.getDn(),
-                  'listAttributes' : entry.getAttrList()
+                  'DNToAdd'        : myEntry.getDn(),
+                  'listAttributes' : myEntry.getAttrList()
                 }
               </call>
 
@@ -1000,7 +1000,7 @@
                       'dsInstancePort' : server.getPort(),
                       'dsInstanceDn'   : server.getRootDn(),
                       'dsInstancePswd' : server.getRootPwd(),
-                      'DNToModify'     : entry.getDn(),
+                      'DNToModify'     : myEntry.getDn(),
                       'listAttributes' : mods[i][0],
                       'changetype'     : 'add'
                     }
@@ -1019,7 +1019,7 @@
                       'dsInstancePort' : server.getPort(),
                       'dsInstanceDn'   : server.getRootDn(),
                       'dsInstancePswd' : server.getRootPwd(),
-                      'dsBaseDN'       : entry.getDn(),
+                      'dsBaseDN'       : myEntry.getDn(),
                       'dsFilter'       : 'objectclass=*',
                       'dsAttributes'   : 'description',
                       'logStderr'      : False
@@ -1057,7 +1057,7 @@
                       'dsInstancePort' : server.getPort(),
                       'dsInstanceDn'   : server.getRootDn(),
                       'dsInstancePswd' : server.getRootPwd(),
-                      'dsBaseDN'       : entry.getDn(),
+                      'dsBaseDN'       : myEntry.getDn(),
                       'dsFilter'       : 'objectclass=*',
                       'dsAttributes'   : 'description',
                       'logStderr'      : False
@@ -1093,7 +1093,7 @@
                   'dsInstancePort' : server1.getPort(),
                   'dsInstanceDn'   : server1.getRootDn(),
                   'dsInstancePswd' : server1.getRootPwd(),
-                  'dsDn'           : [entry.getDn()]
+                  'dsDn'           : [myEntry.getDn()]
                 }
               </call>
 
@@ -1129,7 +1129,7 @@
                                                                 
               <!-- Add entry to server1 -->
               <script>
-                entry = Entry('cn=B2')
+                myEntry = Entry('cn=B2')
                 server1add = ['employeeNumber:1']
                 server2add = ['employeeNumber:2']
                 server1mods = [server1add]
@@ -1143,8 +1143,8 @@
                   'dsInstancePort' : server1.getPort(),
                   'dsInstanceDn'   : server1.getRootDn(),
                   'dsInstancePswd' : server1.getRootPwd(),
-                  'DNToAdd'        : entry.getDn(),
-                  'listAttributes' : entry.getAttrList()
+                  'DNToAdd'        : myEntry.getDn(),
+                  'listAttributes' : myEntry.getAttrList()
                 }
               </call>
 
@@ -1166,7 +1166,7 @@
                       'dsInstancePort' : server.getPort(),
                       'dsInstanceDn'   : server.getRootDn(),
                       'dsInstancePswd' : server.getRootPwd(),
-                      'DNToModify'     : entry.getDn(),
+                      'DNToModify'     : myEntry.getDn(),
                       'listAttributes' : mods[i][0],
                       'changetype'     : 'add'
                     }
@@ -1185,7 +1185,7 @@
                       'dsInstancePort' : server.getPort(),
                       'dsInstanceDn'   : server.getRootDn(),
                       'dsInstancePswd' : server.getRootPwd(),
-                      'dsBaseDN'       : entry.getDn(),
+                      'dsBaseDN'       : myEntry.getDn(),
                       'dsFilter'       : 'objectclass=*',
                       'dsAttributes'   : 'employeeNumber',
                       'logStderr'      : False
@@ -1223,7 +1223,7 @@
                       'dsInstancePort' : server.getPort(),
                       'dsInstanceDn'   : server.getRootDn(),
                       'dsInstancePswd' : server.getRootPwd(),
-                      'dsBaseDN'       : entry.getDn(),
+                      'dsBaseDN'       : myEntry.getDn(),
                       'dsFilter'       : 'objectclass=*',
                       'dsAttributes'   : 'employeeNumber',
                       'logStderr'      : False
@@ -1259,7 +1259,7 @@
                   'dsInstancePort' : server1.getPort(),
                   'dsInstanceDn'   : server1.getRootDn(),
                   'dsInstancePswd' : server1.getRootPwd(),
-                  'dsDn'           : [entry.getDn()]
+                  'dsDn'           : [myEntry.getDn()]
                 }
               </call>
 
@@ -1296,9 +1296,9 @@
                                                                 
               <!-- Add entry to server1 -->
               <script>
-                entry = Entry('cn=C1')
+                myEntry = Entry('cn=C1')
                 for x in range(10):
-                  entry.addAttr('description', '%i' % (x+1))
+                  myEntry.addAttr('description', '%i' % (x+1))
                 server1del = []
                 for y in range(1,6):
                   server1del.append('description:%i' % y)
@@ -1316,8 +1316,8 @@
                   'dsInstancePort' : server1.getPort(),
                   'dsInstanceDn'   : server1.getRootDn(),
                   'dsInstancePswd' : server1.getRootPwd(),
-                  'DNToAdd'        : entry.getDn(),
-                  'listAttributes' : entry.getAttrList()
+                  'DNToAdd'        : myEntry.getDn(),
+                  'listAttributes' : myEntry.getAttrList()
                 }
               </call>
 
@@ -1339,7 +1339,7 @@
                       'dsInstancePort' : server.getPort(),
                       'dsInstanceDn'   : server.getRootDn(),
                       'dsInstancePswd' : server.getRootPwd(),
-                      'DNToModify'     : entry.getDn(),
+                      'DNToModify'     : myEntry.getDn(),
                       'listAttributes' : mods[i][0],
                       'changetype'     : 'delete'
                     }
@@ -1358,7 +1358,7 @@
                       'dsInstancePort' : server.getPort(),
                       'dsInstanceDn'   : server.getRootDn(),
                       'dsInstancePswd' : server.getRootPwd(),
-                      'dsBaseDN'       : entry.getDn(),
+                      'dsBaseDN'       : myEntry.getDn(),
                       'dsFilter'       : 'objectclass=*',
                       'dsAttributes'   : 'description',
                       'logStderr'      : False
@@ -1396,7 +1396,7 @@
                       'dsInstancePort' : server.getPort(),
                       'dsInstanceDn'   : server.getRootDn(),
                       'dsInstancePswd' : server.getRootPwd(),
-                      'dsBaseDN'       : entry.getDn(),
+                      'dsBaseDN'       : myEntry.getDn(),
                       'dsFilter'       : 'objectclass=*',
                       'dsAttributes'   : 'description',
                       'logStderr'      : False
@@ -1432,7 +1432,7 @@
                   'dsInstancePort' : server1.getPort(),
                   'dsInstanceDn'   : server1.getRootDn(),
                   'dsInstancePswd' : server1.getRootPwd(),
-                  'dsDn'           : [entry.getDn()]
+                  'dsDn'           : [myEntry.getDn()]
                 }
               </call>
 
@@ -1469,8 +1469,8 @@
                                                                 
               <!-- Add entry to server1 -->
               <script>
-                entry = Entry('cn=C2')
-                entry.addAttr('employeeNumber', '1')
+                myEntry = Entry('cn=C2')
+                myEntry.addAttr('employeeNumber', '1')
                 server1del = ['employeeNumber:']
                 server2del = ['employeeNumber:1']
                 server1mods = [server1del]
@@ -1484,8 +1484,8 @@
                   'dsInstancePort' : server1.getPort(),
                   'dsInstanceDn'   : server1.getRootDn(),
                   'dsInstancePswd' : server1.getRootPwd(),
-                  'DNToAdd'        : entry.getDn(),
-                  'listAttributes' : entry.getAttrList()
+                  'DNToAdd'        : myEntry.getDn(),
+                  'listAttributes' : myEntry.getAttrList()
                 }
               </call>
 
@@ -1507,7 +1507,7 @@
                       'dsInstancePort' : server.getPort(),
                       'dsInstanceDn'   : server.getRootDn(),
                       'dsInstancePswd' : server.getRootPwd(),
-                      'DNToModify'     : entry.getDn(),
+                      'DNToModify'     : myEntry.getDn(),
                       'listAttributes' : mods[i][0],
                       'changetype'     : 'delete'
                     }
@@ -1526,7 +1526,7 @@
                       'dsInstancePort' : server.getPort(),
                       'dsInstanceDn'   : server.getRootDn(),
                       'dsInstancePswd' : server.getRootPwd(),
-                      'dsBaseDN'       : entry.getDn(),
+                      'dsBaseDN'       : myEntry.getDn(),
                       'dsFilter'       : 'objectclass=*',
                       'dsAttributes'   : 'employeeNumber',
                       'logStderr'      : False
@@ -1564,7 +1564,7 @@
                       'dsInstancePort' : server.getPort(),
                       'dsInstanceDn'   : server.getRootDn(),
                       'dsInstancePswd' : server.getRootPwd(),
-                      'dsBaseDN'       : entry.getDn(),
+                      'dsBaseDN'       : myEntry.getDn(),
                       'dsFilter'       : 'objectclass=*',
                       'dsAttributes'   : 'employeeNumber',
                       'logStderr'      : False
@@ -1600,7 +1600,7 @@
                   'dsInstancePort' : server1.getPort(),
                   'dsInstanceDn'   : server1.getRootDn(),
                   'dsInstancePswd' : server1.getRootPwd(),
-                  'dsDn'           : [entry.getDn()]
+                  'dsDn'           : [myEntry.getDn()]
                 }
               </call>
 
@@ -1641,9 +1641,9 @@
                                                                 
               <!-- Add entry to server1 -->
               <script>
-                entry = Entry('cn=D1')
-                entry.addAttr('description', '1')
-                entry.addAttr('telephoneNumber', '1')
+                myEntry = Entry('cn=D1')
+                myEntry.addAttr('description', '1')
+                myEntry.addAttr('telephoneNumber', '1')
                 server1add = ['description:2']
                 server1del = ['telephoneNumber:']
                 server2del = ['description:']
@@ -1662,8 +1662,8 @@
                   'dsInstancePort' : server1.getPort(),
                   'dsInstanceDn'   : server1.getRootDn(),
                   'dsInstancePswd' : server1.getRootPwd(),
-                  'DNToAdd'        : entry.getDn(),
-                  'listAttributes' : entry.getAttrList()
+                  'DNToAdd'        : myEntry.getDn(),
+                  'listAttributes' : myEntry.getAttrList()
                 }
               </call>
 
@@ -1685,7 +1685,7 @@
                       'dsInstancePort' : server.getPort(),
                       'dsInstanceDn'   : server.getRootDn(),
                       'dsInstancePswd' : server.getRootPwd(),
-                      'DNToModify'     : entry.getDn(),
+                      'DNToModify'     : myEntry.getDn(),
                       'listAttributes' : mods[i][0],
                       'changetype'     : changetypes[i][0]
                     }
@@ -1698,7 +1698,7 @@
                       'dsInstancePort' : server.getPort(),
                       'dsInstanceDn'   : server.getRootDn(),
                       'dsInstancePswd' : server.getRootPwd(),
-                      'DNToModify'     : entry.getDn(),
+                      'DNToModify'     : myEntry.getDn(),
                       'listAttributes' : mods[i][1],
                       'changetype'     : changetypes[i][1]
                     }
@@ -1717,7 +1717,7 @@
                       'dsInstancePort' : server.getPort(),
                       'dsInstanceDn'   : server.getRootDn(),
                       'dsInstancePswd' : server.getRootPwd(),
-                      'dsBaseDN'       : entry.getDn(),
+                      'dsBaseDN'       : myEntry.getDn(),
                       'dsFilter'       : 'objectclass=*',
                       'dsAttributes'   : 'description telephoneNumber',
                       'logStderr'      : False
@@ -1755,7 +1755,7 @@
                       'dsInstancePort' : server.getPort(),
                       'dsInstanceDn'   : server.getRootDn(),
                       'dsInstancePswd' : server.getRootPwd(),
-                      'dsBaseDN'       : entry.getDn(),
+                      'dsBaseDN'       : myEntry.getDn(),
                       'dsFilter'       : 'objectclass=*',
                       'dsAttributes'   : 'description telephoneNumber',
                       'logStderr'      : False
@@ -1791,7 +1791,7 @@
                   'dsInstancePort' : server1.getPort(),
                   'dsInstanceDn'   : server1.getRootDn(),
                   'dsInstancePswd' : server1.getRootPwd(),
-                  'dsDn'           : [entry.getDn()]
+                  'dsDn'           : [myEntry.getDn()]
                 }
               </call>
 
@@ -1829,8 +1829,8 @@
                                                                 
               <!-- Add entry to server1 -->
               <script>
-                entry = Entry('cn=E1')
-                entry.addAttr('description', '1')
+                myEntry = Entry('cn=E1')
+                myEntry.addAttr('description', '1')
                 server1add = ['description:2', 'description:3']
                 server2replace = ['description:4', 'description:5']
                 server1mods = [server1add]
@@ -1847,8 +1847,8 @@
                   'dsInstancePort' : server1.getPort(),
                   'dsInstanceDn'   : server1.getRootDn(),
                   'dsInstancePswd' : server1.getRootPwd(),
-                  'DNToAdd'        : entry.getDn(),
-                  'listAttributes' : entry.getAttrList()
+                  'DNToAdd'        : myEntry.getDn(),
+                  'listAttributes' : myEntry.getAttrList()
                 }
               </call>
 
@@ -1870,7 +1870,7 @@
                       'dsInstancePort' : server.getPort(),
                       'dsInstanceDn'   : server.getRootDn(),
                       'dsInstancePswd' : server.getRootPwd(),
-                      'DNToModify'     : entry.getDn(),
+                      'DNToModify'     : myEntry.getDn(),
                       'listAttributes' : mods[i][0],
                       'changetype'     : changetypes[i][0]
                     }
@@ -1889,7 +1889,7 @@
                       'dsInstancePort' : server.getPort(),
                       'dsInstanceDn'   : server.getRootDn(),
                       'dsInstancePswd' : server.getRootPwd(),
-                      'dsBaseDN'       : entry.getDn(),
+                      'dsBaseDN'       : myEntry.getDn(),
                       'dsFilter'       : 'objectclass=*',
                       'dsAttributes'   : 'description',
                       'logStderr'      : False
@@ -1927,7 +1927,7 @@
                       'dsInstancePort' : server.getPort(),
                       'dsInstanceDn'   : server.getRootDn(),
                       'dsInstancePswd' : server.getRootPwd(),
-                      'dsBaseDN'       : entry.getDn(),
+                      'dsBaseDN'       : myEntry.getDn(),
                       'dsFilter'       : 'objectclass=*',
                       'dsAttributes'   : 'description',
                       'logStderr'      : False
@@ -1963,7 +1963,7 @@
                   'dsInstancePort' : server1.getPort(),
                   'dsInstanceDn'   : server1.getRootDn(),
                   'dsInstancePswd' : server1.getRootPwd(),
-                  'dsDn'           : [entry.getDn()]
+                  'dsDn'           : [myEntry.getDn()]
                 }
               </call>
 
@@ -2001,8 +2001,8 @@
                                                                 
               <!-- Add entry to server1 -->
               <script>
-                entry = Entry('cn=E2')
-                entry.addAttr('description', '1')
+                myEntry = Entry('cn=E2')
+                myEntry.addAttr('description', '1')
                 server1replace = ['description:2', 'description:3']
                 server2add = ['description:4', 'description:5']
                 server1mods = [server1replace]
@@ -2019,8 +2019,8 @@
                   'dsInstancePort' : server1.getPort(),
                   'dsInstanceDn'   : server1.getRootDn(),
                   'dsInstancePswd' : server1.getRootPwd(),
-                  'DNToAdd'        : entry.getDn(),
-                  'listAttributes' : entry.getAttrList()
+                  'DNToAdd'        : myEntry.getDn(),
+                  'listAttributes' : myEntry.getAttrList()
                 }
               </call>
 
@@ -2042,7 +2042,7 @@
                       'dsInstancePort' : server.getPort(),
                       'dsInstanceDn'   : server.getRootDn(),
                       'dsInstancePswd' : server.getRootPwd(),
-                      'DNToModify'     : entry.getDn(),
+                      'DNToModify'     : myEntry.getDn(),
                       'listAttributes' : mods[i][0],
                       'changetype'     : changetypes[i][0]
                     }
@@ -2061,7 +2061,7 @@
                       'dsInstancePort' : server.getPort(),
                       'dsInstanceDn'   : server.getRootDn(),
                       'dsInstancePswd' : server.getRootPwd(),
-                      'dsBaseDN'       : entry.getDn(),
+                      'dsBaseDN'       : myEntry.getDn(),
                       'dsFilter'       : 'objectclass=*',
                       'dsAttributes'   : 'description',
                       'logStderr'      : False
@@ -2099,7 +2099,7 @@
                       'dsInstancePort' : server.getPort(),
                       'dsInstanceDn'   : server.getRootDn(),
                       'dsInstancePswd' : server.getRootPwd(),
-                      'dsBaseDN'       : entry.getDn(),
+                      'dsBaseDN'       : myEntry.getDn(),
                       'dsFilter'       : 'objectclass=*',
                       'dsAttributes'   : 'description',
                       'logStderr'      : False
@@ -2135,7 +2135,7 @@
                   'dsInstancePort' : server1.getPort(),
                   'dsInstanceDn'   : server1.getRootDn(),
                   'dsInstancePswd' : server1.getRootPwd(),
-                  'dsDn'           : [entry.getDn()]
+                  'dsDn'           : [myEntry.getDn()]
                 }
               </call>
 
@@ -2174,9 +2174,9 @@
                                                                 
               <!-- Add entry to server1 -->
               <script>
-                entry = Entry('cn=F1')
+                myEntry = Entry('cn=F1')
                 for x in range(4):
-                  entry.addAttr('description', '%i' % (x+1))
+                  myEntry.addAttr('description', '%i' % (x+1))
                 server1del = ['description:2', 'description:3']
                 server2replace = []
                 for y in range(6,11):
@@ -2195,8 +2195,8 @@
                   'dsInstancePort' : server1.getPort(),
                   'dsInstanceDn'   : server1.getRootDn(),
                   'dsInstancePswd' : server1.getRootPwd(),
-                  'DNToAdd'        : entry.getDn(),
-                  'listAttributes' : entry.getAttrList()
+                  'DNToAdd'        : myEntry.getDn(),
+                  'listAttributes' : myEntry.getAttrList()
                 }
               </call>
 
@@ -2218,7 +2218,7 @@
                       'dsInstancePort' : server.getPort(),
                       'dsInstanceDn'   : server.getRootDn(),
                       'dsInstancePswd' : server.getRootPwd(),
-                      'DNToModify'     : entry.getDn(),
+                      'DNToModify'     : myEntry.getDn(),
                       'listAttributes' : mods[i][0],
                       'changetype'     : changetypes[i][0]
                     }
@@ -2237,7 +2237,7 @@
                       'dsInstancePort' : server.getPort(),
                       'dsInstanceDn'   : server.getRootDn(),
                       'dsInstancePswd' : server.getRootPwd(),
-                      'dsBaseDN'       : entry.getDn(),
+                      'dsBaseDN'       : myEntry.getDn(),
                       'dsFilter'       : 'objectclass=*',
                       'dsAttributes'   : 'description',
                       'logStderr'      : False
@@ -2275,7 +2275,7 @@
                       'dsInstancePort' : server.getPort(),
                       'dsInstanceDn'   : server.getRootDn(),
                       'dsInstancePswd' : server.getRootPwd(),
-                      'dsBaseDN'       : entry.getDn(),
+                      'dsBaseDN'       : myEntry.getDn(),
                       'dsFilter'       : 'objectclass=*',
                       'dsAttributes'   : 'description',
                       'logStderr'      : False
@@ -2311,7 +2311,7 @@
                   'dsInstancePort' : server1.getPort(),
                   'dsInstanceDn'   : server1.getRootDn(),
                   'dsInstancePswd' : server1.getRootPwd(),
-                  'dsDn'           : [entry.getDn()]
+                  'dsDn'           : [myEntry.getDn()]
                 }
               </call>
 
@@ -2350,9 +2350,9 @@
                                                                 
               <!-- Add entry to server1 -->
               <script>
-                entry = Entry('cn=F2')
+                myEntry = Entry('cn=F2')
                 for x in range(4):
-                  entry.addAttr('description', '%i' % (x+1))
+                  myEntry.addAttr('description', '%i' % (x+1))
                 server1replace = ['description:1', 'description:2', 
                                   'description:3']
                 server2del = ['description:3', 'description:4']
@@ -2370,8 +2370,8 @@
                   'dsInstancePort' : server1.getPort(),
                   'dsInstanceDn'   : server1.getRootDn(),
                   'dsInstancePswd' : server1.getRootPwd(),
-                  'DNToAdd'        : entry.getDn(),
-                  'listAttributes' : entry.getAttrList()
+                  'DNToAdd'        : myEntry.getDn(),
+                  'listAttributes' : myEntry.getAttrList()
                 }
               </call>
 
@@ -2393,7 +2393,7 @@
                       'dsInstancePort' : server.getPort(),
                       'dsInstanceDn'   : server.getRootDn(),
                       'dsInstancePswd' : server.getRootPwd(),
-                      'DNToModify'     : entry.getDn(),
+                      'DNToModify'     : myEntry.getDn(),
                       'listAttributes' : mods[i][0],
                       'changetype'     : changetypes[i][0]
                     }
@@ -2412,7 +2412,7 @@
                       'dsInstancePort' : server.getPort(),
                       'dsInstanceDn'   : server.getRootDn(),
                       'dsInstancePswd' : server.getRootPwd(),
-                      'dsBaseDN'       : entry.getDn(),
+                      'dsBaseDN'       : myEntry.getDn(),
                       'dsFilter'       : 'objectclass=*',
                       'dsAttributes'   : 'description',
                       'logStderr'      : False
@@ -2450,7 +2450,7 @@
                       'dsInstancePort' : server.getPort(),
                       'dsInstanceDn'   : server.getRootDn(),
                       'dsInstancePswd' : server.getRootPwd(),
-                      'dsBaseDN'       : entry.getDn(),
+                      'dsBaseDN'       : myEntry.getDn(),
                       'dsFilter'       : 'objectclass=*',
                       'dsAttributes'   : 'description',
                       'logStderr'      : False
@@ -2486,7 +2486,7 @@
                   'dsInstancePort' : server1.getPort(),
                   'dsInstanceDn'   : server1.getRootDn(),
                   'dsInstancePswd' : server1.getRootPwd(),
-                  'dsDn'           : [entry.getDn()]
+                  'dsDn'           : [myEntry.getDn()]
                 }
               </call>
 
@@ -2981,8 +2981,11 @@
 
               <!-- Verify the synchronization of the trees among the servers in 
                 the topology -->
+              <!-- If the trees don't match, we may have come across Issue 4071
+               (Replication conflict: delete parent, add child) -->
               <call function="'verifyTrees'">
-                [ clientHost, clientPath, server1, [server2], synchroSuffix ]
+                [ clientHost, clientPath, server1, [server2], synchroSuffix,
+                  '4071' ]
               </call> 
 
               <!-- Delete added entries -->
@@ -3536,7 +3539,6 @@
           </testcase>
 
 
-
           <import machine="STAF_LOCAL_HOSTNAME"
             file="'%s/testcases/replication/replication_cleanup.xml' 
                   % (TESTS_DIR)"/>
diff --git a/opends/tests/staf-tests/functional-tests/testcases/replication/replication_cleanup.xml b/opends/tests/staf-tests/functional-tests/testcases/replication/replication_cleanup.xml
index a96b4fd..7471a20 100644
--- a/opends/tests/staf-tests/functional-tests/testcases/replication/replication_cleanup.xml
+++ b/opends/tests/staf-tests/functional-tests/testcases/replication/replication_cleanup.xml
@@ -30,7 +30,16 @@
   <defaultcall function="replication_cleanup"/>
 
   <function name="replication_cleanup">
-
+    <function-map-args>
+      <function-arg-def name="suiteSuffix" 
+                        type="optional" 
+                        default="None">
+        <function-arg-description>
+          Test suite suffix used to copy the server logs back to the controller.
+        </function-arg-description>
+        <function-arg-property name="type" value="string"/>
+      </function-arg-def>
+    </function-map-args>
     <sequence>
 
       <block name="'replication-cleanup'">
@@ -41,8 +50,59 @@
           <call function="'stopServers'">
             [_topologyServerList]
           </call>
-  
-        <!-- Remove  the topology created for the test suite -->
+          
+          <!-- Copy the server logs to the controller machine -->
+          <if expr="suiteSuffix != None">
+            <paralleliterate var="server" in="_topologyServerList" indexvar="i">
+              <sequence>
+                <script>
+                  suffix     = suiteSuffix + '_%s' % (i + 1)
+                  serverHost = server.getHostname()
+                  serverName = '%s:%s' % (serverHost, server.getPort())
+                  serverPath = '%s/%s' % (server.getDir(), OPENDSNAME)
+                </script>
+              
+                <message>
+                  'Copy %s/logs/errors from %s to %s/errors_%s on %s' % \
+                  (serverPath, serverName, logs.sut, suffix, STAXServiceMachine)
+                </message>
+                <call function="'copyFile'">
+                  {
+                    'location'   : serverHost,
+                    'srcfile'    : '%s/logs/errors' % serverPath,
+                    'destfile'   : '%s/errors_%s' % (logs.sut, suffix),
+                    'remotehost' : STAXServiceMachine
+                  }
+                </call>
+                <message>
+                  'Copy %s/logs/access from %s to %s/access_%s on %s' % \
+                  (serverPath, serverName,logs.sut, suffix, STAXServiceMachine)
+                </message>
+                <call function="'copyFile'">
+                  {
+                    'location'   : serverHost,
+                    'srcfile'    : '%s/logs/access' % serverPath,
+                    'destfile'   : '%s/access_%s' % (logs.sut, suffix),
+                    'remotehost' : STAXServiceMachine
+                  }
+                </call>
+                <message>
+                  'Copy %s/logs/replication from %s to %s/replication_%s on %s' % \
+                  (serverPath, serverName, logs.sut, suffix, STAXServiceMachine)
+                </message>
+                <call function="'copyFile'">
+                  {
+                    'location'   : serverHost,
+                    'srcfile'    : '%s/logs/replication' % serverPath,
+                    'destfile'   : '%s/replication_%s' % (logs.sut, suffix),
+                    'remotehost' : STAXServiceMachine
+                  }
+                </call>
+              </sequence>
+            </paralleliterate>
+          </if>
+              
+          <!-- Remove  the topology created for the test suite -->
           <message>
             'Remove DS topology created for the Synchronization Basic Test Suite'
           </message>          
diff --git a/opends/tests/staf-tests/functional-tests/testcases/replication/resynchronization/resynchronization.xml b/opends/tests/staf-tests/functional-tests/testcases/replication/resynchronization/resynchronization.xml
index 400a3a2..33d2103 100644
--- a/opends/tests/staf-tests/functional-tests/testcases/replication/resynchronization/resynchronization.xml
+++ b/opends/tests/staf-tests/functional-tests/testcases/replication/resynchronization/resynchronization.xml
@@ -53,10 +53,34 @@
                   file="'%s/testcases/replication/replication_setup.xml' 
                         % (TESTS_DIR)"/>
           <call function="'replication_setup'">
-            { 'dataFile' : 'Example.ldif' }
+            { 'topologyFile' : '%s/3server_topology.txt' \
+                               % REPLICATION_CONFIG_DIR,
+              'dataFile'     : 'Example.ldif'
+            }
           </call>
           
+          <script>
+            server3            = _topologyServerList[2]
+            replicationServer3 = server3.getChangelogServer()
+            
+            # Remove 3rd server from replicated servers list until replication
+            # is enabled on the 3rd one
+            _topologyServerList.remove(server3)
+            consumerList.remove(server3)
+          </script>
+
+          <!-- Remove 3rd server from replication topology (i.e. disable
+               replication) -->          
+          <call function="'disableReplication'">
+            { 'location'            : clientHost,
+              'dsPath'              : clientPath,
+              'dsInstanceHost'      : server3.getHostname(),
+              'dsInstanceAdminPort' : server3.getAdminPort(),
+              'replicationDnList'   : [synchroSuffix]
+            }
+          </call>
           
+                    
           <!--- Test Case information
           #@TestMarker          Replication Re-Synchronization Tests
           #@TestName            Replication: Re-Synchronization: Off-line
@@ -154,9 +178,9 @@
           #@TestSteps           Call dsreplication pre-external-initialization
           #@TestSteps           Import data on server A
           #@TestSteps           Back-up server A
+          #@TestSteps           Call dsreplication post-external-initialization            
           #@TestSteps           Add entry on server A
           #@TestSteps           Restore back-up on other servers
-          #@TestSteps           Call dsreplication post-external-initialization
           #@TestPostamble
           #@TestResult          Success if trees synchronized
           -->
@@ -197,7 +221,7 @@
                   'dsInstancePort' : master.getPort(),
                   'dsInstanceDn'   : master.getRootDn(),
                   'dsInstancePswd' : master.getRootPwd(),
-                  'taskID'         : 'import task',
+                  'taskID'         : 'import task - tc2',
                   'ldifFile'       : '%s/replication/Example.ldif' \
                                      % masterDataDir
                 }
@@ -231,12 +255,28 @@
                   'dsInstancePort' : master.getPort(),
                   'dsInstanceDn'   : master.getRootDn(),
                   'dsInstancePswd' : master.getRootPwd(),
-                  'taskID'         : 'backup task',
+                  'taskID'         : 'backup task - tc2',
                   'backupDir'      : '%s/replication/master_backup_online' \
                                      % masterDataDir
                 }
               </call>
               
+              <!-- Post-initialise the servers in the topology -->
+              <message>
+                '+++++ resynchronization on-line: end external server \
+                initialization'
+              </message>                       
+              <call function="'postInitializeReplication'">
+                { 'location'            : clientHost,
+                  'dsPath'              : clientPath,
+                  'dsInstanceHost'      : masterHost,
+                  'dsInstanceAdminPort' : master.getAdminPort(),
+                  'replicationDnList'   : [synchroSuffix],
+                  'adminUID'            : adminUID,
+                  'adminPswd'           : adminPswd
+                }
+              </call>
+                            
               <!-- Add entry to "master" server -->
               <message>
                 '+++++ resynchronization on-line: add entry to %s:%s' \
@@ -279,29 +319,13 @@
                       'dsInstancePort' : consumer.getPort(),
                       'dsInstanceDn'   : consumer.getRootDn(),
                       'dsInstancePswd' : consumer.getRootPwd(),
-                      'taskID'         : 'restore task',
+                      'taskID'         : 'restore task - tc2',
                       'backupDir'   : '%s/%s/replication/master_backup_online' \
                                       % (consumer.getDir(),remote.reldatadir)
                     }
                   </call>
                 </sequence>
-              </paralleliterate>
-              
-              <!-- Post-initialise the servers in the topology -->
-              <message>
-                '+++++ resynchronization on-line: end external server \
-                initialization'
-              </message>                       
-              <call function="'postInitializeReplication'">
-                { 'location'            : clientHost,
-                  'dsPath'              : clientPath,
-                  'dsInstanceHost'      : masterHost,
-                  'dsInstanceAdminPort' : master.getAdminPort(),
-                  'replicationDnList'   : [synchroSuffix],
-                  'adminUID'            : adminUID,
-                  'adminPswd'           : adminPswd
-                }
-              </call>
+              </paralleliterate>              
                                 
               <!-- Verify the synchronization of the trees among the servers in
                 the topology -->
@@ -312,7 +336,389 @@
               <call function="'testCase_Postamble'"/>
             </sequence>
           </testcase>
+
           
+          <!--- Test Case information
+          #@TestMarker          Replication Re-Synchronization Tests
+          #@TestName            Replication: Re-Synchronization: Add new server
+          #@TestID              Add new server
+          #@TestPurpose         Initialise newly added replicated server 
+                                using on-line backup/restore
+          #@TestPreamble
+          #@TestSteps           Call dsreplication pre-external-initialization
+          #@TestSteps           Import data on server A
+          #@TestSteps           Back-up server A
+          #@TestSteps           Initialise other servers from server A            
+          #@TestSteps           Add entry on server A
+          #@TestSteps           Add server: enable replication
+          #@TestSteps           Restore back-up on new server
+          #@TestPostamble
+          #@TestResult          Success if trees synchronized
+          -->
+          <testcase name="getTestCaseName('Add new Server')">
+            <sequence>
+              <call function="'testCase_Preamble'"/>
+              <message>
+                'Replication: Re-Synchronization: Add new server. \
+                Initialise newly added server using on-line backup/restore'
+              </message>
+
+              <paralleliterate var="server" in="_topologyServerList">
+                <sequence>
+                  <!-- Search for entry add -->
+                  <call function="'ldapSearchWithScript'">
+                    { 'location'         : clientHost,
+                      'dsPath'           : clientPath,
+                      'dsInstanceHost'   : server.getHostname(),
+                      'dsInstancePort'   : server.getPort(),
+                      'dsInstanceDn'     : server.getRootDn(),
+                      'dsInstancePswd'   : server.getRootPwd(),
+                      'dsBaseDN'         : 'dc=replicationChanges',
+                      'dsFilter'         : 'uid=*'
+                    }                
+                  </call>
+                  <script>
+                    searchRC = STAXResult[0][0]
+                    searchResult = STAXResult[0][1]
+                    resultLength = len(searchResult) > 0
+                  </script>
+                  <message>
+                    '==> REPLICATION CHANGES %s:%s : \n%s\n' % \
+                    (server.getHostname(), server.getPort(), searchResult)
+                  </message>
+                </sequence>
+              </paralleliterate>
+                            
+              <!-- Pre-initialise the servers in the topology -->
+              <message>
+                '+++++ resynchronization add server: prepare servers for \
+                external initialization'
+              </message>                
+              <call function="'preInitializeReplication'">
+                { 'location'            : clientHost,
+                  'dsPath'              : clientPath,
+                  'dsInstanceHost'      : masterHost,
+                  'dsInstanceAdminPort' : master.getAdminPort(),
+                  'localOnly'           : False,
+                  'replicationDnList'   : [synchroSuffix],
+                  'adminUID'            : adminUID,
+                  'adminPswd'           : adminPswd
+                }
+              </call>
+              
+              <paralleliterate var="server" in="_topologyServerList">
+                <sequence>
+                  <!-- Search for entry add -->
+                  <call function="'ldapSearchWithScript'">
+                    { 'location'         : clientHost,
+                      'dsPath'           : clientPath,
+                      'dsInstanceHost'   : server.getHostname(),
+                      'dsInstancePort'   : server.getPort(),
+                      'dsInstanceDn'     : server.getRootDn(),
+                      'dsInstancePswd'   : server.getRootPwd(),
+                      'dsBaseDN'         : 'dc=replicationChanges',
+                      'dsFilter'         : 'uid=*'
+                    }                
+                  </call>
+                  <script>
+                    searchRC = STAXResult[0][0]
+                    searchResult = STAXResult[0][1]
+                    resultLength = len(searchResult) > 0
+                  </script>
+                  <message>
+                    '==> REPLICATION CHANGES %s:%s : \n%s\n' % \
+                    (server.getHostname(), server.getPort(), searchResult)
+                  </message>
+                </sequence>
+              </paralleliterate>
+              
+              <!-- Import data into "master" server -->
+              <message>
+                '+++++ resynchronization add server: import data on %s:%s' \
+                % (masterHost, master.getPort())
+              </message>
+              <call function="'importLdifTask'">
+                { 'location'       : clientHost,
+                  'dsPath'         : clientPath,
+                  'dsInstanceHost' : masterHost,
+                  'dsInstancePort' : master.getPort(),
+                  'dsInstanceDn'   : master.getRootDn(),
+                  'dsInstancePswd' : master.getRootPwd(),
+                  'taskID'         : 'import task - tc3',
+                  'ldifFile'       : '%s/replication/Example.ldif' \
+                                     % masterDataDir
+                }
+              </call>
+              
+              <!-- Check some data was imported into "master" server -->
+              <call function="'checkImport'">
+                { 'location'        : clientHost,
+                  'dsPath'          : clientPath,
+                  'dsHost'          : masterHost,
+                  'dsPort'          : master.getPort(),
+                  'dsAdminPort'     : master.getAdminPort(),
+                  'dsDn'            : master.getRootDn(),
+                  'dsPswd'          : master.getRootPwd(),
+                  'expectedEntries' : ['uid=scarter,ou=People,o=example',
+                                       'uid=dmiller, ou=People, o=example',
+                                       'uid=rhunt, ou=People, o=example'],
+                  'startDS'         :  'no'
+                }
+              </call>
+                
+              <!-- Backup "master" server -->
+              <message>
+                '+++++ resynchronization add server: back-up server %s:%s' \
+                % (masterHost, master.getPort())
+              </message>
+              <call function="'backupTask'">
+                { 'location'       : clientHost,
+                  'dsPath'         : clientPath,
+                  'dsInstanceHost' : masterHost,
+                  'dsInstancePort' : master.getPort(),
+                  'dsInstanceDn'   : master.getRootDn(),
+                  'dsInstancePswd' : master.getRootPwd(),
+                  'taskID'         : 'backup task - tc3',
+                  'backupDir'      : '%s/replication/master_backup_online' \
+                                     % masterDataDir
+                }
+              </call>
+
+              <paralleliterate var="server" in="_topologyServerList">
+                <sequence>
+                  <!-- Search for entry add -->
+                  <call function="'ldapSearchWithScript'">
+                    { 'location'         : clientHost,
+                      'dsPath'           : clientPath,
+                      'dsInstanceHost'   : server.getHostname(),
+                      'dsInstancePort'   : server.getPort(),
+                      'dsInstanceDn'     : server.getRootDn(),
+                      'dsInstancePswd'   : server.getRootPwd(),
+                      'dsBaseDN'         : 'dc=replicationChanges',
+                      'dsFilter'         : 'uid=*'
+                    }                
+                  </call>
+                  <script>
+                    searchRC = STAXResult[0][0]
+                    searchResult = STAXResult[0][1]
+                    resultLength = len(searchResult) > 0
+                  </script>
+                  <message>
+                    '==> REPLICATION CHANGES %s:%s : \n%s\n' % \
+                    (server.getHostname(), server.getPort(), searchResult)
+                  </message>
+                </sequence>
+              </paralleliterate>
+              
+              <message>
+                '+++++ resynchronization add server: Initialise topology from \
+                %s:%s' % (masterHost, master.getPort())
+              </message>
+              <!-- Initialise the servers in the topology -->
+              <call function="'initializeReplication'">
+                { 'location'                : clientHost,
+                  'dsPath'                  : clientPath,
+                  'sourceInstanceHost'      : masterHost,
+                  'sourceInstanceAdminPort' : master.getAdminPort(),
+                  'replicationDnList'       : [synchroSuffix]
+                }
+              </call>
+              
+              <paralleliterate var="server" in="_topologyServerList">
+                <sequence>
+                  <!-- Search for entry add -->
+                  <call function="'ldapSearchWithScript'">
+                    { 'location'         : clientHost,
+                      'dsPath'           : clientPath,
+                      'dsInstanceHost'   : server.getHostname(),
+                      'dsInstancePort'   : server.getPort(),
+                      'dsInstanceDn'     : server.getRootDn(),
+                      'dsInstancePswd'   : server.getRootPwd(),
+                      'dsBaseDN'         : 'dc=replicationChanges',
+                      'dsFilter'         : 'uid=*'
+                    }                
+                  </call>
+                  <script>
+                    searchRC = STAXResult[0][0]
+                    searchResult = STAXResult[0][1]
+                    resultLength = len(searchResult) > 0
+                  </script>
+                  <message>
+                    '==> REPLICATION CHANGES %s:%s : \n%s\n' % \
+                    (server.getHostname(), server.getPort(), searchResult)
+                  </message>
+                </sequence>
+              </paralleliterate>
+              
+              <!-- Add entry to "master" server -->
+              <message>
+                '+++++ resynchronization add server: add entry to %s:%s' \
+                % (masterHost, master.getPort())
+              </message>                        
+              <call function="'addEntry'">
+                { 'location'       : clientHost,
+                  'dsPath'         : clientPath,
+                  'dsInstanceHost' : masterHost,
+                  'dsInstancePort' : master.getPort(), 
+                  'dsInstanceDn'   : master.getRootDn(),
+                  'dsInstancePswd' : master.getRootPwd(),
+                  'entryToBeAdded' : '%s/replication/tfitter.ldif' \
+                                     % clientDataDir
+                }
+              </call>
+              
+              <paralleliterate var="server" in="_topologyServerList">
+                <sequence>
+                  <!-- Search for entry add -->
+                  <call function="'ldapSearchWithScript'">
+                    { 'location'         : clientHost,
+                      'dsPath'           : clientPath,
+                      'dsInstanceHost'   : server.getHostname(),
+                      'dsInstancePort'   : server.getPort(),
+                      'dsInstanceDn'     : server.getRootDn(),
+                      'dsInstancePswd'   : server.getRootPwd(),
+                      'dsBaseDN'         : 'dc=replicationChanges',
+                      'dsFilter'         : 'uid=*'
+                    }                
+                  </call>
+                  <script>
+                    searchRC = STAXResult[0][0]
+                    searchResult = STAXResult[0][1]
+                    resultLength = len(searchResult) > 0
+                  </script>
+                  <message>
+                    '==> REPLICATION CHANGES %s:%s : \n%s\n' % \
+                    (server.getHostname(), server.getPort(), searchResult)
+                  </message>
+                </sequence>
+              </paralleliterate>
+              
+              <!-- Add new server to topology -->
+              <message>
+                '+++++ resynchronization add server: Enable replication for \
+                server:\nHost: %s\nLdap port: %s\nReplication port: %s\n\
+                Replicated DN list: %s' \
+                % (server3.getHostname(), server3.getPort(), 
+                   replicationServer3.getPort(), [synchroSuffix])
+              </message>
+              <call function="'enableReplication'">
+                { 'location'             : clientHost,
+                  'dsPath'               : clientPath,
+                  'dsInstanceHost'       : server3.getHostname(),
+                  'dsInstanceAdminPort'  : server3.getAdminPort(),
+                  'dsInstanceDn'         : server3.getRootDn(),
+                  'dsInstancePswd'       : server3.getRootPwd(),
+                  'dsReplicationPort'    : replicationServer3.getPort(),
+                  'refInstanceHost'      : masterHost,
+                  'refInstanceAdminPort' : master.getAdminPort(),
+                  'refInstanceDn'        : master.getRootDn(),
+                  'refInstancePswd'      : master.getRootPwd(),
+                  'refReplicationPort'   : masterReplicationServer.getPort(),
+                  'replicationDnList'    : [synchroSuffix]
+                }                      
+              </call>              
+
+              <script>
+                # Add 3rd server to replicated servers list now that replication
+                # has been enabled on the 3rd one
+                _topologyServerList = _topologyServerList + [server3]
+                consumerList = consumerList + [server3]
+              </script>                            
+              
+              <paralleliterate var="server" in="_topologyServerList">
+                <sequence>
+                  <!-- Search for entry add -->
+                  <call function="'ldapSearchWithScript'">
+                    { 'location'         : clientHost,
+                      'dsPath'           : clientPath,
+                      'dsInstanceHost'   : server.getHostname(),
+                      'dsInstancePort'   : server.getPort(),
+                      'dsInstanceDn'     : server.getRootDn(),
+                      'dsInstancePswd'   : server.getRootPwd(),
+                      'dsBaseDN'         : 'dc=replicationChanges',
+                      'dsFilter'         : 'uid=*'
+                    }                
+                  </call>
+                  <script>
+                    searchRC = STAXResult[0][0]
+                    searchResult = STAXResult[0][1]
+                    resultLength = len(searchResult) > 0
+                  </script>
+                  <message>
+                    '==> REPLICATION CHANGES %s:%s : \n%s\n' % \
+                    (server.getHostname(), server.getPort(), searchResult)
+                  </message>
+                </sequence>
+              </paralleliterate>
+              
+              <!-- Copy backup to new server and restore it -->
+              <call function="'CopyFolderByExtension'">
+                { 'location'   : masterHost,
+                  'remotehost' : server3.getHostname(),
+                  'srcfolder'  : '%s/replication/master_backup_online' \
+                                 % masterDataDir,
+                  'destfolder' : '%s/%s/replication/master_backup_online' \
+                                 % (server3.getDir(),remote.reldatadir),
+                  'extension'  : '*'
+                }
+              </call>
+
+              <message>
+                '+++++ resynchronization add server: restore back-up on %s:%s'\
+                % (server3.getHostname(), server3.getPort())
+              </message>
+              <call function="'restoreTask'">
+                { 'location'       : clientHost,
+                  'dsPath'         : clientPath,
+                  'dsInstanceHost' : server3.getHostname(),
+                  'dsInstancePort' : server3.getPort(),
+                  'dsInstanceDn'   : server3.getRootDn(),
+                  'dsInstancePswd' : server3.getRootPwd(),
+                  'taskID'         : 'restore task - tc3',
+                  'backupDir'      : '%s/%s/replication/master_backup_online' \
+                                     % (server3.getDir(),remote.reldatadir)
+                }
+              </call>
+              
+              <paralleliterate var="server" in="_topologyServerList">
+                <sequence>
+                  <!-- Search for entry add -->
+                  <call function="'ldapSearchWithScript'">
+                    { 'location'         : clientHost,
+                      'dsPath'           : clientPath,
+                      'dsInstanceHost'   : server.getHostname(),
+                      'dsInstancePort'   : server.getPort(),
+                      'dsInstanceDn'     : server.getRootDn(),
+                      'dsInstancePswd'   : server.getRootPwd(),
+                      'dsBaseDN'         : 'dc=replicationChanges',
+                      'dsFilter'         : 'uid=*'
+                    }                
+                  </call>
+                  <script>
+                    searchRC = STAXResult[0][0]
+                    searchResult = STAXResult[0][1]
+                    resultLength = len(searchResult) > 0
+                  </script>
+                  <message>
+                    '==> REPLICATION CHANGES %s:%s : \n%s\n' % \
+                    (server.getHostname(), server.getPort(), searchResult)
+                  </message>
+                </sequence>
+              </paralleliterate>
+                                
+              <!-- Verify the synchronization of the trees among the servers in
+                the topology -->
+              <!-- If the trees don't match, we may have come across Issue 4052
+               (Ghost adds in Replication Server) -->              
+              <call function="'verifyTrees'">
+                [ clientHost, clientPath, master, consumerList, synchroSuffix,
+                  '4052' ]
+              </call>
+              
+              <call function="'testCase_Postamble'"/>
+            </sequence>
+          </testcase>          
+                    
           <import machine="STAF_LOCAL_HOSTNAME"
                   file="'%s/testcases/replication/replication_cleanup.xml' 
                         % (TESTS_DIR)"/>
diff --git a/opends/tests/staf-tests/functional-tests/testcases/tasks/backup_db.xml b/opends/tests/staf-tests/functional-tests/testcases/tasks/backup_db.xml
index 0446d17..06f4d66 100644
--- a/opends/tests/staf-tests/functional-tests/testcases/tasks/backup_db.xml
+++ b/opends/tests/staf-tests/functional-tests/testcases/tasks/backup_db.xml
@@ -510,9 +510,11 @@
               }
             </call>
 
+	    <!---
             <call function="'setKnownIssue'">
               { 'issueId' : '3773' }
             </call>
+	    -->
 
             <call function="'testCase_Postamble'"/>
           </sequence>
diff --git a/opends/tests/staf-tests/shared/ant/build.properties b/opends/tests/staf-tests/shared/ant/build.properties
index 03d9b37..ff7c156 100644
--- a/opends/tests/staf-tests/shared/ant/build.properties
+++ b/opends/tests/staf-tests/shared/ant/build.properties
@@ -62,7 +62,7 @@
 eventmanager.archive=EventManagerV${eventmanager.version}.zip
 http.version=301
 http.archive=HTTPV${http.version}.zip
-tomcat.version=6.0.14
+tomcat.version=6.0.20
 tomcat.url=http://archive.apache.org/dist/tomcat/tomcat-6/v${tomcat.version}/bin
 tomcat.archive=apache-tomcat-${tomcat.version}.zip
 
diff --git a/opends/tests/staf-tests/shared/functions/dsadm.xml b/opends/tests/staf-tests/shared/functions/dsadm.xml
index 8944b44..f813b1c 100755
--- a/opends/tests/staf-tests/shared/functions/dsadm.xml
+++ b/opends/tests/staf-tests/shared/functions/dsadm.xml
@@ -556,7 +556,7 @@
         }
       </call>
       <call function="'Sleep'">
-        { 'sleepForMilliSeconds'  : 3000 }
+        { 'sleepForMilliSeconds'  : 10000 }
       </call>
     </sequence>
   </function>
diff --git a/opends/tests/staf-tests/shared/functions/environment.xml b/opends/tests/staf-tests/shared/functions/environment.xml
index b20db81..854807f 100755
--- a/opends/tests/staf-tests/shared/functions/environment.xml
+++ b/opends/tests/staf-tests/shared/functions/environment.xml
@@ -169,7 +169,10 @@
         CurrentTestPath={}
         DSInfoServersDict={}
         True = 1
-        False = 0     
+        False = 0
+        # threshold set so that functions such as getFile may not cause staf
+        # process to run out of memory (value in bytes)
+        MAX_READABLE_SIZE = 104800
 
         # this function return a well-formatted testcase name
         def getTestCaseName(name):
diff --git a/opends/tests/staf-tests/shared/functions/stafcmd.xml b/opends/tests/staf-tests/shared/functions/stafcmd.xml
index c38c782..ad0fae9 100755
--- a/opends/tests/staf-tests/shared/functions/stafcmd.xml
+++ b/opends/tests/staf-tests/shared/functions/stafcmd.xml
@@ -616,7 +616,11 @@
         <service>'fs'</service>
         <request>'GET ENTRY %s %s' % (entry,attribute)</request>
       </stafcmd>
-
+      <script>
+        cmdRC=RC
+        cmdResult=STAFResult
+      </script>
+      <return>[cmdRC,cmdResult]</return>
     </sequence>
 
   </function>
diff --git a/opends/tests/staf-tests/shared/functions/tools.xml b/opends/tests/staf-tests/shared/functions/tools.xml
index 3381db4..b29895b 100755
--- a/opends/tests/staf-tests/shared/functions/tools.xml
+++ b/opends/tests/staf-tests/shared/functions/tools.xml
@@ -418,22 +418,78 @@
         </envs>
         <console use="'same'"/>
         <stderr mode="'stdout'"/>
-        <returnstdout/>          
-        <returnfile>outputLdif</returnfile>
+        <returnstdout/>
       </process>
     
       <script>
         STAXCode=RC
-        STAXReason=STAXResult
       </script>
-      <script>
-        diffsInfo = STAXReason[1]
-        diffs = diffsInfo[1]           
-        if (diffsInfo[0] == 0) and (diffs.startswith("# No differences were detected between the source and target LDIF files")) :
-          diffRC = 0
-        else:
-          diffRC = 1
-      </script>      
+      <if expr="STAXCode == 0">
+        <sequence>
+          <!-- Check the size of the diff file, and avoid reading its
+               content with getFile if the file is too big to prevent
+               the staf process from running out of memory -->
+          <call function="'GetEntry'">
+            {
+            'location'  : location,
+            'entry'     : outputLdif,
+            'attribute' : 'SIZE'
+            }
+          </call>
+          <script>
+            # GetEntry returns: STAXResult = [cmdRC, cmdResult]
+            if RC == 0:
+              diffsFileSize = int(STAXResult[1]['lowerSize'])
+              msg = 'File: %s   Size (bytes): %s' % (outputLdif, diffsFileSize)
+            else:
+              diffsFileSize = MAX_READABLE_SIZE
+              msg = 'Could not retrieve the size of file %s' % outputLdif
+          </script>
+          <message log="1"> 'LdifDiffWithScript: %s' % msg </message>
+          <if expr="diffsFileSize &lt; MAX_READABLE_SIZE">
+            <sequence>                                          
+              <call function="'getFile'">
+                { 'location' : location,
+                  'filename' : outputLdif
+                }                
+              </call>
+              <script>
+                # getFile returns: STAXResult = [cmdRC, cmdResult]
+                diffsFileContent = STAXResult[1]
+                
+                if diffsFileContent.startswith("# No differences were detected between the source and target LDIF files") :
+                  diffRC = 0
+                else:
+                  diffRC = 1
+              </script>
+            </sequence>
+            <else>
+              <script>
+                # diffs file to big to be read
+                diffsFileContent = 'File too big to be read.'
+                
+                # if the diff file is too big, it means that there ARE
+                # actually some diffs, so we may deduce diffRC = 1
+                diffRC = 1
+              </script>
+            </else>
+          </if>
+        </sequence>
+      </if>
+
+      <if expr="diffRC == 0">
+        <message log="1">
+          'NO DIFFERENCES were detected between the source and the target \
+          LDIF files.'
+        </message>
+        <else>
+          <message log="1" level="'Error'">
+            'Source and target LDIF files are DIFFERENT: \n\n%s' % \
+            diffsFileContent
+          </message>
+        </else>
+      </if>
+
       <return> diffRC </return>
     </sequence>
   </function>
@@ -620,19 +676,18 @@
         'Verify tree %s taking %s as reference.' \
         % (treeSuffix, referenceServerPath)
       </message>
-      <!-- Retrieve the tree from the reference server -->
-      <call function="'ldapSearchWithScript'">
-        { 'location'       : location,
-          'dsPath'         : dsPath,
-          'dsInstanceHost' : referenceServer.getHostname(),
-          'dsInstancePort' : referenceServer.getPort(),
-          'dsInstanceDn'   : referenceServer.getRootDn(),
-          'dsInstancePswd' : referenceServer.getRootPwd(),
-          'dsBaseDN'       : treeSuffix,
-          'dsFilter'       : 'objectclass=*',
-          'outputFile'     : referenceTree
+      <!-- Retrieve the tree from the reference server -->      
+      <call function="'exportLdif'">
+        { 'location'            : location,
+          'dsPath'              : dsPath,
+          'dsInstanceHost'      : referenceServer.getHostname(),
+          'dsInstanceAdminPort' : referenceServer.getAdminPort(),
+          'dsInstanceDn'        : referenceServer.getRootDn(),
+          'dsInstancePswd'      : referenceServer.getRootPwd(),
+          'ldifFile'            : '%s/../%s' % (dsPath, referenceTree)
         }
       </call>
+            
       <if expr="RC != 0">
         <!-- If the reference tree could not be retrieved, return an error -->
         <return> [1, None] </return>
@@ -640,21 +695,43 @@
       <iterate var="server" in="serverList">
         <sequence>
           <!-- Retrieve the same tree for every other server in the list -->
-          <call function="'ldapSearchWithScript'">
-            { 'location'       : location,
-              'dsPath'         : dsPath,
-              'dsInstanceHost' : server.getHostname(),
-              'dsInstancePort' : server.getPort(),
-              'dsInstanceDn'   : server.getRootDn(),
-              'dsInstancePswd' : server.getRootPwd(),
-              'dsBaseDN'       : treeSuffix,
-              'dsFilter'       : 'objectclass=*',
-              'outputFile'     : sampleTree,
-              'logStderr'      : False
+          <if expr="server.getHostname() == location">
+            <script>
+              filePath = dsPath
+              isSameLocation = True
+            </script>
+            <else>
+              <script>
+                filePath = '%s/%s' % (server.getDir(), OPENDSNAME)
+                isSameLocation = False
+              </script>
+            </else>
+          </if>
+          <call function="'exportLdif'">
+            { 'location'            : location,
+              'dsPath'              : dsPath,
+              'dsInstanceHost'      : server.getHostname(),
+              'dsInstanceAdminPort' : server.getAdminPort(),
+              'dsInstanceDn'        : server.getRootDn(),
+              'dsInstancePswd'      : server.getRootPwd(),
+              'ldifFile'            : '%s/../%s' % (filePath, sampleTree)
             }
           </call>
+          
           <if expr="RC == 0">
             <sequence>
+              
+              <if expr="not isSameLocation">                
+                <!-- Copy sample tree file to reference server -->  
+                <call function="'copyFile'">
+                  { 'location'   : server.getHostname(),
+                    'remotehost' : location,
+                    'srcfile'    : '%s/../%s' % (filePath, sampleTree),
+                    'destfile'   : '%s/../%s' % (dsPath, sampleTree)
+                  }
+                </call>
+              </if>
+              
               <!-- Compare this tree to the reference one -->
               <call function="'LdifDiffWithScript'">
                 { 'location'   : location,
@@ -664,11 +741,19 @@
                   'outputLdif' : '%s/../%s' % (dsPath, treeDiffs)
                 }
               </call>
-              <script>
-                if STAXResult != 0 :
-                  failedServers.append('%s:%s' % \
-                                       (server.getHostname(), server.getPort()))
-              </script>
+              <if expr="STAXResult != 0">
+                <sequence>
+                  <script>            
+                    failedServers.append('%s:%s' % \
+                                         (server.getHostname(), server.getPort()))
+                  </script>
+                  <message log="1" level="'Error'">
+                    'Tree is DIFFERENT for %s:%s compared to %s:%s' % \
+                    (server.getHostname(), server.getPort(), 
+                     referenceServer.getHostname(), referenceServer.getPort())
+                  </message>
+                </sequence>
+              </if>
             </sequence>
             <else>
               <script>
@@ -1795,6 +1880,171 @@
       </return>
     </sequence>
   </function>
+
+
   
+  <function name="verifyReplication">
+    <function-prolog>
+      This function verifies that replication is working, that is, the updates
+      done on any of the servers in the topology are being pushed to the other
+      servers.
+    </function-prolog>
+    <function-list-args>
+      <function-arg-def name="serverList" type="required">
+        <function-arg-description>
+          List of the servers to verify against the referenceServer.
+        </function-arg-description>
+        <function-arg-property name="type" value="Server-list"/>
+      </function-arg-def>
+      
+      <function-arg-def name="replicatedSuffix" type="required">
+        <function-arg-description>
+          Suffix of the tree to verify.
+        </function-arg-description>
+        <function-arg-property name="type" value="DN"/>
+      </function-arg-def>
+
+      <function-arg-def name="knownIssue" type="optional" default="None">
+        <function-arg-description>
+          Known issue. Corresponds to an issue number.
+        </function-arg-description>
+        <function-arg-property name="type" value="string" />
+      </function-arg-def>
+
+    </function-list-args>
+    <sequence>
+
+      <message>
+        'verifyReplication: Verify updates on the suffix %s are being \
+        replicated.' % replicatedSuffix
+      </message>
+      
+      <iterate var="server" in="serverList" indexvar="i">
+        <sequence>
+                    
+          <script>
+            serverHost = server.getHostname()
+            serverPath = '%s/%s' % (server.getDir(), OPENDSNAME)            
+            otherServersList = serverList[:i] + serverList[i+1:]
+            entryDn = 'uid=testentry-%s, %s' % (i, replicatedSuffix)
+            
+            myRC = 0
+            myKnownIssue = knownIssue
+            failedServers = STAXGlobal( [] )
+            failingServerList = ''            
+          </script>
+                                        
+          <!-- Add entry to one of the other servers -->
+          <script>
+            listAttr = []
+            listAttr.append('objectclass:top')
+            listAttr.append('objectclass:organizationalperson')
+            listAttr.append('objectclass:inetorgperson')
+            listAttr.append('objectclass:person')
+            listAttr.append('givenname:Test-%s' % i)
+            listAttr.append('sn:Entry-%s' % i)
+            listAttr.append('cn:Test Entry - %s' % i)
+          </script>
+          
+          <message>
+            'verifyReplication: Add entry %s to server %s:%s' % \
+            (entryDn, serverHost, server.getPort())
+          </message>
+          
+          <call function="'addAnEntry'">
+            { 'location'       : serverHost,
+              'dsPath'         : serverPath,
+              'dsInstanceHost' : serverHost,
+              'dsInstancePort' : server.getPort(),
+              'dsInstanceDn'   : server.getRootDn(),
+              'dsInstancePswd' : server.getRootPwd(),
+              'DNToAdd'        : entryDn,
+              'listAttributes' : listAttr
+            }
+          </call>
+
+          <call function="'Sleep'">
+            { 'sleepForMilliSeconds'  : 2000 }
+          </call>                                      
+
+          <!-- Check the update has been propagated -->
+          <paralleliterate var="otherServer" in="otherServersList">
+            <sequence>
+              <call function="'ldapSearchWithScript'">
+                { 'location'       : otherServer.getHostname(),
+                  'dsPath'         : '%s/%s' \
+                                     % (otherServer.getDir(), OPENDSNAME),
+                  'dsInstanceHost' : otherServer.getHostname(),
+                  'dsInstancePort' : otherServer.getPort(),
+                  'dsInstanceDn'   : otherServer.getRootDn(),
+                  'dsInstancePswd' : otherServer.getRootPwd(),
+                  'dsBaseDN'       : entryDn,
+                  'dsFilter'       : 'objectclass=*',
+                  'dsAttributes'   : 'employeeNumber',
+                  'logStderr'      : False
+                }                
+              </call>                
+              <script>
+                searchRC = STAXResult[0][0]
+                searchResult = STAXResult[0][1]
+                resultLength = len(searchResult) > 0
+              </script>
+              <if expr="resultLength != 0">
+                <sequence>
+                  <message>
+                    '+++++++++++ LDAPSEARCH RESULT for %s:%s ++++++++\n%s' \
+                    % (otherServer.getHostname(), otherServer.getPort(), 
+                       searchResult)
+                  </message>
+                </sequence>
+              <else>
+                <sequence>
+                  <message>
+                    'verifyReplication: Entry %s NOT found in server %s:%s' % \
+                    (entryDn, otherServer.getHostname(), otherServer.getPort())
+                  </message>
+                  <script>
+                    failedServers.append('%s:%s' % \
+                             (otherServer.getHostname(), otherServer.getPort()))                    
+                  </script>
+                </sequence>                  
+              </else>
+              </if>
+            </sequence>                  
+          </paralleliterate>
+              
+          <if expr="len(failedServers) > 0">
+            <!-- If at least one server failed to receive the update return an 
+             !   error, along with the list of the servers that failed to do so 
+            --> 
+            <script>
+              myRC = 1
+              comma = ','  
+              failingServerList = \
+                'List of non-synchronized servers (replication verify FAILED \
+                for entry %s): %s ' % (entryDn, comma.join(failedServers))
+            </script>
+            <else>
+              <message>
+                'All servers synchronized (replication verify SUCCEEDED for \
+                entry %s)' % entryDn
+              </message>
+            </else>
+          </if>
+          <call function="'checktestRC'">
+            { 'returncode' : myRC,
+              'result'     : failingServerList,
+              'expected'   : 0,
+              'issue'      : myKnownIssue
+            }
+          </call>                              
+      
+        </sequence>                  
+      </iterate>      
+      
+    </sequence>
+  </function>
+      
+    
 </stax>
 
diff --git a/opends/tests/staf-tests/shared/functions/topology.xml b/opends/tests/staf-tests/shared/functions/topology.xml
index 8d77d94..857c187 100755
--- a/opends/tests/staf-tests/shared/functions/topology.xml
+++ b/opends/tests/staf-tests/shared/functions/topology.xml
@@ -2545,5 +2545,220 @@
      </sequence>
 
   </function>
-     
+
+
+  <!-- Get replication status using dsreplication, and check for missing changes
+       or inconsistencies in the number of entries across the topology -->
+  <function name="getReplicationStatus">
+    <function-prolog>
+      This function gets the replication status of a topology using
+      dsreplication.
+    </function-prolog>
+    <function-map-args>
+      <function-arg-def name="location"
+                        type="optional"
+                        default="STAF_REMOTE_HOSTNAME">
+        <function-arg-description>
+          Location of target host
+        </function-arg-description>
+        <function-arg-property name="type" value="hostname" />
+      </function-arg-def>
+      
+      <function-arg-def name="dsPath"
+                        type="optional"
+                        default="'%s/%s' % (DIRECTORY_INSTANCE_BIN,OPENDSNAME)">
+        <function-arg-description>
+          Pathname to installation root
+        </function-arg-description>
+        <function-arg-property name="type" value="filepath" />
+      </function-arg-def>
+      
+      <function-arg-def name="dsInstanceHost"
+                        type="optional"
+                        default="None">
+        <function-arg-description>
+          Directory server hostname or IP address
+        </function-arg-description>
+        <function-arg-property name="type" value="hostname" />
+      </function-arg-def>
+      
+      <function-arg-def name="dsInstanceAdminPort" 
+                        type="optional"
+                        default="None">
+        <function-arg-description>
+          Directory server admin port number
+        </function-arg-description>
+        <function-arg-property name="type" value="Port number" />
+      </function-arg-def>
+
+
+                                    
+      <function-arg-def name="replicationDnList" type="required">
+        <function-arg-description>
+          DN of the replicated suffix
+        </function-arg-description>
+        <function-arg-property name="type" value="DN list" />
+      </function-arg-def>        
+        
+      <function-arg-def name="adminUID" 
+                                   type="optional"
+                                   default="AdminUID">
+        <function-arg-description>
+          Global Administrator UID
+        </function-arg-description>
+        <function-arg-property name="type" value="UID" />
+      </function-arg-def>
+      
+      <function-arg-def name="adminPswd" 
+                                   type="optional"
+                                   default="AdminPswd">
+        <function-arg-description>
+          Global Administrator password
+        </function-arg-description>
+        <function-arg-property name="type" value="string" />
+      </function-arg-def>        
+      
+      <function-arg-def name="expectedRC" type="optional" default="0">
+        <function-arg-description>
+        Expected return code value. Default value is 0
+        </function-arg-description>
+        <function-arg-property name="type" value="string" />
+      </function-arg-def>
+    </function-map-args>
+    <sequence>
+      <message>
+        'Getting replication status from server %s:%s' \
+         % (dsInstanceHost,dsInstanceAdminPort)
+      </message>                
+        
+      <!-- Local variables -->
+      <script>
+        STAFCmdParams=''
+        STAFCmd=''
+        
+        if dsPath:
+          dsBinPath='%s/%s' % (dsPath,fileFolder)
+          STAFCmd='%s/%s%s' % (dsBinPath,DSREPLICATION,fileExt)
+        
+        STAFCmdParamsList=[]
+          
+        STAFCmdParamsList.append('status')          
+        STAFCmdParamsList.append('-n')
+        STAFCmdParamsList.append('-X')
+        # option for getting status in script-friendly format
+        STAFCmdParamsList.append('-s')
+          
+        if dsInstanceHost:
+          STAFCmdParamsList.append('-h %s' % dsInstanceHost)
+      
+        if dsInstanceAdminPort:
+          STAFCmdParamsList.append('-p %s' % dsInstanceAdminPort)
+                
+        if replicationDnList:
+          for dn in replicationDnList:
+            STAFCmdParamsList.append('-b "%s"' % dn)
+                    
+        if adminUID:
+          STAFCmdParamsList.append('-I "%s"' % adminUID)
+      
+        if adminPswd:
+          STAFCmdParamsList.append('-w "%s"' % adminPswd)          
+                    
+        STAFCmdParams=' '.join(STAFCmdParamsList)
+      </script>
+      <call function="'runCommand'">
+        { 'name'      : 'Get Replication Status',
+          'location'  : location,
+          'command'   : STAFCmd,
+          'arguments' : STAFCmdParams
+        }
+      </call>
+
+      <script>
+        commandRC = RC
+        commandResult = STAXResult
+      </script>
+      <call function="'checktestRC'">
+        { 'returncode' : commandRC,
+          'result'     : commandResult,
+          'expected'   : expectedRC
+        }
+      </call>
+      
+      <script>
+        replStatusRC = commandResult[0][0]
+        replStatusResult = commandResult[0][1]
+        resultLength = len(replStatusResult) > 0
+      </script>
+      
+      <if expr="(replStatusRC == 0) and (resultLength != 0)">
+        <sequence>
+          <message>
+            'getReplicationStatus: Replication status retrieved from server \
+            %s:%s : \n%s ' % \
+            (dsInstanceHost, dsInstanceAdminPort, replStatusResult)
+          </message>
+          <script>
+            serverList = []
+            entriesList = []
+            missingChangesList = []
+            ageList = []
+            
+            for line in replStatusResult.splitlines():
+              if line.startswith('Server:'):
+                server = line[line.find('Server:') + 7:].strip()
+                serverList.append(server)
+              elif line.startswith('Entries:'):
+                entries = line[line.find('Entries:') + 8:].strip()
+                entriesList.append(entries)
+              elif line.startswith('Missing Changes:'):
+                missingChanges = line[line.find('Missing') + 16:].strip()
+                missingChangesList.append(missingChanges)
+              elif line.startswith('Age of oldest missing change:'):
+                age = line[line.find('Age of') + 29:].strip()
+                ageList.append(age)
+            
+            refNbOfEntries = entriesList[0]
+          </script>
+          
+          <iterate var="server" in="serverList" indexvar="i">
+            <sequence>
+              <script>
+                entries = entriesList[i]
+                missingChanges = missingChangesList[i]
+                age = ageList[i]
+              </script>
+              <if expr="(missingChanges != '0') or (age != 'N/A')">
+                <sequence>
+                  <message log="1" level="'Error'">
+                    'getReplicationStatus: Server %s is missing %s changes. \
+                    Entries: %s - Age of the oldest missing change: %s ' % \
+                    (server, missingChanges, entries, age)
+                  </message>
+                  <tcstatus result="'fail'"/>
+                </sequence>
+              </if>
+              <if expr="entries != refNbOfEntries">
+                <sequence>
+                  <message log="1" level="'Error'">
+                    'getReplicationStatus: Different number of entries.\n\
+                      Server %s : %s entries\n\
+                      Reference server %s : %s entries\n' % \
+                    (server, entries, serverList[0], refNbOfEntries)
+                  </message>
+                  <tcstatus result="'fail'"/>
+                </sequence>
+              </if>
+            </sequence>
+          </iterate>
+      
+        </sequence>
+      </if>      
+
+      <return>
+        commandResult
+      </return>
+    </sequence>
+  </function>
+
 </stax>
diff --git a/opends/tests/staf-tests/shared/functions/utils.xml b/opends/tests/staf-tests/shared/functions/utils.xml
index 3e214fa..7064349 100755
--- a/opends/tests/staf-tests/shared/functions/utils.xml
+++ b/opends/tests/staf-tests/shared/functions/utils.xml
@@ -284,7 +284,7 @@
       <if expr='re.search(searchre, returnString) != None'>
         <sequence>
           <message log="1">
-            'SUCCESS :  Found substring, %s, in the return string' \
+            'Found substring, %s, in the return string' \
             % (expectedString)
           </message>
           <script>
@@ -294,8 +294,8 @@
         </sequence>
         <else>
           <sequence>
-            <message log="1" level="'Error'">
-              'ERROR : Did not find substring, %s, in the return string, %s' \
+            <message log="1">
+              'Did not find substring, %s, in the return string, %s' \
               % (expectedString, returnString)
             </message>
             <script>
@@ -309,16 +309,26 @@
       <!-- Manage expectedRC and knownIssue -->
       <if expr="expectedRC != 'noCheck'">
           <if expr="myRC == expectedRC">
-            <tcstatus result="'pass'"/>
+            <sequence>
+              <message log="1">
+                'SUCCESS: searchString successful'
+              </message>
+              <tcstatus result="'pass'"/>
+            </sequence>
             <else>
-              <if expr="knownIssue == None">
-                <tcstatus result="'fail'"/>
-                <else>
-                  <call function="'setKnownIssue'">
-                    { 'issueId' : knownIssue }
-                  </call>
-                </else>
-              </if>
+              <sequence>
+                <message log="1" level="'Error'">
+                  'ERROR: searchString fail'
+                </message>
+                <if expr="knownIssue == None">
+                  <tcstatus result="'fail'"/>
+                  <else>
+                    <call function="'setKnownIssue'">
+                      { 'issueId' : knownIssue }
+                    </call>
+                  </else>
+                </if>
+              </sequence>
             </else>
           </if>
       </if>
diff --git a/opends/tests/staf-tests/shared/topology/3server_topology.txt b/opends/tests/staf-tests/shared/topology/3server_topology.txt
index bf31334..2226df4 100644
--- a/opends/tests/staf-tests/shared/topology/3server_topology.txt
+++ b/opends/tests/staf-tests/shared/topology/3server_topology.txt
@@ -32,9 +32,9 @@
 RootDn: cn=directory manager
 RootPwd: secret12
 BaseDn: o=example
-Changelogport: 11111
+Changelogport: 11112
 SynchronizedSuffix: o=example
-ChangelogServer: ${remote.hostname}:11111
+ChangelogServer: ${remote.hostname}:11112
 ChangelogServer: ${remote.hostname}:22222
 ChangelogServer: ${remote.hostname}:33333
 
@@ -49,7 +49,7 @@
 BaseDn: o=example
 Changelogport: 22222
 SynchronizedSuffix: o=example
-ChangelogServer: ${remote.hostname}:11111
+ChangelogServer: ${remote.hostname}:11112
 ChangelogServer: ${remote.hostname}:22222
 ChangelogServer: ${remote.hostname}:33333
 
@@ -64,6 +64,6 @@
 BaseDn: o=example
 Changelogport: 33333
 SynchronizedSuffix: o=example
-ChangelogServer: ${remote.hostname}:11111
+ChangelogServer: ${remote.hostname}:11112
 ChangelogServer: ${remote.hostname}:22222
 ChangelogServer: ${remote.hostname}:33333
diff --git a/opends/tests/staf-tests/shared/topology/basic_topology.txt b/opends/tests/staf-tests/shared/topology/basic_topology.txt
index 5618650..a50ffdc 100644
--- a/opends/tests/staf-tests/shared/topology/basic_topology.txt
+++ b/opends/tests/staf-tests/shared/topology/basic_topology.txt
@@ -32,9 +32,9 @@
 RootDn: cn=directory manager
 RootPwd: secret12
 BaseDn: o=example
-Changelogport: 11111
+Changelogport: 11112
 SynchronizedSuffix: o=example
-ChangelogServer: ${remote.hostname}:11111
+ChangelogServer: ${remote.hostname}:11112
 ChangelogServer: ${remote.hostname}:22222
 
 Hostname: ${remote.hostname}
@@ -48,5 +48,5 @@
 BaseDn: o=example
 Changelogport: 22222
 SynchronizedSuffix: o=example
-ChangelogServer: ${remote.hostname}:11111
+ChangelogServer: ${remote.hostname}:11112
 ChangelogServer: ${remote.hostname}:22222
diff --git a/opends/tests/staf-tests/shared/xsl/gen-suites-report.xsl b/opends/tests/staf-tests/shared/xsl/gen-suites-report.xsl
index c88601c..6862d93 100644
--- a/opends/tests/staf-tests/shared/xsl/gen-suites-report.xsl
+++ b/opends/tests/staf-tests/shared/xsl/gen-suites-report.xsl
@@ -58,7 +58,6 @@
   <xsl:param name="tests-type"/>
 
   <!--- Test Suites Report Header Variables -->
-  <xsl:variable name="ft"             select="qa/$tests-type"/>
   <xsl:variable name="id"             select="identification"/>
   <xsl:variable name="sut"            select="$id/sut"/>
   <xsl:variable name="mailto"         select="normalize-space($id/mailto)"/>
diff --git a/opends/tests/staf-tests/stress-tests/testcases/import_ldif/import_ldif.xml b/opends/tests/staf-tests/stress-tests/testcases/import_ldif/import_ldif.xml
index 91c2cae..a8dd19d 100755
--- a/opends/tests/staf-tests/stress-tests/testcases/import_ldif/import_ldif.xml
+++ b/opends/tests/staf-tests/stress-tests/testcases/import_ldif/import_ldif.xml
@@ -58,7 +58,7 @@
             testList = []
             testList.append('import_ldif_bin_attr')
             testList.append('import_ldif_bin_attr_1m')
-            testList.append('import_ldif_bin_attr_5m')
+            #testList.append('import_ldif_bin_attr_3m')
             #testList.append('import_ldif_large_import_buffer')
             #testList.append('import_ldif_many_thrds')
             #testList.append('import_ldif_low_index_entry_limit')
diff --git a/opends/tests/staf-tests/stress-tests/testcases/import_ldif/import_ldif_bin_attr.xml b/opends/tests/staf-tests/stress-tests/testcases/import_ldif/import_ldif_bin_attr.xml
index 6446899..131f1aa 100755
--- a/opends/tests/staf-tests/stress-tests/testcases/import_ldif/import_ldif_bin_attr.xml
+++ b/opends/tests/staf-tests/stress-tests/testcases/import_ldif/import_ldif_bin_attr.xml
@@ -187,7 +187,7 @@
                   'noOfMilliSeconds' : 5000
                   }
                 </call> 
-        
+
                 <call function="'testCase_Postamble'"/>
     
               </sequence>
@@ -203,17 +203,17 @@
 
                 <call function="'checkImport'">
                   {
-                  'expectedEntries' : ['uid=user.100000,ou=People,dc=com' ,
-                                      'uid=user.110000,ou=People,dc=com' ,
-                                      'uid=user.120000,ou=People,dc=com' ,
-                                      'uid=user.130000,ou=People,dc=com' ,
-                                      'uid=user.140000,ou=People,dc=com' ,
-                                      'uid=user.150000,ou=People,dc=com' ,
-                                      'uid=user.160000,ou=People,dc=com' ,
-                                      'uid=user.170000,ou=People,dc=com' ,
-                                      'uid=user.180000,ou=People,dc=com' ,
-                                      'uid=user.190000,ou=People,dc=com' ,
-                                      'uid=user.199999,ou=People,dc=com'] ,
+                  'expectedEntries' : ['uid=user.1,ou=People,dc=com' ,
+                                      'uid=user.10000,ou=People,dc=com' ,
+                                      'uid=user.20000,ou=People,dc=com' ,
+                                      'uid=user.30000,ou=People,dc=com' ,
+                                      'uid=user.40000,ou=People,dc=com' ,
+                                      'uid=user.50000,ou=People,dc=com' ,
+                                      'uid=user.60000,ou=People,dc=com' ,
+                                      'uid=user.70000,ou=People,dc=com' ,
+                                      'uid=user.80000,ou=People,dc=com' ,
+                                      'uid=user.90000,ou=People,dc=com' ,
+                                      'uid=user.99999,ou=People,dc=com'] ,
                   'startDS'         : 'no'
                   }
                 </call>
@@ -221,45 +221,36 @@
                 <!--<call function="'setKnownIssue'">
                     { 'issueId' : '2535' }
                 </call>-->
-                
+
+                <message>
+                  'ldclt_compare: Delete ldif and template files'
+                </message>
+
+                <call function="'deleteFile'">
+                  {
+                  'location' : STAF_REMOTE_HOSTNAME,
+                  'filename' : ldifFile
+                  }
+                </call>
+
+                <call function="'deleteFile'">
+                  {
+                  'location' : STAF_REMOTE_HOSTNAME,
+                  'filename' : ldifTemplate
+                  }
+                </call>
+
                 <call function="'testCase_Postamble'"/>
     
               </sequence>
           </testcase>
 
-          <testcase name="getTestCaseName('Postamble')">
-
-            <sequence>
-
-              <call function="'testCase_Preamble'"/>
-
-              <message>
-                'ldclt_compare: Delete ldif and template files'
-              </message>
-
-              <call function="'deleteFile'">
-                {
-                'location' : STAF_REMOTE_HOSTNAME,
-                'filename' : ldifFile
-                }
-              </call>
-
-              <call function="'deleteFile'">
-                {
-                'location' : STAF_REMOTE_HOSTNAME,
-                'filename' : ldifTemplate
-                }
-              </call>
-
-              <call function="'testCase_Postamble'"/>
-
-            </sequence>
-
-          </testcase>
 
           <import machine="STAF_LOCAL_HOSTNAME"
             file="'%s/testcases/import_ldif/import_ldif_cleanup.xml' % (TESTS_DIR)"/>
-          <call function="'import_ldif_cleanup'" />
+          <call function="'import_ldif_cleanup'">
+            { 'suiteSuffix' : 'import' }
+          </call>
               
           <call function="'testSuite_Postamble'"/>
             
diff --git a/opends/tests/staf-tests/stress-tests/testcases/import_ldif/import_ldif_bin_attr_1m.xml b/opends/tests/staf-tests/stress-tests/testcases/import_ldif/import_ldif_bin_attr_1m.xml
index d1a5b08..d2e04a5 100644
--- a/opends/tests/staf-tests/stress-tests/testcases/import_ldif/import_ldif_bin_attr_1m.xml
+++ b/opends/tests/staf-tests/stress-tests/testcases/import_ldif/import_ldif_bin_attr_1m.xml
@@ -219,7 +219,7 @@
                   'noOfMilliSeconds' : 5000
                   }
                 </call>      
-        
+
                 <call function="'testCase_Postamble'"/>
     
               </sequence>
@@ -253,46 +253,37 @@
                 <!--<call function="'setKnownIssue'">
                     { 'issueId' : '2535' }
                 </call>-->
-                
+
+                <message>
+                  'ldclt_compare: Delete ldif and template files'
+                </message>
+
+                <call function="'deleteFile'">
+                  {
+                  'location' : STAF_REMOTE_HOSTNAME,
+                  'filename' : ldifFile
+                  }
+                </call>
+
+                <call function="'deleteFile'">
+                  {
+                  'location' : STAF_REMOTE_HOSTNAME,
+                  'filename' : ldifTemplate
+                  }
+                </call>
+
                 <call function="'testCase_Postamble'"/>
     
               </sequence>
           </testcase>
 
-          <testcase name="getTestCaseName('Postamble')">
-
-            <sequence>
-
-              <call function="'testCase_Preamble'"/>
-
-              <message>
-                'ldclt_compare: Delete ldif and template files'
-              </message>
-
-              <call function="'deleteFile'">
-                {
-                'location' : STAF_REMOTE_HOSTNAME,
-                'filename' : ldifFile
-                }
-              </call>
-
-              <call function="'deleteFile'">
-                {
-                'location' : STAF_REMOTE_HOSTNAME,
-                'filename' : ldifTemplate
-                }
-              </call>
-
-              <call function="'testCase_Postamble'"/>
-
-            </sequence>
-
-          </testcase>
 
           <import machine="STAF_LOCAL_HOSTNAME"
             file="'%s/testcases/import_ldif/import_ldif_cleanup.xml' % (TESTS_DIR)"/>
-          <call function="'import_ldif_cleanup'" />
-          
+          <call function="'import_ldif_cleanup'">
+            { 'suiteSuffix' : 'import_1m' }
+          </call>
+
           <call function="'testSuite_Postamble'"/>
             
         </sequence>
diff --git a/opends/tests/staf-tests/stress-tests/testcases/import_ldif/import_ldif_bin_attr_3m.xml b/opends/tests/staf-tests/stress-tests/testcases/import_ldif/import_ldif_bin_attr_3m.xml
index bf08f73..f22051b 100644
--- a/opends/tests/staf-tests/stress-tests/testcases/import_ldif/import_ldif_bin_attr_3m.xml
+++ b/opends/tests/staf-tests/stress-tests/testcases/import_ldif/import_ldif_bin_attr_3m.xml
@@ -27,13 +27,13 @@
  ! -->
 <stax>
 
-  <defaultcall function="import_ldif_bin_attr_5m"/>
+  <defaultcall function="import_ldif_bin_attr_3m"/>
 
-  <function name="import_ldif_bin_attr_5m">
+  <function name="import_ldif_bin_attr_3m">
 
     <sequence>
 
-      <block name="'bin-attr_5m'">
+      <block name="'bin-attr_3m'">
       
         <sequence>
   
@@ -219,7 +219,7 @@
                   'noOfMilliSeconds' : 5000
                   }
                 </call> 
-        
+
                 <call function="'testCase_Postamble'"/>
     
               </sequence>
@@ -253,46 +253,37 @@
                 <!--<call function="'setKnownIssue'">
                     { 'issueId' : '2535' }
                 </call>-->
-                
+
+                <message>
+                  'ldclt_compare: Delete ldif and template files'
+                </message>
+
+                <call function="'deleteFile'">
+                  {
+                  'location' : STAF_REMOTE_HOSTNAME,
+                  'filename' : ldifFile
+                  }
+                </call>
+
+                <call function="'deleteFile'">
+                  {
+                  'location' : STAF_REMOTE_HOSTNAME,
+                  'filename' : ldifTemplate
+                  }
+                </call>
+
                 <call function="'testCase_Postamble'"/>
     
               </sequence>
           </testcase>
 
-          <testcase name="getTestCaseName('Postamble')">
-
-            <sequence>
-
-              <call function="'testCase_Preamble'"/>
-
-              <message>
-                'ldclt_compare: Delete ldif and template files'
-              </message>
-
-              <call function="'deleteFile'">
-                {
-                'location' : STAF_REMOTE_HOSTNAME,
-                'filename' : ldifFile
-                }
-              </call>
-
-              <call function="'deleteFile'">
-                {
-                'location' : STAF_REMOTE_HOSTNAME,
-                'filename' : ldifTemplate
-                }
-              </call>
-
-              <call function="'testCase_Postamble'"/>
-
-            </sequence>
-
-          </testcase>
 
           <import machine="STAF_LOCAL_HOSTNAME"
             file="'%s/testcases/import_ldif/import_ldif_cleanup.xml' % (TESTS_DIR)"/>
-          <call function="'import_ldif_cleanup'" />
-         
+          <call function="'import_ldif_cleanup'">
+            { 'suiteSuffix' : 'import_3m' }
+          </call>
+
           <call function="'testSuite_Postamble'"/>
             
         </sequence>
diff --git a/opends/tests/staf-tests/stress-tests/testcases/import_ldif/import_ldif_cleanup.xml b/opends/tests/staf-tests/stress-tests/testcases/import_ldif/import_ldif_cleanup.xml
index 0d4317b..7358766 100755
--- a/opends/tests/staf-tests/stress-tests/testcases/import_ldif/import_ldif_cleanup.xml
+++ b/opends/tests/staf-tests/stress-tests/testcases/import_ldif/import_ldif_cleanup.xml
@@ -30,6 +30,14 @@
   <defaultcall function="import_ldif_cleanup"/>
 
   <function name="import_ldif_cleanup">
+    <function-map-args>
+      <function-arg-def name="suiteSuffix" type="required">
+        <function-arg-description>
+          Suite suffix
+        </function-arg-description>
+        <function-arg-property name="type" value="boolean"/>
+      </function-arg-def>
+    </function-map-args>
 
     <sequence>
 
@@ -57,7 +65,41 @@
             </sequence>
 
           </block>
-        
+
+          <!--- Save access and errors logs -->
+          <block name="'Save Logs'">
+
+            <sequence>
+
+              <message>
+                'Copy %s/%s/logs/errors from %s to %s/errors_%s on %s' \
+                % (DIRECTORY_INSTANCE_DIR,OPENDSNAME,STAF_REMOTE_HOSTNAME,logs.sut,suiteSuffix,STAXServiceMachine)
+              </message>
+              <call function="'copyFile'">
+                {
+                'location'   : STAF_REMOTE_HOSTNAME ,
+                'srcfile'    : '%s/%s/logs/errors' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME) ,
+                'destfile'   : '%s/errors_%s' % (logs.sut,suiteSuffix) ,
+                'remotehost' : STAXServiceMachine
+                }
+              </call>
+              <message>
+                'Copy %s/%s/logs/access from %s to %s/access_%s on %s' \
+                % (DIRECTORY_INSTANCE_DIR,OPENDSNAME,STAF_REMOTE_HOSTNAME,logs.sut,suiteSuffix,STAXServiceMachine)
+              </message>
+              <call function="'copyFile'">
+                {
+                'location'   : STAF_REMOTE_HOSTNAME ,
+                'srcfile'    : '%s/%s/logs/access' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME) ,
+                'destfile'   : '%s/access_%s' % (logs.sut,suiteSuffix) ,
+                'remotehost' : STAXServiceMachine
+                }
+              </call>
+
+            </sequence>
+
+          </block>
+
           <!-- Remove  the topology created for the test suite -->
           <block name="'Block Remove DS Topology'">
 
diff --git a/opends/tests/staf-tests/stress-tests/testcases/ldap_operation/ldap_operation_cleanup.xml b/opends/tests/staf-tests/stress-tests/testcases/ldap_operation/ldap_operation_cleanup.xml
index 379522d..91ae1c0 100755
--- a/opends/tests/staf-tests/stress-tests/testcases/ldap_operation/ldap_operation_cleanup.xml
+++ b/opends/tests/staf-tests/stress-tests/testcases/ldap_operation/ldap_operation_cleanup.xml
@@ -30,7 +30,15 @@
   <defaultcall function="ldap_operation_cleanup"/>
 
   <function name="ldap_operation_cleanup">
-
+    <function-map-args>
+      <function-arg-def name="suiteSuffix" type="required">
+        <function-arg-description>
+          Suite suffix
+        </function-arg-description>
+        <function-arg-property name="type" value="boolean"/>
+      </function-arg-def>
+    </function-map-args>
+    
     <sequence>
 
       <block name="'cleanup'">
@@ -57,7 +65,41 @@
             </sequence>
 
           </block>
-        
+          
+          <!--- Save access and errors logs -->
+          <block name="'Save Logs'">
+
+            <sequence>
+
+              <message>
+                'Copy %s/%s/logs/errors from %s to %s/errors_%s on %s' \
+                % (DIRECTORY_INSTANCE_DIR,OPENDSNAME,STAF_REMOTE_HOSTNAME,logs.sut,suiteSuffix,STAXServiceMachine)
+              </message>
+              <call function="'copyFile'">
+                {
+                'location'   : STAF_REMOTE_HOSTNAME ,
+                'srcfile'    : '%s/%s/logs/errors' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME) ,
+                'destfile'   : '%s/errors_%s' % (logs.sut,suiteSuffix) ,
+                'remotehost' : STAXServiceMachine
+                }
+              </call>
+              <message>
+                'Copy %s/%s/logs/access from %s to %s/access_%s on %s' \
+                % (DIRECTORY_INSTANCE_DIR,OPENDSNAME,STAF_REMOTE_HOSTNAME,logs.sut,suiteSuffix,STAXServiceMachine)
+              </message>
+              <call function="'copyFile'">
+                {
+                'location'   : STAF_REMOTE_HOSTNAME ,
+                'srcfile'    : '%s/%s/logs/access' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME) ,
+                'destfile'   : '%s/access_%s' % (logs.sut,suiteSuffix) ,
+                'remotehost' : STAXServiceMachine
+                }
+              </call>
+
+            </sequence>
+
+          </block>
+
           <!-- Remove  the topology created for the test suite -->
           <block name="'Block Remove DS Topology'">
 
diff --git a/opends/tests/staf-tests/stress-tests/testcases/ldap_operation/ldclt_add_delete.xml b/opends/tests/staf-tests/stress-tests/testcases/ldap_operation/ldclt_add_delete.xml
index d99b0a4..6cb497a 100644
--- a/opends/tests/staf-tests/stress-tests/testcases/ldap_operation/ldclt_add_delete.xml
+++ b/opends/tests/staf-tests/stress-tests/testcases/ldap_operation/ldclt_add_delete.xml
@@ -49,7 +49,7 @@
             adddeleteLoop   = testsDuration / 10
             lowRange        = 100000
             highRange       = lowRange + numberOfEntries
-            jvmLoop         = testsDuration / 1800
+            jvmLoop         = testsDuration / 1800 + 1
             jvmSleep        = 1800000
             baseDN          = 'ou=People,dc=com'
             ldcltDir        = '%s/ldclt_dir' % TMPDIR
@@ -210,9 +210,11 @@
                             }
                           </call>
 
-                          <call function="'Sleep'">
-                            { 'sleepForMilliSeconds'  : jvmSleep }
-                          </call>
+                          <if expr="loop != jvmLoop">
+                            <call function="'Sleep'">
+                              { 'sleepForMilliSeconds'  : jvmSleep }
+                            </call>
+                          </if>
                         </sequence>
                       </loop>
                     </sequence>
@@ -230,6 +232,32 @@
                 </sequence>
               </if>-->
 
+              <message>
+                'Copy %s/ldclt_add.res from %s to %s on %s' \
+                % (ldcltDir,STAF_CLIENT_HOSTNAME,logs.sut,STAXServiceMachine)
+              </message>
+              <call function="'copyFile'">
+                {
+                'location'   : STAF_CLIENT_HOSTNAME ,
+                'srcfile'    : '%s/ldclt_add.res' % ldcltDir ,
+                'destfile'   : '%s/ldclt_add.res' % logs.sut ,
+                'remotehost' : STAXServiceMachine
+                }
+              </call>
+
+              <message>
+                'Copy %s/ldclt_delete.res from %s to %s on %s' \
+                % (ldcltDir,STAF_CLIENT_HOSTNAME,logs.sut,STAXServiceMachine)
+              </message>
+              <call function="'copyFile'">
+                {
+                'location'   : STAF_CLIENT_HOSTNAME ,
+                'srcfile'    : '%s/ldclt_delete.res' % ldcltDir ,
+                'destfile'   : '%s/ldclt_delete.res' % logs.sut ,
+                'remotehost' : STAXServiceMachine
+                }
+              </call>
+
               <call function="'testCase_Postamble'"/>
 
             </sequence>
@@ -264,7 +292,9 @@
 
           <import machine="STAF_LOCAL_HOSTNAME"
             file="'%s/testcases/ldap_operation/ldap_operation_cleanup.xml' % (TESTS_DIR)"/>
-          <call function="'ldap_operation_cleanup'" />
+          <call function="'ldap_operation_cleanup'">
+            { 'suiteSuffix' : 'add_delete' }
+          </call>
 
           <call function="'testSuite_Postamble'"/>
             
diff --git a/opends/tests/staf-tests/stress-tests/testcases/ldap_operation/ldclt_compare.xml b/opends/tests/staf-tests/stress-tests/testcases/ldap_operation/ldclt_compare.xml
index bc47daf..843add5 100644
--- a/opends/tests/staf-tests/stress-tests/testcases/ldap_operation/ldclt_compare.xml
+++ b/opends/tests/staf-tests/stress-tests/testcases/ldap_operation/ldclt_compare.xml
@@ -49,7 +49,7 @@
             compareLoop      = testsDuration / 10
             lowRange        = 100000
             highRange       = lowRange + numberOfEntries
-            jvmLoop         = testsDuration / 1800
+            jvmLoop         = testsDuration / 1800 + 1
             jvmSleep        = 1800000
             baseDN          = 'ou=People,dc=com'
             ldcltDir        = '%s/ldclt_dir' % TMPDIR
@@ -236,9 +236,11 @@
                             }
                           </call>
 
-                          <call function="'Sleep'">
-                            { 'sleepForMilliSeconds'  : jvmSleep }
-                          </call>
+                          <if expr="loop != jvmLoop">
+                            <call function="'Sleep'">
+                              { 'sleepForMilliSeconds'  : jvmSleep }
+                            </call>
+                          </if>
                         </sequence>
                       </loop>
                     </sequence>
@@ -255,7 +257,20 @@
                   <tcstatus result="'fail'"/>
                 </sequence>
               </if>-->
-              
+
+              <message>
+                'Copy %s/ldclt_compare.res from %s to %s on %s' \
+                % (ldcltDir,STAF_CLIENT_HOSTNAME,logs.sut,STAXServiceMachine)
+              </message>
+              <call function="'copyFile'">
+                {
+                'location'   : STAF_CLIENT_HOSTNAME ,
+                'srcfile'    : '%s/ldclt_compare.res' % ldcltDir ,
+                'destfile'   : '%s/ldclt_compare.res' % logs.sut ,
+                'remotehost' : STAXServiceMachine
+                }
+              </call>
+
               <call function="'testCase_Postamble'"/>
 
             </sequence>
@@ -282,19 +297,6 @@
                 }
               </call>
 
-              <call function="'testCase_Postamble'"/>
-
-            </sequence>
-
-          </testcase>
-
-
-          <testcase name="getTestCaseName('Postamble')">
-
-            <sequence>
-
-              <call function="'testCase_Preamble'"/>
-
               <message>
                 'ldclt_compare: Delete ldif and template files'
               </message>
@@ -318,10 +320,12 @@
             </sequence>
 
           </testcase>
-
+          
           <import machine="STAF_LOCAL_HOSTNAME"
             file="'%s/testcases/ldap_operation/ldap_operation_cleanup.xml' % (TESTS_DIR)"/>
-          <call function="'ldap_operation_cleanup'" />
+          <call function="'ldap_operation_cleanup'">
+            { 'suiteSuffix' : 'compare' }
+          </call>
 
           <call function="'testSuite_Postamble'"/>
             
diff --git a/opends/tests/staf-tests/stress-tests/testcases/ldap_operation/ldclt_modify.xml b/opends/tests/staf-tests/stress-tests/testcases/ldap_operation/ldclt_modify.xml
index 6c5094e..71d45da 100644
--- a/opends/tests/staf-tests/stress-tests/testcases/ldap_operation/ldclt_modify.xml
+++ b/opends/tests/staf-tests/stress-tests/testcases/ldap_operation/ldclt_modify.xml
@@ -49,7 +49,7 @@
             modifyLoop      = testsDuration / 10
             lowRange        = 100000
             highRange       = lowRange + numberOfEntries
-            jvmLoop         = testsDuration / 1800
+            jvmLoop         = testsDuration / 1800 + 1
             jvmSleep        = 1800000
             baseDN          = 'ou=People,dc=com'
             ldcltDir        = '%s/ldclt_dir' % TMPDIR
@@ -236,9 +236,11 @@
                             }
                           </call>
 
-                          <call function="'Sleep'">
-                            { 'sleepForMilliSeconds'  : jvmSleep }
-                          </call>
+                          <if expr="loop != jvmLoop">
+                            <call function="'Sleep'">
+                              { 'sleepForMilliSeconds'  : jvmSleep }
+                            </call>
+                          </if>
                         </sequence>
                       </loop>
                     </sequence>
@@ -255,7 +257,20 @@
                   <tcstatus result="'fail'"/>
                 </sequence>
               </if>-->
-              
+
+              <message>
+                'Copy %s/ldclt_modify.res from %s to %s on %s' \
+                % (ldcltDir,STAF_CLIENT_HOSTNAME,logs.sut,STAXServiceMachine)
+              </message>
+              <call function="'copyFile'">
+                {
+                'location'   : STAF_CLIENT_HOSTNAME ,
+                'srcfile'    : '%s/ldclt_modify.res' % ldcltDir ,
+                'destfile'   : '%s/ldclt_modify.res' % logs.sut ,
+                'remotehost' : STAXServiceMachine
+                }
+              </call>
+
               <call function="'testCase_Postamble'"/>
 
             </sequence>
@@ -290,7 +305,9 @@
           
           <import machine="STAF_LOCAL_HOSTNAME"
             file="'%s/testcases/ldap_operation/ldap_operation_cleanup.xml' % (TESTS_DIR)"/>
-          <call function="'ldap_operation_cleanup'" />
+          <call function="'ldap_operation_cleanup'">
+            { 'suiteSuffix' : 'modify' }
+          </call>
 
           <call function="'testSuite_Postamble'"/>
             
diff --git a/opends/tests/staf-tests/stress-tests/testcases/ldap_operation/ldclt_modifyrdn.xml b/opends/tests/staf-tests/stress-tests/testcases/ldap_operation/ldclt_modifyrdn.xml
index 3e520e0..de397f3 100644
--- a/opends/tests/staf-tests/stress-tests/testcases/ldap_operation/ldclt_modifyrdn.xml
+++ b/opends/tests/staf-tests/stress-tests/testcases/ldap_operation/ldclt_modifyrdn.xml
@@ -49,7 +49,7 @@
             modifyrdnLoop   = testsDuration / 10
             lowRange        = 100000
             highRange       = lowRange + 2 * numberOfEntries
-            jvmLoop         = testsDuration / 1800
+            jvmLoop         = testsDuration / 1800 + 1
             jvmSleep        = 1800000
             baseDN          = 'ou=People,dc=com'
             ldcltDir        = '%s/ldclt_dir' % TMPDIR
@@ -235,9 +235,11 @@
                             }
                           </call>
 
-                          <call function="'Sleep'">
-                            { 'sleepForMilliSeconds'  : jvmSleep }
-                          </call>
+                          <if expr="loop != jvmLoop">
+                            <call function="'Sleep'">
+                              { 'sleepForMilliSeconds'  : jvmSleep }
+                            </call>
+                          </if>
                         </sequence>
                       </loop>
                     </sequence>
@@ -255,6 +257,19 @@
                 </sequence>
               </if>-->
 
+              <message>
+                'Copy %s/ldclt_modifyrdn.res from %s to %s on %s' \
+                % (ldcltDir,STAF_CLIENT_HOSTNAME,logs.sut,STAXServiceMachine)
+              </message>
+              <call function="'copyFile'">
+                {
+                'location'   : STAF_CLIENT_HOSTNAME ,
+                'srcfile'    : '%s/ldclt_modifyrdn.res' % ldcltDir ,
+                'destfile'   : '%s/ldclt_modifyrdn.res' % logs.sut ,
+                'remotehost' : STAXServiceMachine
+                }
+              </call>
+
               <call function="'testCase_Postamble'"/>
 
             </sequence>
@@ -289,7 +304,9 @@
           
           <import machine="STAF_LOCAL_HOSTNAME"
             file="'%s/testcases/import_ldif/import_ldif_cleanup.xml' % (TESTS_DIR)"/>
-          <call function="'import_ldif_cleanup'" />
+          <call function="'ldap_operation_cleanup'">
+            { 'suiteSuffix' : 'modifyrdn' }
+          </call>
 
           <call function="'testSuite_Postamble'"/>
             
diff --git a/opends/tests/staf-tests/stress-tests/testcases/ldap_operation/ldclt_search.xml b/opends/tests/staf-tests/stress-tests/testcases/ldap_operation/ldclt_search.xml
index a68785b..ee393df 100644
--- a/opends/tests/staf-tests/stress-tests/testcases/ldap_operation/ldclt_search.xml
+++ b/opends/tests/staf-tests/stress-tests/testcases/ldap_operation/ldclt_search.xml
@@ -49,7 +49,7 @@
             searchLoop      = testsDuration / 10
             lowRange        = 100000
             highRange       = lowRange + numberOfEntries
-            jvmLoop         = testsDuration / 1800
+            jvmLoop         = testsDuration / 1800 + 1
             jvmSleep        = 1800000
             baseDN          = 'ou=People,dc=com'
             ldcltDir        = '%s/ldclt_dir' % TMPDIR
@@ -235,9 +235,11 @@
                             }
                           </call>
 
-                          <call function="'Sleep'">
-                            { 'sleepForMilliSeconds'  : jvmSleep }
-                          </call>
+                          <if expr="loop != jvmLoop">
+                            <call function="'Sleep'">
+                              { 'sleepForMilliSeconds'  : jvmSleep }
+                            </call>
+                          </if>
                         </sequence>
                       </loop>
                     </sequence>
@@ -255,6 +257,19 @@
                 </sequence>
               </if>-->
 
+              <message>
+                'Copy %s/ldclt_search.res from %s to %s on %s' \
+                % (ldcltDir,STAF_CLIENT_HOSTNAME,logs.sut,STAXServiceMachine)
+              </message>
+              <call function="'copyFile'">
+                {
+                'location'   : STAF_CLIENT_HOSTNAME ,
+                'srcfile'    : '%s/ldclt_search.res' % ldcltDir ,
+                'destfile'   : '%s/ldclt_search.res' % logs.sut ,
+                'remotehost' : STAXServiceMachine
+                }
+              </call>
+
               <call function="'testCase_Postamble'"/>
 
             </sequence>
@@ -289,7 +304,9 @@
           
           <import machine="STAF_LOCAL_HOSTNAME"
             file="'%s/testcases/ldap_operation/ldap_operation_cleanup.xml' % (TESTS_DIR)"/>
-          <call function="'ldap_operation_cleanup'" />
+          <call function="'ldap_operation_cleanup'">
+            { 'suiteSuffix' : 'search' }
+          </call>
 
           <call function="'testSuite_Postamble'"/>
             
diff --git a/opends/tests/staf-tests/stress-tests/testcases/replication/replication.xml b/opends/tests/staf-tests/stress-tests/testcases/replication/replication.xml
new file mode 100644
index 0000000..a149237
--- /dev/null
+++ b/opends/tests/staf-tests/stress-tests/testcases/replication/replication.xml
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE stax SYSTEM "../../../shared/stax.dtd">
+<!--
+ ! CDDL HEADER START
+ !
+ ! The contents of this file are subject to the terms of the
+ ! Common Development and Distribution License, Version 1.0 only
+ ! (the "License").  You may not use this file except in compliance
+ ! with the License.
+ !
+ ! You can obtain a copy of the license at
+ ! trunk/opends/resource/legal-notices/OpenDS.LICENSE
+ ! or https://OpenDS.dev.java.net/OpenDS.LICENSE.
+ ! See the License for the specific language governing permissions
+ ! and limitations under the License.
+ !
+ ! When distributing Covered Code, include this CDDL HEADER in each
+ ! file and include the License file at
+ ! trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
+ ! add the following below this CDDL HEADER, with the fields enclosed
+ ! by brackets "[]" replaced with your own identifying information:
+ !      Portions Copyright [yyyy] [name of copyright owner]
+ !
+ ! CDDL HEADER END
+ !
+ !      Copyright 2009 Sun Microsystems, Inc.
+ ! -->
+<stax>
+
+  <defaultcall function="main_replication"/>
+
+  <function name="main_replication">
+
+    <function-list-args>
+      <function-required-arg name="STAXParentID"/>
+    </function-list-args>   
+
+    <sequence>
+
+      <block name="'replication'">
+
+        <sequence>
+
+          <!--- Load the job environment for the test group execution -->
+          <import machine="STAF_LOCAL_HOSTNAME"
+                file="'%s/environment.xml' % TESTS_FUNCTIONS_DIR"/>
+          <call function="'loadJobEnvironment'">
+            { 'parent' : STAXParentID }
+          </call>
+
+          <script>
+            CurrentTestPath['group']='replication'            
+            
+            timerDuration = '620m'
+            
+            # Time in second (minimum duration: 30 min => 1800 s)
+            testsDuration   = 1800
+            numberOfEntries = 10000        
+          </script>
+          
+          <call function="'testGroup_Preamble'"/>
+          
+          <script>
+            testList = []
+            testList.append('replication_add_delete')
+            testList.append('replication_search')
+            testList.append('replication_modifyrdn')
+            testList.append('replication_modify')
+            testList.append('replication_add_mod_delete')
+            testList.append('replication_add_mod_delete_search')
+            
+            testList.append('replication_add_search_multiple')
+            testList.append('replication_add_delete_multiple')
+            testList.append('replication_add_modify_multiple')
+            testList.append('replication_add_del_add_del_multiple')
+            testList.append('replication_modify_multiple')
+            testList.append('replication_modify_modifyrdn_multiple')
+            testList.append('replication_modifyrdn_multiple')
+            
+            #testList.append('replication_modify_restart_multiple')
+            
+            globalAssuredReplication = None            
+          </script>
+
+          <iterate var="__test" in="testList">
+            <sequence>
+
+              <import machine="STAF_LOCAL_HOSTNAME"
+                      file="'%s/testcases/replication/%s.xml' %
+                      (TESTS_DIR,__test)"/>
+
+              <call function="'%s' % __test" />
+
+            </sequence>
+          </iterate>
+
+          <call function="'testGroup_Postamble'"/>
+
+        </sequence>
+
+      </block>
+
+    </sequence>
+
+  </function>
+
+</stax>
diff --git a/opends/tests/staf-tests/stress-tests/testcases/replication/replication_add_del_add_del_multiple.xml b/opends/tests/staf-tests/stress-tests/testcases/replication/replication_add_del_add_del_multiple.xml
new file mode 100644
index 0000000..d414f88
--- /dev/null
+++ b/opends/tests/staf-tests/stress-tests/testcases/replication/replication_add_del_add_del_multiple.xml
@@ -0,0 +1,528 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE stax SYSTEM "../../../shared/stax.dtd">
+<!--
+ ! CDDL HEADER START
+ !
+ ! The contents of this file are subject to the terms of the
+ ! Common Development and Distribution License, Version 1.0 only
+ ! (the "License").  You may not use this file except in compliance
+ ! with the License.
+ !
+ ! You can obtain a copy of the license at
+ ! trunk/opends/resource/legal-notices/OpenDS.LICENSE
+ ! or https://OpenDS.dev.java.net/OpenDS.LICENSE.
+ ! See the License for the specific language governing permissions
+ ! and limitations under the License.
+ !
+ ! When distributing Covered Code, include this CDDL HEADER in each
+ ! file and include the License file at
+ ! trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
+ ! add the following below this CDDL HEADER, with the fields enclosed
+ ! by brackets "[]" replaced with your own identifying information:
+ !      Portions Copyright [yyyy] [name of copyright owner]
+ !
+ ! CDDL HEADER END
+ !
+ !      Copyright 2009 Sun Microsystems, Inc.
+ ! -->
+<stax>
+
+  <defaultcall function="replication_add_del_add_del_multiple"/>
+
+  <function name="replication_add_del_add_del_multiple">
+
+    <sequence>
+
+      <block name="'replication-add-del-add-del-multiple'">
+      
+        <sequence>
+  
+          <script>
+            if not CurrentTestPath.has_key('group'):
+              CurrentTestPath['group']='replication'
+            CurrentTestPath['suite']=STAXCurrentBlock
+          </script>
+      
+          <call function="'testSuite_Preamble'"/>
+
+          <import machine="STAF_LOCAL_HOSTNAME"
+            file="'%s/../functional-tests/testcases/replication/replication_setup.xml' % (TESTS_DIR)"/>
+          <call function="'replication_setup'"/>
+
+          <script>
+            ldcltLoop     = testsDuration / 10
+            lowRange      = 100000
+            highRange     = lowRange + numberOfEntries
+            jvmLoop       = testsDuration / 1800  + 1
+            jvmSleep      = 1800000
+            baseDN        = 'ou=People,%s' % synchroSuffix
+            ldcltDir      = '%s/ldclt_dir' % TMPDIR
+            ldcltTemplate = '%s/ldclt_add.template' % ldcltDir
+            
+            server1Host   = server1.getHostname()
+            server1Path   = '%s/%s' % (server1.getDir(),OPENDSNAME)
+            server1Dir    = server1.getDir()
+            server2Host   = server2.getHostname()
+            server2Path   = '%s/%s' % (server2.getDir(),OPENDSNAME)
+            server2Dir    = server2.getDir()
+            
+            suffix        = 'add_del_add_del_multiple'
+          </script>
+
+
+          <testcase name="getTestCaseName('Preamble')">
+            
+            <sequence>
+
+              <call function="'testCase_Preamble'"/>
+              
+              
+              <message>
+                'replication_add_del_add_del_multiple: Delete %s on %s' \
+                % (ldcltDir, STAF_CLIENT_HOSTNAME)
+              </message>
+
+              <call function="'deleteFolder'">
+                {
+                'location'   : STAF_CLIENT_HOSTNAME ,
+                'foldername' : ldcltDir
+                }
+              </call>
+
+              <message>
+                'replication_add_del_add_del_multiple: Create %s on %s' \
+                % (ldcltDir, STAF_CLIENT_HOSTNAME)
+              </message>
+
+              <call function="'createFolder'">
+                {
+                'location'   : STAF_CLIENT_HOSTNAME ,
+                'foldername' : ldcltDir
+                }
+              </call>
+
+              <message>
+                'replication_add_del_add_del_multiple: Create ldclt template'
+              </message>
+
+              <call function="'MakeALdcltTemplate'">
+                { 
+                'templateFile'     : ldcltTemplate ,
+                'templateLocation' : STAF_CLIENT_HOSTNAME
+                }
+              </call>
+
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+
+          </testcase>
+  
+
+          <testcase name="getTestCaseName('Run ldclt clients')">
+            
+            <sequence>
+              
+              <call function="'testCase_Preamble'"/>
+
+              <message>
+                 'replication_add_del_add_del_multiple: Run ldclt add'
+              </message>
+
+              <!--<timer duration="timerDuration">
+                <sequence>-->
+                  <parallel>
+                    <block name="'ldclt-add-threads-server1'">
+                    <sequence>
+                      
+                      <message>
+                        'replication_add_del_add_del_multiple: add threads on %s:%s' \
+                        % (server1Host, server1.getPort())
+                      </message>
+
+                      <script>
+                        opt1 = '-e delayedstartup=1 -e object=%s' % ldcltTemplate
+                        opt2 = '-e "rdn=uid:user.[C=INCRN(%s;%s;6)]"' \
+                                % (lowRange, highRange)
+                        opt3 = '-e add -N %s -I 68 -v -q' % ldcltLoop
+                        opts = '%s %s %s' % (opt1, opt2, opt3)
+                      </script>
+
+                      <call function="'ldclt'">
+                      {
+                      'location'       : STAF_CLIENT_HOSTNAME,
+                      'dsInstanceHost' : server1Host,
+                      'dsInstancePort' : server1.getPort(),
+                      'dsInstanceDn'   : server1.getRootDn(),
+                      'dsInstancePswd' : server1.getRootPwd(),
+                      'dsBaseDn'       : baseDN,
+                      'ldcltOptions'   : opts,
+                      'outputFile'     : 'ldclt_add-%s_1.res' % suffix,
+                      'outputPath'     : ldcltDir
+                      }
+                      </call>
+                      
+                    </sequence>
+                    </block>
+                    
+                    <block name="'ldclt-delete-threads-server1'">
+                    <sequence>
+                      <call function="'Sleep'">
+                        { 'sleepForMilliSeconds'  : 120000 }
+                      </call>
+
+                      <message>
+                        'replication_add_del_add_del_multiple: delete threads on %s:%s' \
+                        % (server1Host, server1.getPort())
+                      </message>
+
+                      <script>
+                        opt1 = '-e delayedstartup=1'
+                        opt2 = '-e delete,rdn=\"uid:user.[RNDN(%s;%s;6)]\"' \
+                                % (lowRange, highRange)
+                        opt3 = '-N %s -I 32 -v -q' % ldcltLoop
+                        opts = '%s %s %s' % (opt1, opt2, opt3)
+                      </script>
+
+                      <call function="'ldclt'">
+                      {
+                      'location'       : STAF_CLIENT_HOSTNAME,
+                      'dsInstanceHost' : server1Host,
+                      'dsInstancePort' : server1.getPort(),
+                      'dsInstanceDn'   : server1.getRootDn(),
+                      'dsInstancePswd' : server1.getRootPwd(),
+                      'dsBaseDn'       : baseDN,
+                      'ldcltOptions'   : opts,
+                      'outputFile'     : 'ldclt_delete-%s_1.res' % suffix,
+                      'outputPath'     : ldcltDir
+                      }
+                      </call>
+                    </sequence>
+                    </block>
+
+                    <block name="'ldclt-add-threads-server2'">
+                    <sequence>
+                      
+                      <message>
+                        'replication_add_del_add_del_multiple: add threads on %s:%s' \
+                        % (server2Host, server2.getPort())
+                      </message>
+
+                      <script>
+                        opt1 = '-e delayedstartup=1 -e object=%s' % ldcltTemplate
+                        opt2 = '-e "rdn=uid:user.[C=INCRN(%s;%s;6)]"' \
+                                % (lowRange, highRange)
+                        opt3 = '-e add -N %s -I 68 -v -q' % ldcltLoop
+                        opts = '%s %s %s' % (opt1, opt2, opt3)
+                      </script>
+
+                      <call function="'ldclt'">
+                      {
+                      'location'       : STAF_CLIENT_HOSTNAME,
+                      'dsInstanceHost' : server2Host,
+                      'dsInstancePort' : server2.getPort(),
+                      'dsInstanceDn'   : server2.getRootDn(),
+                      'dsInstancePswd' : server2.getRootPwd(),
+                      'dsBaseDn'       : baseDN,
+                      'ldcltOptions'   : opts,
+                      'outputFile'     : 'ldclt_add-%s_2.res' % suffix,
+                      'outputPath'     : ldcltDir
+                      }
+                      </call>
+                      
+                    </sequence>
+                    </block>
+                    
+                    <block name="'ldclt-delete-threads-server2'">
+                    <sequence>
+                      <call function="'Sleep'">
+                        { 'sleepForMilliSeconds'  : 120000 }
+                      </call>
+
+                      <message>
+                        'replication_add_del_add_del_multiple: delete threads on %s:%s' \
+                        % (server2Host, server2.getPort())
+                      </message>
+
+                      <script>
+                        opt1 = '-e delayedstartup=1'
+                        opt2 = '-e delete,rdn=\"uid:user.[RNDN(%s;%s;6)]\"' \
+                                % (lowRange, highRange)
+                        opt3 = '-N %s -I 32 -v -q' % ldcltLoop
+                        opts = '%s %s %s' % (opt1, opt2, opt3)
+                      </script>
+
+                      <call function="'ldclt'">
+                      {
+                      'location'       : STAF_CLIENT_HOSTNAME,
+                      'dsInstanceHost' : server2Host,
+                      'dsInstancePort' : server2.getPort(),
+                      'dsInstanceDn'   : server2.getRootDn(),
+                      'dsInstancePswd' : server2.getRootPwd(),
+                      'dsBaseDn'       : baseDN,
+                      'ldcltOptions'   : opts,
+                      'outputFile'     : 'ldclt_delete-%s_2.res' % suffix,
+                      'outputPath'     : ldcltDir
+                      }
+                      </call>
+                    </sequence>
+                    </block>
+                    
+                    <block name="'ldclt-jvm'">
+                    <sequence>
+                      <loop from="1" to="jvmLoop" var="loop">
+                        <sequence>
+                          <message>
+                            'LOOP %s out of %s' % (loop, jvmLoop)
+                          </message>
+                          
+                          <message>
+                            'replication_add_del_add_del_multiple: save jvm information'
+                          </message>
+
+                          <call function="'ldapSearchWithScript'">
+                            { 'location'       : server1Host,
+                              'dsPath'         : server1Path,
+                              'dsInstanceHost' : server1Host,
+                              'dsInstancePort' : server1.getPort(),
+                              'dsInstanceDn'   : server1.getRootDn(),
+                              'dsInstancePswd' : server1.getRootPwd(),
+                              'dsBaseDN'       : 'cn=JVM Memory Usage,cn=monitor',
+                              'dsFilter'       : 'objectclass=*',
+                              'expectedRC'     : 'noCheck',
+                              'outputFile'     : 'jvm_%s_%s.out' \
+                                                 % (suffix, loop),
+                              'outputPath'     : server1Dir
+                            }
+                          </call>
+                          
+                          <call function="'ldapSearchWithScript'">
+                            { 'location'       : server2Host,
+                              'dsPath'         : server2Path,
+                              'dsInstanceHost' : server2Host,
+                              'dsInstancePort' : server2.getPort(),
+                              'dsInstanceDn'   : server2.getRootDn(),
+                              'dsInstancePswd' : server2.getRootPwd(),
+                              'dsBaseDN'       : 'cn=JVM Memory Usage,cn=monitor',
+                              'dsFilter'       : 'objectclass=*',
+                              'expectedRC'     : 'noCheck',
+                              'outputFile'     : 'jvm_%s_%s.out' \
+                                                 % (suffix, loop),
+                              'outputPath'     : server2Dir
+                            }
+                          </call>
+
+                          <if expr="loop != jvmLoop">
+                            <call function="'Sleep'">
+                              { 'sleepForMilliSeconds'  : jvmSleep }
+                            </call>                            
+                          </if>
+
+                        </sequence>
+                      </loop>
+                    </sequence>
+                    </block>
+                  </parallel>
+              <!--</sequence>
+              </timer>
+
+              <script>timerRC = RC</script>
+
+              <if expr="timerRC == 0">
+                <sequence>
+                  <message>'Timer exceeds %s' % timerDuration</message>
+                  <tcstatus result="'fail'"/>
+                </sequence>
+              </if>-->
+                
+              <message>
+                'Copy %s/ldclt_add-%s_1.res from %s to %s on %s' % \
+                (ldcltDir, suffix, STAF_CLIENT_HOSTNAME, logs.sut, STAXServiceMachine)
+              </message>
+              <call function="'copyFile'">
+                {
+                'location'   : STAF_CLIENT_HOSTNAME,
+                'srcfile'    : '%s/ldclt_add-%s_1.res' % (ldcltDir, suffix),
+                'destfile'   : '%s/ldclt_add-%s_1.res' % (logs.sut, suffix),
+                'remotehost' : STAXServiceMachine
+                }
+              </call>
+ 
+              <message>
+                'Copy %s/ldclt_delete-%s_1.res from %s to %s on %s' % \
+                (ldcltDir, suffix, STAF_CLIENT_HOSTNAME, logs.sut, STAXServiceMachine)
+              </message>
+              <call function="'copyFile'">
+                {
+                'location'   : STAF_CLIENT_HOSTNAME,
+                'srcfile'    : '%s/ldclt_delete-%s_1.res' % (ldcltDir, suffix),
+                'destfile'   : '%s/ldclt_delete-%s_1.res' % (logs.sut, suffix),
+                'remotehost' : STAXServiceMachine
+                }
+              </call>
+               
+              <message>
+                'Copy %s/ldclt_add-%s_2.res from %s to %s on %s' % \
+                (ldcltDir, suffix, STAF_CLIENT_HOSTNAME, logs.sut, STAXServiceMachine)
+              </message>
+              <call function="'copyFile'">
+                {
+                'location'   : STAF_CLIENT_HOSTNAME,
+                'srcfile'    : '%s/ldclt_add-%s_2.res' % (ldcltDir, suffix),
+                'destfile'   : '%s/ldclt_add-%s_2.res' % (logs.sut, suffix),
+                'remotehost' : STAXServiceMachine
+                }
+              </call>
+              <message>
+                'Copy %s/ldclt_delete-%s_2.res from %s to %s on %s' % \
+                (ldcltDir, suffix, STAF_CLIENT_HOSTNAME, logs.sut, STAXServiceMachine)
+              </message>
+              <call function="'copyFile'">
+                {
+                'location'   : STAF_CLIENT_HOSTNAME,
+                'srcfile'    : '%s/ldclt_delete-%s_2.res' % (ldcltDir, suffix),
+                'destfile'   : '%s/ldclt_delete-%s_2.res' % (logs.sut, suffix),
+                'remotehost' : STAXServiceMachine
+                }
+              </call>
+
+              <call function="'testCase_Postamble'"/>
+            </sequence>
+            
+          </testcase>
+
+
+
+          <testcase name="getTestCaseName('Check server is still running')">
+
+            <sequence>
+              
+              <call function="'testCase_Preamble'"/>
+
+              <paralleliterate var="server" in="_topologyServerList" indexvar="i">
+                <sequence>
+                  <script>
+                    serverPath = '%s/%s' % (server.getDir(), OPENDSNAME)
+                  </script>
+
+                  <message>
+                   'replication_add_del_add_del_multiple: Check server is still running on \
+                    %s:%s' % (server.getHostname(), server.getPort())
+                  </message>
+                  
+                  <!-- Modify entry on one of the servers -->
+                  <call function="'isAlive'">
+                    { 'location'         : server.getHostname(),
+                      'dsPath'           : serverPath,
+                      'dsInstanceHost'   : server.getHostname(),
+                      'dsInstancePort'   : server.getPort(),
+                      'dsInstanceDn'     : server.getRootDn(),
+                      'dsInstancePswd'   : server.getRootPwd(),
+                      'noOfLoops'        : 10,
+                      'noOfMilliSeconds' : 5000
+                    }
+                  </call>                       
+                </sequence>
+              </paralleliterate>
+              
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+
+          </testcase>
+
+
+          
+          <testcase name="getTestCaseName('Verify replication')">
+
+            <sequence>
+
+              <call function="'testCase_Preamble'"/>
+
+              <message>
+                'replication_add_del_add_del_multiple: Verify replication is still working'
+              </message>
+                            
+              <!-- Verify the replication is still working among the servers in 
+                the topology -->          
+              <call function="'verifyReplication'">
+                [ _topologyServerList, synchroSuffix ]
+              </call> 
+
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+
+          </testcase>
+          
+          
+          
+          <testcase name="getTestCaseName('Verify tree synchronization')">
+
+            <sequence>
+
+              <call function="'testCase_Preamble'"/>
+
+              <message>
+                'replication_add_del_add_del_multiple: Verify the tree synchronization'
+              </message>
+                            
+              <!-- Verify the synchronization of the trees among the servers in 
+                the topology -->          
+              <call function="'verifyTrees'">
+                [ clientHost, clientPath, master, consumerList, synchroSuffix ]
+              </call> 
+
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+
+          </testcase>
+          
+          
+          
+          <testcase name="getTestCaseName('Check replication status')">
+
+            <sequence>
+
+              <call function="'testCase_Preamble'"/>
+
+              <message>
+                'replication_add_del_add_del_multiple: Check replication status'
+              </message>
+                            
+              <!-- Verify the synchronization of the trees among the servers in 
+                the topology -->         
+              <call function="'getReplicationStatus'">
+                { 'location'            : masterHost,
+                  'dsPath'              : masterPath,
+                  'dsInstanceHost'      : masterHost,
+                  'dsInstanceAdminPort' : master.getAdminPort(),
+                  'replicationDnList'   : [synchroSuffix]
+                }
+              </call>
+
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+
+          </testcase>
+          
+          
+          <import machine="STAF_LOCAL_HOSTNAME"
+            file="'%s/../functional-tests/testcases/replication/replication_cleanup.xml' % (TESTS_DIR)"/>
+          <call function="'replication_cleanup'">
+            { 'suiteSuffix' : suffix }
+          </call>
+          
+          <call function="'testSuite_Postamble'"/>
+            
+        </sequence>
+       
+      </block>
+       
+    </sequence>
+      
+  </function>
+
+</stax>
diff --git a/opends/tests/staf-tests/stress-tests/testcases/replication/replication_add_delete.xml b/opends/tests/staf-tests/stress-tests/testcases/replication/replication_add_delete.xml
new file mode 100644
index 0000000..73cecb2
--- /dev/null
+++ b/opends/tests/staf-tests/stress-tests/testcases/replication/replication_add_delete.xml
@@ -0,0 +1,411 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE stax SYSTEM "../../../shared/stax.dtd">
+<!--
+ ! CDDL HEADER START
+ !
+ ! The contents of this file are subject to the terms of the
+ ! Common Development and Distribution License, Version 1.0 only
+ ! (the "License").  You may not use this file except in compliance
+ ! with the License.
+ !
+ ! You can obtain a copy of the license at
+ ! trunk/opends/resource/legal-notices/OpenDS.LICENSE
+ ! or https://OpenDS.dev.java.net/OpenDS.LICENSE.
+ ! See the License for the specific language governing permissions
+ ! and limitations under the License.
+ !
+ ! When distributing Covered Code, include this CDDL HEADER in each
+ ! file and include the License file at
+ ! trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
+ ! add the following below this CDDL HEADER, with the fields enclosed
+ ! by brackets "[]" replaced with your own identifying information:
+ !      Portions Copyright [yyyy] [name of copyright owner]
+ !
+ ! CDDL HEADER END
+ !
+ !      Copyright 2009 Sun Microsystems, Inc.
+ ! -->
+<stax>
+
+  <defaultcall function="replication_add_delete"/>
+
+  <function name="replication_add_delete">
+
+    <sequence>
+
+      <block name="'replication-add-delete'">
+      
+        <sequence>
+  
+          <script>
+            if not CurrentTestPath.has_key('group'):
+              CurrentTestPath['group']='replication'
+            CurrentTestPath['suite']=STAXCurrentBlock
+          </script>
+      
+          <call function="'testSuite_Preamble'"/>
+
+          <import machine="STAF_LOCAL_HOSTNAME"
+            file="'%s/../functional-tests/testcases/replication/replication_setup.xml' % (TESTS_DIR)"/>
+          <call function="'replication_setup'"/>
+
+          <script>
+            ldcltLoop     = testsDuration / 10
+            lowRange      = 100000
+            highRange     = lowRange + numberOfEntries
+            jvmLoop       = testsDuration / 1800  + 1
+            jvmSleep      = 1800000
+            baseDN        = 'ou=People,%s' % synchroSuffix
+            ldcltDir      = '%s/ldclt_dir' % TMPDIR
+            ldcltTemplate = '%s/ldclt_add.template' % ldcltDir
+            masterDir     = '%s/..' % masterPath
+            
+            suffix        = 'add_delete'
+          </script>
+
+
+          <testcase name="getTestCaseName('Preamble')">
+            
+            <sequence>
+
+              <call function="'testCase_Preamble'"/>
+              
+              <message>
+                'replication_add_delete: Delete %s on %s' \
+                % (ldcltDir, STAF_CLIENT_HOSTNAME)
+              </message>
+
+              <call function="'deleteFolder'">
+                {
+                'location'   : STAF_CLIENT_HOSTNAME ,
+                'foldername' : ldcltDir
+                }
+              </call>
+
+              <message>
+                'replication_add_delete: Create %s on %s' \
+                % (ldcltDir, STAF_CLIENT_HOSTNAME)
+              </message>
+
+              <call function="'createFolder'">
+                {
+                'location'   : STAF_CLIENT_HOSTNAME ,
+                'foldername' : ldcltDir
+                }
+              </call>
+
+              <message>
+                'replication_add_delete: Create ldclt template'
+              </message>
+
+              <call function="'MakeALdcltTemplate'">
+                { 
+                'templateFile'     : ldcltTemplate ,
+                'templateLocation' : STAF_CLIENT_HOSTNAME
+                }
+              </call>
+
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+
+          </testcase>
+  
+
+          <testcase name="getTestCaseName('Run ldclt clients')">
+            
+            <sequence>
+              
+              <call function="'testCase_Preamble'"/>
+
+              <message>
+                 'replication_add_delete: Run ldclt add'
+              </message>
+
+              <!--<timer duration="timerDuration">
+                <sequence>-->
+                  <parallel>
+                    <block name="'ldclt-add-threads'">
+                    <sequence>
+                      
+                      <message>
+                        'replication_add_delete: add threads'
+                      </message>
+
+                      <script>
+                        opt1 = '-e delayedstartup=1 -e object=%s' % ldcltTemplate
+                        opt2 = '-e "rdn=uid:user.[C=INCRN(%s;%s;6)]"' \
+                                % (lowRange, highRange)
+                        opt3 = '-e add -N %s -I 68 -v -q' % ldcltLoop
+                        opts = '%s %s %s' % (opt1, opt2, opt3)
+                      </script>
+
+                      <call function="'ldclt'">
+                      {
+                      'location'       : STAF_CLIENT_HOSTNAME,
+                      'dsInstanceHost' : masterHost,
+                      'dsInstancePort' : master.getPort(),
+                      'dsInstanceDn'   : master.getRootDn(),
+                      'dsInstancePswd' : master.getRootPwd(),
+                      'dsBaseDn'       : baseDN,
+                      'ldcltOptions'   : opts,
+                      'outputFile'     : 'ldclt_add-%s.res' % suffix,
+                      'outputPath'     : ldcltDir
+                      }
+                      </call>
+                      
+                    </sequence>
+                    </block>
+                    
+                    <block name="'ldclt-delete-threads'">
+                    <sequence>
+                      <call function="'Sleep'">
+                        { 'sleepForMilliSeconds'  : 120000 }
+                      </call>
+
+                      <message>
+                        'replication_add_delete: delete threads'
+                      </message>
+
+                      <script>
+                        opt1 = '-e delayedstartup=1'
+                        opt2 = '-e delete,rdn=\"uid:user.[RNDN(%s;%s;6)]\"' \
+                                % (lowRange, highRange)
+                        opt3 = '-N %s -I 32 -v -q' % ldcltLoop
+                        opts = '%s %s %s' % (opt1, opt2, opt3)
+                      </script>
+
+                      <call function="'ldclt'">
+                      {
+                      'location'       : STAF_CLIENT_HOSTNAME,
+                      'dsInstanceHost' : masterHost,
+                      'dsInstancePort' : master.getPort(),
+                      'dsInstanceDn'   : master.getRootDn(),
+                      'dsInstancePswd' : master.getRootPwd(),
+                      'dsBaseDn'       : baseDN,
+                      'ldcltOptions'   : opts,
+                      'outputFile'     : 'ldclt_delete-%s.res' % suffix,
+                      'outputPath'     : ldcltDir
+                      }
+                      </call>
+                    </sequence>
+                    </block>
+                    
+                    <block name="'ldclt-jvm'">
+                    <sequence>
+                      <loop from="1" to="jvmLoop" var="loop">
+                        <sequence>
+                          <message>
+                            'LOOP %s out of %s' % (loop, jvmLoop)
+                          </message>
+                          
+                          <message>
+                            'replication_add_delete: save jvm information'
+                          </message>
+
+                          <call function="'ldapSearchWithScript'">
+                            { 'location'       : masterHost,
+                              'dsPath'         : masterPath,
+                              'dsInstanceHost' : masterHost,
+                              'dsInstancePort' : master.getPort(),
+                              'dsInstanceDn'   : master.getRootDn(),
+                              'dsInstancePswd' : master.getRootPwd(),
+                              'dsBaseDN'       : 'cn=JVM Memory Usage,cn=monitor',
+                              'dsFilter'       : 'objectclass=*',
+                              'expectedRC'     : 'noCheck',
+                              'outputFile'     : 'jvm_%s_%s.out' % (suffix, loop),
+                              'outputPath'     : masterDir
+                            }
+                          </call>
+
+                          <if expr="loop != jvmLoop">
+                            <call function="'Sleep'">
+                              { 'sleepForMilliSeconds'  : jvmSleep }
+                            </call>                            
+                          </if>
+
+                        </sequence>
+                      </loop>
+                    </sequence>
+                    </block>
+                  </parallel>
+              <!--</sequence>
+              </timer>
+
+              <script>timerRC = RC</script>
+
+              <if expr="timerRC == 0">
+                <sequence>
+                  <message>'Timer exceeds %s' % timerDuration</message>
+                  <tcstatus result="'fail'"/>
+                </sequence>
+              </if>-->
+  
+              <message>
+                'Copy %s/ldclt_add-%s.res from %s to %s on %s' % \
+                (ldcltDir, suffix, STAF_CLIENT_HOSTNAME, logs.sut, STAXServiceMachine)
+              </message>
+              <call function="'copyFile'">
+                {
+                'location'   : STAF_CLIENT_HOSTNAME,
+                'srcfile'    : '%s/ldclt_add-%s.res' % (ldcltDir, suffix),
+                'destfile'   : '%s/ldclt_add-%s.res' % (logs.sut, suffix),
+                'remotehost' : STAXServiceMachine
+                }
+              </call>
+ 
+              <message>
+                'Copy %s/ldclt_delete-%s.res from %s to %s on %s' % \
+                (ldcltDir, suffix, STAF_CLIENT_HOSTNAME, logs.sut, STAXServiceMachine)
+              </message>
+              <call function="'copyFile'">
+                {
+                'location'   : STAF_CLIENT_HOSTNAME,
+                'srcfile'    : '%s/ldclt_delete-%s.res' % (ldcltDir, suffix),
+                'destfile'   : '%s/ldclt_delete-%s.res' % (logs.sut, suffix),
+                'remotehost' : STAXServiceMachine
+                }
+              </call>
+              
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+            
+          </testcase>
+
+
+
+          <testcase name="getTestCaseName('Check server is still running')">
+
+            <sequence>
+              
+              <call function="'testCase_Preamble'"/>
+
+              <paralleliterate var="server" in="_topologyServerList" indexvar="i">
+                <sequence>
+                  <script>
+                    serverPath = '%s/%s' % (server.getDir(), OPENDSNAME)
+                  </script>
+
+                  <message>
+                   'replication_add_delete: Check server is still running on \
+                    %s:%s' % (server.getHostname(), server.getPort())
+                  </message>
+                  
+                  <!-- Modify entry on one of the servers -->
+                  <call function="'isAlive'">
+                    { 'location'         : server.getHostname(),
+                      'dsPath'           : serverPath,
+                      'dsInstanceHost'   : server.getHostname(),
+                      'dsInstancePort'   : server.getPort(),
+                      'dsInstanceDn'     : server.getRootDn(),
+                      'dsInstancePswd'   : server.getRootPwd(),
+                      'noOfLoops'        : 10,
+                      'noOfMilliSeconds' : 5000
+                    }
+                  </call>                       
+                </sequence>
+              </paralleliterate>
+              
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+
+          </testcase>
+
+                              
+
+          <testcase name="getTestCaseName('Verify replication')">
+
+            <sequence>
+
+              <call function="'testCase_Preamble'"/>
+
+              <message>
+                'replication_add_delete: Verify replication is still working'
+              </message>
+                            
+              <!-- Verify the replication is still working among the servers in 
+                the topology -->          
+              <call function="'verifyReplication'">
+                [ _topologyServerList, synchroSuffix ]
+              </call> 
+
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+
+          </testcase>
+          
+          
+          
+          <testcase name="getTestCaseName('Verify tree synchronization')">
+
+            <sequence>
+
+              <call function="'testCase_Preamble'"/>
+
+              <message>
+                'replication_add_delete: Verify the tree synchronization'
+              </message>
+                            
+              <!-- Verify the synchronization of the trees among the servers in 
+                the topology -->          
+              <call function="'verifyTrees'">
+                [ clientHost, clientPath, master, consumerList, synchroSuffix ]
+              </call> 
+
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+
+          </testcase>
+          
+          
+          
+          <testcase name="getTestCaseName('Check replication status')">
+
+            <sequence>
+
+              <call function="'testCase_Preamble'"/>
+
+              <message>
+                'replication_add_delete: Check replication status'
+              </message>
+                            
+              <!-- Verify the synchronization of the trees among the servers in 
+                the topology -->         
+              <call function="'getReplicationStatus'">
+                { 'location'            : masterHost,
+                  'dsPath'              : masterPath,
+                  'dsInstanceHost'      : masterHost,
+                  'dsInstanceAdminPort' : master.getAdminPort(),
+                  'replicationDnList'   : [synchroSuffix]
+                }
+              </call>
+
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+
+          </testcase>
+          
+          
+          
+          <import machine="STAF_LOCAL_HOSTNAME"
+            file="'%s/../functional-tests/testcases/replication/replication_cleanup.xml' % (TESTS_DIR)"/>
+          <call function="'replication_cleanup'">
+            { 'suiteSuffix' : suffix }
+          </call>
+
+          <call function="'testSuite_Postamble'"/>
+            
+        </sequence>
+       
+      </block>
+       
+    </sequence>
+      
+  </function>
+
+</stax>
diff --git a/opends/tests/staf-tests/stress-tests/testcases/replication/replication_add_delete_multiple.xml b/opends/tests/staf-tests/stress-tests/testcases/replication/replication_add_delete_multiple.xml
new file mode 100644
index 0000000..912b3e5
--- /dev/null
+++ b/opends/tests/staf-tests/stress-tests/testcases/replication/replication_add_delete_multiple.xml
@@ -0,0 +1,436 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE stax SYSTEM "../../../shared/stax.dtd">
+<!--
+ ! CDDL HEADER START
+ !
+ ! The contents of this file are subject to the terms of the
+ ! Common Development and Distribution License, Version 1.0 only
+ ! (the "License").  You may not use this file except in compliance
+ ! with the License.
+ !
+ ! You can obtain a copy of the license at
+ ! trunk/opends/resource/legal-notices/OpenDS.LICENSE
+ ! or https://OpenDS.dev.java.net/OpenDS.LICENSE.
+ ! See the License for the specific language governing permissions
+ ! and limitations under the License.
+ !
+ ! When distributing Covered Code, include this CDDL HEADER in each
+ ! file and include the License file at
+ ! trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
+ ! add the following below this CDDL HEADER, with the fields enclosed
+ ! by brackets "[]" replaced with your own identifying information:
+ !      Portions Copyright [yyyy] [name of copyright owner]
+ !
+ ! CDDL HEADER END
+ !
+ !      Copyright 2009 Sun Microsystems, Inc.
+ ! -->
+<stax>
+
+  <defaultcall function="replication_add_delete_multiple"/>
+
+  <function name="replication_add_delete_multiple">
+
+    <sequence>
+
+      <block name="'replication-add-delete-multiple'">
+      
+        <sequence>
+  
+          <script>
+            if not CurrentTestPath.has_key('group'):
+              CurrentTestPath['group']='replication'
+            CurrentTestPath['suite']=STAXCurrentBlock
+          </script>
+      
+          <call function="'testSuite_Preamble'"/>
+
+          <import machine="STAF_LOCAL_HOSTNAME"
+            file="'%s/../functional-tests/testcases/replication/replication_setup.xml' % (TESTS_DIR)"/>
+          <call function="'replication_setup'"/>
+
+          <script>
+            ldcltLoop     = testsDuration / 10
+            lowRange      = 100000
+            highRange     = lowRange + numberOfEntries
+            jvmLoop       = testsDuration / 1800  + 1
+            jvmSleep      = 1800000
+            baseDN        = 'ou=People,%s' % synchroSuffix
+            ldcltDir      = '%s/ldclt_dir' % TMPDIR
+            ldcltTemplate = '%s/ldclt_add.template' % ldcltDir
+            
+            server1Host   = server1.getHostname()
+            server1Path   = '%s/%s' % (server1.getDir(),OPENDSNAME)
+            server1Dir    = server1.getDir()
+            server2Host   = server2.getHostname()
+            server2Path   = '%s/%s' % (server2.getDir(),OPENDSNAME)
+            server2Dir    = server2.getDir()
+            
+            suffix        = 'add_delete_multiple'
+          </script>
+
+
+          <testcase name="getTestCaseName('Preamble')">
+            
+            <sequence>
+
+              <call function="'testCase_Preamble'"/>
+              
+              
+              <message>
+                'replication_add_delete_multiple: Delete %s on %s' \
+                % (ldcltDir, STAF_CLIENT_HOSTNAME)
+              </message>
+
+              <call function="'deleteFolder'">
+                {
+                'location'   : STAF_CLIENT_HOSTNAME ,
+                'foldername' : ldcltDir
+                }
+              </call>
+
+              <message>
+                'replication_add_delete_multiple: Create %s on %s' \
+                % (ldcltDir, STAF_CLIENT_HOSTNAME)
+              </message>
+
+              <call function="'createFolder'">
+                {
+                'location'   : STAF_CLIENT_HOSTNAME ,
+                'foldername' : ldcltDir
+                }
+              </call>
+
+              <message>
+                'replication_add_delete_multiple: Create ldclt template'
+              </message>
+
+              <call function="'MakeALdcltTemplate'">
+                { 
+                'templateFile'     : ldcltTemplate ,
+                'templateLocation' : STAF_CLIENT_HOSTNAME
+                }
+              </call>
+
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+
+          </testcase>
+  
+
+          <testcase name="getTestCaseName('Run ldclt clients')">
+            
+            <sequence>
+              
+              <call function="'testCase_Preamble'"/>
+
+              <message>
+                 'replication_add_delete_multiple: Run ldclt add'
+              </message>
+
+              <!--<timer duration="timerDuration">
+                <sequence>-->
+                  <parallel>
+                    <block name="'ldclt-add-threads-server1'">
+                    <sequence>
+                      
+                      <message>
+                        'replication_add_delete_multiple: add threads on %s:%s' \
+                        % (server1Host, server1.getPort())
+                      </message>
+
+                      <script>
+                        opt1 = '-e delayedstartup=1 -e object=%s' % ldcltTemplate
+                        opt2 = '-e "rdn=uid:user.[C=INCRN(%s;%s;6)]"' \
+                                % (lowRange, highRange)
+                        opt3 = '-e add -N %s -I 68 -v -q' % ldcltLoop
+                        opts = '%s %s %s' % (opt1, opt2, opt3)
+                      </script>
+
+                      <call function="'ldclt'">
+                      {
+                      'location'       : STAF_CLIENT_HOSTNAME,
+                      'dsInstanceHost' : server1Host,
+                      'dsInstancePort' : server1.getPort(),
+                      'dsInstanceDn'   : server1.getRootDn(),
+                      'dsInstancePswd' : server1.getRootPwd(),
+                      'dsBaseDn'       : baseDN,
+                      'ldcltOptions'   : opts,
+                      'outputFile'     : 'ldclt_add-%s_1.res' % suffix,
+                      'outputPath'     : ldcltDir
+                      }
+                      </call>
+                      
+                    </sequence>
+                    </block>
+                    
+                    <block name="'ldclt-delete-threads-server2'">
+                    <sequence>
+                      <call function="'Sleep'">
+                        { 'sleepForMilliSeconds'  : 120000 }
+                      </call>
+
+                      <message>
+                        'replication_add_delete_multiple: delete threads on %s:%s' \
+                        % (server2Host, server2.getPort())
+                      </message>
+
+                      <script>
+                        opt1 = '-e delayedstartup=1'
+                        opt2 = '-e delete,rdn=\"uid:user.[RNDN(%s;%s;6)]\"' \
+                                % (lowRange, highRange)
+                        opt3 = '-N %s -I 32 -v -q' % ldcltLoop
+                        opts = '%s %s %s' % (opt1, opt2, opt3)
+                      </script>
+
+                      <call function="'ldclt'">
+                      {
+                      'location'       : STAF_CLIENT_HOSTNAME,
+                      'dsInstanceHost' : server2Host,
+                      'dsInstancePort' : server2.getPort(),
+                      'dsInstanceDn'   : server2.getRootDn(),
+                      'dsInstancePswd' : server2.getRootPwd(),
+                      'dsBaseDn'       : baseDN,
+                      'ldcltOptions'   : opts,
+                      'outputFile'     : 'ldclt_delete-%s_2.res' % suffix,
+                      'outputPath'     : ldcltDir
+                      }
+                      </call>
+                    </sequence>
+                    </block>
+                    
+                    <block name="'ldclt-jvm'">
+                    <sequence>
+                      <loop from="1" to="jvmLoop" var="loop">
+                        <sequence>
+                          <message>
+                            'LOOP %s out of %s' % (loop, jvmLoop)
+                          </message>
+                          
+                          <message>
+                            'replication_add_delete_multiple: save jvm information'
+                          </message>
+
+                          <call function="'ldapSearchWithScript'">
+                            { 'location'       : server1Host,
+                              'dsPath'         : server1Path,
+                              'dsInstanceHost' : server1Host,
+                              'dsInstancePort' : server1.getPort(),
+                              'dsInstanceDn'   : server1.getRootDn(),
+                              'dsInstancePswd' : server1.getRootPwd(),
+                              'dsBaseDN'       : 'cn=JVM Memory Usage,cn=monitor',
+                              'dsFilter'       : 'objectclass=*',
+                              'expectedRC'     : 'noCheck',
+                              'outputFile'     : 'jvm_%s_%s.out' \
+                                                 % (suffix, loop),
+                              'outputPath'     : server1Dir
+                            }
+                          </call>
+                          
+                          <call function="'ldapSearchWithScript'">
+                            { 'location'       : server2Host,
+                              'dsPath'         : server2Path,
+                              'dsInstanceHost' : server2Host,
+                              'dsInstancePort' : server2.getPort(),
+                              'dsInstanceDn'   : server2.getRootDn(),
+                              'dsInstancePswd' : server2.getRootPwd(),
+                              'dsBaseDN'       : 'cn=JVM Memory Usage,cn=monitor',
+                              'dsFilter'       : 'objectclass=*',
+                              'expectedRC'     : 'noCheck',
+                              'outputFile'     : 'jvm_%s_%s.out' \
+                                                 % (suffix, loop),
+                              'outputPath'     : server2Dir
+                            }
+                          </call>
+
+                          <if expr="loop != jvmLoop">
+                            <call function="'Sleep'">
+                              { 'sleepForMilliSeconds'  : jvmSleep }
+                            </call>                            
+                          </if>
+
+                        </sequence>
+                      </loop>
+                    </sequence>
+                    </block>
+                  </parallel>
+              <!--</sequence>
+              </timer>
+
+              <script>timerRC = RC</script>
+
+              <if expr="timerRC == 0">
+                <sequence>
+                  <message>'Timer exceeds %s' % timerDuration</message>
+                  <tcstatus result="'fail'"/>
+                </sequence>
+              </if>-->
+                
+              <message>
+                'Copy %s/ldclt_add-%s_1.res from %s to %s on %s' % \
+                (ldcltDir, suffix, STAF_CLIENT_HOSTNAME, logs.sut, STAXServiceMachine)
+              </message>
+              <call function="'copyFile'">
+                {
+                'location'   : STAF_CLIENT_HOSTNAME,
+                'srcfile'    : '%s/ldclt_add-%s_1.res' % (ldcltDir, suffix),
+                'destfile'   : '%s/ldclt_add-%s_1.res' % (logs.sut, suffix),
+                'remotehost' : STAXServiceMachine
+                }
+              </call>
+ 
+              <message>
+                'Copy %s/ldclt_delete-%s_2.res from %s to %s on %s' % \
+                (ldcltDir, suffix, STAF_CLIENT_HOSTNAME, logs.sut, STAXServiceMachine)
+              </message>
+              <call function="'copyFile'">
+                {
+                'location'   : STAF_CLIENT_HOSTNAME,
+                'srcfile'    : '%s/ldclt_delete-%s_2.res' % (ldcltDir, suffix),
+                'destfile'   : '%s/ldclt_delete-%s_2.res' % (logs.sut, suffix),
+                'remotehost' : STAXServiceMachine
+                }
+              </call>
+              
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+            
+          </testcase>
+
+
+
+          <testcase name="getTestCaseName('Check server is still running')">
+
+            <sequence>
+              
+              <call function="'testCase_Preamble'"/>
+
+              <paralleliterate var="server" in="_topologyServerList" indexvar="i">
+                <sequence>
+                  <script>
+                    serverPath = '%s/%s' % (server.getDir(), OPENDSNAME)
+                  </script>
+
+                  <message>
+                   'replication_add_delete_multiple: Check server is still running on \
+                    %s:%s' % (server.getHostname(), server.getPort())
+                  </message>
+                  
+                  <!-- Modify entry on one of the servers -->
+                  <call function="'isAlive'">
+                    { 'location'         : server.getHostname(),
+                      'dsPath'           : serverPath,
+                      'dsInstanceHost'   : server.getHostname(),
+                      'dsInstancePort'   : server.getPort(),
+                      'dsInstanceDn'     : server.getRootDn(),
+                      'dsInstancePswd'   : server.getRootPwd(),
+                      'noOfLoops'        : 10,
+                      'noOfMilliSeconds' : 5000
+                    }
+                  </call>                       
+                </sequence>
+              </paralleliterate>
+              
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+
+          </testcase>
+
+
+          
+          <testcase name="getTestCaseName('Verify replication')">
+
+            <sequence>
+
+              <call function="'testCase_Preamble'"/>
+
+              <message>
+                'replication_add_delete_multiple: Verify replication is still working'
+              </message>
+                            
+              <!-- Verify the replication is still working among the servers in 
+                the topology -->          
+              <call function="'verifyReplication'">
+                [ _topologyServerList, synchroSuffix ]
+              </call> 
+
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+
+          </testcase>
+          
+          
+          
+          <testcase name="getTestCaseName('Verify tree synchronization')">
+
+            <sequence>
+
+              <call function="'testCase_Preamble'"/>
+
+              <message>
+                'replication_add_delete_multiple: Verify the tree synchronization'
+              </message>
+                            
+              <!-- Verify the synchronization of the trees among the servers in 
+                the topology -->          
+              <call function="'verifyTrees'">
+                [ clientHost, clientPath, master, consumerList, synchroSuffix ]
+              </call> 
+
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+
+          </testcase>
+          
+          
+          
+          <testcase name="getTestCaseName('Check replication status')">
+
+            <sequence>
+
+              <call function="'testCase_Preamble'"/>
+
+              <message>
+                'replication_add_delete_multiple: Check replication status'
+              </message>
+                            
+              <!-- Verify the synchronization of the trees among the servers in 
+                the topology -->         
+              <call function="'getReplicationStatus'">
+                { 'location'            : masterHost,
+                  'dsPath'              : masterPath,
+                  'dsInstanceHost'      : masterHost,
+                  'dsInstanceAdminPort' : master.getAdminPort(),
+                  'replicationDnList'   : [synchroSuffix]
+                }
+              </call>
+
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+
+          </testcase>
+          
+          
+          <import machine="STAF_LOCAL_HOSTNAME"
+            file="'%s/../functional-tests/testcases/replication/replication_cleanup.xml' % (TESTS_DIR)"/>
+          <call function="'replication_cleanup'">
+            { 'suiteSuffix' : suffix }
+          </call>
+
+          <call function="'testSuite_Postamble'"/>
+            
+        </sequence>
+       
+      </block>
+       
+    </sequence>
+      
+  </function>
+
+</stax>
diff --git a/opends/tests/staf-tests/stress-tests/testcases/replication/replication_add_mod_delete.xml b/opends/tests/staf-tests/stress-tests/testcases/replication/replication_add_mod_delete.xml
new file mode 100644
index 0000000..bc5205d
--- /dev/null
+++ b/opends/tests/staf-tests/stress-tests/testcases/replication/replication_add_mod_delete.xml
@@ -0,0 +1,460 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE stax SYSTEM "../../../shared/stax.dtd">
+<!--
+ ! CDDL HEADER START
+ !
+ ! The contents of this file are subject to the terms of the
+ ! Common Development and Distribution License, Version 1.0 only
+ ! (the "License").  You may not use this file except in compliance
+ ! with the License.
+ !
+ ! You can obtain a copy of the license at
+ ! trunk/opends/resource/legal-notices/OpenDS.LICENSE
+ ! or https://OpenDS.dev.java.net/OpenDS.LICENSE.
+ ! See the License for the specific language governing permissions
+ ! and limitations under the License.
+ !
+ ! When distributing Covered Code, include this CDDL HEADER in each
+ ! file and include the License file at
+ ! trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
+ ! add the following below this CDDL HEADER, with the fields enclosed
+ ! by brackets "[]" replaced with your own identifying information:
+ !      Portions Copyright [yyyy] [name of copyright owner]
+ !
+ ! CDDL HEADER END
+ !
+ !      Copyright 2009 Sun Microsystems, Inc.
+ ! -->
+<stax>
+
+  <defaultcall function="replication_add_mod_delete"/>
+
+  <function name="replication_add_mod_delete">
+
+    <sequence>
+
+      <block name="'replication-add-mod-delete'">
+      
+        <sequence>
+  
+          <script>
+            if not CurrentTestPath.has_key('group'):
+              CurrentTestPath['group']='replication'
+            CurrentTestPath['suite']=STAXCurrentBlock
+          </script>
+      
+          <call function="'testSuite_Preamble'"/>
+
+          <import machine="STAF_LOCAL_HOSTNAME"
+            file="'%s/../functional-tests/testcases/replication/replication_setup.xml' % (TESTS_DIR)"/>
+          <call function="'replication_setup'"/>
+
+          <script>
+            ldcltLoop     = testsDuration / 10
+            lowRange      = 100000
+            highRange     = lowRange + numberOfEntries
+            jvmLoop       = testsDuration / 1800  + 1
+            jvmSleep      = 1800000
+            baseDN        = 'ou=People,%s' % synchroSuffix
+            ldcltDir      = '%s/ldclt_dir' % TMPDIR
+            ldcltTemplate = '%s/ldclt_add.template' % ldcltDir
+            masterDir     = '%s/..' % masterPath
+            
+            suffix        = 'add_mod_delete'
+          </script>
+
+
+          <testcase name="getTestCaseName('Preamble')">
+            
+            <sequence>
+
+              <call function="'testCase_Preamble'"/>
+              
+              
+              <message>
+                'replication_add_mod_delete: Delete %s on %s' \
+                % (ldcltDir, STAF_CLIENT_HOSTNAME)
+              </message>
+
+              <call function="'deleteFolder'">
+                {
+                'location'   : STAF_CLIENT_HOSTNAME ,
+                'foldername' : ldcltDir
+                }
+              </call>
+
+              <message>
+                'replication_add_mod_delete: Create %s on %s' \
+                % (ldcltDir, STAF_CLIENT_HOSTNAME)
+              </message>
+
+              <call function="'createFolder'">
+                {
+                'location'   : STAF_CLIENT_HOSTNAME ,
+                'foldername' : ldcltDir
+                }
+              </call>
+
+              <message>
+                'replication_add_mod_delete: Create ldclt template'
+              </message>
+
+              <call function="'MakeALdcltTemplate'">
+                { 
+                'templateFile'     : ldcltTemplate ,
+                'templateLocation' : STAF_CLIENT_HOSTNAME
+                }
+              </call>
+
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+
+          </testcase>
+  
+
+          <testcase name="getTestCaseName('Run ldclt clients')">
+            
+            <sequence>
+              
+              <call function="'testCase_Preamble'"/>
+
+              <message>
+                 'replication_add_mod_delete: Run ldclt add'
+              </message>
+
+              <!--<timer duration="timerDuration">
+                <sequence>-->
+                  <parallel>
+                    <block name="'ldclt-add-threads'">
+                    <sequence>
+                      
+                      <message>
+                        'replication_add_mod_delete: add threads'
+                      </message>
+
+                      <script>
+                        opt1 = '-e delayedstartup=1 -e object=%s' % ldcltTemplate
+                        opt2 = '-e "rdn=uid:user.[C=INCRN(%s;%s;6)]"' \
+                                % (lowRange, highRange)
+                        opt3 = '-e add -N %s -I 68 -v -q' % ldcltLoop
+                        opts = '%s %s %s' % (opt1, opt2, opt3)
+                      </script>
+
+                      <call function="'ldclt'">
+                      {
+                      'location'       : STAF_CLIENT_HOSTNAME,
+                      'dsInstanceHost' : masterHost,
+                      'dsInstancePort' : master.getPort(),
+                      'dsInstanceDn'   : master.getRootDn(),
+                      'dsInstancePswd' : master.getRootPwd(),
+                      'dsBaseDn'       : baseDN,
+                      'ldcltOptions'   : opts,
+                      'outputFile'     : 'ldclt_add-%.res' % suffix,
+                      'outputPath'     : ldcltDir
+                      }
+                      </call>
+                      
+                    </sequence>
+                    </block>
+                    
+                    <block name="'ldclt-modify-threads'">
+                    <sequence>
+                      <call function="'Sleep'">
+                        { 'sleepForMilliSeconds'  : 120000 }
+                      </call>
+
+                      <message>
+                        'replication_add_mod_delete: modify threads'
+                      </message>
+
+                      <script>
+                        opt1 = '-e delayedstartup=1'
+                        opt2 = '-e rdn=\"uid:user.[RNDN(%s;%s;6)]\"' \
+                                % (lowRange, highRange)
+                        opt3 = '-e attreplace=\"description: random modify XXXXXX\"'
+                        opt4 = '-N %s -I 32 -v -q' % ldcltLoop
+                        opts = '%s %s %s %s' % (opt1, opt2, opt3, opt4)
+                      </script>
+
+                      <call function="'ldclt'">
+                        { 'location'       : STAF_CLIENT_HOSTNAME,
+                          'dsInstanceHost' : masterHost,
+                          'dsInstancePort' : master.getPort(),
+                          'dsInstanceDn'   : master.getRootDn(),
+                          'dsInstancePswd' : master.getRootPwd(),
+                          'dsBaseDn'       : baseDN,
+                          'ldcltOptions'   : opts,
+                          'outputFile'     : 'ldclt_modify-%s.res' % suffix,
+                          'outputPath'     : ldcltDir
+                        }
+                      </call>
+                      
+                    </sequence>
+                    </block>
+                    
+                    <block name="'ldclt-delete-threads'">
+                    <sequence>
+                      <call function="'Sleep'">
+                        { 'sleepForMilliSeconds'  : 240000 }
+                      </call>
+
+                      <message>
+                        'replication_add_mod_delete: delete threads'
+                      </message>
+
+                      <script>
+                        opt1 = '-e delayedstartup=1'
+                        opt2 = '-e delete,rdn=\"uid:user.[RNDN(%s;%s;6)]\"' \
+                                % (lowRange, highRange)
+                        opt3 = '-N %s -I 32 -v -q' % ldcltLoop
+                        opts = '%s %s %s' % (opt1, opt2, opt3)
+                      </script>
+
+                      <call function="'ldclt'">
+                      {
+                      'location'       : STAF_CLIENT_HOSTNAME,
+                      'dsInstanceHost' : masterHost,
+                      'dsInstancePort' : master.getPort(),
+                      'dsInstanceDn'   : master.getRootDn(),
+                      'dsInstancePswd' : master.getRootPwd(),
+                      'dsBaseDn'       : baseDN,
+                      'ldcltOptions'   : opts,
+                      'outputFile'     : 'ldclt_delete-%s.res' % suffix,
+                      'outputPath'     : ldcltDir
+                      }
+                      </call>
+                    </sequence>
+                    </block>
+                    
+                    <block name="'ldclt-jvm'">
+                    <sequence>
+                      <loop from="1" to="jvmLoop" var="loop">
+                        <sequence>
+                          <message>
+                            'LOOP %s out of %s' % (loop, jvmLoop)
+                          </message>
+                          
+                          <message>
+                            'replication_add_mod_delete: save jvm information'
+                          </message>
+
+                          <call function="'ldapSearchWithScript'">
+                            { 'location'       : masterHost,
+                              'dsPath'         : masterPath,
+                              'dsInstanceHost' : masterHost,
+                              'dsInstancePort' : master.getPort(),
+                              'dsInstanceDn'   : master.getRootDn(),
+                              'dsInstancePswd' : master.getRootPwd(),
+                              'dsBaseDN'       : 'cn=JVM Memory Usage,cn=monitor',
+                              'dsFilter'       : 'objectclass=*',
+                              'expectedRC'     : 'noCheck',
+                              'outputFile'     : 'jvm_%s_%s.out' \
+                                                 % (suffix, loop),
+                              'outputPath'     : masterDir
+                            }
+                          </call>
+
+                          <if expr="loop != jvmLoop">
+                            <call function="'Sleep'">
+                              { 'sleepForMilliSeconds'  : jvmSleep }
+                            </call>                            
+                          </if>
+
+                        </sequence>
+                      </loop>
+                    </sequence>
+                    </block>
+                  </parallel>
+              <!--</sequence>
+              </timer>
+
+              <script>timerRC = RC</script>
+
+              <if expr="timerRC == 0">
+                <sequence>
+                  <message>'Timer exceeds %s' % timerDuration</message>
+                  <tcstatus result="'fail'"/>
+                </sequence>
+              </if>-->
+              
+              <message>
+                'Copy %s/ldclt_add-%s.res from %s to %s on %s' % \
+                (ldcltDir, suffix, STAF_CLIENT_HOSTNAME, logs.sut, STAXServiceMachine)
+              </message>
+              <call function="'copyFile'">
+                {
+                'location'   : STAF_CLIENT_HOSTNAME,
+                'srcfile'    : '%s/ldclt_add-%s.res' % (ldcltDir, suffix),
+                'destfile'   : '%s/ldclt_add-%s.res' % (logs.sut, suffix),
+                'remotehost' : STAXServiceMachine
+                }
+              </call>
+ 
+              <message>
+                'Copy %s/ldclt_modify-%s.res from %s to %s on %s' % \
+                (ldcltDir, suffix, STAF_CLIENT_HOSTNAME, logs.sut, STAXServiceMachine)
+              </message>
+              <call function="'copyFile'">
+                {
+                'location'   : STAF_CLIENT_HOSTNAME,
+                'srcfile'    : '%s/ldclt_modify-%s.res' % (ldcltDir, suffix),
+                'destfile'   : '%s/ldclt_modify-%s.res' % (logs.sut, suffix),
+                'remotehost' : STAXServiceMachine
+                }
+              </call>
+               
+              <message>
+                'Copy %s/ldclt_delete-%s.res from %s to %s on %s' % \
+                (ldcltDir, suffix, STAF_CLIENT_HOSTNAME, logs.sut, STAXServiceMachine)
+              </message>
+              <call function="'copyFile'">
+                {
+                'location'   : STAF_CLIENT_HOSTNAME,
+                'srcfile'    : '%s/ldclt_delete-%s.res' % (ldcltDir, suffix),
+                'destfile'   : '%s/ldclt_delete-%s.res' % (logs.sut, suffix),
+                'remotehost' : STAXServiceMachine
+                }
+              </call>
+
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+            
+          </testcase>
+
+
+
+          <testcase name="getTestCaseName('Check server is still running')">
+
+            <sequence>
+              
+              <call function="'testCase_Preamble'"/>
+
+              <paralleliterate var="server" in="_topologyServerList" indexvar="i">
+                <sequence>
+                  <script>
+                    serverPath = '%s/%s' % (server.getDir(), OPENDSNAME)
+                  </script>
+
+                  <message>
+                   'replication_add_mod_delete: Check server is still running on \
+                    %s:%s' % (server.getHostname(), server.getPort())
+                  </message>
+                  
+                  <!-- Modify entry on one of the servers -->
+                  <call function="'isAlive'">
+                    { 'location'         : server.getHostname(),
+                      'dsPath'           : serverPath,
+                      'dsInstanceHost'   : server.getHostname(),
+                      'dsInstancePort'   : server.getPort(),
+                      'dsInstanceDn'     : server.getRootDn(),
+                      'dsInstancePswd'   : server.getRootPwd(),
+                      'noOfLoops'        : 10,
+                      'noOfMilliSeconds' : 5000
+                    }
+                  </call>                       
+                </sequence>
+              </paralleliterate>
+              
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+
+          </testcase>
+
+
+          
+          <testcase name="getTestCaseName('Verify replication')">
+
+            <sequence>
+
+              <call function="'testCase_Preamble'"/>
+
+              <message>
+                'replication_add_mod_delete: Verify replication is still working'
+              </message>
+                            
+              <!-- Verify the replication is still working among the servers in 
+                the topology -->          
+              <call function="'verifyReplication'">
+                [ _topologyServerList, synchroSuffix ]
+              </call> 
+
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+
+          </testcase>
+          
+          
+          
+          <testcase name="getTestCaseName('Verify tree synchronization')">
+
+            <sequence>
+
+              <call function="'testCase_Preamble'"/>
+
+              <message>
+                'replication_add_mod_delete: Verify the tree synchronization'
+              </message>
+                            
+              <!-- Verify the synchronization of the trees among the servers in 
+                the topology -->          
+              <call function="'verifyTrees'">
+                [ clientHost, clientPath, master, consumerList, synchroSuffix ]
+              </call> 
+
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+
+          </testcase>
+          
+          
+          
+          <testcase name="getTestCaseName('Check replication status')">
+
+            <sequence>
+
+              <call function="'testCase_Preamble'"/>
+
+              <message>
+                'replication_add_mod_delete: Check replication status'
+              </message>
+                            
+              <!-- Verify the synchronization of the trees among the servers in 
+                the topology -->         
+              <call function="'getReplicationStatus'">
+                { 'location'            : masterHost,
+                  'dsPath'              : masterPath,
+                  'dsInstanceHost'      : masterHost,
+                  'dsInstanceAdminPort' : master.getAdminPort(),
+                  'replicationDnList'   : [synchroSuffix]
+                }
+              </call>
+
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+
+          </testcase>
+          
+          
+          <import machine="STAF_LOCAL_HOSTNAME"
+            file="'%s/../functional-tests/testcases/replication/replication_cleanup.xml' % (TESTS_DIR)"/>
+          <call function="'replication_cleanup'">
+            { 'suiteSuffix' : suffix }
+          </call>
+
+          <call function="'testSuite_Postamble'"/>
+            
+        </sequence>
+       
+      </block>
+       
+    </sequence>
+      
+  </function>
+
+</stax>
diff --git a/opends/tests/staf-tests/stress-tests/testcases/replication/replication_add_mod_delete_search.xml b/opends/tests/staf-tests/stress-tests/testcases/replication/replication_add_mod_delete_search.xml
new file mode 100644
index 0000000..09c9451
--- /dev/null
+++ b/opends/tests/staf-tests/stress-tests/testcases/replication/replication_add_mod_delete_search.xml
@@ -0,0 +1,507 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE stax SYSTEM "../../../shared/stax.dtd">
+<!--
+ ! CDDL HEADER START
+ !
+ ! The contents of this file are subject to the terms of the
+ ! Common Development and Distribution License, Version 1.0 only
+ ! (the "License").  You may not use this file except in compliance
+ ! with the License.
+ !
+ ! You can obtain a copy of the license at
+ ! trunk/opends/resource/legal-notices/OpenDS.LICENSE
+ ! or https://OpenDS.dev.java.net/OpenDS.LICENSE.
+ ! See the License for the specific language governing permissions
+ ! and limitations under the License.
+ !
+ ! When distributing Covered Code, include this CDDL HEADER in each
+ ! file and include the License file at
+ ! trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
+ ! add the following below this CDDL HEADER, with the fields enclosed
+ ! by brackets "[]" replaced with your own identifying information:
+ !      Portions Copyright [yyyy] [name of copyright owner]
+ !
+ ! CDDL HEADER END
+ !
+ !      Copyright 2009 Sun Microsystems, Inc.
+ ! -->
+<stax>
+
+  <defaultcall function="replication_add_mod_delete_search"/>
+
+  <function name="replication_add_mod_delete_search">
+
+    <sequence>
+
+      <block name="'replication-add-mod-delete-search'">
+      
+        <sequence>
+  
+          <script>
+            if not CurrentTestPath.has_key('group'):
+              CurrentTestPath['group']='replication'
+            CurrentTestPath['suite']=STAXCurrentBlock
+          </script>
+      
+          <call function="'testSuite_Preamble'"/>
+
+          <import machine="STAF_LOCAL_HOSTNAME"
+            file="'%s/../functional-tests/testcases/replication/replication_setup.xml' % (TESTS_DIR)"/>
+          <call function="'replication_setup'"/>
+
+          <script>
+            ldcltLoop     = testsDuration / 10
+            lowRange      = 100000
+            highRange     = lowRange + numberOfEntries
+            jvmLoop       = testsDuration / 1800  + 1
+            jvmSleep      = 1800000
+            baseDN        = 'ou=People,%s' % synchroSuffix
+            ldcltDir      = '%s/ldclt_dir' % TMPDIR
+            ldcltTemplate = '%s/ldclt_add.template' % ldcltDir
+            masterDir     = '%s/..' % masterPath
+            
+            suffix        = 'add_mod_delete_search'
+          </script>
+
+
+          <testcase name="getTestCaseName('Preamble')">
+            
+            <sequence>
+
+              <call function="'testCase_Preamble'"/>
+              
+              
+              <message>
+                'replication_add_mod_delete_search: Delete %s on %s' \
+                % (ldcltDir, STAF_CLIENT_HOSTNAME)
+              </message>
+
+              <call function="'deleteFolder'">
+                {
+                'location'   : STAF_CLIENT_HOSTNAME ,
+                'foldername' : ldcltDir
+                }
+              </call>
+
+              <message>
+                'replication_add_mod_delete_search: Create %s on %s' \
+                % (ldcltDir, STAF_CLIENT_HOSTNAME)
+              </message>
+
+              <call function="'createFolder'">
+                {
+                'location'   : STAF_CLIENT_HOSTNAME ,
+                'foldername' : ldcltDir
+                }
+              </call>
+
+              <message>
+                'replication_add_mod_delete_search: Create ldclt template'
+              </message>
+
+              <call function="'MakeALdcltTemplate'">
+                { 
+                'templateFile'     : ldcltTemplate ,
+                'templateLocation' : STAF_CLIENT_HOSTNAME
+                }
+              </call>
+
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+
+          </testcase>
+  
+
+          <testcase name="getTestCaseName('Run ldclt clients')">
+            
+            <sequence>
+              
+              <call function="'testCase_Preamble'"/>
+
+              <message>
+                 'replication_add_mod_delete_search: Run ldclt add'
+              </message>
+
+              <!--<timer duration="timerDuration">
+                <sequence>-->
+                  <parallel>
+                    <block name="'ldclt-add-threads'">
+                    <sequence>
+                      
+                      <message>
+                        'replication_add_mod_delete_search: add threads'
+                      </message>
+
+                      <script>
+                        opt1 = '-e delayedstartup=1 -e object=%s' % ldcltTemplate
+                        opt2 = '-e "rdn=uid:user.[C=INCRN(%s;%s;6)]"' \
+                                % (lowRange, highRange)
+                        opt3 = '-e add -N %s -I 68 -v -q' % ldcltLoop
+                        opts = '%s %s %s' % (opt1, opt2, opt3)
+                      </script>
+
+                      <call function="'ldclt'">
+                      {
+                      'location'       : STAF_CLIENT_HOSTNAME,
+                      'dsInstanceHost' : masterHost,
+                      'dsInstancePort' : master.getPort(),
+                      'dsInstanceDn'   : master.getRootDn(),
+                      'dsInstancePswd' : master.getRootPwd(),
+                      'dsBaseDn'       : baseDN,
+                      'ldcltOptions'   : opts,
+                      'outputFile'     : 'ldclt_add-%s.res' % suffix,
+                      'outputPath'     : ldcltDir
+                      }
+                      </call>
+                      
+                    </sequence>
+                    </block>
+                    
+                    <block name="'ldclt-modify-threads'">
+                    <sequence>
+                      <call function="'Sleep'">
+                        { 'sleepForMilliSeconds'  : 120000 }
+                      </call>
+
+                      <message>
+                        'replication_add_mod_delete_search: modify threads'
+                      </message>
+
+                      <script>
+                        opt1 = '-e delayedstartup=1'
+                        opt2 = '-e rdn=\"uid:user.[RNDN(%s;%s;6)]\"' \
+                                % (lowRange, highRange)
+                        opt3 = '-e attreplace=\"description: random modify XXXXXX\"'
+                        opt4 = '-N %s -I 32 -v -q' % ldcltLoop
+                        opts = '%s %s %s %s' % (opt1, opt2, opt3, opt4)
+                      </script>
+
+                      <call function="'ldclt'">
+                        { 'location'       : STAF_CLIENT_HOSTNAME,
+                          'dsInstanceHost' : masterHost,
+                          'dsInstancePort' : master.getPort(),
+                          'dsInstanceDn'   : master.getRootDn(),
+                          'dsInstancePswd' : master.getRootPwd(),
+                          'dsBaseDn'       : baseDN,
+                          'ldcltOptions'   : opts,
+                          'outputFile'     : 'ldclt_modify-%s.res' % suffix,
+                          'outputPath'     : ldcltDir
+                        }
+                      </call>
+                      
+                    </sequence>
+                    </block>
+                    
+                    <block name="'ldclt-delete-threads'">
+                    <sequence>
+                      <call function="'Sleep'">
+                        { 'sleepForMilliSeconds'  : 240000 }
+                      </call>
+
+                      <message>
+                        'replication_add_mod_delete_search: delete threads'
+                      </message>
+
+                      <script>
+                        opt1 = '-e delayedstartup=1'
+                        opt2 = '-e delete,rdn=\"uid:user.[RNDN(%s;%s;6)]\"' \
+                                % (lowRange, highRange)
+                        opt3 = '-N %s -I 32 -v -q' % ldcltLoop
+                        opts = '%s %s %s' % (opt1, opt2, opt3)
+                      </script>
+
+                      <call function="'ldclt'">
+                      {
+                      'location'       : STAF_CLIENT_HOSTNAME,
+                      'dsInstanceHost' : masterHost,
+                      'dsInstancePort' : master.getPort(),
+                      'dsInstanceDn'   : master.getRootDn(),
+                      'dsInstancePswd' : master.getRootPwd(),
+                      'dsBaseDn'       : baseDN,
+                      'ldcltOptions'   : opts,
+                      'outputFile'     : 'ldclt_delete-%s.res' % suffix,
+                      'outputPath'     : ldcltDir
+                      }
+                      </call>
+                    </sequence>
+                    </block>
+                    
+                    <block name="'ldclt-search-threads'">
+                    <sequence>
+                      <call function="'Sleep'">
+                        { 'sleepForMilliSeconds'  : 120000 }
+                      </call>
+
+                      <message>
+                        'replication_add_mod_delete_search: search threads'
+                      </message>
+
+                      <script>
+                        opt1 = '-e delayedstartup=1 -r %s -R %s' \
+                                % (lowRange, highRange)
+                        opt2 = '-e esearch,random -f uid=user.XXXXXX'
+                        opt3 = '-N %s -I 32 -v -q' % searchLoop
+                        opts = '%s %s %s' % (opt1, opt2, opt3)
+                      </script>
+
+                      <call function="'ldclt'">
+                        { 'location'       : STAF_CLIENT_HOSTNAME,
+                          'dsInstanceHost' : masterHost,
+                          'dsInstancePort' : master.getPort(),
+                          'dsInstanceDn'   : master.getRootDn(),
+                          'dsInstancePswd' : master.getRootPwd(),
+                          'dsBaseDn'       : baseDN,
+                          'ldcltOptions'   : opts,
+                          'outputFile'     : 'ldclt_search-%s.res' % suffix,
+                          'outputPath'     : ldcltDir
+                        }
+                      </call>
+                      
+                    </sequence>
+                    </block>
+                    
+                    <block name="'ldclt-jvm'">
+                    <sequence>
+                      <loop from="1" to="jvmLoop" var="loop">
+                        <sequence>
+                          <message>
+                            'LOOP %s out of %s' % (loop, jvmLoop)
+                          </message>
+                          
+                          <message>
+                            'replication_add_mod_delete_search: save jvm information'
+                          </message>
+
+                          <call function="'ldapSearchWithScript'">
+                            { 'location'       : masterHost,
+                              'dsPath'         : masterPath,
+                              'dsInstanceHost' : masterHost,
+                              'dsInstancePort' : master.getPort(),
+                              'dsInstanceDn'   : master.getRootDn(),
+                              'dsInstancePswd' : master.getRootPwd(),
+                              'dsBaseDN'       : 'cn=JVM Memory Usage,cn=monitor',
+                              'dsFilter'       : 'objectclass=*',
+                              'expectedRC'     : 'noCheck',
+                              'outputFile'     : 'jvm_%s_%s.out' \
+                                                 % (suffix, loop),
+                              'outputPath'     : masterDir
+                            }
+                          </call>
+
+                          <if expr="loop != jvmLoop">
+                            <call function="'Sleep'">
+                              { 'sleepForMilliSeconds'  : jvmSleep }
+                            </call>                            
+                          </if>
+
+                        </sequence>
+                      </loop>
+                    </sequence>
+                    </block>
+                  </parallel>
+              <!--</sequence>
+              </timer>
+
+              <script>timerRC = RC</script>
+
+              <if expr="timerRC == 0">
+                <sequence>
+                  <message>'Timer exceeds %s' % timerDuration</message>
+                  <tcstatus result="'fail'"/>
+                </sequence>
+              </if>-->
+  
+              <message>
+                'Copy %s/ldclt_add-%s.res from %s to %s on %s' % \
+                (ldcltDir, suffix, STAF_CLIENT_HOSTNAME, logs.sut, STAXServiceMachine)
+              </message>
+              <call function="'copyFile'">
+                {
+                'location'   : STAF_CLIENT_HOSTNAME,
+                'srcfile'    : '%s/ldclt_add-%s.res' % (ldcltDir, suffix),
+                'destfile'   : '%s/ldclt_add-%s.res' % (logs.sut, suffix),
+                'remotehost' : STAXServiceMachine
+                }
+              </call>
+ 
+              <message>
+                'Copy %s/ldclt_modify-%s.res from %s to %s on %s' % \
+                (ldcltDir, suffix, STAF_CLIENT_HOSTNAME, logs.sut, STAXServiceMachine)
+              </message>
+              <call function="'copyFile'">
+                {
+                'location'   : STAF_CLIENT_HOSTNAME,
+                'srcfile'    : '%s/ldclt_modify-%s.res' % (ldcltDir, suffix),
+                'destfile'   : '%s/ldclt_modify-%s.res' % (logs.sut, suffix),
+                'remotehost' : STAXServiceMachine
+                }
+              </call>
+               
+              <message>
+                'Copy %s/ldclt_search-%s.res from %s to %s on %s' % \
+                (ldcltDir, suffix, STAF_CLIENT_HOSTNAME, logs.sut, STAXServiceMachine)
+              </message>
+              <call function="'copyFile'">
+                {
+                'location'   : STAF_CLIENT_HOSTNAME,
+                'srcfile'    : '%s/ldclt_search-%s.res' % (ldcltDir, suffix),
+                'destfile'   : '%s/ldclt_search-%s.res' % (logs.sut, suffix),
+                'remotehost' : STAXServiceMachine
+                }
+              </call>
+ 
+              <message>
+                'Copy %s/ldclt_delete-%s.res from %s to %s on %s' % \
+                (ldcltDir, suffix, STAF_CLIENT_HOSTNAME, logs.sut, STAXServiceMachine)
+              </message>
+              <call function="'copyFile'">
+                {
+                'location'   : STAF_CLIENT_HOSTNAME,
+                'srcfile'    : '%s/ldclt_delete-%s.res' % (ldcltDir, suffix),
+                'destfile'   : '%s/ldclt_delete-%s.res' % (logs.sut, suffix),
+                'remotehost' : STAXServiceMachine
+                }
+              </call>
+
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+            
+          </testcase>
+
+
+
+          <testcase name="getTestCaseName('Check server is still running')">
+
+            <sequence>
+              
+              <call function="'testCase_Preamble'"/>
+
+              <paralleliterate var="server" in="_topologyServerList" indexvar="i">
+                <sequence>
+                  <script>
+                    serverPath = '%s/%s' % (server.getDir(), OPENDSNAME)
+                  </script>
+
+                  <message>
+                   'replication_add_mod_delete_search: Check server is still running on \
+                    %s:%s' % (server.getHostname(), server.getPort())
+                  </message>
+                  
+                  <!-- Modify entry on one of the servers -->
+                  <call function="'isAlive'">
+                    { 'location'         : server.getHostname(),
+                      'dsPath'           : serverPath,
+                      'dsInstanceHost'   : server.getHostname(),
+                      'dsInstancePort'   : server.getPort(),
+                      'dsInstanceDn'     : server.getRootDn(),
+                      'dsInstancePswd'   : server.getRootPwd(),
+                      'noOfLoops'        : 10,
+                      'noOfMilliSeconds' : 5000
+                    }
+                  </call>                       
+                </sequence>
+              </paralleliterate>
+              
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+
+          </testcase>
+
+
+          
+          <testcase name="getTestCaseName('Verify replication')">
+
+            <sequence>
+
+              <call function="'testCase_Preamble'"/>
+
+              <message>
+                'replication_add_mod_delete_search: Verify replication is still working'
+              </message>
+                            
+              <!-- Verify the replication is still working among the servers in 
+                the topology -->          
+              <call function="'verifyReplication'">
+                [ _topologyServerList, synchroSuffix ]
+              </call> 
+
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+
+          </testcase>
+          
+          
+          
+          <testcase name="getTestCaseName('Verify tree synchronization')">
+
+            <sequence>
+
+              <call function="'testCase_Preamble'"/>
+
+              <message>
+                'replication_add_mod_delete_search: Verify the tree synchronization'
+              </message>
+                            
+              <!-- Verify the synchronization of the trees among the servers in 
+                the topology -->          
+              <call function="'verifyTrees'">
+                [ clientHost, clientPath, master, consumerList, synchroSuffix ]
+              </call> 
+
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+
+          </testcase>
+          
+          
+          
+          <testcase name="getTestCaseName('Check replication status')">
+
+            <sequence>
+
+              <call function="'testCase_Preamble'"/>
+
+              <message>
+                'replication_add_mod_delete_search: Check replication status'
+              </message>
+                            
+              <!-- Verify the synchronization of the trees among the servers in 
+                the topology -->         
+              <call function="'getReplicationStatus'">
+                { 'location'            : masterHost,
+                  'dsPath'              : masterPath,
+                  'dsInstanceHost'      : masterHost,
+                  'dsInstanceAdminPort' : master.getAdminPort(),
+                  'replicationDnList'   : [synchroSuffix]
+                }
+              </call>
+
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+
+          </testcase>
+          
+          
+          <import machine="STAF_LOCAL_HOSTNAME"
+            file="'%s/../functional-tests/testcases/replication/replication_cleanup.xml' % (TESTS_DIR)"/>
+          <call function="'replication_cleanup'">
+            { 'suiteSuffix' : suffix }
+          </call>
+
+          <call function="'testSuite_Postamble'"/>
+            
+        </sequence>
+       
+      </block>
+       
+    </sequence>
+      
+  </function>
+
+</stax>
diff --git a/opends/tests/staf-tests/stress-tests/testcases/replication/replication_add_modify_multiple.xml b/opends/tests/staf-tests/stress-tests/testcases/replication/replication_add_modify_multiple.xml
new file mode 100644
index 0000000..e655818
--- /dev/null
+++ b/opends/tests/staf-tests/stress-tests/testcases/replication/replication_add_modify_multiple.xml
@@ -0,0 +1,437 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE stax SYSTEM "../../../shared/stax.dtd">
+<!--
+ ! CDDL HEADER START
+ !
+ ! The contents of this file are subject to the terms of the
+ ! Common Development and Distribution License, Version 1.0 only
+ ! (the "License").  You may not use this file except in compliance
+ ! with the License.
+ !
+ ! You can obtain a copy of the license at
+ ! trunk/opends/resource/legal-notices/OpenDS.LICENSE
+ ! or https://OpenDS.dev.java.net/OpenDS.LICENSE.
+ ! See the License for the specific language governing permissions
+ ! and limitations under the License.
+ !
+ ! When distributing Covered Code, include this CDDL HEADER in each
+ ! file and include the License file at
+ ! trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
+ ! add the following below this CDDL HEADER, with the fields enclosed
+ ! by brackets "[]" replaced with your own identifying information:
+ !      Portions Copyright [yyyy] [name of copyright owner]
+ !
+ ! CDDL HEADER END
+ !
+ !      Copyright 2009 Sun Microsystems, Inc.
+ ! -->
+<stax>
+
+  <defaultcall function="replication_add_modify_multiple"/>
+
+  <function name="replication_add_modify_multiple">
+
+    <sequence>
+
+      <block name="'replication-add-modify-multiple'">
+      
+        <sequence>
+  
+          <script>
+            if not CurrentTestPath.has_key('group'):
+              CurrentTestPath['group']='replication'
+            CurrentTestPath['suite']=STAXCurrentBlock
+          </script>
+      
+          <call function="'testSuite_Preamble'"/>
+
+          <import machine="STAF_LOCAL_HOSTNAME"
+            file="'%s/../functional-tests/testcases/replication/replication_setup.xml' % (TESTS_DIR)"/>
+          <call function="'replication_setup'"/>
+
+          <script>
+            ldcltLoop     = testsDuration / 10
+            lowRange      = 100000
+            highRange     = lowRange + numberOfEntries
+            jvmLoop       = testsDuration / 1800  + 1
+            jvmSleep      = 1800000
+            baseDN        = 'ou=People,%s' % synchroSuffix
+            ldcltDir      = '%s/ldclt_dir' % TMPDIR
+            ldcltTemplate = '%s/ldclt_add.template' % ldcltDir
+            
+            server1Host   = server1.getHostname()
+            server1Path   = '%s/%s' % (server1.getDir(),OPENDSNAME)
+            server1Dir    = server1.getDir()
+            server2Host   = server2.getHostname()
+            server2Path   = '%s/%s' % (server2.getDir(),OPENDSNAME)
+            server2Dir    = server2.getDir()
+            
+            suffix        = 'add_modify_multiple'
+          </script>
+
+
+          <testcase name="getTestCaseName('Preamble')">
+            
+            <sequence>
+
+              <call function="'testCase_Preamble'"/>
+              
+              
+              <message>
+                'replication_add_modify_multiple: Delete %s on %s' \
+                % (ldcltDir, STAF_CLIENT_HOSTNAME)
+              </message>
+
+              <call function="'deleteFolder'">
+                {
+                'location'   : STAF_CLIENT_HOSTNAME ,
+                'foldername' : ldcltDir
+                }
+              </call>
+
+              <message>
+                'replication_add_modify_multiple: Create %s on %s' \
+                % (ldcltDir, STAF_CLIENT_HOSTNAME)
+              </message>
+
+              <call function="'createFolder'">
+                {
+                'location'   : STAF_CLIENT_HOSTNAME ,
+                'foldername' : ldcltDir
+                }
+              </call>
+
+              <message>
+                'replication_add_modify_multiple: Create ldclt template'
+              </message>
+
+              <call function="'MakeALdcltTemplate'">
+                { 
+                'templateFile'     : ldcltTemplate ,
+                'templateLocation' : STAF_CLIENT_HOSTNAME
+                }
+              </call>
+
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+
+          </testcase>
+  
+
+          <testcase name="getTestCaseName('Run ldclt clients')">
+            
+            <sequence>
+              
+              <call function="'testCase_Preamble'"/>
+
+              <message>
+                 'replication_add_modify_multiple: Run ldclt add'
+              </message>
+
+              <!--<timer duration="timerDuration">
+                <sequence>-->
+                  <parallel>
+                    <block name="'ldclt-add-threads-server1'">
+                    <sequence>
+                      
+                      <message>
+                        'replication_add_modify_multiple: add threads on %s:%s' \
+                        % (server1Host, server1.getPort())
+                      </message>
+
+                      <script>
+                        opt1 = '-e delayedstartup=1 -e object=%s' % ldcltTemplate
+                        opt2 = '-e "rdn=uid:user.[C=INCRN(%s;%s;6)]"' \
+                                % (lowRange, highRange)
+                        opt3 = '-e add -N %s -I 68 -v -q' % ldcltLoop
+                        opts = '%s %s %s' % (opt1, opt2, opt3)
+                      </script>
+
+                      <call function="'ldclt'">
+                      {
+                      'location'       : STAF_CLIENT_HOSTNAME,
+                      'dsInstanceHost' : server1Host,
+                      'dsInstancePort' : server1.getPort(),
+                      'dsInstanceDn'   : server1.getRootDn(),
+                      'dsInstancePswd' : server1.getRootPwd(),
+                      'dsBaseDn'       : baseDN,
+                      'ldcltOptions'   : opts,
+                      'outputFile'     : 'ldclt_add-%s_1.res' % suffix,
+                      'outputPath'     : ldcltDir
+                      }
+                      </call>
+                      
+                    </sequence>
+                    </block>
+                    
+                    <block name="'ldclt-modify-threads-server2'">
+                    <sequence>
+                      <call function="'Sleep'">
+                        { 'sleepForMilliSeconds'  : 120000 }
+                      </call>
+
+                      <message>
+                        'replication_add_modify_multiple: modify threads on %s:%s' \
+                        % (server2Host, server2.getPort())
+                      </message>
+
+                      <script>
+                        opt1 = '-e delayedstartup=1'
+                        opt2 = '-e rdn=\"uid:user.[RNDN(%s;%s;6)]\"' \
+                                % (lowRange, highRange)
+                        opt3 = '-e attreplace=\"description: random modify XXXXXX\"'
+                        opt4 = '-N %s -I 32 -v -q' % ldcltLoop
+                        opts = '%s %s %s %s' % (opt1, opt2, opt3, opt4)
+                      </script>
+
+                      <call function="'ldclt'">
+                        { 'location'       : STAF_CLIENT_HOSTNAME,
+                          'dsInstanceHost' : server2Host,
+                          'dsInstancePort' : server2.getPort(),
+                          'dsInstanceDn'   : server2.getRootDn(),
+                          'dsInstancePswd' : server2.getRootPwd(),
+                          'dsBaseDn'       : baseDN,
+                          'ldcltOptions'   : opts,
+                          'outputFile'     : 'ldclt_modify-%s_2.res' % suffix,
+                          'outputPath'     : ldcltDir
+                        }
+                      </call>
+                      
+                    </sequence>
+                    </block>
+                    
+                    <block name="'ldclt-jvm'">
+                    <sequence>
+                      <loop from="1" to="jvmLoop" var="loop">
+                        <sequence>
+                          <message>
+                            'LOOP %s out of %s' % (loop, jvmLoop)
+                          </message>
+                          
+                          <message>
+                            'replication_add_modify_multiple: save jvm information'
+                          </message>
+
+                          <call function="'ldapSearchWithScript'">
+                            { 'location'       : server1Host,
+                              'dsPath'         : server1Path,
+                              'dsInstanceHost' : server1Host,
+                              'dsInstancePort' : server1.getPort(),
+                              'dsInstanceDn'   : server1.getRootDn(),
+                              'dsInstancePswd' : server1.getRootPwd(),
+                              'dsBaseDN'       : 'cn=JVM Memory Usage,cn=monitor',
+                              'dsFilter'       : 'objectclass=*',
+                              'expectedRC'     : 'noCheck',
+                              'outputFile'     : 'jvm_%s_%s.out' \
+                                                 % (suffix, loop),
+                              'outputPath'     : server1Dir
+                            }
+                          </call>
+                          
+                          <call function="'ldapSearchWithScript'">
+                            { 'location'       : server2Host,
+                              'dsPath'         : server2Path,
+                              'dsInstanceHost' : server2Host,
+                              'dsInstancePort' : server2.getPort(),
+                              'dsInstanceDn'   : server2.getRootDn(),
+                              'dsInstancePswd' : server2.getRootPwd(),
+                              'dsBaseDN'       : 'cn=JVM Memory Usage,cn=monitor',
+                              'dsFilter'       : 'objectclass=*',
+                              'expectedRC'     : 'noCheck',
+                              'outputFile'     : 'jvm_%s_%s.out' \
+                                                 % (suffix, loop),
+                              'outputPath'     : server2Dir
+                            }
+                          </call>
+                          
+                          <if expr="loop != jvmLoop">
+                            <call function="'Sleep'">
+                              { 'sleepForMilliSeconds'  : jvmSleep }
+                            </call>                            
+                          </if>
+
+                        </sequence>
+                      </loop>
+                    </sequence>
+                    </block>
+                  </parallel>
+              <!--</sequence>
+              </timer>
+
+              <script>timerRC = RC</script>
+
+              <if expr="timerRC == 0">
+                <sequence>
+                  <message>'Timer exceeds %s' % timerDuration</message>
+                  <tcstatus result="'fail'"/>
+                </sequence>
+              </if>-->
+              
+              <message>
+                'Copy %s/ldclt_add-%s_1.res from %s to %s on %s' % \
+                (ldcltDir, suffix, STAF_CLIENT_HOSTNAME, logs.sut, STAXServiceMachine)
+              </message>
+              <call function="'copyFile'">
+                {
+                'location'   : STAF_CLIENT_HOSTNAME,
+                'srcfile'    : '%s/ldclt_add-%s_1.res' % (ldcltDir, suffix),
+                'destfile'   : '%s/ldclt_add-%s_1.res' % (logs.sut, suffix),
+                'remotehost' : STAXServiceMachine
+                }
+              </call>
+ 
+              <message>
+                'Copy %s/ldclt_modify-%s_2.res from %s to %s on %s' % \
+                (ldcltDir, suffix, STAF_CLIENT_HOSTNAME, logs.sut, STAXServiceMachine)
+              </message>
+              <call function="'copyFile'">
+                {
+                'location'   : STAF_CLIENT_HOSTNAME,
+                'srcfile'    : '%s/ldclt_modify-%s_2.res' % (ldcltDir, suffix),
+                'destfile'   : '%s/ldclt_modify-%s_2.res' % (logs.sut, suffix),
+                'remotehost' : STAXServiceMachine
+                }
+              </call>
+
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+            
+          </testcase>
+
+
+
+          <testcase name="getTestCaseName('Check server is still running')">
+
+            <sequence>
+              
+              <call function="'testCase_Preamble'"/>
+
+              <paralleliterate var="server" in="_topologyServerList" indexvar="i">
+                <sequence>
+                  <script>
+                    serverPath = '%s/%s' % (server.getDir(), OPENDSNAME)
+                  </script>
+
+                  <message>
+                   'replication_add_modify_multiple: Check server is still running on \
+                    %s:%s' % (server.getHostname(), server.getPort())
+                  </message>
+                  
+                  <!-- Modify entry on one of the servers -->
+                  <call function="'isAlive'">
+                    { 'location'         : server.getHostname(),
+                      'dsPath'           : serverPath,
+                      'dsInstanceHost'   : server.getHostname(),
+                      'dsInstancePort'   : server.getPort(),
+                      'dsInstanceDn'     : server.getRootDn(),
+                      'dsInstancePswd'   : server.getRootPwd(),
+                      'noOfLoops'        : 10,
+                      'noOfMilliSeconds' : 5000
+                    }
+                  </call>                       
+                </sequence>
+              </paralleliterate>
+              
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+
+          </testcase>
+
+
+          
+          <testcase name="getTestCaseName('Verify replication')">
+
+            <sequence>
+
+              <call function="'testCase_Preamble'"/>
+
+              <message>
+                'replication_add_modify_multiple: Verify replication is still working'
+              </message>
+                            
+              <!-- Verify the replication is still working among the servers in 
+                the topology -->          
+              <call function="'verifyReplication'">
+                [ _topologyServerList, synchroSuffix ]
+              </call> 
+
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+
+          </testcase>
+          
+          
+          
+          <testcase name="getTestCaseName('Verify tree synchronization')">
+
+            <sequence>
+
+              <call function="'testCase_Preamble'"/>
+
+              <message>
+                'replication_add_modify_multiple: Verify the tree synchronization'
+              </message>
+                            
+              <!-- Verify the synchronization of the trees among the servers in 
+                the topology -->          
+              <call function="'verifyTrees'">
+                [ clientHost, clientPath, master, consumerList, synchroSuffix ]
+              </call> 
+
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+
+          </testcase>
+          
+          
+          
+          <testcase name="getTestCaseName('Check replication status')">
+
+            <sequence>
+
+              <call function="'testCase_Preamble'"/>
+
+              <message>
+                'replication_add_modify_multiple: Check replication status'
+              </message>
+                            
+              <!-- Verify the synchronization of the trees among the servers in 
+                the topology -->         
+              <call function="'getReplicationStatus'">
+                { 'location'            : masterHost,
+                  'dsPath'              : masterPath,
+                  'dsInstanceHost'      : masterHost,
+                  'dsInstanceAdminPort' : master.getAdminPort(),
+                  'replicationDnList'   : [synchroSuffix]
+                }
+              </call>
+
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+
+          </testcase>
+          
+          
+          <import machine="STAF_LOCAL_HOSTNAME"
+            file="'%s/../functional-tests/testcases/replication/replication_cleanup.xml' % (TESTS_DIR)"/>
+          <call function="'replication_cleanup'">
+            { 'suiteSuffix' : suffix }
+          </call>
+
+          <call function="'testSuite_Postamble'"/>
+            
+        </sequence>
+       
+      </block>
+       
+    </sequence>
+      
+  </function>
+
+</stax>
diff --git a/opends/tests/staf-tests/stress-tests/testcases/replication/replication_add_search_multiple.xml b/opends/tests/staf-tests/stress-tests/testcases/replication/replication_add_search_multiple.xml
new file mode 100644
index 0000000..2afb51e
--- /dev/null
+++ b/opends/tests/staf-tests/stress-tests/testcases/replication/replication_add_search_multiple.xml
@@ -0,0 +1,436 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE stax SYSTEM "../../../shared/stax.dtd">
+<!--
+ ! CDDL HEADER START
+ !
+ ! The contents of this file are subject to the terms of the
+ ! Common Development and Distribution License, Version 1.0 only
+ ! (the "License").  You may not use this file except in compliance
+ ! with the License.
+ !
+ ! You can obtain a copy of the license at
+ ! trunk/opends/resource/legal-notices/OpenDS.LICENSE
+ ! or https://OpenDS.dev.java.net/OpenDS.LICENSE.
+ ! See the License for the specific language governing permissions
+ ! and limitations under the License.
+ !
+ ! When distributing Covered Code, include this CDDL HEADER in each
+ ! file and include the License file at
+ ! trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
+ ! add the following below this CDDL HEADER, with the fields enclosed
+ ! by brackets "[]" replaced with your own identifying information:
+ !      Portions Copyright [yyyy] [name of copyright owner]
+ !
+ ! CDDL HEADER END
+ !
+ !      Copyright 2009 Sun Microsystems, Inc.
+ ! -->
+<stax>
+
+  <defaultcall function="replication_add_search_multiple"/>
+
+  <function name="replication_add_search_multiple">
+
+    <sequence>
+
+      <block name="'replication-add-search-multiple'">
+      
+        <sequence>
+  
+          <script>
+            if not CurrentTestPath.has_key('group'):
+              CurrentTestPath['group']='replication'
+            CurrentTestPath['suite']=STAXCurrentBlock
+          </script>
+      
+          <call function="'testSuite_Preamble'"/>
+
+          <import machine="STAF_LOCAL_HOSTNAME"
+            file="'%s/../functional-tests/testcases/replication/replication_setup.xml' % (TESTS_DIR)"/>
+          <call function="'replication_setup'"/>
+
+          <script>
+            ldcltLoop     = testsDuration / 10
+            lowRange      = 100000
+            highRange     = lowRange + numberOfEntries
+            jvmLoop       = testsDuration / 1800  + 1
+            jvmSleep      = 1800000
+            baseDN        = 'ou=People,%s' % synchroSuffix
+            ldcltDir      = '%s/ldclt_dir' % TMPDIR
+            ldcltTemplate = '%s/ldclt_add.template' % ldcltDir
+            
+            server1Host   = server1.getHostname()
+            server1Path   = '%s/%s' % (server1.getDir(),OPENDSNAME)
+            server1Dir    = server1.getDir()
+            server2Host   = server2.getHostname()
+            server2Path   = '%s/%s' % (server2.getDir(),OPENDSNAME)
+            server2Dir    = server2.getDir()
+            
+            suffix        = 'add_search_multiple'
+          </script>
+
+
+          <testcase name="getTestCaseName('Preamble')">
+            
+            <sequence>
+
+              <call function="'testCase_Preamble'"/>
+              
+              
+              <message>
+                'replication_add_search_multiple: Delete %s on %s' \
+                % (ldcltDir, STAF_CLIENT_HOSTNAME)
+              </message>
+
+              <call function="'deleteFolder'">
+                {
+                'location'   : STAF_CLIENT_HOSTNAME ,
+                'foldername' : ldcltDir
+                }
+              </call>
+
+              <message>
+                'replication_add_search_multiple: Create %s on %s' \
+                % (ldcltDir, STAF_CLIENT_HOSTNAME)
+              </message>
+
+              <call function="'createFolder'">
+                {
+                'location'   : STAF_CLIENT_HOSTNAME ,
+                'foldername' : ldcltDir
+                }
+              </call>
+
+              <message>
+                'replication_add_search_multiple: Create ldclt template'
+              </message>
+
+              <call function="'MakeALdcltTemplate'">
+                { 
+                'templateFile'     : ldcltTemplate ,
+                'templateLocation' : STAF_CLIENT_HOSTNAME
+                }
+              </call>
+
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+
+          </testcase>
+  
+
+          <testcase name="getTestCaseName('Run ldclt clients')">
+            
+            <sequence>
+              
+              <call function="'testCase_Preamble'"/>
+
+              <message>
+                'replication_add_search_multiple: Run ldclt add'
+              </message>
+
+              <!--<timer duration="timerDuration">
+                <sequence>-->
+                  <parallel>
+                    <block name="'ldclt-add-threads-server1'">
+                    <sequence>
+                      
+                      <message>
+                        'replication_add_search_multiple: add threads on %s:%s' \
+                        % (server1Host, server1.getPort())
+                      </message>
+
+                      <script>
+                        opt1 = '-e delayedstartup=1 -e object=%s' % ldcltTemplate
+                        opt2 = '-e "rdn=uid:user.[C=INCRN(%s;%s;6)]"' \
+                                % (lowRange, highRange)
+                        opt3 = '-e add -N %s -I 68 -v -q' % ldcltLoop
+                        opts = '%s %s %s' % (opt1, opt2, opt3)
+                      </script>
+
+                      <call function="'ldclt'">
+                      {
+                      'location'       : STAF_CLIENT_HOSTNAME,
+                      'dsInstanceHost' : server1Host,
+                      'dsInstancePort' : server1.getPort(),
+                      'dsInstanceDn'   : server1.getRootDn(),
+                      'dsInstancePswd' : server1.getRootPwd(),
+                      'dsBaseDn'       : baseDN,
+                      'ldcltOptions'   : opts,
+                      'outputFile'     : 'ldclt_add-%s_1.res' % suffix,
+                      'outputPath'     : ldcltDir
+                      }
+                      </call>
+                      
+                    </sequence>
+                    </block>
+                    
+                    <block name="'ldclt-search-threads-server2'">
+                    <sequence>
+                      <call function="'Sleep'">
+                        { 'sleepForMilliSeconds'  : 120000 }
+                      </call>
+
+                      <message>
+                        'replication_add_search_multiple: search threads on %s:%s' \
+                        % (server2Host, server2.getPort())
+                      </message>
+
+                      <script>
+                        opt1 = '-e delayedstartup=1 -r %s -R %s' \
+                                % (lowRange, highRange)
+                        opt2 = '-e esearch,random -f uid=user.XXXXXX'
+                        opt3 = '-N %s -I 32 -v -q' % ldcltLoop
+                        opts = '%s %s %s' % (opt1, opt2, opt3)
+                      </script>
+
+                      <call function="'ldclt'">
+                        { 'location'       : STAF_CLIENT_HOSTNAME,
+                          'dsInstanceHost' : server2Host,
+                          'dsInstancePort' : server2.getPort(),
+                          'dsInstanceDn'   : server2.getRootDn(),
+                          'dsInstancePswd' : server2.getRootPwd(),
+                          'dsBaseDn'       : baseDN,
+                          'ldcltOptions'   : opts,
+                          'outputFile'     : 'ldclt_search-%s_2.res' % suffix,
+                          'outputPath'     : ldcltDir
+                        }
+                      </call>
+                      
+                    </sequence>
+                    </block>
+                    
+                    <block name="'ldclt-jvm'">
+                    <sequence>
+                      <loop from="1" to="jvmLoop" var="loop">
+                        <sequence>
+                          <message>
+                            'LOOP %s out of %s' % (loop, jvmLoop)
+                          </message>
+                          
+                          <message>
+                            'replication_add_search_multiple: save jvm information'
+                          </message>
+
+                          <call function="'ldapSearchWithScript'">
+                            { 'location'       : server1Host,
+                              'dsPath'         : server1Path,
+                              'dsInstanceHost' : server1Host,
+                              'dsInstancePort' : server1.getPort(),
+                              'dsInstanceDn'   : server1.getRootDn(),
+                              'dsInstancePswd' : server1.getRootPwd(),
+                              'dsBaseDN'       : 'cn=JVM Memory Usage,cn=monitor',
+                              'dsFilter'       : 'objectclass=*',
+                              'expectedRC'     : 'noCheck',
+                              'outputFile'     : 'jvm_%s_%s.out' \
+                                                 % (suffix, loop),
+                              'outputPath'     : server1Dir
+                            }
+                          </call>
+                          
+                          <call function="'ldapSearchWithScript'">
+                            { 'location'       : server2Host,
+                              'dsPath'         : server2Path,
+                              'dsInstanceHost' : server2Host,
+                              'dsInstancePort' : server2.getPort(),
+                              'dsInstanceDn'   : server2.getRootDn(),
+                              'dsInstancePswd' : server2.getRootPwd(),
+                              'dsBaseDN'       : 'cn=JVM Memory Usage,cn=monitor',
+                              'dsFilter'       : 'objectclass=*',
+                              'expectedRC'     : 'noCheck',
+                              'outputFile'     : 'jvm_%s_%s.out' \
+                                                 % (suffix, loop),
+                              'outputPath'     : server2Dir
+                            }
+                          </call>
+
+                          <if expr="loop != jvmLoop">
+                            <call function="'Sleep'">
+                              { 'sleepForMilliSeconds'  : jvmSleep }
+                            </call>                            
+                          </if>
+
+                        </sequence>
+                      </loop>
+                    </sequence>
+                    </block>
+                  </parallel>
+              <!--</sequence>
+              </timer>
+
+              <script>timerRC = RC</script>
+
+              <if expr="timerRC == 0">
+                <sequence>
+                  <message>'Timer exceeds %s' % timerDuration</message>
+                  <tcstatus result="'fail'"/>
+                </sequence>
+              </if>-->
+              
+              <message>
+                'Copy %s/ldclt_add-%s_1.res from %s to %s on %s' % \
+                (ldcltDir, suffix, STAF_CLIENT_HOSTNAME, logs.sut, STAXServiceMachine)
+              </message>
+              <call function="'copyFile'">
+                {
+                'location'   : STAF_CLIENT_HOSTNAME,
+                'srcfile'    : '%s/ldclt_add-%s_1.res' % (ldcltDir, suffix),
+                'destfile'   : '%s/ldclt_add-%s_1.res' % (logs.sut, suffix),
+                'remotehost' : STAXServiceMachine
+                }
+              </call>
+ 
+              <message>
+                'Copy %s/ldclt_search-%s_2.res from %s to %s on %s' % \
+                (ldcltDir, suffix, STAF_CLIENT_HOSTNAME, logs.sut, STAXServiceMachine)
+              </message>
+              <call function="'copyFile'">
+                {
+                'location'   : STAF_CLIENT_HOSTNAME,
+                'srcfile'    : '%s/ldclt_search-%s_2.res' % (ldcltDir, suffix),
+                'destfile'   : '%s/ldclt_search-%s_2.res' % (logs.sut, suffix),
+                'remotehost' : STAXServiceMachine
+                }
+              </call>
+
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+            
+          </testcase>
+
+
+
+          <testcase name="getTestCaseName('Check server is still running')">
+
+            <sequence>
+              
+              <call function="'testCase_Preamble'"/>
+
+              <paralleliterate var="server" in="_topologyServerList" indexvar="i">
+                <sequence>
+                  <script>
+                    serverPath = '%s/%s' % (server.getDir(), OPENDSNAME)
+                  </script>
+
+                  <message>
+                   'replication_add_search_multiple: Check server is still running on \
+                    %s:%s' % (server.getHostname(), server.getPort())
+                  </message>
+                  
+                  <!-- Modify entry on one of the servers -->
+                  <call function="'isAlive'">
+                    { 'location'         : server.getHostname(),
+                      'dsPath'           : serverPath,
+                      'dsInstanceHost'   : server.getHostname(),
+                      'dsInstancePort'   : server.getPort(),
+                      'dsInstanceDn'     : server.getRootDn(),
+                      'dsInstancePswd'   : server.getRootPwd(),
+                      'noOfLoops'        : 10,
+                      'noOfMilliSeconds' : 5000
+                    }
+                  </call>                       
+                </sequence>
+              </paralleliterate>
+              
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+
+          </testcase>
+
+
+          
+          <testcase name="getTestCaseName('Verify replication')">
+
+            <sequence>
+
+              <call function="'testCase_Preamble'"/>
+
+              <message>
+                'replication_add_search_multiple: Verify replication is still working'
+              </message>
+                            
+              <!-- Verify the replication is still working among the servers in 
+                the topology -->          
+              <call function="'verifyReplication'">
+                [ _topologyServerList, synchroSuffix ]
+              </call> 
+
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+
+          </testcase>
+          
+          
+          
+          <testcase name="getTestCaseName('Verify tree synchronization')">
+
+            <sequence>
+
+              <call function="'testCase_Preamble'"/>
+
+              <message>
+                'replication_add_search_multiple: Verify the tree synchronization'
+              </message>
+                            
+              <!-- Verify the synchronization of the trees among the servers in 
+                the topology -->          
+              <call function="'verifyTrees'">
+                [ clientHost, clientPath, master, consumerList, synchroSuffix ]
+              </call> 
+
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+
+          </testcase>
+          
+          
+          
+          <testcase name="getTestCaseName('Check replication status')">
+
+            <sequence>
+
+              <call function="'testCase_Preamble'"/>
+
+              <message>
+                'replication_add_search_multiple: Check replication status'
+              </message>
+                            
+              <!-- Verify the synchronization of the trees among the servers in 
+                the topology -->         
+              <call function="'getReplicationStatus'">
+                { 'location'            : masterHost,
+                  'dsPath'              : masterPath,
+                  'dsInstanceHost'      : masterHost,
+                  'dsInstanceAdminPort' : master.getAdminPort(),
+                  'replicationDnList'   : [synchroSuffix]
+                }
+              </call>
+
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+
+          </testcase>
+          
+          
+          <import machine="STAF_LOCAL_HOSTNAME"
+            file="'%s/../functional-tests/testcases/replication/replication_cleanup.xml' % (TESTS_DIR)"/>
+          <call function="'replication_cleanup'">
+            { 'suiteSuffix' : suffix }
+          </call>
+
+          <call function="'testSuite_Postamble'"/>
+            
+        </sequence>
+       
+      </block>
+       
+    </sequence>
+      
+  </function>
+
+</stax>
diff --git a/opends/tests/staf-tests/stress-tests/testcases/replication/replication_modify.xml b/opends/tests/staf-tests/stress-tests/testcases/replication/replication_modify.xml
new file mode 100644
index 0000000..1e54943
--- /dev/null
+++ b/opends/tests/staf-tests/stress-tests/testcases/replication/replication_modify.xml
@@ -0,0 +1,450 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE stax SYSTEM "../../../shared/stax.dtd">
+<!--
+ ! CDDL HEADER START
+ !
+ ! The contents of this file are subject to the terms of the
+ ! Common Development and Distribution License, Version 1.0 only
+ ! (the "License").  You may not use this file except in compliance
+ ! with the License.
+ !
+ ! You can obtain a copy of the license at
+ ! trunk/opends/resource/legal-notices/OpenDS.LICENSE
+ ! or https://OpenDS.dev.java.net/OpenDS.LICENSE.
+ ! See the License for the specific language governing permissions
+ ! and limitations under the License.
+ !
+ ! When distributing Covered Code, include this CDDL HEADER in each
+ ! file and include the License file at
+ ! trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
+ ! add the following below this CDDL HEADER, with the fields enclosed
+ ! by brackets "[]" replaced with your own identifying information:
+ !      Portions Copyright [yyyy] [name of copyright owner]
+ !
+ ! CDDL HEADER END
+ !
+ !      Copyright 2009 Sun Microsystems, Inc.
+ ! -->
+<stax>
+
+  <defaultcall function="replication_modify"/>
+
+  <function name="replication_modify">
+
+    <sequence>
+
+      <block name="'replication-modify'">
+      
+        <sequence>
+  
+          <script>
+            if not CurrentTestPath.has_key('group'):
+              CurrentTestPath['group']='replication'
+            CurrentTestPath['suite']=STAXCurrentBlock
+          </script>
+      
+          <call function="'testSuite_Preamble'"/>
+
+          <import machine="STAF_LOCAL_HOSTNAME"
+            file="'%s/../functional-tests/testcases/replication/replication_setup.xml' % (TESTS_DIR)"/>
+          <call function="'replication_setup'"/>
+
+          <script>
+            ldcltLoop    = testsDuration / 10
+            lowRange     = 100000
+            highRange    = lowRange + numberOfEntries
+            jvmLoop      = testsDuration / 1800  + 1
+            jvmSleep     = 1800000
+            baseDN       = 'ou=People,%s' % synchroSuffix
+            ldcltDir     = '%s/ldclt_dir' % TMPDIR
+            masterDir    = '%s/..' % masterPath            
+            ldifTemplate = '%s/%s_entries.template' \
+                           % (masterDir, numberOfEntries)
+            ldifFile     = '%s/%s_entries.ldif' \
+                           % (masterDir, numberOfEntries)
+            totalEntries = numberOfEntries + 2
+            
+            suffix       = 'modify'
+          </script>
+
+          
+          <testcase name="getTestCaseName('Preamble')">
+            
+            <sequence>
+
+              <call function="'testCase_Preamble'"/>
+
+              <!-- Check if 'ldifFile' exists -->
+              <call function="'GetEntry'">
+                {
+                'location'  : masterHost ,
+                'entry'     : ldifFile ,
+                'attribute' : 'TYPE'
+                }
+              </call>
+              <if expr="RC == 48">
+                <sequence>
+                  <message>
+                    'replication_modify: File %s does not exist, create it' \
+                    % ldifFile
+                  </message>
+
+                  <message>
+                    'replication_modify: Make a make-ldif template file'
+                  </message>
+
+                  <call function="'MakeAMakeLdifTemplate'">
+                    {
+                    'numEntries'           : numberOfEntries,
+                    'suffix'               : synchroSuffix,
+                    'startFrom'            : lowRange,
+                    'additionalAttributes' : True,
+                    'templateFile'         : ldifTemplate,
+                    'templateLocation'     : masterHost
+                    }
+                  </call>
+
+                  <message>
+                    'replication_modify: Make the ldif file'
+                  </message>
+
+                  <call function="'MakeLdifWithScript'">
+                    {
+                    'location'     : masterHost,
+                    'dsPath'       : masterPath,
+                    'templateFile' : ldifTemplate,
+                    'ldifFile'     : ldifFile
+                    }
+                  </call>
+                </sequence>
+                <else>
+                  <message>
+                    'replication_modify: File %s exists, do nothing' % ldifFile
+                  </message>
+                </else>
+              </if>
+              
+              <message>
+               'replication_modify: Import large ldif file'
+              </message> 
+
+              <!-- Stop "master" Directory Server -->
+              <call function="'StopDsWithScript'">
+                { 'location'    : masterHost,
+                  'dsPath'      : masterPath,
+                  'dsHost'      : masterHost,
+                  'dsAdminPort' : master.getAdminPort(),
+                  'dsBindDN'    : master.getRootDn(),
+                  'dsBindPwd'   : master.getRootPwd()
+                }
+              </call>
+              
+              <!-- Import data into "master" Directory Server -->
+              <call function="'ImportLdifWithScript'">
+                { 'location'   : masterHost,
+                  'dsPath'     : masterPath,
+                  'dsBackEnd'  : DIRECTORY_INSTANCE_BE,          
+                  'dsLdifFile' : ldifFile
+                }
+              </call>
+
+              <script>
+               returnString = STAXResult[0][1]
+              </script>
+
+              <call function="'checktestString'">
+                { 'returnString'   : returnString,
+                  'expectedString' : 'Processed %s entries' % totalEntries
+                }
+              </call>
+
+              <message>
+                'replication_modify: Start DS running on %s:%s' % \
+                (masterHost, master.getPort())
+              </message>
+
+              <!-- Start the Directory Server -->
+              <call function="'StartDsWithScript'">
+                { 'location'  : masterHost,
+                  'dsPath'    : masterPath
+                }
+              </call>
+              
+              <!-- Wait for DS to start -->
+              <call function="'isAlive'">
+                { 'location'         : masterHost,
+                  'dsPath'           : masterPath,
+                  'dsInstanceHost'   : masterHost,
+                  'dsInstancePort'   : master.getPort(),
+                  'dsInstanceDn'     : master.getRootDn(),
+                  'dsInstancePswd'   : master.getRootPwd(),
+                  'noOfLoops'        : 10,
+                  'noOfMilliSeconds' : 5000
+                }
+              </call>              
+
+              <!-- Perform the total update -->
+              <call function="'initializeReplication'">
+                { 'location'                : clientHost,
+                  'dsPath'                  : clientPath,
+                  'sourceInstanceHost'      : masterHost,
+                  'sourceInstanceAdminPort' : master.getAdminPort(),
+                  'replicationDnList'       : [synchroSuffix]
+                }
+              </call>
+
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+
+          </testcase>
+
+
+          <testcase name="getTestCaseName('Run ldclt clients')">
+            
+            <sequence>
+              
+              <call function="'testCase_Preamble'"/>
+
+              <message>
+                 'replication_modify: Run ldclt modify'
+              </message>
+
+              <!--<timer duration="timerDuration">
+                <sequence>-->
+                  <parallel>
+                    <block name="'ldclt-modify-threads'">
+                    <sequence>
+                      
+                      <message>
+                        'replication_modify: modify threads'
+                      </message>
+
+                      <script>
+                        opt1 = '-e delayedstartup=1'
+                        opt2 = '-e rdn=\"uid:user.[RNDN(%s;%s;6)]\"' \
+                                % (lowRange, highRange)
+                        opt3 = '-e attreplace=\"description: random modify XXXXXX\"'
+                        opt4 = '-N %s -I 32 -v -q' % ldcltLoop
+                        opts = '%s %s %s %s' % (opt1, opt2, opt3, opt4)
+                      </script>
+
+                      <call function="'ldclt'">
+                        { 'location'       : STAF_CLIENT_HOSTNAME,
+                          'dsInstanceHost' : masterHost,
+                          'dsInstancePort' : master.getPort(),
+                          'dsInstanceDn'   : master.getRootDn(),
+                          'dsInstancePswd' : master.getRootPwd(),
+                          'dsBaseDn'       : baseDN,
+                          'ldcltOptions'   : opts,
+                          'outputFile'     : 'ldclt_modify-%s.res' % suffix,
+                          'outputPath'     : ldcltDir
+                        }
+                      </call>
+                      
+                    </sequence>
+                    </block>
+                    
+                    <block name="'ldclt-jvm'">
+                    <sequence>
+                      <loop from="1" to="jvmLoop" var="loop">
+                        <sequence>
+                          <message>
+                            'LOOP %s out of %s' % (loop, jvmLoop)
+                          </message>
+                          
+                          <message>
+                            'replication_modify: save jvm information'
+                          </message>
+
+                          <call function="'ldapSearchWithScript'">
+                            { 'location'       : masterHost,
+                              'dsPath'         : masterPath,
+                              'dsInstanceHost' : masterHost,
+                              'dsInstancePort' : master.getPort(),
+                              'dsInstanceDn'   : master.getRootDn(),
+                              'dsInstancePswd' : master.getRootPwd(),
+                              'dsBaseDN'       : 'cn=JVM Memory Usage,cn=monitor',
+                              'dsFilter'       : 'objectclass=*',
+                              'expectedRC'     : 'noCheck',
+                              'outputFile'     : 'jvm_%s_%s.out' % (suffix, loop),
+                              'outputPath'     : masterDir
+                            }
+                          </call>
+                          
+                          <if expr="loop != jvmLoop">
+                            <call function="'Sleep'">
+                              { 'sleepForMilliSeconds'  : jvmSleep }
+                            </call>                            
+                          </if>
+
+                        </sequence>
+                      </loop>
+                    </sequence>
+                    </block>
+                  </parallel>
+              <!--</sequence>
+              </timer>
+
+              <script>timerRC = RC</script>
+
+              <if expr="timerRC == 0">
+                <sequence>
+                  <message>'Timer exceeds %s' % timerDuration</message>
+                  <tcstatus result="'fail'"/>
+                </sequence>
+              </if>-->
+              
+              <message>
+                'Copy %s/ldclt_modify-%s.res from %s to %s on %s' % \
+                (ldcltDir, suffix, STAF_CLIENT_HOSTNAME, logs.sut, STAXServiceMachine)
+              </message>
+              <call function="'copyFile'">
+                {
+                'location'   : STAF_CLIENT_HOSTNAME,
+                'srcfile'    : '%s/ldclt_modify-%s.res' % (ldcltDir, suffix),
+                'destfile'   : '%s/ldclt_modify-%s.res' % (logs.sut, suffix),
+                'remotehost' : STAXServiceMachine
+                }
+              </call>
+              
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+            
+          </testcase>
+
+
+
+          <testcase name="getTestCaseName('Check server is still running')">
+
+            <sequence>
+              
+              <call function="'testCase_Preamble'"/>
+
+              <paralleliterate var="server" in="_topologyServerList" indexvar="i">
+                <sequence>
+                  <script>
+                    serverPath = '%s/%s' % (server.getDir(), OPENDSNAME)
+                  </script>
+
+                  <message>
+                   'replication_modify: Check server is still running on \
+                    %s:%s' % (server.getHostname(), server.getPort())
+                  </message>
+                  
+                  <!-- Modify entry on one of the servers -->
+                  <call function="'isAlive'">
+                    { 'location'         : server.getHostname(),
+                      'dsPath'           : serverPath,
+                      'dsInstanceHost'   : server.getHostname(),
+                      'dsInstancePort'   : server.getPort(),
+                      'dsInstanceDn'     : server.getRootDn(),
+                      'dsInstancePswd'   : server.getRootPwd(),
+                      'noOfLoops'        : 10 ,
+                      'noOfMilliSeconds' : 5000
+                    }
+                  </call>                       
+                </sequence>
+              </paralleliterate>
+
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+
+          </testcase>
+          
+          
+          <testcase name="getTestCaseName('Verify replication')">
+
+            <sequence>
+
+              <call function="'testCase_Preamble'"/>
+
+              <message>
+                'replication_modify: Verify replication is still working'
+              </message>
+                            
+              <!-- Verify the replication is still working among the servers in 
+                the topology -->          
+              <call function="'verifyReplication'">
+                [ _topologyServerList, synchroSuffix ]
+              </call> 
+
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+
+          </testcase>
+          
+          
+          
+          <testcase name="getTestCaseName('Verify tree synchronization')">
+
+            <sequence>
+
+              <call function="'testCase_Preamble'"/>
+
+              <message>
+                'replication_modify: Verify the tree synchronization'
+              </message>
+                            
+              <!-- Verify the synchronization of the trees among the servers in 
+                the topology -->          
+              <call function="'verifyTrees'">
+                [ clientHost, clientPath, master, consumerList, synchroSuffix ]
+              </call> 
+
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+
+          </testcase>
+          
+          
+          
+          <testcase name="getTestCaseName('Check replication status')">
+
+            <sequence>
+
+              <call function="'testCase_Preamble'"/>
+
+              <message>
+                'replication_modify: Check replication status'
+              </message>
+                            
+              <!-- Verify the synchronization of the trees among the servers in 
+                the topology -->         
+              <call function="'getReplicationStatus'">
+                { 'location'            : masterHost,
+                  'dsPath'              : masterPath,
+                  'dsInstanceHost'      : masterHost,
+                  'dsInstanceAdminPort' : master.getAdminPort(),
+                  'replicationDnList'   : [synchroSuffix]
+                }
+              </call>
+
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+
+          </testcase>
+          
+          
+          <import machine="STAF_LOCAL_HOSTNAME"
+            file="'%s/../functional-tests/testcases/replication/replication_cleanup.xml' % (TESTS_DIR)"/>
+          <call function="'replication_cleanup'">
+            { 'suiteSuffix' : suffix }
+          </call>
+
+          <call function="'testSuite_Postamble'"/>
+            
+        </sequence>
+       
+      </block>
+       
+    </sequence>
+      
+  </function>
+
+</stax>
diff --git a/opends/tests/staf-tests/stress-tests/testcases/replication/replication_modify_modifyrdn_multiple.xml b/opends/tests/staf-tests/stress-tests/testcases/replication/replication_modify_modifyrdn_multiple.xml
new file mode 100644
index 0000000..f9062a3
--- /dev/null
+++ b/opends/tests/staf-tests/stress-tests/testcases/replication/replication_modify_modifyrdn_multiple.xml
@@ -0,0 +1,519 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE stax SYSTEM "../../../shared/stax.dtd">
+<!--
+ ! CDDL HEADER START
+ !
+ ! The contents of this file are subject to the terms of the
+ ! Common Development and Distribution License, Version 1.0 only
+ ! (the "License").  You may not use this file except in compliance
+ ! with the License.
+ !
+ ! You can obtain a copy of the license at
+ ! trunk/opends/resource/legal-notices/OpenDS.LICENSE
+ ! or https://OpenDS.dev.java.net/OpenDS.LICENSE.
+ ! See the License for the specific language governing permissions
+ ! and limitations under the License.
+ !
+ ! When distributing Covered Code, include this CDDL HEADER in each
+ ! file and include the License file at
+ ! trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
+ ! add the following below this CDDL HEADER, with the fields enclosed
+ ! by brackets "[]" replaced with your own identifying information:
+ !      Portions Copyright [yyyy] [name of copyright owner]
+ !
+ ! CDDL HEADER END
+ !
+ !      Copyright 2009 Sun Microsystems, Inc.
+ ! -->
+<stax>
+
+  <defaultcall function="replication_modify_modifyrdn_multiple"/>
+
+  <function name="replication_modify_modifyrdn_multiple">
+
+    <sequence>
+
+      <block name="'replication-modify-modifyrdn-multiple'">
+      
+        <sequence>
+  
+          <script>
+            if not CurrentTestPath.has_key('group'):
+              CurrentTestPath['group']='replication'
+            CurrentTestPath['suite']=STAXCurrentBlock
+          </script>
+      
+          <call function="'testSuite_Preamble'"/>
+
+          <import machine="STAF_LOCAL_HOSTNAME"
+            file="'%s/../functional-tests/testcases/replication/replication_setup.xml' % (TESTS_DIR)"/>
+          <call function="'replication_setup'"/>
+
+          <script>
+            ldcltLoop = testsDuration / 10
+            lowRange      = 100000
+            highRange     = lowRange + numberOfEntries
+            jvmLoop       = testsDuration / 1800  + 1
+            jvmSleep      = 1800000
+            baseDN        = 'ou=People,%s' % synchroSuffix
+            
+            server1Host   = server1.getHostname()
+            server1Path   = '%s/%s' % (server1.getDir(),OPENDSNAME)
+            server1Dir    = server1.getDir()
+            server2Host   = server2.getHostname()
+            server2Path   = '%s/%s' % (server2.getDir(),OPENDSNAME)
+            server2Dir    = server2.getDir()
+
+            ldifTemplate  = '%s/%s_entries.template' \
+                            % (server1Dir, numberOfEntries)
+            ldifFile      = '%s/%s_entries.ldif' \
+                            % (server1Dir, numberOfEntries)
+            totalEntries  = numberOfEntries + 2
+            
+            suffix        = 'modify_modifyrdn_multiple' 
+          </script>
+
+
+          <testcase name="getTestCaseName('Preamble')">
+            
+            <sequence>
+
+              <call function="'testCase_Preamble'"/>
+
+              <!-- Check if 'ldifFile' exists -->
+              <call function="'GetEntry'">
+                {
+                'location'  : server1Host ,
+                'entry'     : ldifFile ,
+                'attribute' : 'TYPE'
+                }
+              </call>
+              <if expr="RC == 48">
+                <sequence>
+                  <message>
+                    'replication_modify_modifyrdn_multiple: File %s does not exist, create it' \
+                    % ldifFile
+                  </message>
+
+                  <message>
+                    'replication_modify_modifyrdn_multiple: Make a make-ldif template file'
+                  </message>
+
+                  <call function="'MakeAMakeLdifTemplate'">
+                    {
+                    'numEntries'           : numberOfEntries,
+                    'suffix'               : synchroSuffix,
+                    'startFrom'            : lowRange,
+                    'additionalAttributes' : True,
+                    'templateFile'         : ldifTemplate,
+                    'templateLocation'     : server1Host
+                    }
+                  </call>
+
+                  <message>
+                    'replication_modify_modifyrdn_multiple: Make the ldif file'
+                  </message>
+
+                  <call function="'MakeLdifWithScript'">
+                    {
+                    'location'     : server1Host,
+                    'dsPath'       : server1Path,
+                    'templateFile' : ldifTemplate,
+                    'ldifFile'     : ldifFile
+                    }
+                  </call>
+                </sequence>
+                <else>
+                  <message>
+                    'replication_modify_modifyrdn_multiple: File %s exists, do nothing' % ldifFile
+                  </message>
+                </else>
+              </if>
+              
+              <message>
+               'replication_modify_modifyrdn_multiple: Import large ldif file'
+              </message> 
+
+              <!-- Stop "server1" Directory Server -->
+              <call function="'StopDsWithScript'">
+                { 'location'    : server1Host,
+                  'dsPath'      : server1Path,
+                  'dsHost'      : server1Host,
+                  'dsAdminPort' : server1.getAdminPort(),
+                  'dsBindDN'    : server1.getRootDn(),
+                  'dsBindPwd'   : server1.getRootPwd()
+                }
+              </call>
+              
+              <!-- Import data into "server1" Directory Server -->
+              <call function="'ImportLdifWithScript'">
+                { 'location'   : server1Host,
+                  'dsPath'     : server1Path,
+                  'dsBackEnd'  : DIRECTORY_INSTANCE_BE,          
+                  'dsLdifFile' : ldifFile
+                }
+              </call>
+
+              <script>
+               returnString = STAXResult[0][1]
+              </script>
+
+              <call function="'checktestString'">
+                { 'returnString'   : returnString,
+                  'expectedString' : 'Processed %s entries' % totalEntries
+                }
+              </call>
+
+              <message>
+                'replication_modify_modifyrdn_multiple: Start DS running on %s:%s' % \
+                (server1Host, server1.getPort())
+              </message>
+
+              <!-- Start the Directory Server -->
+              <call function="'StartDsWithScript'">
+                { 'location'  : server1Host,
+                  'dsPath'    : server1Path
+                }
+              </call>
+              
+              <!-- Wait for DS to start -->
+              <call function="'isAlive'">
+                { 'location'         : server1Host,
+                  'dsPath'           : server1Path,
+                  'dsInstanceHost'   : server1Host,
+                  'dsInstancePort'   : server1.getPort(),
+                  'dsInstanceDn'     : server1.getRootDn(),
+                  'dsInstancePswd'   : server1.getRootPwd(),
+                  'noOfLoops'        : 10,
+                  'noOfMilliSeconds' : 5000
+                }
+              </call>              
+
+              <!-- Perform the total update -->
+              <call function="'initializeReplication'">
+                { 'location'                : clientHost,
+                  'dsPath'                  : clientPath,
+                  'sourceInstanceHost'      : server1Host,
+                  'sourceInstanceAdminPort' : server1.getAdminPort(),
+                  'replicationDnList'       : [synchroSuffix]
+                }
+              </call>
+
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+
+          </testcase>
+  
+
+          <testcase name="getTestCaseName('Run ldclt clients')">
+            
+            <sequence>
+              
+              <call function="'testCase_Preamble'"/>
+
+              <message>
+                 'replication_modify_modifyrdn_multiple: Run ldclt add'
+              </message>
+
+              <!--<timer duration="timerDuration">
+                <sequence>-->
+                  <parallel>
+                    <block name="'ldclt-modify-threads-server1'">
+                    <sequence>
+                      <message>
+                        'replication_modify_modifyrdn_multiple: modify threads on %s:%s' \
+                        % (server1Host, server1.getPort())
+                      </message>
+
+                      <script>
+                        opt1 = '-e delayedstartup=1'
+                        opt2 = '-e rdn=\"uid:user.[RNDN(%s;%s;6)]\"' \
+                                % (lowRange, highRange)
+                        opt3 = '-e attreplace=\"description: random modify XXXXXX\"'
+                        opt4 = '-N %s -I 32 -v -q' % ldcltLoop
+                        opts = '%s %s %s %s' % (opt1, opt2, opt3, opt4)
+                      </script>
+
+                      <call function="'ldclt'">
+                        { 'location'       : STAF_CLIENT_HOSTNAME,
+                          'dsInstanceHost' : server1Host,
+                          'dsInstancePort' : server1.getPort(),
+                          'dsInstanceDn'   : server1.getRootDn(),
+                          'dsInstancePswd' : server1.getRootPwd(),
+                          'dsBaseDn'       : baseDN,
+                          'ldcltOptions'   : opts,
+                          'outputFile'     : 'ldclt_modify-%s_1.res' % suffix,
+                          'outputPath'     : ldcltDir
+                        }
+                      </call>
+                      
+                    </sequence>
+                    </block>
+                    
+                    <block name="'ldclt-modifyrdn-threads-server2'">
+                    <sequence>
+                      
+                      <message>
+                        'replication_modifyrdn: modifyrdn threads on %s:%s' \
+                        % (server2Host, server2.getPort())
+                      </message>
+
+                      <script>
+                        opt1 = '-e delayedstartup=1'
+                        opt2 = '-e rename,rdn=\"uid:user.[RNDN(%s;%s;6)]\"' \
+                                % (lowRange, highRange)
+                        opt3 = '-N %s -I 68 -I 32 -v -q' % ldcltLoop
+                        opts = '%s %s %s' % (opt1, opt2, opt3)
+                      </script>
+                      
+                      <call function="'ldclt'">
+                        { 'location'       : STAF_CLIENT_HOSTNAME,
+                          'dsInstanceHost' : server2Host,
+                          'dsInstancePort' : server2.getPort(),
+                          'dsInstanceDn'   : server2.getRootDn(),
+                          'dsInstancePswd' : server2.getRootPwd(),
+                          'dsBaseDn'       : baseDN,
+                          'ldcltOptions'   : opts,
+                          'outputFile'     : 'ldclt_modifyrdn-%s_2.res' % suffix,
+                          'outputPath'     : ldcltDir
+                        }
+                      </call>
+                      
+                    </sequence>
+                    </block>
+                    
+                    <block name="'ldclt-jvm'">
+                    <sequence>
+                      <loop from="1" to="jvmLoop" var="loop">
+                        <sequence>
+                          <message>
+                            'LOOP %s out of %s' % (loop, jvmLoop)
+                          </message>
+                          
+                          <message>
+                            'replication_modify_modifyrdn_multiple: save jvm information'
+                          </message>
+
+                          <call function="'ldapSearchWithScript'">
+                            { 'location'       : server1Host,
+                              'dsPath'         : server1Path,
+                              'dsInstanceHost' : server1Host,
+                              'dsInstancePort' : server1.getPort(),
+                              'dsInstanceDn'   : server1.getRootDn(),
+                              'dsInstancePswd' : server1.getRootPwd(),
+                              'dsBaseDN'       : 'cn=JVM Memory Usage,cn=monitor',
+                              'dsFilter'       : 'objectclass=*',
+                              'expectedRC'     : 'noCheck',
+                              'outputFile'     : 'jvm_%s_%s.out' \
+                                                 % (suffix, loop),
+                              'outputPath'     : server1Dir
+                            }
+                          </call>
+                          
+                          <call function="'ldapSearchWithScript'">
+                            { 'location'       : server2Host,
+                              'dsPath'         : server2Path,
+                              'dsInstanceHost' : server2Host,
+                              'dsInstancePort' : server2.getPort(),
+                              'dsInstanceDn'   : server2.getRootDn(),
+                              'dsInstancePswd' : server2.getRootPwd(),
+                              'dsBaseDN'       : 'cn=JVM Memory Usage,cn=monitor',
+                              'dsFilter'       : 'objectclass=*',
+                              'expectedRC'     : 'noCheck',
+                              'outputFile'     : 'jvm_%s_%s.out' \
+                                                 % (suffix, loop),
+                              'outputPath'     : server2Dir
+                            }
+                          </call>
+                          
+                          <if expr="loop != jvmLoop">
+                            <call function="'Sleep'">
+                              { 'sleepForMilliSeconds'  : jvmSleep }
+                            </call>                            
+                          </if>
+
+                        </sequence>
+                      </loop>
+                    </sequence>
+                    </block>
+                  </parallel>
+              <!--</sequence>
+              </timer>
+
+              <script>timerRC = RC</script>
+
+              <if expr="timerRC == 0">
+                <sequence>
+                  <message>'Timer exceeds %s' % timerDuration</message>
+                  <tcstatus result="'fail'"/>
+                </sequence>
+              </if>-->
+              
+              <message>
+                'Copy %s/ldclt_modify-%s_1.res from %s to %s on %s' % \
+                (ldcltDir, suffix, STAF_CLIENT_HOSTNAME, logs.sut, STAXServiceMachine)
+              </message>
+              <call function="'copyFile'">
+                {
+                'location'   : STAF_CLIENT_HOSTNAME,
+                'srcfile'    : '%s/ldclt_modify-%s_1.res' % (ldcltDir, suffix),
+                'destfile'   : '%s/ldclt_modify-%s_1.res' % (logs.sut, suffix),
+                'remotehost' : STAXServiceMachine
+                }
+              </call>
+ 
+              <message>
+                'Copy %s/ldclt_modifyrdn-%s_2.res from %s to %s on %s' % \
+                (ldcltDir, suffix, STAF_CLIENT_HOSTNAME, logs.sut, STAXServiceMachine)
+              </message>
+              <call function="'copyFile'">
+                {
+                'location'   : STAF_CLIENT_HOSTNAME,
+                'srcfile'    : '%s/ldclt_modifyrdn-%s_2.res' % (ldcltDir, suffix),
+                'destfile'   : '%s/ldclt_modifyrdn-%s_2.res' % (logs.sut, suffix),
+                'remotehost' : STAXServiceMachine
+                }
+              </call>
+
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+            
+          </testcase>
+
+
+
+          <testcase name="getTestCaseName('Check server is still running')">
+
+            <sequence>
+              
+              <call function="'testCase_Preamble'"/>
+
+              <paralleliterate var="server" in="_topologyServerList" indexvar="i">
+                <sequence>
+                  <script>
+                    serverPath = '%s/%s' % (server.getDir(), OPENDSNAME)
+                  </script>
+
+                  <message>
+                   'replication_modify_modifyrdn_multiple: Check server is still running on \
+                    %s:%s' % (server.getHostname(), server.getPort())
+                  </message>
+                  
+                  <!-- Modify entry on one of the servers -->
+                  <call function="'isAlive'">
+                    { 'location'         : server.getHostname(),
+                      'dsPath'           : serverPath,
+                      'dsInstanceHost'   : server.getHostname(),
+                      'dsInstancePort'   : server.getPort(),
+                      'dsInstanceDn'     : server.getRootDn(),
+                      'dsInstancePswd'   : server.getRootPwd(),
+                      'noOfLoops'        : 10,
+                      'noOfMilliSeconds' : 5000
+                    }
+                  </call>                       
+                </sequence>
+              </paralleliterate>
+              
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+
+          </testcase>
+
+
+          
+          <testcase name="getTestCaseName('Verify replication')">
+
+            <sequence>
+
+              <call function="'testCase_Preamble'"/>
+
+              <message>
+                'replication_modify_modifyrdn_multiple: Verify replication is still working'
+              </message>
+                            
+              <!-- Verify the replication is still working among the servers in 
+                the topology -->          
+              <call function="'verifyReplication'">
+                [ _topologyServerList, synchroSuffix ]
+              </call> 
+
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+
+          </testcase>
+          
+          
+          
+          <testcase name="getTestCaseName('Verify tree synchronization')">
+
+            <sequence>
+
+              <call function="'testCase_Preamble'"/>
+
+              <message>
+                'replication_modify_modifyrdn_multiple: Verify the tree synchronization'
+              </message>
+                            
+              <!-- Verify the synchronization of the trees among the servers in 
+                the topology -->          
+              <call function="'verifyTrees'">
+                [ clientHost, clientPath, master, consumerList, synchroSuffix ]
+              </call> 
+
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+
+          </testcase>
+          
+          
+          
+          <testcase name="getTestCaseName('Check replication status')">
+
+            <sequence>
+
+              <call function="'testCase_Preamble'"/>
+
+              <message>
+                'replication_modify_modifyrdn_multiple: Check replication status'
+              </message>
+                            
+              <!-- Verify the synchronization of the trees among the servers in 
+                the topology -->         
+              <call function="'getReplicationStatus'">
+                { 'location'            : masterHost,
+                  'dsPath'              : masterPath,
+                  'dsInstanceHost'      : masterHost,
+                  'dsInstanceAdminPort' : master.getAdminPort(),
+                  'replicationDnList'   : [synchroSuffix]
+                }
+              </call>
+
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+
+          </testcase>
+          
+          
+          <import machine="STAF_LOCAL_HOSTNAME"
+            file="'%s/../functional-tests/testcases/replication/replication_cleanup.xml' % (TESTS_DIR)"/>
+          <call function="'replication_cleanup'">
+            { 'suiteSuffix' : suffix }
+          </call>
+
+          <call function="'testSuite_Postamble'"/>
+            
+        </sequence>
+       
+      </block>
+       
+    </sequence>
+      
+  </function>
+
+</stax>
diff --git a/opends/tests/staf-tests/stress-tests/testcases/replication/replication_modify_multiple.xml b/opends/tests/staf-tests/stress-tests/testcases/replication/replication_modify_multiple.xml
new file mode 100644
index 0000000..aa8f959
--- /dev/null
+++ b/opends/tests/staf-tests/stress-tests/testcases/replication/replication_modify_multiple.xml
@@ -0,0 +1,519 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE stax SYSTEM "../../../shared/stax.dtd">
+<!--
+ ! CDDL HEADER START
+ !
+ ! The contents of this file are subject to the terms of the
+ ! Common Development and Distribution License, Version 1.0 only
+ ! (the "License").  You may not use this file except in compliance
+ ! with the License.
+ !
+ ! You can obtain a copy of the license at
+ ! trunk/opends/resource/legal-notices/OpenDS.LICENSE
+ ! or https://OpenDS.dev.java.net/OpenDS.LICENSE.
+ ! See the License for the specific language governing permissions
+ ! and limitations under the License.
+ !
+ ! When distributing Covered Code, include this CDDL HEADER in each
+ ! file and include the License file at
+ ! trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
+ ! add the following below this CDDL HEADER, with the fields enclosed
+ ! by brackets "[]" replaced with your own identifying information:
+ !      Portions Copyright [yyyy] [name of copyright owner]
+ !
+ ! CDDL HEADER END
+ !
+ !      Copyright 2009 Sun Microsystems, Inc.
+ ! -->
+<stax>
+
+  <defaultcall function="replication_modify_multiple"/>
+
+  <function name="replication_modify_multiple">
+
+    <sequence>
+
+      <block name="'replication-modify-multiple'">
+      
+        <sequence>
+  
+          <script>
+            if not CurrentTestPath.has_key('group'):
+              CurrentTestPath['group']='replication'
+            CurrentTestPath['suite']=STAXCurrentBlock
+          </script>
+      
+          <call function="'testSuite_Preamble'"/>
+
+          <import machine="STAF_LOCAL_HOSTNAME"
+            file="'%s/../functional-tests/testcases/replication/replication_setup.xml' % (TESTS_DIR)"/>
+          <call function="'replication_setup'"/>
+
+          <script>
+            ldcltLoop     = testsDuration / 10
+            lowRange      = 100000
+            highRange     = lowRange + numberOfEntries
+            jvmLoop       = testsDuration / 1800  + 1
+            jvmSleep      = 1800000
+            baseDN        = 'ou=People,%s' % synchroSuffix
+            
+            server1Host   = server1.getHostname()
+            server1Path   = '%s/%s' % (server1.getDir(),OPENDSNAME)
+            server1Dir    = server1.getDir()
+            server2Host   = server2.getHostname()
+            server2Path   = '%s/%s' % (server2.getDir(),OPENDSNAME)
+            server2Dir    = server2.getDir()
+
+            ldifTemplate  = '%s/%s_entries.template' \
+                            % (server1Dir, numberOfEntries)
+            ldifFile      = '%s/%s_entries.ldif' \
+                            % (server1Dir, numberOfEntries)
+            totalEntries  = numberOfEntries + 2
+            
+            suffix        = 'modify_multiple'
+          </script>
+
+
+          <testcase name="getTestCaseName('Preamble')">
+            
+            <sequence>
+
+              <call function="'testCase_Preamble'"/>
+
+              <!-- Check if 'ldifFile' exists -->
+              <call function="'GetEntry'">
+                {
+                'location'  : server1Host ,
+                'entry'     : ldifFile ,
+                'attribute' : 'TYPE'
+                }
+              </call>
+              <if expr="RC == 48">
+                <sequence>
+                  <message>
+                    'replication_modify_multiple: File %s does not exist, create it' \
+                    % ldifFile
+                  </message>
+
+                  <message>
+                    'replication_modify_multiple: Make a make-ldif template file'
+                  </message>
+
+                  <call function="'MakeAMakeLdifTemplate'">
+                    {
+                    'numEntries'           : numberOfEntries,
+                    'suffix'               : synchroSuffix,
+                    'startFrom'            : lowRange,
+                    'additionalAttributes' : True,
+                    'templateFile'         : ldifTemplate,
+                    'templateLocation'     : server1Host
+                    }
+                  </call>
+
+                  <message>
+                    'replication_modify_multiple: Make the ldif file'
+                  </message>
+
+                  <call function="'MakeLdifWithScript'">
+                    {
+                    'location'     : server1Host,
+                    'dsPath'       : server1Path,
+                    'templateFile' : ldifTemplate,
+                    'ldifFile'     : ldifFile
+                    }
+                  </call>
+                </sequence>
+                <else>
+                  <message>
+                    'replication_modify_multiple: File %s exists, do nothing' % ldifFile
+                  </message>
+                </else>
+              </if>
+              
+              <message>
+               'replication_modify_multiple: Import large ldif file'
+              </message> 
+
+              <!-- Stop "server1" Directory Server -->
+              <call function="'StopDsWithScript'">
+                { 'location'    : server1Host,
+                  'dsPath'      : server1Path,
+                  'dsHost'      : server1Host,
+                  'dsAdminPort' : server1.getAdminPort(),
+                  'dsBindDN'    : server1.getRootDn(),
+                  'dsBindPwd'   : server1.getRootPwd()
+                }
+              </call>
+              
+              <!-- Import data into "server1" Directory Server -->
+              <call function="'ImportLdifWithScript'">
+                { 'location'   : server1Host,
+                  'dsPath'     : server1Path,
+                  'dsBackEnd'  : DIRECTORY_INSTANCE_BE,          
+                  'dsLdifFile' : ldifFile
+                }
+              </call>
+
+              <script>
+               returnString = STAXResult[0][1]
+              </script>
+
+              <call function="'checktestString'">
+                { 'returnString'   : returnString,
+                  'expectedString' : 'Processed %s entries' % totalEntries
+                }
+              </call>
+
+              <message>
+                'replication_modify_multiple: Start DS running on %s:%s' % \
+                (server1Host, server1.getPort())
+              </message>
+
+              <!-- Start the Directory Server -->
+              <call function="'StartDsWithScript'">
+                { 'location'  : server1Host,
+                  'dsPath'    : server1Path
+                }
+              </call>
+              
+              <!-- Wait for DS to start -->
+              <call function="'isAlive'">
+                { 'location'         : server1Host,
+                  'dsPath'           : server1Path,
+                  'dsInstanceHost'   : server1Host,
+                  'dsInstancePort'   : server1.getPort(),
+                  'dsInstanceDn'     : server1.getRootDn(),
+                  'dsInstancePswd'   : server1.getRootPwd(),
+                  'noOfLoops'        : 10,
+                  'noOfMilliSeconds' : 5000
+                }
+              </call>              
+
+              <!-- Perform the total update -->
+              <call function="'initializeReplication'">
+                { 'location'                : clientHost,
+                  'dsPath'                  : clientPath,
+                  'sourceInstanceHost'      : server1Host,
+                  'sourceInstanceAdminPort' : server1.getAdminPort(),
+                  'replicationDnList'       : [synchroSuffix]
+                }
+              </call>
+
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+
+          </testcase>
+  
+
+          <testcase name="getTestCaseName('Run ldclt clients')">
+            
+            <sequence>
+              
+              <call function="'testCase_Preamble'"/>
+
+              <message>
+                 'replication_modify_multiple: Run ldclt add'
+              </message>
+
+              <!--<timer duration="timerDuration">
+                <sequence>-->
+                  <parallel>
+                    <block name="'ldclt-modify-threads-server1'">
+                    <sequence>
+                      <message>
+                        'replication_modify_multiple: modify threads on %s:%s' \
+                        % (server1Host, server1.getPort())
+                      </message>
+
+                      <script>
+                        opt1 = '-e delayedstartup=1'
+                        opt2 = '-e rdn=\"uid:user.[RNDN(%s;%s;6)]\"' \
+                                % (lowRange, highRange)
+                        opt3 = '-e attreplace=\"description: random modify XXXXXX\"'
+                        opt4 = '-N %s -I 32 -v -q' % ldcltLoop
+                        opts = '%s %s %s %s' % (opt1, opt2, opt3, opt4)
+                      </script>
+
+                      <call function="'ldclt'">
+                        { 'location'       : STAF_CLIENT_HOSTNAME,
+                          'dsInstanceHost' : server1Host,
+                          'dsInstancePort' : server1.getPort(),
+                          'dsInstanceDn'   : server1.getRootDn(),
+                          'dsInstancePswd' : server1.getRootPwd(),
+                          'dsBaseDn'       : baseDN,
+                          'ldcltOptions'   : opts,
+                          'outputFile'     : 'ldclt_modify-%s_1.res' % suffix,
+                          'outputPath'     : ldcltDir
+                        }
+                      </call>
+                      
+                    </sequence>
+                    </block>
+                    
+                    <block name="'ldclt-modify-threads-server2'">
+                    <sequence>
+                      <message>
+                        'replication_modify_multiple: modify threads on %s:%s' \
+                        % (server2Host, server2.getPort())
+                      </message>
+
+                      <script>
+                        opt1 = '-e delayedstartup=1'
+                        opt2 = '-e rdn=\"uid:user.[RNDN(%s;%s;6)]\"' \
+                                % (lowRange, highRange)
+                        opt3 = '-e attreplace=\"description: random modify XXXXXX\"'
+                        opt4 = '-N %s -I 32 -v -q' % ldcltLoop
+                        opts = '%s %s %s %s' % (opt1, opt2, opt3, opt4)
+                      </script>
+
+                      <call function="'ldclt'">
+                        { 'location'       : STAF_CLIENT_HOSTNAME,
+                          'dsInstanceHost' : server2Host,
+                          'dsInstancePort' : server2.getPort(),
+                          'dsInstanceDn'   : server2.getRootDn(),
+                          'dsInstancePswd' : server2.getRootPwd(),
+                          'dsBaseDn'       : baseDN,
+                          'ldcltOptions'   : opts,
+                          'outputFile'     : 'ldclt_modify-%s_2.res' % suffix,
+                          'outputPath'     : ldcltDir
+                        }
+                      </call>
+                      
+                    </sequence>
+                    </block>
+                    
+                    <block name="'ldclt-jvm'">
+                    <sequence>
+                      <loop from="1" to="jvmLoop" var="loop">
+                        <sequence>
+                          <message>
+                            'LOOP %s out of %s' % (loop, jvmLoop)
+                          </message>
+                          
+                          <message>
+                            'replication_modify_multiple: save jvm information'
+                          </message>
+
+                          <call function="'ldapSearchWithScript'">
+                            { 'location'       : server1Host,
+                              'dsPath'         : server1Path,
+                              'dsInstanceHost' : server1Host,
+                              'dsInstancePort' : server1.getPort(),
+                              'dsInstanceDn'   : server1.getRootDn(),
+                              'dsInstancePswd' : server1.getRootPwd(),
+                              'dsBaseDN'       : 'cn=JVM Memory Usage,cn=monitor',
+                              'dsFilter'       : 'objectclass=*',
+                              'expectedRC'     : 'noCheck',
+                              'outputFile'     : 'jvm_%s_%s.out' \
+                                                 % (suffix, loop),
+                              'outputPath'     : server1Dir
+                            }
+                          </call>
+                          
+                          <call function="'ldapSearchWithScript'">
+                            { 'location'       : server2Host,
+                              'dsPath'         : server2Path,
+                              'dsInstanceHost' : server2Host,
+                              'dsInstancePort' : server2.getPort(),
+                              'dsInstanceDn'   : server2.getRootDn(),
+                              'dsInstancePswd' : server2.getRootPwd(),
+                              'dsBaseDN'       : 'cn=JVM Memory Usage,cn=monitor',
+                              'dsFilter'       : 'objectclass=*',
+                              'expectedRC'     : 'noCheck',
+                              'outputFile'     : 'jvm_%s_%s.out' \
+                                                 % (suffix, loop),
+                              'outputPath'     : server2Dir
+                            }
+                          </call>
+                          
+                          <if expr="loop != jvmLoop">
+                            <call function="'Sleep'">
+                              { 'sleepForMilliSeconds'  : jvmSleep }
+                            </call>                            
+                          </if>
+
+                        </sequence>
+                      </loop>
+                    </sequence>
+                    </block>
+                  </parallel>
+              <!--</sequence>
+              </timer>
+
+              <script>timerRC = RC</script>
+
+              <if expr="timerRC == 0">
+                <sequence>
+                  <message>'Timer exceeds %s' % timerDuration</message>
+                  <tcstatus result="'fail'"/>
+                </sequence>
+              </if>-->
+              
+              <message>
+                'Copy %s/ldclt_modify-%s_1.res from %s to %s on %s' % \
+                (ldcltDir, suffix, STAF_CLIENT_HOSTNAME, logs.sut, STAXServiceMachine)
+              </message>
+              <call function="'copyFile'">
+                {
+                'location'   : STAF_CLIENT_HOSTNAME,
+                'srcfile'    : '%s/ldclt_modify-%s_1.res' % (ldcltDir, suffix),
+                'destfile'   : '%s/ldclt_modify-%s_1.res' % (logs.sut, suffix),
+                'remotehost' : STAXServiceMachine
+                }
+              </call>
+ 
+              <message>
+                'Copy %s/ldclt_modify-%s_2.res from %s to %s on %s' % \
+                (ldcltDir, suffix, STAF_CLIENT_HOSTNAME, logs.sut, STAXServiceMachine)
+              </message>
+              <call function="'copyFile'">
+                {
+                'location'   : STAF_CLIENT_HOSTNAME,
+                'srcfile'    : '%s/ldclt_modify-%s_2.res' % (ldcltDir, suffix),
+                'destfile'   : '%s/ldclt_modify-%s_2.res' % (logs.sut, suffix),
+                'remotehost' : STAXServiceMachine
+                }
+              </call>
+
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+            
+          </testcase>
+
+
+
+          <testcase name="getTestCaseName('Check server is still running')">
+
+            <sequence>
+              
+              <call function="'testCase_Preamble'"/>
+
+              <paralleliterate var="server" in="_topologyServerList" indexvar="i">
+                <sequence>
+                  <script>
+                    serverPath = '%s/%s' % (server.getDir(), OPENDSNAME)
+                  </script>
+
+                  <message>
+                   'replication_modify_multiple: Check server is still running on \
+                    %s:%s' % (server.getHostname(), server.getPort())
+                  </message>
+                  
+                  <!-- Modify entry on one of the servers -->
+                  <call function="'isAlive'">
+                    { 'location'         : server.getHostname(),
+                      'dsPath'           : serverPath,
+                      'dsInstanceHost'   : server.getHostname(),
+                      'dsInstancePort'   : server.getPort(),
+                      'dsInstanceDn'     : server.getRootDn(),
+                      'dsInstancePswd'   : server.getRootPwd(),
+                      'noOfLoops'        : 10,
+                      'noOfMilliSeconds' : 5000
+                    }
+                  </call>                       
+                </sequence>
+              </paralleliterate>
+              
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+
+          </testcase>
+
+
+          
+          <testcase name="getTestCaseName('Verify replication')">
+
+            <sequence>
+
+              <call function="'testCase_Preamble'"/>
+
+              <message>
+                'replication_modify_multiple: Verify replication is still working'
+              </message>
+                            
+              <!-- Verify the replication is still working among the servers in 
+                the topology -->          
+              <call function="'verifyReplication'">
+                [ _topologyServerList, synchroSuffix ]
+              </call> 
+
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+
+          </testcase>
+          
+          
+          
+          <testcase name="getTestCaseName('Verify tree synchronization')">
+
+            <sequence>
+
+              <call function="'testCase_Preamble'"/>
+
+              <message>
+                'replication_modify_multiple: Verify the tree synchronization'
+              </message>
+                            
+              <!-- Verify the synchronization of the trees among the servers in 
+                the topology -->          
+              <call function="'verifyTrees'">
+                [ clientHost, clientPath, master, consumerList, synchroSuffix ]
+              </call> 
+
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+
+          </testcase>
+          
+          
+          
+          <testcase name="getTestCaseName('Check replication status')">
+
+            <sequence>
+
+              <call function="'testCase_Preamble'"/>
+
+              <message>
+                'replication_modify_multiple: Check replication status'
+              </message>
+                            
+              <!-- Verify the synchronization of the trees among the servers in 
+                the topology -->         
+              <call function="'getReplicationStatus'">
+                { 'location'            : masterHost,
+                  'dsPath'              : masterPath,
+                  'dsInstanceHost'      : masterHost,
+                  'dsInstanceAdminPort' : master.getAdminPort(),
+                  'replicationDnList'   : [synchroSuffix]
+                }
+              </call>
+
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+
+          </testcase>
+          
+          
+          <import machine="STAF_LOCAL_HOSTNAME"
+            file="'%s/../functional-tests/testcases/replication/replication_cleanup.xml' % (TESTS_DIR)"/>
+          <call function="'replication_cleanup'">
+            { 'suiteSuffix' : suffix }
+          </call>
+
+          <call function="'testSuite_Postamble'"/>
+            
+        </sequence>
+       
+      </block>
+       
+    </sequence>
+      
+  </function>
+
+</stax>
diff --git a/opends/tests/staf-tests/stress-tests/testcases/replication/replication_modifyrdn.xml b/opends/tests/staf-tests/stress-tests/testcases/replication/replication_modifyrdn.xml
new file mode 100644
index 0000000..1f5de56
--- /dev/null
+++ b/opends/tests/staf-tests/stress-tests/testcases/replication/replication_modifyrdn.xml
@@ -0,0 +1,450 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE stax SYSTEM "../../../shared/stax.dtd">
+<!--
+ ! CDDL HEADER START
+ !
+ ! The contents of this file are subject to the terms of the
+ ! Common Development and Distribution License, Version 1.0 only
+ ! (the "License").  You may not use this file except in compliance
+ ! with the License.
+ !
+ ! You can obtain a copy of the license at
+ ! trunk/opends/resource/legal-notices/OpenDS.LICENSE
+ ! or https://OpenDS.dev.java.net/OpenDS.LICENSE.
+ ! See the License for the specific language governing permissions
+ ! and limitations under the License.
+ !
+ ! When distributing Covered Code, include this CDDL HEADER in each
+ ! file and include the License file at
+ ! trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
+ ! add the following below this CDDL HEADER, with the fields enclosed
+ ! by brackets "[]" replaced with your own identifying information:
+ !      Portions Copyright [yyyy] [name of copyright owner]
+ !
+ ! CDDL HEADER END
+ !
+ !      Copyright 2009 Sun Microsystems, Inc.
+ ! -->
+<stax>
+
+  <defaultcall function="replication_modifyrdn"/>
+
+  <function name="replication_modifyrdn">
+
+    <sequence>
+
+      <block name="'replication-modifyrdn'">
+      
+        <sequence>
+  
+          <script>
+            if not CurrentTestPath.has_key('group'):
+              CurrentTestPath['group']='replication'
+            CurrentTestPath['suite']=STAXCurrentBlock
+          </script>
+      
+          <call function="'testSuite_Preamble'"/>
+
+          <import machine="STAF_LOCAL_HOSTNAME"
+            file="'%s/../functional-tests/testcases/replication/replication_setup.xml' % (TESTS_DIR)"/>
+          <call function="'replication_setup'"/>
+
+          <script>
+            ldcltLoop     = testsDuration / 10
+            lowRange      = 100000
+            highRange     = lowRange + 2 * numberOfEntries
+            jvmLoop       = testsDuration / 1800  + 1
+            jvmSleep      = 1800000
+            baseDN        = 'ou=People,%s' % synchroSuffix
+            ldcltDir      = '%s/ldclt_dir' % TMPDIR
+            masterDir     = '%s/..' % masterPath
+            ldifTemplate  = '%s/%s_entries.template' \
+                            % (masterDir, numberOfEntries)
+            ldifFile      = '%s/%s_entries.ldif' \
+                            % (masterDir, numberOfEntries)
+            totalEntries  = numberOfEntries + 2
+            
+            suffix        = 'modifyrdn'
+          </script>
+
+          
+          <testcase name="getTestCaseName('Preamble')">
+            
+            <sequence>
+
+              <call function="'testCase_Preamble'"/>
+
+              <!-- Check if 'ldifFile' exists -->
+              <call function="'GetEntry'">
+                {
+                'location'  : masterHost ,
+                'entry'     : ldifFile ,
+                'attribute' : 'TYPE'
+                }
+              </call>
+              <if expr="RC == 48">
+                <sequence>
+                  <message>
+                    'replication_modifyrdn: File %s does not exist, create it' \
+                    % ldifFile
+                  </message>
+
+                  <message>
+                    'replication_modifyrdn: Make a make-ldif template file'
+                  </message>
+
+                  <call function="'MakeAMakeLdifTemplate'">
+                    {
+                    'numEntries'           : numberOfEntries,
+                    'suffix'               : synchroSuffix,
+                    'startFrom'            : lowRange,
+                    'additionalAttributes' : True,
+                    'templateFile'         : ldifTemplate,
+                    'templateLocation'     : masterHost
+                    }
+                  </call>
+
+                  <message>
+                    'replication_modifyrdn: Make the ldif file'
+                  </message>
+
+                  <call function="'MakeLdifWithScript'">
+                    {
+                    'location'     : masterHost,
+                    'dsPath'       : masterPath,
+                    'templateFile' : ldifTemplate,
+                    'ldifFile'     : ldifFile
+                    }
+                  </call>
+                </sequence>
+                <else>
+                  <message>
+                    'replication_modifyrdn: File %s exists, do nothing' \
+                    % ldifFile
+                  </message>
+                </else>
+              </if>              
+
+              <message>
+               'replication_modifyrdn: Import large ldif file'
+              </message> 
+
+              <!-- Stop "master" Directory Server -->
+              <call function="'StopDsWithScript'">
+                { 'location'    : masterHost,
+                  'dsPath'      : masterPath,
+                  'dsHost'      : masterHost,
+                  'dsAdminPort' : master.getAdminPort(),
+                  'dsBindDN'    : master.getRootDn(),
+                  'dsBindPwd'   : master.getRootPwd()
+                }
+              </call>
+              
+              <!-- Import data into "master" Directory Server -->
+              <call function="'ImportLdifWithScript'">
+                { 'location'   : masterHost,
+                  'dsPath'     : masterPath,
+                  'dsBackEnd'  : DIRECTORY_INSTANCE_BE,          
+                  'dsLdifFile' : ldifFile
+                }
+              </call>
+
+              <script>
+               returnString = STAXResult[0][1]
+              </script>
+
+              <call function="'checktestString'">
+                { 'returnString'   : returnString,
+                  'expectedString' : 'Processed %s entries' % totalEntries
+                }
+              </call>
+
+              <message>
+                'replication_modifyrdn: Start DS running on %s:%s' % \
+                (masterHost, master.getPort())
+              </message>
+
+              <!-- Start the Directory Server -->
+              <call function="'StartDsWithScript'">
+                { 'location'  : masterHost,
+                  'dsPath'    : masterPath
+                }
+              </call>
+              
+              <!-- Wait for DS to start -->
+              <call function="'isAlive'">
+                { 'location'         : masterHost,
+                  'dsPath'           : masterPath,
+                  'dsInstanceHost'   : masterHost,
+                  'dsInstancePort'   : master.getPort(),
+                  'dsInstanceDn'     : master.getRootDn(),
+                  'dsInstancePswd'   : master.getRootPwd(),
+                  'noOfLoops'        : 10,
+                  'noOfMilliSeconds' : 5000
+                }
+              </call>              
+
+              <!-- Perform the total update -->
+              <call function="'initializeReplication'">
+                { 'location'                : clientHost,
+                  'dsPath'                  : clientPath,
+                  'sourceInstanceHost'      : masterHost,
+                  'sourceInstanceAdminPort' : master.getAdminPort(),
+                  'replicationDnList'       : [synchroSuffix]
+                }
+              </call>
+
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+
+          </testcase>
+
+
+          <testcase name="getTestCaseName('Run ldclt clients')">
+            
+            <sequence>
+              
+              <call function="'testCase_Preamble'"/>
+
+              <message>
+                 'replication_modifyrdn: Run ldclt modify'
+              </message>
+
+              <!--<timer duration="timerDuration">
+                <sequence>-->
+                  <parallel>
+                    <block name="'ldclt-modifyrdn-threads'">
+                    <sequence>
+                      
+                      <message>
+                        'replication_modifyrdn: modifyrdn threads'
+                      </message>
+
+                      <script>
+                        opt1 = '-e delayedstartup=1'
+                        opt2 = '-e rename,rdn=\"uid:user.[RNDN(%s;%s;6)]\"' \
+                                % (lowRange, highRange)
+                        opt3 = '-N %s -I 68 -I 32 -v -q' % ldcltLoop
+                        opts = '%s %s %s' % (opt1, opt2, opt3)
+                      </script>
+                      
+                      <call function="'ldclt'">
+                        { 'location'       : STAF_CLIENT_HOSTNAME,
+                          'dsInstanceHost' : masterHost,
+                          'dsInstancePort' : master.getPort(),
+                          'dsInstanceDn'   : master.getRootDn(),
+                          'dsInstancePswd' : master.getRootPwd(),
+                          'dsBaseDn'       : baseDN,
+                          'ldcltOptions'   : opts,
+                          'outputFile'     : 'ldclt_modifyrdn-%s.res' % suffix,
+                          'outputPath'     : ldcltDir
+                        }
+                      </call>
+                      
+                    </sequence>
+                    </block>
+                    
+                    <block name="'ldclt-jvm'">
+                    <sequence>
+                      <loop from="1" to="jvmLoop" var="loop">
+                        <sequence>
+                          <message>
+                            'LOOP %s out of %s' % (loop, jvmLoop)
+                          </message>
+                          
+                          <message>
+                            'replication_modifyrdn: save jvm information'
+                          </message>
+
+                          <call function="'ldapSearchWithScript'">
+                            { 'location'       : masterHost,
+                              'dsPath'         : masterPath,
+                              'dsInstanceHost' : masterHost,
+                              'dsInstancePort' : master.getPort(),
+                              'dsInstanceDn'   : master.getRootDn(),
+                              'dsInstancePswd' : master.getRootPwd(),
+                              'dsBaseDN'       : 'cn=JVM Memory Usage,cn=monitor',
+                              'dsFilter'       : 'objectclass=*',
+                              'expectedRC'     : 'noCheck',
+                              'outputFile'     : 'jvm_%s_%s.out' % (suffix, loop),
+                              'outputPath'     : masterDir
+                            }
+                          </call>
+                          
+                          <if expr="loop != jvmLoop">
+                            <call function="'Sleep'">
+                              { 'sleepForMilliSeconds'  : jvmSleep }
+                            </call>                            
+                          </if>
+
+                        </sequence>
+                      </loop>
+                    </sequence>
+                    </block>
+                  </parallel>
+              <!--</sequence>
+              </timer>
+
+              <script>timerRC = RC</script>
+
+              <if expr="timerRC == 0">
+                <sequence>
+                  <message>'Timer exceeds %s' % timerDuration</message>
+                  <tcstatus result="'fail'"/>
+                </sequence>
+              </if>-->
+              
+              <message>
+                'Copy %s/ldclt_modifyrdn-%s.res from %s to %s on %s' % \
+                (ldcltDir, suffix, STAF_CLIENT_HOSTNAME, logs.sut, STAXServiceMachine)
+              </message>
+              <call function="'copyFile'">
+                {
+                'location'   : STAF_CLIENT_HOSTNAME,
+                'srcfile'    : '%s/ldclt_modifyrdn-%s.res' % (ldcltDir, suffix),
+                'destfile'   : '%s/ldclt_modifyrdn-%s.res' % (logs.sut, suffix),
+                'remotehost' : STAXServiceMachine
+                }
+              </call>
+              
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+            
+          </testcase>
+
+
+
+          <testcase name="getTestCaseName('Check server is still running')">
+
+            <sequence>
+              
+              <call function="'testCase_Preamble'"/>
+
+              <paralleliterate var="server" in="_topologyServerList" indexvar="i">
+                <sequence>
+                  <script>
+                    serverPath = '%s/%s' % (server.getDir(), OPENDSNAME)
+                  </script>
+
+                  <message>
+                   'replication_modifyrdn: Check server is still running on \
+                    %s:%s' % (server.getHostname(), server.getPort())
+                  </message>
+                  
+                  <!-- Modify entry on one of the servers -->
+                  <call function="'isAlive'">
+                    { 'location'         : server.getHostname(),
+                      'dsPath'           : serverPath,
+                      'dsInstanceHost'   : server.getHostname(),
+                      'dsInstancePort'   : server.getPort(),
+                      'dsInstanceDn'     : server.getRootDn(),
+                      'dsInstancePswd'   : server.getRootPwd(),
+                      'noOfLoops'        : 10,
+                      'noOfMilliSeconds' : 5000
+                    }
+                  </call>                       
+                </sequence>
+              </paralleliterate>
+
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+
+          </testcase>
+
+
+          <testcase name="getTestCaseName('Verify replication')">
+
+            <sequence>
+
+              <call function="'testCase_Preamble'"/>
+
+              <message>
+                'replication_modifyrdn: Verify replication is still working'
+              </message>
+                            
+              <!-- Verify the replication is still working among the servers in 
+                the topology -->          
+              <call function="'verifyReplication'">
+                [ _topologyServerList, synchroSuffix ]
+              </call> 
+
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+
+          </testcase>
+          
+          
+          
+          <testcase name="getTestCaseName('Verify tree synchronization')">
+
+            <sequence>
+
+              <call function="'testCase_Preamble'"/>
+
+              <message>
+                'replication_modifyrdn: Verify the tree synchronization'
+              </message>
+                            
+              <!-- Verify the synchronization of the trees among the servers in 
+                the topology -->          
+              <call function="'verifyTrees'">
+                [ clientHost, clientPath, master, consumerList, synchroSuffix ]
+              </call> 
+
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+
+          </testcase>
+          
+          
+          
+          <testcase name="getTestCaseName('Check replication status')">
+
+            <sequence>
+
+              <call function="'testCase_Preamble'"/>
+
+              <message>
+                'replication_modifyrdn: Check replication status'
+              </message>
+                            
+              <!-- Verify the synchronization of the trees among the servers in 
+                the topology -->         
+              <call function="'getReplicationStatus'">
+                { 'location'            : masterHost,
+                  'dsPath'              : masterPath,
+                  'dsInstanceHost'      : masterHost,
+                  'dsInstanceAdminPort' : master.getAdminPort(),
+                  'replicationDnList'   : [synchroSuffix]
+                }
+              </call>
+
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+
+          </testcase>
+          
+          
+          <import machine="STAF_LOCAL_HOSTNAME"
+            file="'%s/../functional-tests/testcases/replication/replication_cleanup.xml' % (TESTS_DIR)"/>
+          <call function="'replication_cleanup'">
+            { 'suiteSuffix' : suffix }
+          </call>
+
+          <call function="'testSuite_Postamble'"/>
+            
+        </sequence>
+       
+      </block>
+       
+    </sequence>
+      
+  </function>
+
+</stax>
diff --git a/opends/tests/staf-tests/stress-tests/testcases/replication/replication_modifyrdn_multiple.xml b/opends/tests/staf-tests/stress-tests/testcases/replication/replication_modifyrdn_multiple.xml
new file mode 100644
index 0000000..ab47515
--- /dev/null
+++ b/opends/tests/staf-tests/stress-tests/testcases/replication/replication_modifyrdn_multiple.xml
@@ -0,0 +1,519 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE stax SYSTEM "../../../shared/stax.dtd">
+<!--
+ ! CDDL HEADER START
+ !
+ ! The contents of this file are subject to the terms of the
+ ! Common Development and Distribution License, Version 1.0 only
+ ! (the "License").  You may not use this file except in compliance
+ ! with the License.
+ !
+ ! You can obtain a copy of the license at
+ ! trunk/opends/resource/legal-notices/OpenDS.LICENSE
+ ! or https://OpenDS.dev.java.net/OpenDS.LICENSE.
+ ! See the License for the specific language governing permissions
+ ! and limitations under the License.
+ !
+ ! When distributing Covered Code, include this CDDL HEADER in each
+ ! file and include the License file at
+ ! trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
+ ! add the following below this CDDL HEADER, with the fields enclosed
+ ! by brackets "[]" replaced with your own identifying information:
+ !      Portions Copyright [yyyy] [name of copyright owner]
+ !
+ ! CDDL HEADER END
+ !
+ !      Copyright 2009 Sun Microsystems, Inc.
+ ! -->
+<stax>
+
+  <defaultcall function="replication_modifyrdn_multiple"/>
+
+  <function name="replication_modifyrdn_multiple">
+
+    <sequence>
+
+      <block name="'replication-modifyrdn-multiple'">
+      
+        <sequence>
+  
+          <script>
+            if not CurrentTestPath.has_key('group'):
+              CurrentTestPath['group']='replication'
+            CurrentTestPath['suite']=STAXCurrentBlock
+          </script>
+      
+          <call function="'testSuite_Preamble'"/>
+
+          <import machine="STAF_LOCAL_HOSTNAME"
+            file="'%s/../functional-tests/testcases/replication/replication_setup.xml' % (TESTS_DIR)"/>
+          <call function="'replication_setup'"/>
+
+          <script>
+            ldcltLoop     = testsDuration / 10
+            lowRange      = 100000
+            highRange     = lowRange + numberOfEntries
+            jvmLoop       = testsDuration / 1800  + 1
+            jvmSleep      = 1800000
+            baseDN        = 'ou=People,%s' % synchroSuffix
+            
+            server1Host   = server1.getHostname()
+            server1Path   = '%s/%s' % (server1.getDir(),OPENDSNAME)
+            server1Dir    = server1.getDir()
+            server2Host   = server2.getHostname()
+            server2Path   = '%s/%s' % (server2.getDir(),OPENDSNAME)
+            server2Dir    = server2.getDir()
+
+            ldifTemplate  = '%s/%s_entries.template' \
+                            % (server1Dir, numberOfEntries)
+            ldifFile      = '%s/%s_entries.ldif' \
+                            % (server1Dir, numberOfEntries)
+            totalEntries  = numberOfEntries + 2
+            
+            suffix        = 'modifyrdn_multiple' 
+          </script>
+
+
+          <testcase name="getTestCaseName('Preamble')">
+            
+            <sequence>
+
+              <call function="'testCase_Preamble'"/>
+
+              <!-- Check if 'ldifFile' exists -->
+              <call function="'GetEntry'">
+                {
+                'location'  : server1Host ,
+                'entry'     : ldifFile ,
+                'attribute' : 'TYPE'
+                }
+              </call>
+              <if expr="RC == 48">
+                <sequence>
+                  <message>
+                    'replication_modifyrdn_multiple: File %s does not exist, create it' \
+                    % ldifFile
+                  </message>
+
+                  <message>
+                    'replication_modifyrdn_multiple: Make a make-ldif template file'
+                  </message>
+
+                  <call function="'MakeAMakeLdifTemplate'">
+                    {
+                    'numEntries'           : numberOfEntries,
+                    'suffix'               : synchroSuffix,
+                    'startFrom'            : lowRange,
+                    'additionalAttributes' : True,
+                    'templateFile'         : ldifTemplate,
+                    'templateLocation'     : server1Host
+                    }
+                  </call>
+
+                  <message>
+                    'replication_modifyrdn_multiple: Make the ldif file'
+                  </message>
+
+                  <call function="'MakeLdifWithScript'">
+                    {
+                    'location'     : server1Host,
+                    'dsPath'       : server1Path,
+                    'templateFile' : ldifTemplate,
+                    'ldifFile'     : ldifFile
+                    }
+                  </call>
+                </sequence>
+                <else>
+                  <message>
+                    'replication_modifyrdn_multiple: File %s exists, do nothing' % ldifFile
+                  </message>
+                </else>
+              </if>
+              
+              <message>
+               'replication_modifyrdn_multiple: Import large ldif file'
+              </message> 
+
+              <!-- Stop "server1" Directory Server -->
+              <call function="'StopDsWithScript'">
+                { 'location'    : server1Host,
+                  'dsPath'      : server1Path,
+                  'dsHost'      : server1Host,
+                  'dsAdminPort' : server1.getAdminPort(),
+                  'dsBindDN'    : server1.getRootDn(),
+                  'dsBindPwd'   : server1.getRootPwd()
+                }
+              </call>
+              
+              <!-- Import data into "server1" Directory Server -->
+              <call function="'ImportLdifWithScript'">
+                { 'location'   : server1Host,
+                  'dsPath'     : server1Path,
+                  'dsBackEnd'  : DIRECTORY_INSTANCE_BE,          
+                  'dsLdifFile' : ldifFile
+                }
+              </call>
+
+              <script>
+               returnString = STAXResult[0][1]
+              </script>
+
+              <call function="'checktestString'">
+                { 'returnString'   : returnString,
+                  'expectedString' : 'Processed %s entries' % totalEntries
+                }
+              </call>
+
+              <message>
+                'replication_modifyrdn_multiple: Start DS running on %s:%s' % \
+                (server1Host, server1.getPort())
+              </message>
+
+              <!-- Start the Directory Server -->
+              <call function="'StartDsWithScript'">
+                { 'location'  : server1Host,
+                  'dsPath'    : server1Path
+                }
+              </call>
+              
+              <!-- Wait for DS to start -->
+              <call function="'isAlive'">
+                { 'location'         : server1Host,
+                  'dsPath'           : server1Path,
+                  'dsInstanceHost'   : server1Host,
+                  'dsInstancePort'   : server1.getPort(),
+                  'dsInstanceDn'     : server1.getRootDn(),
+                  'dsInstancePswd'   : server1.getRootPwd(),
+                  'noOfLoops'        : 10,
+                  'noOfMilliSeconds' : 5000
+                }
+              </call>              
+
+              <!-- Perform the total update -->
+              <call function="'initializeReplication'">
+                { 'location'                : clientHost,
+                  'dsPath'                  : clientPath,
+                  'sourceInstanceHost'      : server1Host,
+                  'sourceInstanceAdminPort' : server1.getAdminPort(),
+                  'replicationDnList'       : [synchroSuffix]
+                }
+              </call>
+
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+
+          </testcase>
+  
+
+          <testcase name="getTestCaseName('Run ldclt clients')">
+            
+            <sequence>
+              
+              <call function="'testCase_Preamble'"/>
+
+              <message>
+                 'replication_modifyrdn_multiple: Run ldclt add'
+              </message>
+
+              <!--<timer duration="timerDuration">
+                <sequence>-->
+                  <parallel>
+                    <block name="'ldclt-modifyrdn-threads-server1'">
+                    <sequence>
+                      
+                      <message>
+                        'replication_modifyrdn: modifyrdn threads on %s:%s' \
+                        % (server1Host, server1.getPort())
+                      </message>
+
+                      <script>
+                        opt1 = '-e delayedstartup=1'
+                        opt2 = '-e rename,rdn=\"uid:user.[RNDN(%s;%s;6)]\"' \
+                                % (lowRange, highRange)
+                        opt3 = '-N %s -I 68 -I 32 -v -q' % ldcltLoop
+                        opts = '%s %s %s' % (opt1, opt2, opt3)
+                      </script>
+                      
+                      <call function="'ldclt'">
+                        { 'location'       : STAF_CLIENT_HOSTNAME,
+                          'dsInstanceHost' : server1Host,
+                          'dsInstancePort' : server1.getPort(),
+                          'dsInstanceDn'   : server1.getRootDn(),
+                          'dsInstancePswd' : server1.getRootPwd(),
+                          'dsBaseDn'       : baseDN,
+                          'ldcltOptions'   : opts,
+                          'outputFile'     : 'ldclt_modifyrdn-%s_1.res' % suffix,
+                          'outputPath'     : ldcltDir
+                        }
+                      </call>
+                      
+                    </sequence>
+                    </block>
+                    
+                    <block name="'ldclt-modifyrdn-threads-server2'">
+                    <sequence>
+                      
+                      <message>
+                        'replication_modifyrdn: modifyrdn threads on %s:%s' \
+                        % (server2Host, server2.getPort())
+                      </message>
+
+                      <script>
+                        opt1 = '-e delayedstartup=1'
+                        opt2 = '-e rename,rdn=\"uid:user.[RNDN(%s;%s;6)]\"' \
+                                % (lowRange, highRange)
+                        opt3 = '-N %s -I 68 -I 32 -v -q' % ldcltLoop
+                        opts = '%s %s %s' % (opt1, opt2, opt3)
+                      </script>
+                      
+                      <call function="'ldclt'">
+                        { 'location'       : STAF_CLIENT_HOSTNAME,
+                          'dsInstanceHost' : server2Host,
+                          'dsInstancePort' : server2.getPort(),
+                          'dsInstanceDn'   : server2.getRootDn(),
+                          'dsInstancePswd' : server2.getRootPwd(),
+                          'dsBaseDn'       : baseDN,
+                          'ldcltOptions'   : opts,
+                          'outputFile'     : 'ldclt_modifyrdn-%s_2.res' % suffix,
+                          'outputPath'     : ldcltDir
+                        }
+                      </call>
+                      
+                    </sequence>
+                    </block>
+                    
+                    <block name="'ldclt-jvm'">
+                    <sequence>
+                      <loop from="1" to="jvmLoop" var="loop">
+                        <sequence>
+                          <message>
+                            'LOOP %s out of %s' % (loop, jvmLoop)
+                          </message>
+                          
+                          <message>
+                            'replication_modifyrdn_multiple: save jvm information'
+                          </message>
+
+                          <call function="'ldapSearchWithScript'">
+                            { 'location'       : server1Host,
+                              'dsPath'         : server1Path,
+                              'dsInstanceHost' : server1Host,
+                              'dsInstancePort' : server1.getPort(),
+                              'dsInstanceDn'   : server1.getRootDn(),
+                              'dsInstancePswd' : server1.getRootPwd(),
+                              'dsBaseDN'       : 'cn=JVM Memory Usage,cn=monitor',
+                              'dsFilter'       : 'objectclass=*',
+                              'expectedRC'     : 'noCheck',
+                              'outputFile'     : 'jvm_%s_%s.out' \
+                                                 % (suffix, loop),
+                              'outputPath'     : server1Dir
+                            }
+                          </call>
+                          
+                          <call function="'ldapSearchWithScript'">
+                            { 'location'       : server2Host,
+                              'dsPath'         : server2Path,
+                              'dsInstanceHost' : server2Host,
+                              'dsInstancePort' : server2.getPort(),
+                              'dsInstanceDn'   : server2.getRootDn(),
+                              'dsInstancePswd' : server2.getRootPwd(),
+                              'dsBaseDN'       : 'cn=JVM Memory Usage,cn=monitor',
+                              'dsFilter'       : 'objectclass=*',
+                              'expectedRC'     : 'noCheck',
+                              'outputFile'     : 'jvm_%s_%s.out' \
+                                                 % (suffix, loop),
+                              'outputPath'     : server2Dir
+                            }
+                          </call>
+                          
+                          <if expr="loop != jvmLoop">
+                            <call function="'Sleep'">
+                              { 'sleepForMilliSeconds'  : jvmSleep }
+                            </call>                            
+                          </if>
+
+                        </sequence>
+                      </loop>
+                    </sequence>
+                    </block>
+                  </parallel>
+              <!--</sequence>
+              </timer>
+
+              <script>timerRC = RC</script>
+
+              <if expr="timerRC == 0">
+                <sequence>
+                  <message>'Timer exceeds %s' % timerDuration</message>
+                  <tcstatus result="'fail'"/>
+                </sequence>
+              </if>-->
+              
+              <message>
+                'Copy %s/ldclt_modifyrdn-%s_1.res from %s to %s on %s' % \
+                (ldcltDir, suffix, STAF_CLIENT_HOSTNAME, logs.sut, STAXServiceMachine)
+              </message>
+              <call function="'copyFile'">
+                {
+                'location'   : STAF_CLIENT_HOSTNAME,
+                'srcfile'    : '%s/ldclt_modifyrdn-%s_1.res' % (ldcltDir, suffix),
+                'destfile'   : '%s/ldclt_modiryrdn-%s_1.res' % (logs.sut, suffix),
+                'remotehost' : STAXServiceMachine
+                }
+              </call>
+ 
+              <message>
+                'Copy %s/ldclt_modifyrdn-%s_2.res from %s to %s on %s' % \
+                (ldcltDir, suffix, STAF_CLIENT_HOSTNAME, logs.sut, STAXServiceMachine)
+              </message>
+              <call function="'copyFile'">
+                {
+                'location'   : STAF_CLIENT_HOSTNAME,
+                'srcfile'    : '%s/ldclt_modifyrdn-%s_2.res' % (ldcltDir, suffix),
+                'destfile'   : '%s/ldclt_modifyrdn-%s_2.res' % (logs.sut, suffix),
+                'remotehost' : STAXServiceMachine
+                }
+              </call>
+
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+            
+          </testcase>
+
+
+
+          <testcase name="getTestCaseName('Check server is still running')">
+
+            <sequence>
+              
+              <call function="'testCase_Preamble'"/>
+
+              <paralleliterate var="server" in="_topologyServerList" indexvar="i">
+                <sequence>
+                  <script>
+                    serverPath = '%s/%s' % (server.getDir(), OPENDSNAME)
+                  </script>
+
+                  <message>
+                   'replication_modifyrdn_multiple: Check server is still running on \
+                    %s:%s' % (server.getHostname(), server.getPort())
+                  </message>
+                  
+                  <!-- Modify entry on one of the servers -->
+                  <call function="'isAlive'">
+                    { 'location'         : server.getHostname(),
+                      'dsPath'           : serverPath,
+                      'dsInstanceHost'   : server.getHostname(),
+                      'dsInstancePort'   : server.getPort(),
+                      'dsInstanceDn'     : server.getRootDn(),
+                      'dsInstancePswd'   : server.getRootPwd(),
+                      'noOfLoops'        : 10,
+                      'noOfMilliSeconds' : 5000
+                    }
+                  </call>                       
+                </sequence>
+              </paralleliterate>
+              
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+
+          </testcase>
+
+
+          
+          <testcase name="getTestCaseName('Verify replication')">
+
+            <sequence>
+
+              <call function="'testCase_Preamble'"/>
+
+              <message>
+                'replication_modifyrdn_multiple: Verify replication is still working'
+              </message>
+                            
+              <!-- Verify the replication is still working among the servers in 
+                the topology -->          
+              <call function="'verifyReplication'">
+                [ _topologyServerList, synchroSuffix ]
+              </call> 
+
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+
+          </testcase>
+          
+          
+          
+          <testcase name="getTestCaseName('Verify tree synchronization')">
+
+            <sequence>
+
+              <call function="'testCase_Preamble'"/>
+
+              <message>
+                'replication_modifyrdn_multiple: Verify the tree synchronization'
+              </message>
+                            
+              <!-- Verify the synchronization of the trees among the servers in 
+                the topology -->          
+              <call function="'verifyTrees'">
+                [ clientHost, clientPath, master, consumerList, synchroSuffix ]
+              </call> 
+
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+
+          </testcase>
+          
+          
+          
+          <testcase name="getTestCaseName('Check replication status')">
+
+            <sequence>
+
+              <call function="'testCase_Preamble'"/>
+
+              <message>
+                'replication_modifyrdn_multiple: Check replication status'
+              </message>
+                            
+              <!-- Verify the synchronization of the trees among the servers in 
+                the topology -->         
+              <call function="'getReplicationStatus'">
+                { 'location'            : masterHost,
+                  'dsPath'              : masterPath,
+                  'dsInstanceHost'      : masterHost,
+                  'dsInstanceAdminPort' : master.getAdminPort(),
+                  'replicationDnList'   : [synchroSuffix]
+                }
+              </call>
+
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+
+          </testcase>
+          
+          
+          <import machine="STAF_LOCAL_HOSTNAME"
+            file="'%s/../functional-tests/testcases/replication/replication_cleanup.xml' % (TESTS_DIR)"/>
+          <call function="'replication_cleanup'">
+            { 'suiteSuffix' : suffix }
+          </call>
+
+          <call function="'testSuite_Postamble'"/>
+            
+        </sequence>
+       
+      </block>
+       
+    </sequence>
+      
+  </function>
+
+</stax>
diff --git a/opends/tests/staf-tests/stress-tests/testcases/replication/replication_search.xml b/opends/tests/staf-tests/stress-tests/testcases/replication/replication_search.xml
new file mode 100644
index 0000000..6f00111
--- /dev/null
+++ b/opends/tests/staf-tests/stress-tests/testcases/replication/replication_search.xml
@@ -0,0 +1,450 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE stax SYSTEM "../../../shared/stax.dtd">
+<!--
+ ! CDDL HEADER START
+ !
+ ! The contents of this file are subject to the terms of the
+ ! Common Development and Distribution License, Version 1.0 only
+ ! (the "License").  You may not use this file except in compliance
+ ! with the License.
+ !
+ ! You can obtain a copy of the license at
+ ! trunk/opends/resource/legal-notices/OpenDS.LICENSE
+ ! or https://OpenDS.dev.java.net/OpenDS.LICENSE.
+ ! See the License for the specific language governing permissions
+ ! and limitations under the License.
+ !
+ ! When distributing Covered Code, include this CDDL HEADER in each
+ ! file and include the License file at
+ ! trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
+ ! add the following below this CDDL HEADER, with the fields enclosed
+ ! by brackets "[]" replaced with your own identifying information:
+ !      Portions Copyright [yyyy] [name of copyright owner]
+ !
+ ! CDDL HEADER END
+ !
+ !      Copyright 2009 Sun Microsystems, Inc.
+ ! -->
+<stax>
+
+  <defaultcall function="replication_search"/>
+
+  <function name="replication_search">
+
+    <sequence>
+
+      <block name="'replication-search'">
+      
+        <sequence>
+  
+          <script>
+            if not CurrentTestPath.has_key('group'):
+              CurrentTestPath['group']='replication'
+            CurrentTestPath['suite']=STAXCurrentBlock
+          </script>
+      
+          <call function="'testSuite_Preamble'"/>
+
+          <import machine="STAF_LOCAL_HOSTNAME"
+            file="'%s/../functional-tests/testcases/replication/replication_setup.xml' % (TESTS_DIR)"/>
+          <call function="'replication_setup'"/>
+
+          <script>
+            ldcltLoop    = testsDuration / 10
+            lowRange     = 100000
+            highRange    = lowRange + numberOfEntries
+            jvmLoop      = testsDuration / 1800 + 1
+            jvmSleep     = 1800000
+            baseDN       = 'ou=People,%s' % synchroSuffix
+            ldcltDir     = '%s/ldclt_dir' % TMPDIR
+            masterDir    = '%s/..' % masterPath
+            ldifTemplate = '%s/%s_entries.template' \
+                           % (masterDir, numberOfEntries)
+            ldifFile     = '%s/%s_entries.ldif' \
+                           % (masterDir, numberOfEntries)
+            totalEntries = numberOfEntries + 2
+            
+            suffix       = 'search'
+          </script>
+          
+          
+          <testcase name="getTestCaseName('Preamble')">
+            
+            <sequence>
+
+              <call function="'testCase_Preamble'"/>
+
+              <!-- Check if 'ldifFile' exists -->
+              <call function="'GetEntry'">
+                {
+                'location'  : masterHost ,
+                'entry'     : ldifFile ,
+                'attribute' : 'TYPE'
+                }
+              </call>
+              <if expr="RC == 48">
+                <sequence>
+                  <message>
+                    'replication_search: File %s does not exist, create it' \
+                    % ldifFile
+                  </message>
+
+                  <message>
+                    'replication_search: Make a make-ldif template file'
+                  </message>
+
+                  <call function="'MakeAMakeLdifTemplate'">
+                    {
+                    'numEntries'           : numberOfEntries,
+                    'suffix'               : synchroSuffix,
+                    'startFrom'            : lowRange,
+                    'additionalAttributes' : True,
+                    'templateFile'         : ldifTemplate,
+                    'templateLocation'     : masterHost
+                    }
+                  </call>
+
+                  <message>
+                    'replication_search: Make the ldif file'
+                  </message>
+
+                  <call function="'MakeLdifWithScript'">
+                    {
+                    'location'     : masterHost,
+                    'dsPath'       : masterPath,
+                    'templateFile' : ldifTemplate,
+                    'ldifFile'     : ldifFile
+                    }
+                  </call>
+                </sequence>
+                <else>
+                  <message>
+                    'replication_search: File %s exists, do nothing' \
+                    % ldifFile
+                  </message>
+                </else>
+              </if>
+
+              <message>
+               'replication_search: Import large ldif file'
+              </message> 
+
+              <!-- Stop "master" Directory Server -->
+              <call function="'StopDsWithScript'">
+                { 'location'    : masterHost,
+                  'dsPath'      : masterPath,
+                  'dsHost'      : masterHost,
+                  'dsAdminPort' : master.getAdminPort(),
+                  'dsBindDN'    : master.getRootDn(),
+                  'dsBindPwd'   : master.getRootPwd()
+                }
+              </call>
+              
+              <!-- Import data into "master" Directory Server -->
+              <call function="'ImportLdifWithScript'">
+                { 'location'   : masterHost,
+                  'dsPath'     : masterPath,
+                  'dsBackEnd'  : DIRECTORY_INSTANCE_BE,          
+                  'dsLdifFile' : ldifFile
+                }
+              </call>
+
+              <script>
+               returnString = STAXResult[0][1]
+              </script>
+
+              <call function="'checktestString'">
+                { 'returnString'   : returnString,
+                  'expectedString' : 'Processed 10002 entries'
+                }
+              </call>
+
+              <message>
+                'replication_search: Start DS running on %s:%s' % \
+                (masterHost, master.getPort())
+              </message>
+
+              <!-- Start the Directory Server -->
+              <call function="'StartDsWithScript'">
+                { 'location'  : masterHost,
+                  'dsPath'    : masterPath
+                }
+              </call>
+              
+              <!-- Wait for DS to start -->
+              <call function="'isAlive'">
+                { 'location'         : masterHost,
+                  'dsPath'           : masterPath,
+                  'dsInstanceHost'   : masterHost,
+                  'dsInstancePort'   : master.getPort(),
+                  'dsInstanceDn'     : master.getRootDn(),
+                  'dsInstancePswd'   : master.getRootPwd(),
+                  'noOfLoops'        : 10,
+                  'noOfMilliSeconds' : 5000
+                }
+              </call>              
+
+              <!-- Perform the total update -->
+              <call function="'initializeReplication'">
+                { 'location'                : clientHost,
+                  'dsPath'                  : clientPath,
+                  'sourceInstanceHost'      : masterHost,
+                  'sourceInstanceAdminPort' : master.getAdminPort(),
+                  'replicationDnList'       : [synchroSuffix]
+                }
+              </call>
+
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+
+          </testcase>
+         
+          
+          <testcase name="getTestCaseName('Run ldclt clients')">
+            
+            <sequence>
+              
+              <call function="'testCase_Preamble'"/>
+
+              <message>
+                 'replication_search: Run ldclt search'
+              </message>
+
+              <!--<timer duration="timerDuration">
+                <sequence>-->
+                  <parallel>
+                    <block name="'ldclt-search-threads'">
+                    <sequence>
+                      
+                      <message>
+                        'replication_search: search threads'
+                      </message>
+
+                      <script>
+                        opt1 = '-e delayedstartup=1 -r %s -R %s' \
+                                % (lowRange, highRange)
+                        opt2 = '-e esearch,random -f uid=user.XXXXXX'
+                        opt3 = '-N %s -I 32 -v -q' % ldcltLoop
+                        opts = '%s %s %s' % (opt1, opt2, opt3)
+                      </script>
+
+                      <call function="'ldclt'">
+                        { 'location'       : STAF_CLIENT_HOSTNAME,
+                          'dsInstanceHost' : masterHost,
+                          'dsInstancePort' : master.getPort(),
+                          'dsInstanceDn'   : master.getRootDn(),
+                          'dsInstancePswd' : master.getRootPwd(),
+                          'dsBaseDn'       : baseDN,
+                          'ldcltOptions'   : opts,
+                          'outputFile'     : 'ldclt_search-%s.res' % suffix,
+                          'outputPath'     : ldcltDir
+                        }
+                      </call>
+                      
+                    </sequence>
+                    </block>
+                    
+                    <block name="'ldclt-jvm'">
+                    <sequence>
+                      <loop from="1" to="jvmLoop" var="loop">
+                        <sequence>
+                          <message>
+                            'LOOP %s out of %s' % (loop, jvmLoop)
+                          </message>
+                          
+                          <message>
+                            'replication_search: save jvm information'
+                          </message>
+
+                          <call function="'ldapSearchWithScript'">
+                            { 'location'       : masterHost,
+                              'dsPath'         : masterPath,
+                              'dsInstanceHost' : masterHost,
+                              'dsInstancePort' : master.getPort(),
+                              'dsInstanceDn'   : master.getRootDn(),
+                              'dsInstancePswd' : master.getRootPwd(),
+                              'dsBaseDN'       : 'cn=JVM Memory Usage,cn=monitor',
+                              'dsFilter'       : 'objectclass=*',
+                              'expectedRC'     : 'noCheck',
+                              'outputFile'     : 'jvm_%s_%s.out' % (suffix, loop),
+                              'outputPath'     : masterDir
+                            }
+                          </call>
+                          
+                          <if expr="loop != jvmLoop">
+                            <call function="'Sleep'">
+                              { 'sleepForMilliSeconds'  : jvmSleep }
+                            </call>                            
+                          </if>
+                          
+                        </sequence>
+                      </loop>
+                    </sequence>
+                    </block>
+                  </parallel>
+              <!--</sequence>
+              </timer>
+
+              <script>timerRC = RC</script>
+
+              <if expr="timerRC == 0">
+                <sequence>
+                  <message>'Timer exceeds %s' % timerDuration</message>
+                  <tcstatus result="'fail'"/>
+                </sequence>
+              </if>-->
+              
+              <message>
+                'Copy %s/ldclt_search-%s.res from %s to %s on %s' % \
+                (ldcltDir, suffix, STAF_CLIENT_HOSTNAME, logs.sut, STAXServiceMachine)
+              </message>
+              <call function="'copyFile'">
+                {
+                'location'   : STAF_CLIENT_HOSTNAME,
+                'srcfile'    : '%s/ldclt_search-%s.res' % (ldcltDir, suffix),
+                'destfile'   : '%s/ldclt_search-%s.res' % (logs.sut, suffix),
+                'remotehost' : STAXServiceMachine
+                }
+              </call>
+
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+            
+          </testcase>
+
+
+
+          <testcase name="getTestCaseName('Check server is still running')">
+
+            <sequence>
+              
+              <call function="'testCase_Preamble'"/>
+
+              <paralleliterate var="server" in="_topologyServerList" indexvar="i">
+                <sequence>
+                  <script>
+                    serverPath = '%s/%s' % (server.getDir(), OPENDSNAME)
+                  </script>
+
+                  <message>
+                   'replication_search: Check server is still running on \
+                    %s:%s' % (server.getHostname(), server.getPort())
+                  </message>
+                  
+                  <!-- Modify entry on one of the servers -->
+                  <call function="'isAlive'">
+                    { 'location'         : server.getHostname(),
+                      'dsPath'           : serverPath,
+                      'dsInstanceHost'   : server.getHostname(),
+                      'dsInstancePort'   : server.getPort(),
+                      'dsInstanceDn'     : server.getRootDn(),
+                      'dsInstancePswd'   : server.getRootPwd(),
+                      'noOfLoops'        : 10,
+                      'noOfMilliSeconds' : 5000
+                    }
+                  </call>                       
+                </sequence>
+              </paralleliterate>
+
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+
+          </testcase>
+
+
+          <testcase name="getTestCaseName('Verify replication')">
+
+            <sequence>
+
+              <call function="'testCase_Preamble'"/>
+
+              <message>
+                'replication_search: Verify replication is still working'
+              </message>
+                            
+              <!-- Verify the replication is still working among the servers in 
+                the topology -->          
+              <call function="'verifyReplication'">
+                [ _topologyServerList, synchroSuffix ]
+              </call> 
+
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+
+          </testcase>
+          
+          
+          
+          <testcase name="getTestCaseName('Verify tree synchronization')">
+
+            <sequence>
+
+              <call function="'testCase_Preamble'"/>
+
+              <message>
+                'replication_search: Verify the tree synchronization'
+              </message>
+                            
+              <!-- Verify the synchronization of the trees among the servers in 
+                the topology -->          
+              <call function="'verifyTrees'">
+                [ clientHost, clientPath, master, consumerList, synchroSuffix ]
+              </call> 
+
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+
+          </testcase>
+          
+          
+          
+          <testcase name="getTestCaseName('Check replication status')">
+
+            <sequence>
+
+              <call function="'testCase_Preamble'"/>
+
+              <message>
+                'replication_search: Check replication status'
+              </message>
+                            
+              <!-- Verify the synchronization of the trees among the servers in 
+                the topology -->         
+              <call function="'getReplicationStatus'">
+                { 'location'            : masterHost,
+                  'dsPath'              : masterPath,
+                  'dsInstanceHost'      : masterHost,
+                  'dsInstanceAdminPort' : master.getAdminPort(),
+                  'replicationDnList'   : [synchroSuffix]
+                }
+              </call>
+
+              <call function="'testCase_Postamble'"/>
+
+            </sequence>
+
+          </testcase>
+          
+          
+          <import machine="STAF_LOCAL_HOSTNAME"
+            file="'%s/../functional-tests/testcases/replication/replication_cleanup.xml' % (TESTS_DIR)"/>
+          <call function="'replication_cleanup'">
+            { 'suiteSuffix' : suffix }
+          </call>
+
+          <call function="'testSuite_Postamble'"/>
+            
+        </sequence>
+       
+      </block>
+       
+    </sequence>
+      
+  </function>
+
+</stax>

--
Gitblit v1.10.0