diff --git a/src/knot/nameserver/update.c b/src/knot/nameserver/update.c
index cfc82752f39c44fdb029da0d09d4247f7300447c..f29a34501842f192d6c0896605873ff688d11dc5 100644
--- a/src/knot/nameserver/update.c
+++ b/src/knot/nameserver/update.c
@@ -198,13 +198,14 @@ static int knot_ns_process_update(const knot_pkt_t *query,
 	                                   knot_changesets_get_last(chgs),
 	                                   rcode, new_serial);
 	if (ret != KNOT_EOK) {
-		dbg_ns("Failed to apply UPDATE to the zone copy or no update"
-		       " made: %s\n", (ret < 0) ? knot_strerror(ret)
-		                                : "No change made.");
 		return ret;
 	}
 	
-	return xfrin_apply_changesets(old_zone, chgs, new_contents);
+	const bool change_made =
+		knot_changeset_is_empty(knot_changesets_get_last(chgs));
+	return change_made ? 
+	       xfrin_apply_changesets(old_zone, chgs, new_contents) :
+	       KNOT_EOK;
 }
 
 static int replan_zone_sign_after_ddns(zone_t *zone, uint32_t refresh_at)
@@ -280,14 +281,15 @@ static int zones_process_update_auth(struct query_data *qdata)
 	ret = knot_ns_process_update(qdata->query, zone, &new_contents,
 	                             chgsets, &qdata->rcode, new_serial);
 	if (ret != KNOT_EOK) {
-		if (ret > 0) {
-			log_zone_notice("%s: No change to zone made.\n", msg);
-			qdata->rcode = KNOT_RCODE_NOERROR;
-		}
-
+		return ret;
+	}
+	
+	if (knot_changeset_is_empty(knot_changesets_get_last(chgsets))) {
+		log_zone_notice("%s: No change to zone made.\n", msg);
+		qdata->rcode = KNOT_RCODE_NOERROR;
 		knot_changesets_free(&chgsets);
 		free(msg);
-		return (ret < 0) ? ret : KNOT_EOK;
+		return KNOT_EOK;
 	}
 
 	knot_changesets_t *sec_chs = NULL;
diff --git a/src/knot/updates/xfr-in.c b/src/knot/updates/xfr-in.c
index c050d97324ac0f05a97960de169b00a4f3060733..f1f86a665d1703d9aa93d68a6c98428edd76965d 100644
--- a/src/knot/updates/xfr-in.c
+++ b/src/knot/updates/xfr-in.c
@@ -1520,7 +1520,7 @@ int xfrin_apply_changesets(zone_t *zone,
 	    || new_contents == NULL) {
 		return KNOT_EINVAL;
 	}
-
+	
 	knot_zone_contents_t *old_contents = zone->contents;
 	if (!old_contents) {
 		dbg_xfrin("Cannot apply changesets to empty zone.\n");