diff --git a/core-api/src/main/java/org/apache/directory/server/core/api/partition/PartitionNexus.java b/core-api/src/main/java/org/apache/directory/server/core/api/partition/PartitionNexus.java
index 9ce96c3..f648618 100644
--- a/core-api/src/main/java/org/apache/directory/server/core/api/partition/PartitionNexus.java
+++ b/core-api/src/main/java/org/apache/directory/server/core/api/partition/PartitionNexus.java
@@ -83,7 +83,7 @@
      * @param partitionDn the partition Dn
      * @throws Exception If the removal can't be done
      */
-    void removeContextPartition( Dn partitionDn ) throws LdapException;
+    void removeContextPartition( String partitionDn ) throws LdapException;
 
 
     /**
diff --git a/core-shared/src/main/java/org/apache/directory/server/core/shared/partition/DefaultPartitionNexus.java b/core-shared/src/main/java/org/apache/directory/server/core/shared/partition/DefaultPartitionNexus.java
index 6e13bc4..5b1ee92 100644
--- a/core-shared/src/main/java/org/apache/directory/server/core/shared/partition/DefaultPartitionNexus.java
+++ b/core-shared/src/main/java/org/apache/directory/server/core/shared/partition/DefaultPartitionNexus.java
@@ -284,7 +284,7 @@
         {
             try
             {
-                removeContextPartition( directoryService.getDnFactory().create( suffix ) );
+                removeContextPartition( suffix );
             }
             catch ( Exception e )
             {
@@ -840,18 +840,15 @@
     /**
      * {@inheritDoc}
      */
-    public synchronized void removeContextPartition( Dn partitionDn )
+    public synchronized void removeContextPartition( String partitionDn )
         throws LdapException
     {
-        // Get the Partition name. It's a Dn.
-        String key = partitionDn.getNormName();
-
         // Retrieve this partition from the aprtition's table
-        Partition partition = partitions.get( key );
+        Partition partition = partitions.get( partitionDn );
 
         if ( partition == null )
         {
-            String msg = I18n.err( I18n.ERR_34, key );
+            String msg = I18n.err( I18n.ERR_34, partitionDn );
             LOG.error( msg );
             throw new LdapNoSuchObjectException( msg );
         }
@@ -870,7 +867,7 @@
             }
             else
             {
-                String msg = I18n.err( I18n.ERR_35, key );
+                String msg = I18n.err( I18n.ERR_35, partitionDn );
                 LOG.error( msg );
                 throw new LdapNoSuchObjectException( msg );
             }
@@ -882,7 +879,7 @@
             partitionLookupTree.remove( partition.getSuffixDn() );
         }
 
-        partitions.remove( key );
+        partitions.remove( partitionDn );
 
         try
         {
diff --git a/core/src/main/java/org/apache/directory/server/core/DefaultDirectoryService.java b/core/src/main/java/org/apache/directory/server/core/DefaultDirectoryService.java
index 8fbad4a..bbe7d78 100644
--- a/core/src/main/java/org/apache/directory/server/core/DefaultDirectoryService.java
+++ b/core/src/main/java/org/apache/directory/server/core/DefaultDirectoryService.java
@@ -910,7 +910,7 @@
             // can be null when called before starting up
             if ( partitionNexus != null )
             {
-                partitionNexus.removeContextPartition( partition.getSuffixDn() );
+                partitionNexus.removeContextPartition( partition.getSuffixDn().getNormName() );
             }
         }
         catch ( LdapException le )
