diff --git a/assets/themes/bag_import/bag.json b/assets/themes/bag_import/bag.json
new file mode 100644
index 000000000..c4934eb7d
--- /dev/null
+++ b/assets/themes/bag_import/bag.json
@@ -0,0 +1,317 @@
+{
+  "id": "bag",
+  "title": {
+    "nl": "BAG import helper",
+    "en": "BAG import helper"
+  },
+  "shortDescription": {
+    "nl": "BAG import helper tool",
+    "en": "BAG import helper tool"
+  },
+  "description": {
+    "nl": "Dit thema helpt het importeren van BAG data",
+    "en": "This theme helps with importing data from BAG"
+  },
+  "credits": "Wouter van der Wal",
+  "icon": "./assets/themes/bag_import/logo.svg",
+  "startLat": 53.1726,
+  "startLon": 7.04545,
+  "startZoom": 9,
+  "layers": [
+    {
+      "id": "osm:buildings",
+      "name": "OSM Buildings",
+      "title": "OSM Building",
+      "description": "Layer showing buildings that are in OpenStreetMap",
+      "source": {
+        "osmTags": "building~*",
+        "maxCacheAge": 0
+      },
+      "minzoom": 19,
+      "calculatedTags": [
+        "_surface:strict:=feat.get('_surface')"
+      ],
+      "mapRendering": [
+        {
+          "width": {
+            "render": "2",
+            "mappings": [
+              {
+                "if": "fixme~*",
+                "then": "5"
+              }
+            ]
+          },
+          "color": {
+            "render": "#00c",
+            "mappings": [
+              {
+                "if": "fixme~*",
+                "then": "#ff00ff"
+              },
+              {
+                "if": "building=house",
+                "then": "#a00"
+              },
+              {
+                "if": "building=shed",
+                "then": "#563e02"
+              },
+              {
+                "if": {
+                  "or": [
+                    "building=garage",
+                    "building=garages"
+                  ]
+                },
+                "then": "#f9bfbb"
+              },
+              {
+                "if": "building=yes",
+                "then": "#0774f2"
+              }
+            ]
+          }
+        }
+      ],
+      "tagRenderings": [
+        {
+          "id": "Reference",
+          "render": {
+            "en": "The reference in BAG is {ref:bag} "
+          },
+          "mappings": [
+            {
+              "if": "ref:bag=",
+              "then": {
+                "en": "This building has no reference in the BAG"
+              }
+            }
+          ]
+        },
+        {
+          "id": "Building type",
+          "freeform": {
+            "key": "building",
+            "type": "string",
+            "addExtraTags": [
+              "construction="
+            ]
+          },
+          "render": "This building is a {building} ",
+          "question": "What kind of building is this?"
+        }
+      ]
+    },
+    {
+      "id": "osm:adresses",
+      "name": "OSM Adresses",
+      "title": "OSM Adress",
+      "description": "Layer showing adresses that are in OpenStreetMap",
+      "source": {
+        "osmTags": {
+          "and": [
+            "source=BAG",
+            "addr:city~*",
+            "addr:housenumber~*",
+            "addr:postcode~*",
+            "addr:street~*"
+          ]
+        },
+        "maxCacheAge": 0
+      },
+      "minzoom": 19,
+      "mapRendering": [
+        {
+          "label": {
+            "render": "
{addr:housenumber}
",
+            "condition": "addr:housenumber~*"
+          },
+          "location": [
+            "point",
+            "centroid"
+          ]
+        },
+        {
+          "width": {
+            "render": 1
+          }
+        }
+      ]
+    },
+    {
+      "id": "bag:pand",
+      "name": "BAG Buildings",
+      "title": "BAG Building",
+      "description": {
+        "en": "Buildings from BAG register"
+      },
+      "source": {
+        "geoJson": "https://service.pdok.nl/lv/bag/wfs/v2_0?request=GetFeature&service=WFS&version=2.0.0&outputFormat=application%2Fjson%3B%20subtype%3Dgeojson&typeName=bag%3Apand&bbox={x_min}%2C{y_min}%2C{x_max}%2C{y_max}%2CCRS84&srsName=EPSG%3A4326",
+        "geoJsonZoomLevel": 18,
+        "osmTags": "identificatie~*",
+        "maxCacheAge": 0
+      },
+      "minzoom": 19,
+      "calculatedTags": [
+        "_overlaps_with_buildings=feat.overlapWith('osm:buildings').filter(f => f.feat.properties.id.indexOf('-') < 0)",
+        "_overlaps_with=feat.get('_overlaps_with_buildings').find(f => f.overlap > 1 /* square meter */ )",
+        "_overlaps_with_properties=feat.get('_overlaps_with')?.feat?.properties",
+        "_overlap_percentage=Math.round(100 * (feat.get('_overlaps_with')?.overlap / feat.get('_overlaps_with_properties')['_surface:strict']))",
+        "_reverse_overlap_percentage=Math.round(100 * (feat.get('_overlaps_with')?.overlap / feat.get('_surface')))",
+        "_bag_obj:in_construction=feat.properties.status.startsWith('Bouwvergunning verleend') || feat.properties.status.startsWith('Bouw gestart')",
+        "_bag_obj:construction=(feat.properties.gebruiksdoel == 'woonfunctie') ? ((Number(feat.properties.aantal_verblijfsobjecten) == 1) ? 'house' : 'apartments') : 'yes'",
+        "_bag_obj:building=(feat.properties.status.startsWith('Bouwvergunning verleend') || feat.properties.status.startsWith('Bouw gestart')) ? 'construction' : feat.properties['_bag_obj:construction']",
+        "_bag_obj:ref:bag=Number(feat.properties.identificatie)",
+        "_bag_obj:source:date=new Date().toISOString().split('T')[0]",
+        "_bag_obj:start_date=feat.properties.bouwjaar",
+        "_osm_obj:id=feat.get('_overlaps_with_properties')?.id",
+        "_osm_obj:building=feat.get('_overlaps_with_properties')?.building",
+        "_imported_osm_object_found:=Number(feat.properties.identificatie)==Number(feat.get('_overlaps_with_properties')['ref:bag'])"
+      ],
+      "mapRendering": [
+        {
+          "width": {
+            "render": 5,
+            "mappings": [
+              {
+                "if": "_imported_osm_object_found=true",
+                "then": "1"
+              }
+            ]
+          },
+          "color": {
+            "render": "#00a",
+            "mappings": [
+              {
+                "if": "_imported_osm_object_found=true",
+                "then": "#0f0"
+              }
+            ]
+          }
+        }
+      ],
+      "tagRenderings": [
+        {
+          "id": "Import button",
+          "render": "{import_way_button(osm:buildings, building=$_bag_obj:building; ref:bag=$_bag_obj:ref:bag; source=BAG; source:date=$_bag_obj:source:date; start_date=$_bag_obj:start_date, Upload this building to OpenStreetMap)}",
+          "mappings": [
+            {
+              "if": "_overlaps_with!=",
+              "then": "{conflate_button(osm:buildings, building=$_bag_obj:building; ref:bag=$_bag_obj:ref:bag; source=BAG; source:date=$_bag_obj:source:date; start_date=$_bag_obj:start_date, Replace the geometry in OpenStreetMap, , _osm_obj:id)}"
+            },
+            {
+              "if": "_bag_obj:in_construction=true",
+              "then": "{import_way_button(osm:buildings, building=$_bag_obj:building; construction=$_bag_obj:construction; ref:bag=$_bag_obj:ref:bag; source=BAG; source:date=$_bag_obj:source:date; start_date=$_bag_obj:start_date, Upload this building to OpenStreetMap)}"
+            }
+          ]
+        },
+        {
+          "id": "Reference",
+          "render": {
+            "en": "The reference in BAG is {_bag_obj:ref:bag} "
+          }
+        },
+        {
+          "id": "Build year",
+          "render": {
+            "en": "This building was built in {_bag_obj:start_date} "
+          },
+          "mappings": [
+            {
+              "if": "_bag_obj:in_construction=true",
+              "then": {
+                "en": "The building was started in {_bag_obj:start_date} "
+              }
+            }
+          ]
+        },
+        {
+          "id": "Building type",
+          "render": {
+            "en": "The building type is a {_bag_obj:building} "
+          },
+          "mappings": [
+            {
+              "if": "_bag_obj:in_construction=true",
+              "then": {
+                "en": "The building type will be a {_bag_obj:construction} "
+              }
+            }
+          ]
+        },
+        {
+          "id": "Overlapping building",
+          "render": "The overlapping 
osm:buildings  is a 
{_osm_obj:building}  and covers 
{_overlap_percentage}%  of the BAG building.
The BAG-building covers 
{_reverse_overlap_percentage}%  of the OSM building
BAG geometry: {minimap(21, id):height:10rem;border-radius:1rem;overflow:hidden}OSM geometry: {minimap(21,_osm_obj:id):height:10rem;border-radius:1rem;overflow:hidden} ",
+          "condition": "_overlaps_with!="
+        },
+        {
+          "id": "Building status",
+          "render": "The current building status is {status} "
+        },
+        {
+          "id": "Buidling function",
+          "render": "The current function of the building is {gebruiksdoel} "
+        }
+      ]
+    },
+    {
+      "id": "bag:verblijfsobject",
+      "name": "BAG Addresses",
+      "title": "BAG Address",
+      "description": "Address information from the BAG register",
+      "source": {
+        "geoJson": "https://service.pdok.nl/lv/bag/wfs/v2_0?request=GetFeature&service=WFS&version=2.0.0&outputFormat=application%2Fjson%3B%20subtype%3Dgeojson&typeName=bag%3Averblijfsobject&bbox={x_min}%2C{y_min}%2C{x_max}%2C{y_max}%2CCRS84&srsName=EPSG%3A4326",
+        "geoJsonZoomLevel": 19,
+        "osmTags": "identificatie~*",
+        "maxCacheAge": 0
+      },
+      "minzoom": 19,
+      "calculatedTags": [
+        "_closed_osm_addr:=feat.closest('osm:adresses').properties",
+        "_bag_obj:addr:housenumber=`${feat.properties.huisnummer}${feat.properties.huisletter}${(feat.properties.toevoeging != '') ? '-' : ''}${feat.properties.toevoeging}`",
+        "_bag_obj:ref:bag=Number(feat.properties.identificatie)",
+        "_bag_obj:source:date=new Date().toISOString().split('T')[0]",
+        "_osm_obj:addr:city:=feat.get('_closed_osm_addr')['addr:city']",
+        "_osm_obj:addr:housenumber:=feat.get('_closed_osm_addr')['addr:housenumber']",
+        "_osm_obj:addr:postcode:=feat.get('_closed_osm_addr')['addr:postcode']",
+        "_osm_obj:addr:street:=feat.get('_closed_osm_addr')['addr:street']",
+        "_imported_osm_object_found:=(feat.properties.woonplaats==feat.get('_closed_osm_addr')['addr:city'])&&(feat.get('_bag_obj:addr:housenumber')==feat.get('_closed_osm_addr')['addr:housenumber'])&&(feat.properties.postcode==feat.get('_closed_osm_addr')['addr:postcode'])&&(feat.properties.openbare_ruimte==feat.get('_closed_osm_addr')['addr:street'])"
+      ],
+      "mapRendering": [
+        {
+          "label": {
+            "render": "{_bag_obj:addr:housenumber}
",
+            "mappings": [
+              {
+                "if": "_imported_osm_object_found=true",
+                "then": "{_bag_obj:addr:housenumber}
"
+              }
+            ]
+          },
+          "location": [
+            "point",
+            "centroid"
+          ]
+        },
+        {
+          "width": {
+            "render": 1
+          }
+        }
+      ],
+      "tagRenderings": [
+        {
+          "id": "Import button",
+          "render": "{import_button(osm:adresses, addr:city=$woonplaats; addr:housenumber=$_bag_obj:addr:housenumber; addr:postcode=$postcode; addr:street=$openbare_ruimte; ref:bag=$_bag_obj:ref:bag; source=BAG; source:date=$_bag_obj:source:date, Upload this adress to OpenStreetMap)}",
+          "condition": "_imported_osm_object_found=false"
+        },
+        {
+          "id": "Address",
+          "render": "{openbare_ruimte} {_bag_obj:addr:housenumber}, {woonplaats} {postcode}"
+        }
+      ]
+    }
+  ],
+  "hideFromOverview": true
+}
diff --git a/assets/themes/bag_import/license_info.json b/assets/themes/bag_import/license_info.json
new file mode 100644
index 000000000..0feae26b3
--- /dev/null
+++ b/assets/themes/bag_import/license_info.json
@@ -0,0 +1,10 @@
+[
+  {
+    "path": "logo.svg",
+    "license": "CC0",
+    "authors": [
+      "Wouter van der Wal"
+    ],
+    "sources": []
+  }
+]
\ No newline at end of file
diff --git a/assets/themes/bag_import/logo.svg b/assets/themes/bag_import/logo.svg
new file mode 100644
index 000000000..5b84e63d9
--- /dev/null
+++ b/assets/themes/bag_import/logo.svg
@@ -0,0 +1,5 @@
+
+ 
+ 
+ 
+ 
diff --git a/assets/themes/mapcomplete-changes/mapcomplete-changes.json b/assets/themes/mapcomplete-changes/mapcomplete-changes.json
index 346c8baa8..52d6257bf 100644
--- a/assets/themes/mapcomplete-changes/mapcomplete-changes.json
+++ b/assets/themes/mapcomplete-changes/mapcomplete-changes.json
@@ -126,6 +126,10 @@
                 "if": "theme=artwork",
                 "then": "./assets/themes/artwork/artwork.svg"
               },
+              {
+                "if": "theme=bag",
+                "then": "./assets/themes/bag_import/logo.svg"
+              },
               {
                 "if": "theme=benches",
                 "then": "./assets/themes/benches/bench_poi.svg"
diff --git a/langs/themes/nl.json b/langs/themes/nl.json
index 8a872280f..6b438f5a3 100644
--- a/langs/themes/nl.json
+++ b/langs/themes/nl.json
@@ -11,6 +11,11 @@
         "description": "Een vrije kaart met standbeelden, bustes, graffiti en andere kunstwerken van over de hele wereld",
         "title": "Open kunstwerken-kaart"
     },
+    "bag": {
+        "description": "Dit thema helpt het importeren van BAG data",
+        "shortDescription": "BAG import helper tool",
+        "title": "BAG import helper"
+    },
     "benches": {
         "description": "Deze kaart toont alle zitbanken die zijn opgenomen in OpenStreetMap: individuele banken en banken bij bushaltes. Met een OpenStreetMap-account kan je informatie verbeteren en nieuwe zitbanken toevoegen.",
         "shortDescription": "Een kaart van zitbanken",