diff --git a/bom/openhab-core/pom.xml b/bom/openhab-core/pom.xml
index 0ab56b4fc..9f75e7c8b 100644
--- a/bom/openhab-core/pom.xml
+++ b/bom/openhab-core/pom.xml
@@ -532,12 +532,6 @@
${project.version}compile
-
- org.openhab.core.bundles
- org.openhab.core.storage.mapdb
- ${project.version}
- compile
-
diff --git a/bundles/org.openhab.core.storage.mapdb/.classpath b/bundles/org.openhab.core.storage.mapdb/.classpath
deleted file mode 100644
index 3721ade03..000000000
--- a/bundles/org.openhab.core.storage.mapdb/.classpath
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/bundles/org.openhab.core.storage.mapdb/.project b/bundles/org.openhab.core.storage.mapdb/.project
deleted file mode 100644
index 497cb5f13..000000000
--- a/bundles/org.openhab.core.storage.mapdb/.project
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
- org.openhab.core.storage.mapdb
-
-
-
-
-
- org.eclipse.jdt.core.javabuilder
-
-
-
-
- org.eclipse.m2e.core.maven2Builder
-
-
-
-
-
- org.eclipse.jdt.core.javanature
- org.eclipse.m2e.core.maven2Nature
-
-
diff --git a/bundles/org.openhab.core.storage.mapdb/NOTICE b/bundles/org.openhab.core.storage.mapdb/NOTICE
deleted file mode 100644
index 6c17d0d8a..000000000
--- a/bundles/org.openhab.core.storage.mapdb/NOTICE
+++ /dev/null
@@ -1,14 +0,0 @@
-This content is produced and maintained by the openHAB project.
-
-* Project home: https://www.openhab.org
-
-== Declared Project Licenses
-
-This program and the accompanying materials are made available under the terms
-of the Eclipse Public License 2.0 which is available at
-https://www.eclipse.org/legal/epl-2.0/.
-
-== Source Code
-
-https://github.com/openhab/openhab-core
-
diff --git a/bundles/org.openhab.core.storage.mapdb/pom.xml b/bundles/org.openhab.core.storage.mapdb/pom.xml
deleted file mode 100644
index 5929625bf..000000000
--- a/bundles/org.openhab.core.storage.mapdb/pom.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
- 4.0.0
-
-
- org.openhab.core.bundles
- org.openhab.core.reactor.bundles
- 3.0.0-SNAPSHOT
-
-
- org.openhab.core.storage.mapdb
-
- openHAB Core :: Bundles :: MapDB Storage
-
-
-
- org.openhab.core.bundles
- org.openhab.core.config.core
- ${project.version}
-
-
-
-
diff --git a/bundles/org.openhab.core.storage.mapdb/src/main/java/org/openhab/core/storage/mapdb/internal/MapDbStorage.java b/bundles/org.openhab.core.storage.mapdb/src/main/java/org/openhab/core/storage/mapdb/internal/MapDbStorage.java
deleted file mode 100644
index 906f5f37b..000000000
--- a/bundles/org.openhab.core.storage.mapdb/src/main/java/org/openhab/core/storage/mapdb/internal/MapDbStorage.java
+++ /dev/null
@@ -1,189 +0,0 @@
-/**
- * Copyright (c) 2010-2020 Contributors to the openHAB project
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- */
-package org.openhab.core.storage.mapdb.internal;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Map;
-
-import org.eclipse.jdt.annotation.NonNullByDefault;
-import org.eclipse.jdt.annotation.Nullable;
-import org.mapdb.DB;
-import org.openhab.core.items.ManagedItemProvider.PersistedItem;
-import org.openhab.core.items.ManagedItemProvider.PersistedItemInstanceCreator;
-import org.openhab.core.storage.DeletableStorage;
-import org.openhab.core.storage.Storage;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
-import com.google.gson.JsonSyntaxException;
-
-/**
- * The MapDbStorage is concrete implementation of the {@link Storage} interface.
- * It stores the key-value pairs in files. This Storage serializes and deserializes
- * the given values using their JSON representation (generated by {@code Gson}.
- * This transformation should help maintaining version compatibility of the stored
- * data.
- *
- * @author Thomas Eichstaedt-Engelen - Initial contribution
- * @author Alex Tugarev - Loading with Class.forName() if classLoader is null
- * @author Markus Rathgeb - Made the MapDB storage a disposable one
- */
-@NonNullByDefault
-public class MapDbStorage implements DeletableStorage {
-
- static final String TYPE_SEPARATOR = "@@@";
-
- private final Logger logger = LoggerFactory.getLogger(MapDbStorage.class);
-
- private final String name;
- private final DB db;
- private final @Nullable ClassLoader classLoader;
- private Map map;
-
- private transient Gson mapper;
-
- /**
- * Constructor.
- *
- * @param db the database
- * @param name the name
- * @param classLoader the classloader used for deserialization
- */
- public MapDbStorage(final DB db, final String name, final @Nullable ClassLoader classLoader) {
- this.name = name;
- this.db = db;
- this.classLoader = classLoader;
- this.map = db.createTreeMap(name).makeOrGet();
- this.mapper = new GsonBuilder().registerTypeAdapterFactory(new PropertiesTypeAdapterFactory())
- .registerTypeAdapter(PersistedItem.class, new PersistedItemInstanceCreator()).create();
- }
-
- @Override
- public void delete() {
- // Use an unmodifiable map. After deletion no operation / modification should be called anymore.
- map = Collections.emptyMap();
- db.delete(name);
- }
-
- @Override
- public @Nullable T put(String key, @Nullable T value) {
- if (value == null) {
- return remove(key);
- }
- String previousValue = map.put(key, serialize(value));
- db.commit();
- return deserialize(previousValue);
- }
-
- @Override
- public @Nullable T remove(String key) {
- String removedElement = map.remove(key);
- db.commit();
- return deserialize(removedElement);
- }
-
- @Override
- public boolean containsKey(final String key) {
- return map.containsKey(key);
- }
-
- @Override
- public @Nullable T get(String key) {
- return deserialize(map.get(key));
- }
-
- @Override
- public Collection getKeys() {
- return new HashSet<>(map.keySet());
- }
-
- @Override
- public Collection<@Nullable T> getValues() {
- Collection<@Nullable T> values = new ArrayList<>();
- for (String key : getKeys()) {
- values.add(get(key));
- }
- return values;
- }
-
- /**
- * Transforms the given {@code value} into its JSON representation using {@code Gson}.
- *
- *
- * Since we do not know the type of {@code value} while deserializing it afterwards we prepend its qualified type
- * name to the JSON String.
- *
- * @param value the {@code value} to store
- * @return the JSON document prepended with the qualified type name of {@code value}
- */
- private String serialize(T value) {
- if (value == null) {
- throw new IllegalArgumentException("Cannot serialize NULL");
- }
-
- String valueTypeName = value.getClass().getName();
- String valueAsString = mapper.toJson(value);
- String concatValue = valueTypeName + TYPE_SEPARATOR + valueAsString;
-
- logger.trace("serialized value '{}' to MapDB", concatValue);
- return concatValue;
- }
-
- /**
- * Deserializes and instantiates an object of type {@code T} out of the given JSON String.
- *
- *
- * A special classloader (other than the one of the MapDB bundle) is used in order to load the classes in the
- * context of the calling bundle.
- *
- * @param json the JSON String
- * @return the deserialized object
- */
- @SuppressWarnings("unchecked")
- public @Nullable T deserialize(@Nullable String json) {
- if (json == null) {
- // nothing to deserialize
- return null;
- }
-
- String[] concatValue = json.split(TYPE_SEPARATOR, 2);
- String valueTypeName = concatValue[0];
- String valueAsString = concatValue[1];
-
- @Nullable
- T value = null;
- try {
- final ClassLoader classLoader = this.classLoader;
-
- // load required class within the given bundle context
- final Class loadedValueType;
- if (classLoader == null) {
- loadedValueType = (Class) Class.forName(valueTypeName);
- } else {
- loadedValueType = (Class) classLoader.loadClass(valueTypeName);
- }
-
- value = mapper.fromJson(valueAsString, loadedValueType);
- logger.trace("deserialized value '{}' from MapDB", value);
- } catch (final JsonSyntaxException | ClassNotFoundException ex) {
- logger.warn("Couldn't deserialize value '{}'. Root cause is: {}", json, ex.getMessage());
- }
-
- return value;
- }
-}
diff --git a/bundles/org.openhab.core.storage.mapdb/src/main/java/org/openhab/core/storage/mapdb/internal/MapDbStorageService.java b/bundles/org.openhab.core.storage.mapdb/src/main/java/org/openhab/core/storage/mapdb/internal/MapDbStorageService.java
deleted file mode 100644
index 82ba8f057..000000000
--- a/bundles/org.openhab.core.storage.mapdb/src/main/java/org/openhab/core/storage/mapdb/internal/MapDbStorageService.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/**
- * Copyright (c) 2010-2020 Contributors to the openHAB project
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- */
-package org.openhab.core.storage.mapdb.internal;
-
-import java.io.File;
-
-import org.eclipse.jdt.annotation.NonNullByDefault;
-import org.eclipse.jdt.annotation.Nullable;
-import org.mapdb.DB;
-import org.mapdb.DBMaker;
-import org.openhab.core.config.core.ConfigConstants;
-import org.openhab.core.storage.DeletableStorage;
-import org.openhab.core.storage.DeletableStorageService;
-import org.openhab.core.storage.StorageService;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * This implementation of {@link StorageService} provides abilities to store
- * data in the lightweight key-value-store MapDB.
- *
- * @author Thomas Eichstaedt-Engelen - Initial contribution
- * @author Alex Tugarev - Added getStorage for name only
- * @author Markus Rathgeb - Use {@link DeletableStorageService}
- */
-@Component(name = "org.openhab.core.storage.mapdb", configurationPid = "org.openhab.storage.mapdb", immediate = true, service = {
- StorageService.class, DeletableStorageService.class }, property = "storage.format=mapdb")
-@NonNullByDefault
-public class MapDbStorageService implements DeletableStorageService {
-
- private final Logger logger = LoggerFactory.getLogger(MapDbStorageService.class);
-
- /* the name of the mapdb database ({@code storage.mapdb}) */
- private static final String DB_FILE_NAME = "storage.mapdb";
-
- /* holds the local instance of the MapDB database */
- private final DB db;
-
- /* the folder name to store mapdb databases ({@code mapdb} by default) */
- private String dbFolderName = "mapdb";
-
- @Activate
- public MapDbStorageService() {
- dbFolderName = ConfigConstants.getUserDataFolder() + File.separator + dbFolderName;
- File folder = new File(dbFolderName);
- if (!folder.exists()) {
- folder.mkdirs();
- }
-
- File dbFile = new File(dbFolderName, DB_FILE_NAME);
- db = DBMaker.newFileDB(dbFile).closeOnJvmShutdown().make();
-
- logger.debug("Opened MapDB file at '{}'.", dbFile.getAbsolutePath());
- }
-
- @Deactivate
- public void deactivate() {
- db.close();
- logger.debug("Deactivated MapDB Storage Service.");
- }
-
- @Override
- public DeletableStorage getStorage(String name, @Nullable ClassLoader classLoader) {
- return new MapDbStorage<>(db, name, classLoader);
- }
-
- @Override
- public DeletableStorage getStorage(String name) {
- return getStorage(name, null);
- }
-}
diff --git a/bundles/org.openhab.core.storage.mapdb/src/main/java/org/openhab/core/storage/mapdb/internal/PropertiesTypeAdapter.java b/bundles/org.openhab.core.storage.mapdb/src/main/java/org/openhab/core/storage/mapdb/internal/PropertiesTypeAdapter.java
deleted file mode 100644
index 5b8fbd68f..000000000
--- a/bundles/org.openhab.core.storage.mapdb/src/main/java/org/openhab/core/storage/mapdb/internal/PropertiesTypeAdapter.java
+++ /dev/null
@@ -1,135 +0,0 @@
-/**
- * Copyright (c) 2010-2020 Contributors to the openHAB project
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- */
-package org.openhab.core.storage.mapdb.internal;
-
-import java.io.IOException;
-import java.lang.reflect.Type;
-import java.math.BigDecimal;
-import java.util.Collections;
-import java.util.Map;
-
-import org.eclipse.jdt.annotation.Nullable;
-
-import com.google.gson.Gson;
-import com.google.gson.InstanceCreator;
-import com.google.gson.JsonSyntaxException;
-import com.google.gson.TypeAdapter;
-import com.google.gson.internal.ConstructorConstructor;
-import com.google.gson.internal.JsonReaderInternalAccess;
-import com.google.gson.internal.bind.MapTypeAdapterFactory;
-import com.google.gson.reflect.TypeToken;
-import com.google.gson.stream.JsonReader;
-import com.google.gson.stream.JsonToken;
-import com.google.gson.stream.JsonWriter;
-
-/**
- * Type adapter that makes sure that all Numeric values in Maps of type Map<String, Object> are deserialized as
- * BigDecimal instances instead of doubles.
- *
- * @author Ivan Iliev - Initial contribution
- */
-public class PropertiesTypeAdapter extends TypeAdapter