       ""])))
 
 (defn ordensgruppe-typ [ordensgruppe]
-  (cond
-    (str/includes? ordensgruppe "Konvent") "Konvent"
-    (str/includes? ordensgruppe "Aufbaukollegium") "Aufbaukollegium"
-    (str/includes? ordensgruppe "Kollegium") "Kollegium"))
+  (and ordensgruppe
+    (cond
+      (str/includes? ordensgruppe "Konvent") "Konvent"
+      (str/includes? ordensgruppe "Aufbaukollegium") "Aufbaukollegium"
+      (str/includes? ordensgruppe "Kollegium") "Kollegium")))
 
 (defn ordensgruppe-types-sql [ordensgruppe-types]
   (-> 

   (values (for [gemeinschaft älterengemeinschaften
                 :when (not (str/blank? gemeinschaft))]
             {:name gemeinschaft}))))
             

(defn format-sql [sql-map]
  (-> sql-map
   (update :values (fn [values] (map #(assoc % :veraendert "now", :erstellt "now") values)))
   on-conflict do-nothing ; do-update-set
   (sql/format {:inline true, :checking :strict})
   (first)
   (str ";")))

(print
  (let [persons (map parse-person old)]
      (str "BEGIN;\n"
        (str/join "\n"
          (concat
            (map format-sql
              (let [ordensgruppen (into #{} (map #(select-keys % #{:Ordensgruppe :Älterengemeinschaft})) persons)]
                [(älterengemeinschaften-sql (set (map :Älterengemeinschaft ordensgruppen)))
                 (ordensgruppe-types-sql (disj (set (map ordensgruppe-typ (map :Ordensgruppe ordensgruppen))) nil))
                 (ordensgruppen-sql ordensgruppen)]))
            (map person-sql persons)))
        "\nCOMMIT;")))
      (update :todestag parse-date)
      (update :nrw #(Boolean/parseBoolean %))
      (update :nicht_abdrucken #(Boolean/parseBoolean %))
      (update :stand #(get stand-map % nil))))

(defmulti format-value type)
(defmethod format-value String [value]
  (str "'" value "'"))
(defmethod format-value Boolean [value] value)
(defmethod format-value nil [_] "NULL")

(defn adress-sql [address old-id]
  (let [fields (keys address)
