              :dayNightFlag {:name :day-night :type :day-night}
              :ECHOLastUpdate {:name :updated-since :type :date-range}
              :onlineOnly {:name :downloadable :type :boolean}
-             :ECHOCollectionID {:name :collection-concept-id :type :string}
-             :ECHOGranuleID {:name :concept-id :type :string}
+             :ECHOCollectionID {:name :collection-concept-id :type :collection-query :coll-tag :ECHOCollectionID}
+             :ECHOGranuleID {:name :concept-id :type :granule-concept-id}
              :ProducerGranuleID {:name :producer-gran-id :type :string}
              :sensorName {:name :sensor :type :string}
              :sourceName {:name :platform :type :string}

        condition (element->condition :collection (assoc element :tag coll-elem-name))]
    (qm/->CollectionQueryCondition condition)))

(defmethod element->condition :equator-crossing-date
  [concept-type element]
  (let [[start-date stop-date] (parse-date-range-element (cx/element-at-path element [:dateRange]))]

  "Validates the aql pattern string, throws service error if the string contains backslash
  followed by characters other than backslash, % or _"
  [pattern]
  (let [pattern (string/replace pattern "\\\\" "")
        invalid-chars (->> ;; Split on \
                           (string/split pattern (re-pattern "\\\\"))
                           ;; Drop everything before the first \
                           (drop 1)
                           ;; Get the first character following each \
