diff --git a/product/ERP5Banking/tests/TestERP5BankingMixin.py b/product/ERP5Banking/tests/TestERP5BankingMixin.py
index 5a4e6e731227d0e5074dc8397a968917217736bd..9cc59dae8be7d1a90d60cf3ce83ff9bb7f3394ef 100644
--- a/product/ERP5Banking/tests/TestERP5BankingMixin.py
+++ b/product/ERP5Banking/tests/TestERP5BankingMixin.py
@@ -392,38 +392,38 @@ class TestERP5BankingMixin(ERP5TypeTestCase):
     # Now create required category for banknotes and coin
     self.cash_status_base_category = getattr(self.category_tool, 'cash_status')
     # add the category valid in cash_status which define status of banknotes and coin
-    self.cash_status_valid = self.cash_status_base_category.newContent(id='valid', portal_type='Category')
-    self.cash_status_to_sort = self.cash_status_base_category.newContent(id='to_sort', portal_type='Category')
-    self.cash_status_cancelled = self.cash_status_base_category.newContent(id='cancelled', portal_type='Category')
-    self.cash_status_not_defined = self.cash_status_base_category.newContent(id='not_defined', portal_type='Category')
-    self.cash_status_mutilated = self.cash_status_base_category.newContent(id='mutilated', portal_type='Category')
-    self.cash_status_retired = self.cash_status_base_category.newContent(id='retired', portal_type='Category')
-    self.cash_status_new_not_emitted = self.cash_status_base_category.newContent(id='new_not_emitted', portal_type='Category')
-    self.cash_status_mixed = self.cash_status_base_category.newContent(id='mixed', portal_type='Category')
+    self.cash_status_valid = self._maybeNewContent(self.cash_status_base_category, id='valid', portal_type='Category')
+    self.cash_status_to_sort = self._maybeNewContent(self.cash_status_base_category, id='to_sort', portal_type='Category')
+    self.cash_status_cancelled = self._maybeNewContent(self.cash_status_base_category, id='cancelled', portal_type='Category')
+    self.cash_status_not_defined = self._maybeNewContent(self.cash_status_base_category, id='not_defined', portal_type='Category')
+    self.cash_status_mutilated = self._maybeNewContent(self.cash_status_base_category, id='mutilated', portal_type='Category')
+    self.cash_status_retired = self._maybeNewContent(self.cash_status_base_category, id='retired', portal_type='Category')
+    self.cash_status_new_not_emitted = self._maybeNewContent(self.cash_status_base_category, id='new_not_emitted', portal_type='Category')
+    self.cash_status_mixed = self._maybeNewContent(self.cash_status_base_category, id='mixed', portal_type='Category')
 
     self.emission_letter_base_category = getattr(self.category_tool, 'emission_letter')
     # add the category k in emission letter that will be used fo banknotes and coins
-    self.emission_letter_p = self.emission_letter_base_category.newContent(id='p', portal_type='Category')
-    self.emission_letter_s = self.emission_letter_base_category.newContent(id='s', portal_type='Category')
-    self.emission_letter_b = self.emission_letter_base_category.newContent(id='b', portal_type='Category')
-    self.emission_letter_k = self.emission_letter_base_category.newContent(id='k', portal_type='Category')
-    self.emission_letter_mixed = self.emission_letter_base_category.newContent(id='mixed', portal_type='Category')
-    self.emission_letter_not_defined = self.emission_letter_base_category.newContent(id='not_defined', portal_type='Category')
+    self.emission_letter_p = self._maybeNewContent(self.emission_letter_base_category, id='p', portal_type='Category')
+    self.emission_letter_s = self._maybeNewContent(self.emission_letter_base_category, id='s', portal_type='Category')
+    self.emission_letter_b = self._maybeNewContent(self.emission_letter_base_category, id='b', portal_type='Category')
+    self.emission_letter_k = self._maybeNewContent(self.emission_letter_base_category, id='k', portal_type='Category')
+    self.emission_letter_mixed = self._maybeNewContent(self.emission_letter_base_category, id='mixed', portal_type='Category')
+    self.emission_letter_not_defined = self._maybeNewContent(self.emission_letter_base_category, id='not_defined', portal_type='Category')
 
     self.variation_base_category = getattr(self.category_tool, 'variation')
     # add the category 1992 in variation
-    self.variation_1992 = self.variation_base_category.newContent(id='1992', portal_type='Category')
+    self.variation_1992 = self._maybeNewContent(self.variation_base_category, id='1992', portal_type='Category')
     # add the category 2003 in variation
-    self.variation_2003 = self.variation_base_category.newContent(id='2003', portal_type='Category')
+    self.variation_2003 = self._maybeNewContent(self.variation_base_category, id='2003', portal_type='Category')
     # add the category not_defined in variation
-    self.variation_not_defined = self.variation_base_category.newContent(id='not_defined',
+    self.variation_not_defined = self._maybeNewContent(self.variation_base_category, id='not_defined',
                                       portal_type='Category')
 
     # Now create required category for region and coin
     self.region_base_category = getattr(self.category_tool, 'region')
     # add the category valid in cash_status which define status of banknotes and coin
-    self.region_france = self.region_base_category.newContent(id='france', title="France", portal_type='Category')
-    self.region_spain = self.region_base_category.newContent(id='spain', title="Spain", portal_type='Category')
+    self.region_france = self._maybeNewContent(self.region_base_category, id='france', title="France", portal_type='Category')
+    self.region_spain = self._maybeNewContent(self.region_base_category, id='spain', title="Spain", portal_type='Category')
 
     # Create Resources Document (Banknotes & Coins)
     # get the currency cash module
@@ -484,6 +484,13 @@ class TestERP5BankingMixin(ERP5TypeTestCase):
          price_currency_value=self.currency_2, variation_list=('not_defined', ),
          quantity_unit_value=self.unit)
 
+  def _maybeNewContent(self, container, id, **kw):
+    try:
+      result = container[id]
+    except KeyError:
+      result = container.newContent(id=id, **kw)
+    return result
+
   def createFunctionGroupSiteCategory(self, no_site=0, site_list=None):
     """
     Create site group function category that can be used for security
@@ -493,55 +500,55 @@ class TestERP5BankingMixin(ERP5TypeTestCase):
 
     # add category unit in quantity_unit which is the unit that will be used for banknotes and coins
     self.variation_base_category = getattr(self.category_tool, 'quantity_unit')
-    self.unit = self.variation_base_category.newContent(id='unit', title='Unit')
+    self.unit = self._maybeNewContent(self.variation_base_category, id='unit', title='Unit')
 
-    self.category_tool.role.newContent(id='internal', portal_type='Category')
+    self._maybeNewContent(self.category_tool.role, id='internal', portal_type='Category')
 
     # add category for currency_exchange_type
     self.currency_exchange_type = getattr(self.category_tool, 'currency_exchange_type')
-    self.currency_exchange_type.newContent(id='sale')
-    self.currency_exchange_type.newContent(id='purchase')
-    self.currency_exchange_type.newContent(id='transfer')
+    self._maybeNewContent(self.currency_exchange_type, id='sale')
+    self._maybeNewContent(self.currency_exchange_type, id='purchase')
+    self._maybeNewContent(self.currency_exchange_type, id='transfer')
 
     # get the base category function
     self.function_base_category = getattr(self.category_tool, 'function')
     # add category banking in function which will hold all functions neccessary in a bank (at least for this unit test)
-    self.banking = self.function_base_category.newContent(id='banking', portal_type='Category', codification='BNK')
-    self.caissier_principal = self.banking.newContent(id='caissier_principal', portal_type='Category', codification='CCP')
-    self.controleur_caisse = self.banking.newContent(id='controleur_caisse', portal_type='Category', codification='CCT')
-    self.void_function = self.banking.newContent(id='void_function', portal_type='Category', codification='VOID')
-    self.gestionnaire_caisse_courante = self.banking.newContent(id='gestionnaire_caisse_courante', portal_type='Category', codification='CCO')
-    self.gestionnaire_caveau = self.banking.newContent(id='gestionnaire_caveau', portal_type='Category', codification='CCV')
-    self.caissier_particulier = self.banking.newContent(id='caissier_particulier', portal_type='Category', codification='CGU')
-    self.controleur_caisse_courante = self.banking.newContent(id='controleur_caisse_courante', portal_type='Category', codification='CCC')
-    self.controleur_caveau = self.banking.newContent(id='controleur_caveau', portal_type='Category', codification='CCA')
-    self.comptable = self.banking.newContent(id='comptable', portal_type='Category', codification='FXF')
-    self.commis_comptable = self.banking.newContent(id='commis_comptable', portal_type='Category', codification='CBM')
-    self.commis_caisse = self.banking.newContent(id='commis_caisse', portal_type='Category', codification='CCM')
-    self.chef_section_comptable = self.banking.newContent(id='chef_section_comptable', portal_type='Category', codification='CSB')
-    self.chef_comptable = self.banking.newContent(id='chef_comptable', portal_type='Category', codification='CCB')
-    self.chef_de_tri = self.banking.newContent(id='chef_de_tri', portal_type='Category', codification='CTR')
-    self.chef_caisse = self.banking.newContent(id='chef_caisse', portal_type='Category', codification='CCP')
-    self.chef_section = self.banking.newContent(id='chef_section', portal_type='Category', codification='FXS')
-    self.chef_section_financier = self.banking.newContent(id='chef_section_financier', portal_type='Category', codification='FXA')
-    self.financier_a = self.banking.newContent(id='financier_a', portal_type='Category', codification='FNA')
-    self.financier_b = self.banking.newContent(id='financier_b', portal_type='Category', codification='FNB')
-    self.chef_financier = self.banking.newContent(id='chef_financier', portal_type='Category', codification='FCF')
-    self.admin_local = self.banking.newContent(id='administrateur_local', portal_type='Category', codification='ADL')
-    self.agent_saisie_sref = self.banking.newContent(id='agent_saisie_sref', portal_type='Category', codification='SSREF')
-    self.chef_sref = self.banking.newContent(id='chef_sref', portal_type='Category', codification='CSREF')
-    self.analyste_sref = self.banking.newContent(id='analyste_sref', portal_type='Category', codification='ASREF')
-    self.gestionnaire_devise_a = self.banking.newContent(id='gestionnaire_cours_devise_a', portal_type='Category', codification='GCA')
-    self.gestionnaire_devise_b = self.banking.newContent(id='gestionnaire_cours_devise_b', portal_type='Category', codification='GCB')
-    self.comptable_inter_site = self.banking.newContent(id='comptable_inter_site', portal_type='Category', codification='FXFIS')
+    self.banking = self._maybeNewContent(self.function_base_category, id='banking', portal_type='Category', codification='BNK')
+    self.caissier_principal = self._maybeNewContent(self.banking, id='caissier_principal', portal_type='Category', codification='CCP')
+    self.controleur_caisse = self._maybeNewContent(self.banking, id='controleur_caisse', portal_type='Category', codification='CCT')
+    self.void_function = self._maybeNewContent(self.banking, id='void_function', portal_type='Category', codification='VOID')
+    self.gestionnaire_caisse_courante = self._maybeNewContent(self.banking, id='gestionnaire_caisse_courante', portal_type='Category', codification='CCO')
+    self.gestionnaire_caveau = self._maybeNewContent(self.banking, id='gestionnaire_caveau', portal_type='Category', codification='CCV')
+    self.caissier_particulier = self._maybeNewContent(self.banking, id='caissier_particulier', portal_type='Category', codification='CGU')
+    self.controleur_caisse_courante = self._maybeNewContent(self.banking, id='controleur_caisse_courante', portal_type='Category', codification='CCC')
+    self.controleur_caveau = self._maybeNewContent(self.banking, id='controleur_caveau', portal_type='Category', codification='CCA')
+    self.comptable = self._maybeNewContent(self.banking, id='comptable', portal_type='Category', codification='FXF')
+    self.commis_comptable = self._maybeNewContent(self.banking, id='commis_comptable', portal_type='Category', codification='CBM')
+    self.commis_caisse = self._maybeNewContent(self.banking, id='commis_caisse', portal_type='Category', codification='CCM')
+    self.chef_section_comptable = self._maybeNewContent(self.banking, id='chef_section_comptable', portal_type='Category', codification='CSB')
+    self.chef_comptable = self._maybeNewContent(self.banking, id='chef_comptable', portal_type='Category', codification='CCB')
+    self.chef_de_tri = self._maybeNewContent(self.banking, id='chef_de_tri', portal_type='Category', codification='CTR')
+    self.chef_caisse = self._maybeNewContent(self.banking, id='chef_caisse', portal_type='Category', codification='CCP')
+    self.chef_section = self._maybeNewContent(self.banking, id='chef_section', portal_type='Category', codification='FXS')
+    self.chef_section_financier = self._maybeNewContent(self.banking, id='chef_section_financier', portal_type='Category', codification='FXA')
+    self.financier_a = self._maybeNewContent(self.banking, id='financier_a', portal_type='Category', codification='FNA')
+    self.financier_b = self._maybeNewContent(self.banking, id='financier_b', portal_type='Category', codification='FNB')
+    self.chef_financier = self._maybeNewContent(self.banking, id='chef_financier', portal_type='Category', codification='FCF')
+    self.admin_local = self._maybeNewContent(self.banking, id='administrateur_local', portal_type='Category', codification='ADL')
+    self.agent_saisie_sref = self._maybeNewContent(self.banking, id='agent_saisie_sref', portal_type='Category', codification='SSREF')
+    self.chef_sref = self._maybeNewContent(self.banking, id='chef_sref', portal_type='Category', codification='CSREF')
+    self.analyste_sref = self._maybeNewContent(self.banking, id='analyste_sref', portal_type='Category', codification='ASREF')
+    self.gestionnaire_devise_a = self._maybeNewContent(self.banking, id='gestionnaire_cours_devise_a', portal_type='Category', codification='GCA')
+    self.gestionnaire_devise_b = self._maybeNewContent(self.banking, id='gestionnaire_cours_devise_b', portal_type='Category', codification='GCB')
+    self.comptable_inter_site = self._maybeNewContent(self.banking, id='comptable_inter_site', portal_type='Category', codification='FXFIS')
 
     # get the base category group
     self.group_base_category = getattr(self.category_tool, 'group')
-    self.baobab_group = self.group_base_category.newContent(id='baobab', portal_type='Category', codification='BAOBAB')
+    self.baobab_group = self._maybeNewContent(self.group_base_category, id='baobab', portal_type='Category', codification='BAOBAB')
     # get the base category site
     self.site_base_category = getattr(self.category_tool, 'site')
     # add the category testsite in the category site which hold vaults situated in the bank
-    self.testsite = self.site_base_category.newContent(id='testsite', portal_type='Category', codification='TEST')
+    self.testsite = self._maybeNewContent(self.site_base_category, id='testsite', portal_type='Category', codification='TEST')
     site_reference_from_codification_dict = {
       'P10': ('FR', '000', '11111', '000000000000', '25'),
       'S10': ('SP', '000', '11111', '000000000000', '08'),
@@ -552,9 +559,9 @@ class TestERP5BankingMixin(ERP5TypeTestCase):
       'S10': 'spain',  # madrid
       'HQ1': 'france', # main
     }
-    self.paris = self.testsite.newContent(id='paris', portal_type='Category', codification='P10',  vault_type='site')
-    self.madrid = self.testsite.newContent(id='madrid', portal_type='Category', codification='S10',  vault_type='site')
-    self.siege = self.site_base_category.newContent(id='siege', portal_type='Category', codification='HQ1',  vault_type='site')
+    self.paris = self._maybeNewContent(self.testsite, id='paris', portal_type='Category', codification='P10',  vault_type='site')
+    self.madrid = self._maybeNewContent(self.testsite, id='madrid', portal_type='Category', codification='S10',  vault_type='site')
+    self.siege = self._maybeNewContent(self.site_base_category, id='siege', portal_type='Category', codification='HQ1',  vault_type='site')
     created_site_list = [self.paris, self.madrid, self.siege]
 
     self._createBanknotesAndCoins()
@@ -567,7 +574,7 @@ class TestERP5BankingMixin(ERP5TypeTestCase):
             for category_id in site[2].split('/'):
               contained = getattr(container, category_id, None)
               if contained is None:
-                contained = container.newContent(id=category_id, portal_type='Category')
+                contained = self._maybeNewContent(container, id=category_id, portal_type='Category')
               container = contained
             if len(site) > 3:
               site_reference_from_codification_dict[site[1]] = site[3]
@@ -576,7 +583,7 @@ class TestERP5BankingMixin(ERP5TypeTestCase):
           codification = site[1]
           site = site[0]
         if site not in ("paris", 'madrid', 'siege'):
-          site = container.newContent(id=site, portal_type='Category',  codification=codification, vault_type='site')
+          site = self._maybeNewContent(container, id=site, portal_type='Category',  codification=codification, vault_type='site')
           created_site_list.append(site)
 
     # Create organisation + bank account for each site category.
@@ -606,29 +613,29 @@ class TestERP5BankingMixin(ERP5TypeTestCase):
         )
 
     self.vault_type_base_category = getattr(self.category_tool, 'vault_type')
-    site_vault_type = self.vault_type_base_category.newContent(id='site')
-    surface_vault_type = site_vault_type.newContent('surface')
-    bi_vault_type = surface_vault_type.newContent('banque_interne')
-    co_vault_type = surface_vault_type.newContent('caisse_courante')
-    de_co_vault_type = co_vault_type.newContent('encaisse_des_devises')
-    guichet_bi_vault_type = bi_vault_type.newContent('guichet')
-    gp_vault_type = surface_vault_type.newContent('gros_paiement')
-    guichet_gp_vault_type = gp_vault_type.newContent('guichet')
-    gv_vault_type = surface_vault_type.newContent('gros_versement')
-    guichet_gv_vault_type = gv_vault_type.newContent('guichet')
-    op_vault_type = surface_vault_type.newContent('operations_diverses')
-    guichet_op_vault_type = op_vault_type.newContent('guichet')
-    caveau_vault_type = site_vault_type.newContent('caveau')
-    auxiliaire_vault_type = caveau_vault_type.newContent('auxiliaire')
-    auxiliaire_vault_type.newContent('auxiliaire_vault_type')
-    auxiliaire_vault_type.newContent('encaisse_des_devises')
-    externe = auxiliaire_vault_type.newContent('encaisse_des_externes')
-    externe.newContent('transit')
-    caveau_vault_type.newContent('reserve')
-    serre = caveau_vault_type.newContent('serre')
-    serre.newContent('transit')
-    serre.newContent('retire')
-    salle_tri = surface_vault_type.newContent('salle_tri')
+    site_vault_type = self._maybeNewContent(self.vault_type_base_category, id='site')
+    surface_vault_type = self._maybeNewContent(site_vault_type, 'surface')
+    bi_vault_type = self._maybeNewContent(surface_vault_type, 'banque_interne')
+    co_vault_type = self._maybeNewContent(surface_vault_type, 'caisse_courante')
+    de_co_vault_type = self._maybeNewContent(co_vault_type, 'encaisse_des_devises')
+    guichet_bi_vault_type = self._maybeNewContent(bi_vault_type, 'guichet')
+    gp_vault_type = self._maybeNewContent(surface_vault_type, 'gros_paiement')
+    guichet_gp_vault_type = self._maybeNewContent(gp_vault_type, 'guichet')
+    gv_vault_type = self._maybeNewContent(surface_vault_type, 'gros_versement')
+    guichet_gv_vault_type = self._maybeNewContent(gv_vault_type, 'guichet')
+    op_vault_type = self._maybeNewContent(surface_vault_type, 'operations_diverses')
+    guichet_op_vault_type = self._maybeNewContent(op_vault_type, 'guichet')
+    caveau_vault_type = self._maybeNewContent(site_vault_type, 'caveau')
+    auxiliaire_vault_type = self._maybeNewContent(caveau_vault_type, 'auxiliaire')
+    self._maybeNewContent(auxiliaire_vault_type, 'auxiliaire_vault_type')
+    self._maybeNewContent(auxiliaire_vault_type, 'encaisse_des_devises')
+    externe = self._maybeNewContent(auxiliaire_vault_type, 'encaisse_des_externes')
+    self._maybeNewContent(externe, 'transit')
+    self._maybeNewContent(caveau_vault_type, 'reserve')
+    serre = self._maybeNewContent(caveau_vault_type, 'serre')
+    self._maybeNewContent(serre, 'transit')
+    self._maybeNewContent(serre, 'retire')
+    salle_tri = self._maybeNewContent(surface_vault_type, 'salle_tri')
       
     if not no_site:
       destination_site_list = [x.getId() for x in created_site_list]
@@ -636,12 +643,12 @@ class TestERP5BankingMixin(ERP5TypeTestCase):
         # create bank structure for each agency
         site = c.getId()
         # surface
-        surface = c.newContent(id='surface', portal_type='Category', codification='',  vault_type='site/surface')
-        caisse_courante = surface.newContent(id='caisse_courante', portal_type='Category', codification='',  vault_type='site/surface/caisse_courante')
-        caisse_courante.newContent(id='encaisse_des_billets_et_monnaies', portal_type='Category', codification='',  vault_type='site/surface/caisse_courante')
-        caisse_courante.newContent(id='billets_mutiles', portal_type='Category', codification='',  vault_type='site/surface/caisse_courante')
-        caisse_courante.newContent(id='billets_macules', portal_type='Category', codification='',  vault_type='site/surface/caisse_courante')
-        encaisse_des_devises = caisse_courante.newContent(id='encaisse_des_devises', portal_type='Category', codification='',  vault_type='site/surface/caisse_courante/encaisse_des_devises')
+        surface = self._maybeNewContent(c, id='surface', portal_type='Category', codification='',  vault_type='site/surface')
+        caisse_courante = self._maybeNewContent(surface, id='caisse_courante', portal_type='Category', codification='',  vault_type='site/surface/caisse_courante')
+        self._maybeNewContent(caisse_courante, id='encaisse_des_billets_et_monnaies', portal_type='Category', codification='',  vault_type='site/surface/caisse_courante')
+        self._maybeNewContent(caisse_courante, id='billets_mutiles', portal_type='Category', codification='',  vault_type='site/surface/caisse_courante')
+        self._maybeNewContent(caisse_courante, id='billets_macules', portal_type='Category', codification='',  vault_type='site/surface/caisse_courante')
+        encaisse_des_devises = self._maybeNewContent(caisse_courante, id='encaisse_des_devises', portal_type='Category', codification='',  vault_type='site/surface/caisse_courante/encaisse_des_devises')
         # create counter for surface
         for s in ['banque_interne', 'gros_versement', 'gros_paiement']:
           vault_codification = c.getCodification()
@@ -651,61 +658,61 @@ class TestERP5BankingMixin(ERP5TypeTestCase):
             vault_codification += 'GV'
           elif s == 'gros_paiement':
             vault_codification += 'GP'
-          s = surface.newContent(id='%s' % (s, ), portal_type='Category', codification=vault_codification,  vault_type='site/surface/%s' % (s, ))
+          s = self._maybeNewContent(surface, id='%s' % (s, ), portal_type='Category', codification=vault_codification,  vault_type='site/surface/%s' % (s, ))
           for ss in ['guichet_1', 'guichet_2']:
             final_vault_codification = vault_codification + ss[-1]
-            ss =  s.newContent(id='%s' % (ss, ), portal_type='Category', codification=final_vault_codification,  vault_type='site/surface/%s/guichet' % (s.getId(), ))
+            ss =  self._maybeNewContent(s, id='%s' % (ss, ), portal_type='Category', codification=final_vault_codification,  vault_type='site/surface/%s/guichet' % (s.getId(), ))
             for sss in ['encaisse_des_billets_et_monnaies']:
-              sss =  ss.newContent(id='%s' % (sss, ), portal_type='Category', codification='',  vault_type='site/surface/%s/guichet' % (s.getId(), ))
+              sss =  self._maybeNewContent(ss, id='%s' % (sss, ), portal_type='Category', codification='',  vault_type='site/surface/%s/guichet' % (s.getId(), ))
               for ssss in ['entrante', 'sortante']:
-                sss.newContent(id='%s' % (ssss, ), portal_type='Category', codification='',  vault_type='site/surface/%s/guichet' % (s.getId(), ))
+                self._maybeNewContent(sss, id='%s' % (ssss, ), portal_type='Category', codification='',  vault_type='site/surface/%s/guichet' % (s.getId(), ))
             for sss in ['encaisse_des_devises']:
-              sss =  ss.newContent(id='%s' % (sss, ), portal_type='Category', codification='',  vault_type='site/surface/%s/guichet' % (s.getId(), ))
+              sss =  self._maybeNewContent(ss, id='%s' % (sss, ), portal_type='Category', codification='',  vault_type='site/surface/%s/guichet' % (s.getId(), ))
               for currency in ['usd']:
-                currency_cat = sss.newContent(id='%s' % (currency, ), portal_type='Category', codification='',  vault_type='site/surface/%s' % (ss.getId(), ))
+                currency_cat = self._maybeNewContent(sss, id='%s' % (currency, ), portal_type='Category', codification='',  vault_type='site/surface/%s' % (ss.getId(), ))
                 for ssss in ['entrante', 'sortante']:
-                  currency_cat.newContent(id='%s' % (ssss, ), portal_type='Category', codification='',  vault_type='site/surface/%s/guichet' % (s.getId(), ))
+                  self._maybeNewContent(currency_cat, id='%s' % (ssss, ), portal_type='Category', codification='',  vault_type='site/surface/%s/guichet' % (s.getId(), ))
         # create sort room
-        salle_tri = surface.newContent(id='salle_tri', portal_type='Category', codification='',  vault_type='site/surface/salle_tri')
+        salle_tri = self._maybeNewContent(surface, id='salle_tri', portal_type='Category', codification='',  vault_type='site/surface/salle_tri')
         for ss in ['encaisse_des_billets_et_monnaies', 'encaisse_des_billets_recus_pour_ventilation', 'encaisse_des_differences', 'encaisse_des_externes']:
-          ss =  salle_tri.newContent(id='%s' % (ss, ), portal_type='Category', codification='',  vault_type='site/surface/salle_tri')
+          ss =  self._maybeNewContent(salle_tri, id='%s' % (ss, ), portal_type='Category', codification='',  vault_type='site/surface/salle_tri')
           if 'ventilation' in ss.getId():
             for country in destination_site_list:
               if country[0] != c.getCodification()[0]:
-                ss.newContent(id='%s' % (country, ), portal_type='Category', codification='',  vault_type='site/caveau/%s' % (s.getId(), ))
+                self._maybeNewContent(ss, id='%s' % (country, ), portal_type='Category', codification='',  vault_type='site/caveau/%s' % (s.getId(), ))
         # caveau
-        caveau =  c.newContent(id='caveau', portal_type='Category', codification='',  vault_type='site/caveau')
+        caveau =  self._maybeNewContent(c, id='caveau', portal_type='Category', codification='',  vault_type='site/caveau')
         for s in ['auxiliaire', 'reserve', 'serre']:
-          s = caveau.newContent(id='%s' % (s, ), portal_type='Category', codification='',  vault_type='site/caveau/%s' % (s, ))
+          s = self._maybeNewContent(caveau, id='%s' % (s, ), portal_type='Category', codification='',  vault_type='site/caveau/%s' % (s, ))
           if s.getId() == 'serre':
             for ss in ['encaisse_des_billets_neufs_non_emis', 'encaisse_des_billets_retires_de_la_circulation', 'encaisse_des_billets_detruits', 'encaisse_des_billets_neufs_non_emis_en_transit_allant_a']:
-              ss =  s.newContent(id='%s' % (ss, ), portal_type='Category', codification='',  vault_type='site/caveau/%s' % (s.getId(), ))
+              ss =  self._maybeNewContent(s, id='%s' % (ss, ), portal_type='Category', codification='',  vault_type='site/caveau/%s' % (s.getId(), ))
               if 'transit' in ss.getId():
                 for country in destination_site_list:
                   if country[0] != c.getCodification()[0]:
-                    ss.newContent(id='%s' % (country, ), portal_type='Category', codification='',  vault_type='site/caveau/%s' % (s.getId(), ))
+                    self._maybeNewContent(ss, id='%s' % (country, ), portal_type='Category', codification='',  vault_type='site/caveau/%s' % (s.getId(), ))
 
           else:
             for ss in ['encaisse_des_billets_et_monnaies', 'encaisse_des_externes',
                        'encaisse_des_billets_recus_pour_ventilation', 'encaisse_des_devises']:
-              ss =  s.newContent(id='%s' % (ss, ), portal_type='Category', codification='',  vault_type='site/caveau/%s' % (s.getId(), ))
+              ss =  self._maybeNewContent(s, id='%s' % (ss, ), portal_type='Category', codification='',  vault_type='site/caveau/%s' % (s.getId(), ))
               if 'ventilation' in ss.getId():
                 for country in destination_site_list:
                   if country[0] != c.getCodification()[0]:
-                    ss.newContent(id='%s' % (country, ), portal_type='Category', codification='',  vault_type='site/caveau/%s' % (s.getId(), ))
+                    self._maybeNewContent(ss, id='%s' % (country, ), portal_type='Category', codification='',  vault_type='site/caveau/%s' % (s.getId(), ))
               if 'devises' in ss.getId():
                 for currency in ['eur', 'usd']:
-                  ss.newContent(id='%s' % (currency, ), portal_type='Category', codification='',  vault_type='site/caveau/%s' % (ss.getId(), ))
+                  self._maybeNewContent(ss, id='%s' % (currency, ), portal_type='Category', codification='',  vault_type='site/caveau/%s' % (ss.getId(), ))
               if 'encaisse_des_externes' in ss.getId():
-                ss.newContent(id='transit', portal_type='Category', codification='',  vault_type='site/caveau/%s' % (s.getId(), ))
+                self._maybeNewContent(ss, id='transit', portal_type='Category', codification='',  vault_type='site/caveau/%s' % (s.getId(), ))
               #if ss.getId()=='encaisse_des_devises':
               #  for
             if s.getId() == 'auxiliaire':
               for ss in ['encaisse_des_billets_a_ventiler_et_a_detruire', 'encaisse_des_billets_ventiles_et_detruits', 'billets_detenus_par_des_tiers', 'encaisse_des_billets_recus_pour_ventilation_venant_de']:
-                s.newContent(id='%s' % (ss, ), portal_type='Category', codification='',  vault_type='site/caveau/%s' % (s.getId(), ))
+                self._maybeNewContent(s, id='%s' % (ss, ), portal_type='Category', codification='',  vault_type='site/caveau/%s' % (s.getId(), ))
         # Create forreing currency entries in encaisse_des_devises.
         for currency in ['usd', ]:
-          caisse_courante.encaisse_des_devises.newContent(id=currency, portal_type='Category', codification='', vault_type='site/surface/caisse_courante/encaisse_des_devises')
+          self._maybeNewContent(caisse_courante.encaisse_des_devises, id=currency, portal_type='Category', codification='', vault_type='site/surface/caisse_courante/encaisse_des_devises')
 
     return created_site_list