       ;;    maximum number of retries for an event. After the retries, the delete event will be
       ;;    considered as a success.
       (= status 404)
-      (if (>= retry-count (count (queue-config/rabbit-mq-ttls)))
+      (if (< retry-count num-retries-delete-not-found)
+        (info (format (str "Received a response with status code [404] and the following "
+                           "response body when deleting the virtual granule [%s] : [%s]. "
+                           "The delete request will be retried.")
+                      granule-ur (pr-str body)))
         (info (format (str "The number of retries has exceeded the maximum retry count."
-                           "The delete event for the virtual granule [%s] will be ignored") granule-ur))
-        (errors/internal-error!
-          (format (str "Received a response with status code [404] and the following response body "
-                       "when deleting the virtual granule [%s] : [%s]. The delete request will be "
-                       "retried.")
-                  granule-ur (pr-str body))))
+                           "The delete event for the virtual granule [%s] will be ignored")
+                      granule-ur)))
 
       ;; Conflict (status code 409)
       ;; This would occurs if a delete event with lower revision-id is consumed after an event with

      (errors/internal-error!
        (format (str "Received unexpected status code [%s] and the following response when "
                     "deleting the virtual granule [%s] : [%s]")
                status granule-ur (pr-str response))))))

(defn-timed apply-source-granule-delete-event
  "Applies a source granule delete event to the virtual granules"
  [context {:keys [provider-id revision-id granule-ur entry-title retry-count]}]
  (let [vp-config (svm/source-to-virtual-product-mapping
                    [(svm/provider-alias->provider-id provider-id) entry-title])]
    (doseq [virtual-coll (:virtual-collections vp-config)]
      (let [new-granule-ur (svm/generate-granule-ur provider-id
                                                    (:short-name vp-config)
                                                    (:short-name virtual-coll)
                                                    granule-ur)
            resp (ingest/delete-concept context {:provider-id provider-id
                                                 :concept-type :granule
                                                 :native-id new-granule-ur}
                                        (build-ingest-headers revision-id) true)]
        (handle-delete-response resp new-granule-ur retry-count)))))

(defmethod handle-ingest-event :concept-delete
  [context event]

           :entry-title entry-title)))

(defn- handle-delete-response
  "Handle response received from ingest service to a delete request. Returns true if the source
  granule deletion event need to be retried. Status codes which do not fall between 200 and 299
  or not equal to 404 or 409 will cause an exception which in turn causes the corresponding queue
  event to be put back in the queue to be retried indefinitely. Status code 404 will be retried
  twice. Other status codes are treated as success."
  [response granule-ur retry-count]
  (let [{:keys [status body]} response
        retry-count (or retry-count 0)
        needs-retry (when (and (= status 404)
                               (< retry-count num-retries-delete-not-found))
                      true)]
    (cond
      (<= 200 status 299)
      (info (format "Deleted virtual granule [%s] with the following response: [%s]"
