diff --git a/include/class_ldap.inc b/include/class_ldap.inc
index 33ddbdbb9bf808e5b77144105bda403c9d85ef61..9d3a9aaf66f756ebcf58f9eeb0c264376fef19e6 100644
--- a/include/class_ldap.inc
+++ b/include/class_ldap.inc
@@ -594,29 +594,6 @@ class LDAP
     }
   }
 
-  /*!
-   * \brief Rename the dn
-   *
-   * \param string $attrs
-   *
-   * \param string $dn The DN
-   */
-  function rename($attrs, $dn = "")
-  {
-    if ($this->hascon) {
-      if ($this->reconnect) $this->connect();
-      if ($dn == "")
-        $dn = $this->basedn;
-
-      $r = @ldap_mod_replace($this->cid, LDAP::fix($dn), $attrs);
-      $this->error = @ldap_error($this->cid);
-      return $r;
-    } else {
-      $this->error = "Could not connect to LDAP server";
-      return "";
-    }
-  }
-
   /*!
    * \brief Remove directory
    *
diff --git a/include/class_plugin.inc b/include/class_plugin.inc
index 6149b7da0ed41f6472acb55e41a99625a70f96f6..41269319eeca810bda5407d4a88dd82092b270a6 100644
--- a/include/class_plugin.inc
+++ b/include/class_plugin.inc
@@ -1039,152 +1039,6 @@ class plugin
     return 'none';
   }
 
-  /*!
-   * \brief ldap rebind
-   *
-   * \param string $ldap
-   *
-   * \param string $referral
-   */
-  function rebind($ldap, $referral)
-  {
-    $credentials = LDAP::get_credentials($referral, $this->config->current['REFERRAL']);
-    if (ldap_bind($ldap, $credentials['ADMIN'], $this->config->get_credentials($credentials['PASSWORD']))) {
-      $this->error      = "Success";
-      $this->hascon     = TRUE;
-      $this->reconnect  = TRUE;
-      return 0;
-    } else {
-      $this->error = "Could not bind to " . $credentials['ADMIN'];
-      return NULL;
-    }
-  }
-
-  /*
-   * \brief Recursively copy ldap object
-   *
-   * \param string $src_dn The DN source
-   *
-   * \param string $dst_dn The DN destination
-   */
-  function _copy($src_dn, $dst_dn)
-  {
-    $ldap = $this->config->get_ldap_link();
-    $ldap->cat($src_dn);
-    $attrs = $ldap->fetch();
-
-    /* Grummble. This really sucks. PHP ldap doesn't support rdn stuff. */
-    $ds = ldap_connect($this->config->current['SERVER']);
-    ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
-    if (function_exists("ldap_set_rebind_proc") && isset($this->config->current['REFERRAL'])) {
-      ldap_set_rebind_proc($ds, array(&$this, "rebind"));
-    }
-
-    $pwd  = $this->config->get_credentials($this->config->current['ADMINPASSWORD']);
-    ldap_bind($ds, $this->config->current['ADMINDN'], $pwd);
-
-    /* Fill data from LDAP */
-    $new = array();
-    if ($sr = ldap_read($ds, LDAP::fix($src_dn), "objectClass=*")) {
-      if ($ei = ldap_first_entry($ds, $sr)) {
-        foreach (array_keys($attrs) as $attr) {
-          if ($info = @ldap_get_values_len($ds, $ei, $attr)) {
-            for ($i = 0; $i < $info['count']; $i++) {
-              if ($info['count'] == 1) {
-                $new[$attr] = $info[$i];
-              } else {
-                $new[$attr][] = $info[$i];
-              }
-            }
-          }
-        }
-      }
-    }
-
-    /* close connexion */
-    ldap_unbind($ds);
-
-    /* Adapt naming attribute */
-    $dst_name       = preg_replace("/^([^=]+)=.*$/", "\\1", $dst_dn);
-    $dst_val        = preg_replace("/^[^=]+=([^,+]+).*,.*$/", "\\1", $dst_dn);
-    $new[$dst_name] = LDAP::fix($dst_val);
-
-    /* Check if this is a department.
-     * If it is a dep. && there is a , override in his ou
-     *  change \2C to , again, else this entry can't be saved ...
-     */
-    if (isset($new['ou']) && preg_match("/\\,/", $new['ou'])) {
-      $new['ou'] = str_replace("\\\\,", ",", $new['ou']);
-    }
-
-    /* Save copy */
-    $ldap->connect();
-    $ldap->cd($this->config->current['BASE']);
-
-    $ldap->create_missing_trees(preg_replace('/^[^,]+,/', '', $dst_dn));
-
-    /* FAIvariable=.../..., cn=..
-        could not be saved, because the attribute FAIvariable was different to
-        the dn FAIvariable=..., cn=... */
-
-    if (!is_array($new['objectClass'])) {
-      $new['objectClass'] = array($new['objectClass']);
-    }
-
-    if (in_array_ics("FAIdebconfInfo", $new['objectClass'])) {
-      $new['FAIvariable'] = $ldap->fix($new['FAIvariable']);
-    }
-    $ldap->cd($dst_dn);
-    $ldap->add($new);
-
-    if (!$ldap->success()) {
-      trigger_error('Trying to save '.$dst_dn.' failed: '.$ldap->get_error(), E_USER_WARNING);
-      return FALSE;
-    }
-    return TRUE;
-  }
-
-  /*
-   * \brief Copy ldap object.
-   * This is a workaround function
-   *
-   * \param string $src_dn The DN source
-   *
-   * \param string $dst_dn The DN destination
-   */
-  function copy($src_dn, $dst_dn)
-  {
-    /* Rename dn in possible object groups */
-    $ldap = $this->config->get_ldap_link();
-
-    $ldap->cat($dst_dn);
-    $attrs = $ldap->fetch();
-    if (count($attrs)) {
-      trigger_error("Trying to overwrite ".LDAP::fix($dst_dn).", which already exists.",
-          E_USER_WARNING);
-      return FALSE;
-    }
-
-    $ldap->cat($src_dn);
-    $attrs = $ldap->fetch();
-    if (!count($attrs)) {
-      trigger_error("Trying to move ".LDAP::fix($src_dn).", which does not seem to exist.",
-          E_USER_WARNING);
-      return FALSE;
-    }
-
-    $ldap->cd($src_dn);
-    $ldap->search("objectClass=*", array("dn"));
-    $res = TRUE;
-    while ($attrs = $ldap->fetch()) {
-      $src = $attrs['dn'];
-      $dst = preg_replace("/".preg_quote($src_dn, '/')."$/", $dst_dn, $attrs['dn']);
-      $res = $res && $this->_copy($src, $dst);
-    }
-    return $res;
-  }
-
-
   /*!
    * \brief  Rename/Move a given src_dn to the given dest_dn
    *
@@ -1202,12 +1056,12 @@ class plugin
     /* Try to move the source entry to the destination position */
     $ldap = $this->config->get_ldap_link();
     $ldap->cd($this->config->current['BASE']);
-    $ldap->create_missing_trees(preg_replace("/^[^,]+,/", "", $dst_dn));
+    $ldap->create_missing_trees(preg_replace("/^[^,]+,/", '', $dst_dn));
     if (!$ldap->rename_dn($src_dn, $dst_dn)) {
-      new log("debug", "Ldap Protocol v3 implementation error, ldap_rename failed, falling back to manual copy.",
+      new log('debug', 'Ldap Protocol v3 implementation error, ldap_rename failed.',
               "FROM: $src_dn  -- TO: $dst_dn", array(), $ldap->get_error());
       @DEBUG(DEBUG_LDAP, __LINE__, __FUNCTION__, __FILE__, "Rename failed FROM: $src_dn  -- TO:  $dst_dn",
-          "Ldap Protocol v3 implementation error, falling back to manual method. Error:".$ldap->get_error());
+          'Ldap Protocol v3 implementation error. Error:'.$ldap->get_error());
       return FALSE;
     }
 
@@ -1229,22 +1083,9 @@ class plugin
       return TRUE;
     }
 
-    /* Try to move with ldap routines, if this was not successfull
-        fall back to the old style copy & remove method
-     */
+    /* Try to move with ldap routines */
     if (!$this->rename($src_dn, $dst_dn)) {
-      /* Copy source to destination */
-      if (!$this->copy($src_dn, $dst_dn)) {
-        return FALSE;
-      }
-
-      /* Delete source */
-      $ldap = $this->config->get_ldap_link();
-      $ldap->rmdir_recursive($src_dn);
-      if (!$ldap->success()) {
-        trigger_error('Trying to delete '.$src_dn.' failed: '.$ldap->get_error(), E_USER_WARNING);
-        return FALSE;
-      }
+      return FALSE;
     }
 
     /* Get list of users,groups and roles within this tree,