--- Application.php.old	2016-07-06 17:17:10.000000000 +0200
+++ Application.php	2016-08-02 19:46:42.125586565 +0200
@@ -878,6 +878,49 @@
                     }
                 } catch (Horde_Icalendar_Exception $e) {
                 }
+                /* Clear all attributes than can be synced via CardDAV.
+                   This allows for a CardDAV-client to actually delete values
+                   and not only re-set them. */
+                $carddavfields=array(
+                    'notes',
+                    'website',
+                    'logo',
+                    'logotype',
+                    'company',
+                    'role',
+                    'title',
+                    'pager',
+                    'photo',
+                    'phototype',
+                    'homeStreet',
+                    'homePOBox',
+                    'homeCity',
+                    'homeProvince',
+                    'homePostalCode',
+                    'homeCountry',
+                    'workStreet',
+                    'workPOBox',
+                    'workCity',
+                    'workProvince',
+                    'workPostalCode',
+                    'workCountry',
+                    'firstname',
+                    'lastname',
+                    'middlenames',
+                    'email',
+                    'homeEmail',
+                    'workEmail',
+                    'birthday',
+                    'homePhone',
+                    'workPhone',
+                    'cellPhone',
+                    'fax',
+                    'pager',
+                    'spouse',
+                );
+                foreach ($carddavfields as $attribute) {
+                    $existing_contact->setValue($attribute, null);
+                }
                 foreach ($contact as $attribute => $value) {
                     if ($attribute != '__key') {
                         $existing_contact->setValue($attribute, $value);