Repository: cobbler/cobbler (language: python)

Issue:
Remove basic configuration management
### Is your feature request related to a problem?

As a maintainer   
I want to get rid of unused features  
so that I can slim down the codebase and reduce the likelihood of bugs.

### Provide a detailed description of the proposed feature

The Cobbler built-in configuration management was not used by anyone active in the community. Since Cobbler is undergoing larger refactorings for the cloud-init integrations it became evident that even though people are aware of it, they are not interested in it at the moment. Dedicated configuration management systems offer far more flexibility and functionality for these tasks.

The proposed change is removing the configuration management features from Cobbler and Koan.

### Alternatives you've considered

Alternatives were put up for discussion in the below-linked poll.

For people using this feature, I recommend migrating to a configuration management system of choice. Cobbler can easily onboard the installed systems into configuration management systems.

### Additional information

This will also affect the puppet integration since it is based on the implementation of `mgmt_classes`.

Context: https://github.com/cobbler/cobbler/discussions/3416
Items: Refactor base classes
## Linked Items

Fixes #3439 

## Description

The new item type "Templates" that will be introduced with #3295 doesn't need to have parents, children or things like `autoinstall_meta`. As such before we add this new item type we need to find a better base class that will then be used for the new item type.

Steps for this PR:

1. Make `NetworkInterface` live in its own module - #3739
2. Introduce `BaseItem` - #3758
3. Introduce `InheritableItem` - #3787
4. Introduce `BootableItem` - #3805
5. Make `NetworkInterface` a dedicated collection (with data migration)
6. Introduce `BootLoader` type
7. Introduce the option subobjects:
   - `VirtOptions`
   - `PowerOptions`
   - `IPv4Options` & `IPv6Options`
   - `DnsOptions`
   - `TftpOptions`

Each step should have a green CI so each commit can be individually validated.

## Behaviour changes

Old: <!-- This is the old way Cobbler behaved -->

New: <!-- This is the new way Cobbler behaves -->

## Category

This is related to a:

- [ ] Bugfix
- [ ] Feature
- [ ] Packaging
- [ ] Docs
- [ ] Code Quality
- [x] Refactoring
- [ ] Miscellaneous

## Tests

- [x] Unit-Tests were created
- [ ] System-Tests were created
- [ ] Code is already covered by Unit-Tests
- [x] Code is already covered by System-Tests
- [ ] No tests required 



Discussion / hints:

After #3252 and #3461 are merged I can finally work on this.

Fix patch:
diff --git a/changelog.d/3536.removed b/changelog.d/3536.removed
new file mode 100644
index 0000000000..ca8b0c5a27
--- /dev/null
+++ b/changelog.d/3536.removed
@@ -0,0 +1,2 @@
+Removed file, mgmtclass and package item types
+Removed puppet HTTP endpoint
\ No newline at end of file
diff --git a/cobbler/actions/replicate.py b/cobbler/actions/replicate.py
index 953fb20a0e..29272ae824 100644
--- a/cobbler/actions/replicate.py
+++ b/cobbler/actions/replicate.py
@@ -26,9 +26,6 @@
     "system",
     "repo",
     "image",
-    "mgmtclass",
-    "package",
-    "file",
 ]
 
 
@@ -60,9 +57,6 @@ def __init__(self, api: "CobblerAPI") -> None:
             "system": {},
             "image": {},
             "repo": {},
-            "mgmtclass": {},
-            "package": {},
-            "file": {},
         }
         self.port = ""
         self.distro_patterns: List[str] = []
@@ -70,9 +64,6 @@ def __init__(self, api: "CobblerAPI") -> None:
         self.system_patterns: List[str] = []
         self.repo_patterns: List[str] = []
         self.image_patterns: List[str] = []
-        self.mgmtclass_patterns: List[str] = []
-        self.package_patterns: List[str] = []
-        self.file_patterns: List[str] = []
         self.omit_data = False
         self.prune = False
         self.sync_all = False
@@ -400,9 +391,6 @@ def run(
         system_patterns: Optional[str] = None,
         repo_patterns: Optional[str] = None,
         image_patterns: Optional[str] = None,
-        mgmtclass_patterns: Optional[str] = None,
-        package_patterns: Optional[str] = None,
-        file_patterns: Optional[str] = None,
         prune: bool = False,
         omit_data: bool = False,
         sync_all: bool = False,
@@ -418,9 +406,6 @@ def run(
         :param system_patterns: The pattern of systems to sync.
         :param repo_patterns: The pattern of repositories to sync.
         :param image_patterns: The pattern of images to sync.
-        :param mgmtclass_patterns: The pattern of management classes to sync.
-        :param package_patterns: The pattern of packages to sync.
-        :param file_patterns: The pattern of files to sync.
         :param prune: If the local server should be pruned before coping stuff.
         :param omit_data: If the data behind images etc should be omitted or not.
         :param sync_all: If everything should be synced (then the patterns are useless) or not.
@@ -438,12 +423,6 @@ def run(
             self.repo_patterns = repo_patterns.split()
         if isinstance(image_patterns, str):
             self.image_patterns = image_patterns.split()
-        if isinstance(mgmtclass_patterns, str):
-            self.mgmtclass_patterns = mgmtclass_patterns.split()
-        if isinstance(package_patterns, str):
-            self.package_patterns = package_patterns.split()
-        if isinstance(file_patterns, str):
-            self.file_patterns = file_patterns.split()
         self.omit_data = omit_data
         self.prune = prune
         self.sync_all = sync_all
@@ -470,9 +449,6 @@ def run(
         self.logger.info("system_patterns     = %s", self.system_patterns)
         self.logger.info("repo_patterns       = %s", self.repo_patterns)
         self.logger.info("image_patterns      = %s", self.image_patterns)
-        self.logger.info("mgmtclass_patterns  = %s", self.mgmtclass_patterns)
-        self.logger.info("package_patterns    = %s", self.package_patterns)
-        self.logger.info("file_patterns       = %s", self.file_patterns)
         self.logger.info("omit_data           = %s", self.omit_data)
         self.logger.info("sync_all            = %s", self.sync_all)
         self.logger.info("use_ssl             = %s", self.use_ssl)
diff --git a/cobbler/actions/report.py b/cobbler/actions/report.py
index 96f9326299..711eb01d64 100644
--- a/cobbler/actions/report.py
+++ b/cobbler/actions/report.py
@@ -437,9 +437,6 @@ def run(
                 "repo",
                 "network",
                 "image",
-                "mgmtclass",
-                "package",
-                "file",
             ]:
                 if report_what in (
                     "all",
@@ -465,9 +462,6 @@ def run(
                 "repo",
                 "network",
                 "image",
-                "mgmtclass",
-                "package",
-                "file",
             ]:
                 if report_what in (
                     "all",
@@ -490,9 +484,6 @@ def run(
                 "repo",
                 "network",
                 "image",
-                "mgmtclass",
-                "package",
-                "file",
             ]:
                 if report_what in (
                     "all",
diff --git a/cobbler/api.py b/cobbler/api.py
index efde52628b..8a62cb1f5c 100644
--- a/cobbler/api.py
+++ b/cobbler/api.py
@@ -156,10 +156,10 @@
 from cobbler.cexceptions import CX
 from cobbler.cobbler_collections import manager
 from cobbler.decorator import InheritableDictProperty
-from cobbler.items import distro, file
+from cobbler.items import distro
 from cobbler.items import image as image_module
 from cobbler.items import item as item_base
-from cobbler.items import menu, mgmtclass, package
+from cobbler.items import menu
 from cobbler.items import profile as profile_module
 from cobbler.items import repo
 from cobbler.items import system as system_module
@@ -173,12 +173,9 @@
         Collection,
     )
     from cobbler.cobbler_collections.distros import Distros
-    from cobbler.cobbler_collections.files import Files
     from cobbler.cobbler_collections.images import Images
     from cobbler.cobbler_collections.manager import COLLECTION_UNION
     from cobbler.cobbler_collections.menus import Menus
-    from cobbler.cobbler_collections.mgmtclasses import Mgmtclasses
-    from cobbler.cobbler_collections.packages import Packages
     from cobbler.cobbler_collections.profiles import Profiles
     from cobbler.cobbler_collections.repos import Repos
     from cobbler.cobbler_collections.systems import Systems
@@ -468,9 +465,6 @@ def clean_items_cache(self, obj: Union[settings.Settings, Dict[str, Any]]):
         """
         if obj is None or isinstance(obj, settings.Settings):  # type: ignore
             item_types = [
-                "package",
-                "file",
-                "mgmtclass",
                 "repo",
                 "distro",
                 "menu",
@@ -548,24 +542,6 @@ def settings(self) -> "settings.Settings":
         """
         return self._settings
 
-    def mgmtclasses(self) -> "Mgmtclasses":
-        """
-        Return the current list of mgmtclasses
-        """
-        return self._collection_mgr.mgmtclasses()
-
-    def packages(self) -> "Packages":
-        """
-        Return the current list of packages
-        """
-        return self._collection_mgr.packages()
-
-    def files(self) -> "Files":
-        """
-        Return the current list of files
-        """
-        return self._collection_mgr.files()
-
     def menus(self) -> "Menus":
         """
         Return the current list of menus
@@ -741,33 +717,6 @@ def copy_image(self, ref: "image_module.Image", newname: str) -> None:
         """
         self._collection_mgr.images().copy(ref, newname)
 
-    def copy_mgmtclass(self, ref: "mgmtclass.Mgmtclass", newname: str) -> None:
-        """
-        This method copies a management class which is just different in the name of the object.
-
-        :param ref: The object itself which gets copied.
-        :param newname: The new name of the newly created object.
-        """
-        self._collection_mgr.mgmtclasses().copy(ref, newname)
-
-    def copy_package(self, ref: "package.Package", newname: str) -> None:
-        """
-        This method copies a package which is just different in the name of the object.
-
-        :param ref: The object itself which gets copied.
-        :param newname: The new name of the newly created object.
-        """
-        self._collection_mgr.packages().copy(ref, newname)
-
-    def copy_file(self, ref: "file.File", newname: str) -> None:
-        """
-        This method copies a file which is just different in the name of the object.
-
-        :param ref: The object itself which gets copied.
-        :param newname: The new name of the newly created object.
-        """
-        self._collection_mgr.files().copy(ref, newname)
-
     def copy_menu(self, ref: "menu.Menu", newname: str) -> None:
         """
         This method copies a file which is just different in the name of the object.
@@ -923,71 +872,6 @@ def remove_image(
             with_triggers=with_triggers,
         )
 
-    def remove_mgmtclass(
-        self,
-        ref: Union["mgmtclass.Mgmtclass", str],
-        recursive: bool = False,
-        delete: bool = True,
-        with_triggers: bool = True,
-    ) -> None:
-        """
-        Remove a management class from Cobbler.
-
-        :param ref: The internal unique handle for the item.
-        :param recursive: If the item should recursively should delete dependencies on itself.
-        :param delete: Not known what this parameter does exactly.
-        :param with_triggers: Whether you would like to have the removal triggers executed or not.
-        """
-        self.remove_item(
-            "mgmtclass",
-            ref,
-            recursive=recursive,
-            delete=delete,
-            with_triggers=with_triggers,
-        )
-
-    def remove_package(
-        self,
-        ref: Union["package.Package", str],
-        recursive: bool = False,
-        delete: bool = True,
-        with_triggers: bool = True,
-    ) -> None:
-        """
-        Remove a package from Cobbler.
-
-        :param ref: The internal unique handle for the item.
-        :param recursive: If the item should recursively should delete dependencies on itself.
-        :param delete: Not known what this parameter does exactly.
-        :param with_triggers: Whether you would like to have the removal triggers executed or not.
-        """
-        self.remove_item(
-            "package",
-            ref,
-            recursive=recursive,
-            delete=delete,
-            with_triggers=with_triggers,
-        )
-
-    def remove_file(
-        self,
-        ref: Union["file.File", str],
-        recursive: bool = False,
-        delete: bool = True,
-        with_triggers: bool = True,
-    ) -> None:
-        """
-        Remove a file from Cobbler.
-
-        :param ref: The internal unique handle for the item.
-        :param recursive: If the item should recursively should delete dependencies on itself.
-        :param delete: Not known what this parameter does exactly.
-        :param with_triggers: Whether you would like to have the removal triggers executed or not.
-        """
-        self.remove_item(
-            "file", ref, recursive=recursive, delete=delete, with_triggers=with_triggers
-        )
-
     def remove_menu(
         self,
         ref: Union["menu.Menu", str],
@@ -1066,33 +950,6 @@ def rename_image(self, ref: "image_module.Image", newname: str) -> None:
         """
         self.rename_item("image", ref, newname)
 
-    def rename_mgmtclass(self, ref: "mgmtclass.Mgmtclass", newname: str) -> None:
-        """
-        Rename a management class to a new name.
-
-        :param ref: The internal unique handle for the item.
-        :param newname: The new name for the item.
-        """
-        self.rename_item("mgmtclass", ref, newname)
-
-    def rename_package(self, ref: "package.Package", newname: str) -> None:
-        """
-        Rename a package to a new name.
-
-        :param ref: The internal unique handle for the item.
-        :param newname: The new name for the item.
-        """
-        self.rename_item("package", ref, newname)
-
-    def rename_file(self, ref: "file.File", newname: str) -> None:
-        """
-        Rename a file to a new name.
-
-        :param ref: The internal unique handle for the item.
-        :param newname: The new name for the item.
-        """
-        self.rename_item("file", ref, newname)
-
     def rename_menu(self, ref: "menu.Menu", newname: str) -> None:
         """
         Rename a menu to a new name.
@@ -1182,50 +1039,13 @@ def new_image(
         self.log("new_image", kwargs)
         return image_module.Image(self, is_subobject, **kwargs)
 
-    def new_mgmtclass(
-        self, is_subobject: bool = False, **kwargs: Any
-    ) -> "mgmtclass.Mgmtclass":
-        """
-        Returns a new empty mgmtclass object. This mgmtclass is not automatically persisted. Persistence is achieved via
-        ``save()``.
-
-        :param is_subobject: If the object created is a subobject or not.
-        :return: An empty mgmtclass object.
-        """
-        self.log("new_mgmtclass", kwargs)
-        return mgmtclass.Mgmtclass(self, is_subobject, **kwargs)
-
-    def new_package(
-        self, is_subobject: bool = False, **kwargs: Any
-    ) -> "package.Package":
-        """
-        Returns a new empty package object. This package is not automatically persisted. Persistence is achieved via
-        ``save()``.
-
-        :param is_subobject: If the object created is a subobject or not.
-        :return: An empty Package object.
-        """
-        self.log("new_package", kwargs)
-        return package.Package(self, is_subobject, **kwargs)
-
-    def new_file(self, is_subobject: bool = False, **kwargs: Any) -> "file.File":
-        """
-        Returns a new empty file object. This file is not automatically persisted. Persistence is achieved via
-        ``save()``.
-
-        :param is_subobject: If the object created is a subobject or not.
-        :return: An empty File object.
-        """
-        self.log("new_file", kwargs)
-        return file.File(self, is_subobject, **kwargs)
-
     def new_menu(self, is_subobject: bool = False, **kwargs: Any) -> "menu.Menu":
         """
         Returns a new empty menu object. This file is not automatically persisted. Persistence is achieved via
         ``save()``.
 
         :param is_subobject: If the object created is a subobject or not.
-        :return: An empty File object.
+        :return: An empty Menu object.
         """
         self.log("new_menu", kwargs)
         return menu.Menu(self, is_subobject, **kwargs)
@@ -1373,75 +1193,6 @@ def add_image(
             with_triggers=with_triggers,
         )
 
-    def add_mgmtclass(
-        self,
-        ref: "mgmtclass.Mgmtclass",
-        check_for_duplicate_names: bool = False,
-        save: bool = True,
-        with_triggers: bool = True,
-    ) -> None:
-        """
-        Add a management class to Cobbler.
-
-        :param ref: The identifier for the object to add to a collection.
-        :param check_for_duplicate_names: If the name should be unique or can be present multiple times.
-        :param save: If the item should be persisted.
-        :param with_triggers: If triggers should be run when the object is added.
-        """
-        self.add_item(
-            "mgmtclass",
-            ref,
-            check_for_duplicate_names=check_for_duplicate_names,
-            save=save,
-            with_triggers=with_triggers,
-        )
-
-    def add_package(
-        self,
-        ref: "package.Package",
-        check_for_duplicate_names: bool = False,
-        save: bool = True,
-        with_triggers: bool = True,
-    ) -> None:
-        """
-        Add a package to Cobbler.
-
-        :param ref: The identifier for the object to add to a collection.
-        :param check_for_duplicate_names: If the name should be unique or can be present multiple times.
-        :param save: If the item should be persisted.
-        :param with_triggers: If triggers should be run when the object is added.
-        """
-        self.add_item(
-            "package",
-            ref,
-            check_for_duplicate_names=check_for_duplicate_names,
-            save=save,
-            with_triggers=with_triggers,
-        )
-
-    def add_file(
-        self,
-        ref: "file.File",
-        check_for_duplicate_names: bool = False,
-        save: bool = True,
-        with_triggers: bool = True,
-    ) -> None:
-        """
-        Add a file to Cobbler.
-
-        :param ref: The identifier for the object to add to a collection.
-        :param check_for_duplicate_names: If the name should be unique or can be present multiple times.
-        :param save: If the item should be persisted.
-        :param with_triggers: If triggers should be run when the object is added.
-        """
-        self.add_item(
-            "file",
-            ref,
-            check_for_duplicate_names=check_for_duplicate_names,
-            save=save,
-            with_triggers=with_triggers,
-        )
-
     def add_menu(
         self,
         ref: "menu.Menu",
@@ -1530,9 +1281,6 @@ def __find_without_collection(
             "system",
             "repo",
             "image",
-            "mgmtclass",
-            "package",
-            "file",
             "menu",
         ]
         for collection_name in collections:
@@ -1561,9 +1309,6 @@ def __find_by_name(self, name: str) -> Optional["ITEM_UNION"]:
             "system",
             "repo",
             "image",
-            "mgmtclass",
-            "package",
-            "file",
             "menu",
         ]
         for collection_name in collections:
@@ -1674,66 +1419,6 @@ def find_image(
             name=name, return_list=return_list, no_errors=no_errors, **kargs
         )
 
-    def find_mgmtclass(
-        self,
-        name: str = "",
-        return_list: bool = False,
-        no_errors: bool = False,
-        **kargs: "FIND_KWARGS",
-    ) -> Optional[Union[List["mgmtclass.Mgmtclass"], "mgmtclass.Mgmtclass"]]:
-        """
-        Find a management class via a name or keys specified in the ``**kargs``.
-
-        :param name: The name to search for.
-        :param return_list: If only the first result or all results should be returned.
-        :param no_errors: Silence some errors which would raise if this turned to False.
-        :param kargs: Additional key-value pairs which may help in finding the desired objects.
-        :return: A single object or a list of all search results.
-        """
-        return self._collection_mgr.mgmtclasses().find(
-            name=name, return_list=return_list, no_errors=no_errors, **kargs
-        )
-
-    def find_package(
-        self,
-        name: str = "",
-        return_list: bool = False,
-        no_errors: bool = False,
-        **kargs: "FIND_KWARGS",
-    ) -> Optional[Union[List["package.Package"], "package.Package"]]:
-        """
-        Find a package via a name or keys specified in the ``**kargs``.
-
-        :param name: The name to search for.
-        :param return_list: If only the first result or all results should be returned.
-        :param no_errors: Silence some errors which would raise if this turned to False.
-        :param kargs: Additional key-value pairs which may help in finding the desired objects.
-        :return: A single object or a list of all search results.
-        """
-        return self._collection_mgr.packages().find(
-            name=name, return_list=return_list, no_errors=no_errors, **kargs
-        )
-
-    def find_file(
-        self,
-        name: str = "",
-        return_list: bool = False,
-        no_errors: bool = False,
-        **kargs: "FIND_KWARGS",
-    ) -> Optional[Union[List["file.File"], "file.File"]]:
-        """
-        Find a file via a name or keys specified in the ``**kargs``.
-
-        :param name: The name to search for.
-        :param return_list: If only the first result or all results should be returned.
-        :param no_errors: Silence some errors which would raise if this turned to False.
-        :param kargs: Additional key-value pairs which may help in finding the desired objects.
-        :return: A single object or a list of all search results.
-        """
-        return self._collection_mgr.files().find(
-            name=name, return_list=return_list, no_errors=no_errors, **kargs
-        )
-
     def find_menu(
         self,
         name: str = "",
@@ -1845,45 +1530,6 @@ def get_images_since(
         """
         return self.__since(mtime, self.images, collapse=collapse)
 
-    def get_mgmtclasses_since(
-        self, mtime: float, collapse: bool = False
-    ) -> List["mgmtclass.Mgmtclass"]:
-        """
-        Return management classes modified since a certain time (in seconds since Epoch)
-
-        :param mtime: The timestamp which marks the gate if an object is included or not.
-        :param collapse: If True then this specifies that a list of dicts should be returned instead of a list of
-                         objects.
-        :return: The list of management classes which are newer then the given timestamp.
-        """
-        return self.__since(mtime, self.mgmtclasses, collapse=collapse)
-
-    def get_packages_since(
-        self, mtime: float, collapse: bool = False
-    ) -> List["package.Package"]:
-        """
-        Return packages modified since a certain time (in seconds since Epoch)
-
-        :param mtime: The timestamp which marks the gate if an object is included or not.
-        :param collapse: If True then this specifies that a list of dicts should be returned instead of a list of
-                         objects.
-        :return: The list of packages which are newer then the given timestamp.
-        """
-        return self.__since(mtime, self.packages, collapse=collapse)
-
-    def get_files_since(
-        self, mtime: float, collapse: bool = False
-    ) -> List["file.File"]:
-        """
-        Return files modified since a certain time (in seconds since Epoch)
-
-        :param mtime: The timestamp which marks the gate if an object is included or not.
-        :param collapse: If True then this specifies that a list of dicts should be returned instead of a list of
-                         objects.
-        :return: The list of files which are newer then the given timestamp.
-        """
-        return self.__since(mtime, self.files, collapse=collapse)
-
     def get_menus_since(
         self, mtime: float, collapse: bool = False
     ) -> List["menu.Menu"]:
@@ -2531,9 +2177,6 @@ def replicate(
         system_patterns: str = "",
         repo_patterns: str = "",
         image_patterns: str = "",
-        mgmtclass_patterns: str = "",
-        package_patterns: str = "",
-        file_patterns: str = "",
         prune: bool = False,
         omit_data: bool = False,
         sync_all: bool = False,
@@ -2549,9 +2192,6 @@ def replicate(
         :param system_patterns: The pattern of systems which should be synced.
         :param repo_patterns: The pattern of repositories which should be synced.
         :param image_patterns: The pattern of images which should be synced.
-        :param mgmtclass_patterns: The pattern of management classes which should be synced.
-        :param package_patterns: The pattern of packages which should be synced.
-        :param file_patterns: The pattern of files which should be synced.
         :param prune: Whether the object not on the master should be removed or not.
         :param omit_data: If the data downloaded by the current Cobbler server should be rsynced to the destination
                           server.
@@ -2568,9 +2208,6 @@ def replicate(
             system_patterns=system_patterns,
             repo_patterns=repo_patterns,
             image_patterns=image_patterns,
-            mgmtclass_patterns=mgmtclass_patterns,
-            package_patterns=package_patterns,
-            file_patterns=file_patterns,
             prune=prune,
             omit_data=omit_data,
             sync_all=sync_all,
diff --git a/cobbler/cli.py b/cobbler/cli.py
index 00734906bc..56167eac33 100644
--- a/cobbler/cli.py
+++ b/cobbler/cli.py
@@ -61,9 +61,6 @@
         "report",
         "autoadd",
     ],
-    "mgmtclass": ["add", "copy", "edit", "find", "list", "remove", "rename", "report"],
-    "package": ["add", "copy", "edit", "find", "list", "remove", "rename", "report"],
-    "file": ["add", "copy", "edit", "find", "list", "remove", "rename", "report"],
     "menu": ["add", "copy", "edit", "find", "list", "remove", "rename", "report"],
     "setting": ["edit", "report"],
     "signature": ["reload", "report", "update"],
@@ -284,16 +281,6 @@
         0,
         "dict",
     ],
-    [
-        "mgmt_classes",
-        [],
-        0,
-        "Management Classes",
-        True,
-        "Management classes for external config management",
-        0,
-        "list",
-    ],
     ["name", "", 0, "Name", True, "Ex: Fedora-11-i386", 0, "str"],
     [
         "os_version",
@@ -337,61 +324,6 @@
     ],
 ]
 
-FILE_FIELDS = [
-    # non-editable in UI (internal)
-    ["ctime", 0, 0, "", False, "", 0, "float"],
-    ["depth", 2, 0, "", False, "", 0, "float"],
-    ["mtime", 0, 0, "", False, "", 0, "float"],
-    ["uid", "", 0, "", False, "", 0, "str"],
-    # editable in UI
-    ["action", "create", 0, "Action", True, "Create or remove file resource", 0, "str"],
-    ["comment", "", 0, "Comment", True, "Free form text description", 0, "str"],
-    [
-        "group",
-        "",
-        0,
-        "Owner group in file system",
-        True,
-        "File owner group in file system",
-        0,
-        "str",
-    ],
-    [
-        "is_dir",
-        False,
-        0,
-        "Is Directory",
-        True,
-        "Treat file resource as a directory",
-        0,
-        "bool",
-    ],
-    ["mode", "", 0, "Mode", True, "The mode of the file", 0, "str"],
-    ["name", "", 0, "Name", True, "Name of file resource", 0, "str"],
-    [
-        "owner",
-        "",
-        0,
-        "Owner user in file system",
-        True,
-        "File owner user in file system",
-        0,
-        "str",
-    ],
-    [
-        "owners",
-        "SETTINGS:default_ownership",
-        0,
-        "Owners",
-        True,
-        "Owners list for authz_ownership (space delimited)",
-        [],
-        "list",
-    ],
-    ["path", "", 0, "Path", True, "The path for the file", 0, "str"],
-    ["template", "", 0, "Template", True, "The template for the file", 0, "str"],
-]
-
 IMAGE_FIELDS = [
     # non-editable in UI (internal)
     ["ctime", 0, 0, "", False, "", 0, "float"],
@@ -544,92 +476,6 @@
     ["parent", "", "", "Parent Menu", True, "", [], "str"],
 ]
 
-MGMTCLASS_FIELDS = [
-    # non-editable in UI (internal)
-    ["ctime", 0, 0, "", False, "", 0, "float"],
-    ["depth", 2, 0, "", False, "", 0, "float"],
-    [
-        "is_definition",
-        False,
-        0,
-        "Is Definition?",
-        True,
-        "Treat this class as a definition (puppet only)",
-        0,
-        "bool",
-    ],
-    ["mtime", 0, 0, "", False, "", 0, "int"],
-    ["uid", "", 0, "", False, "", 0, "str"],
-    # editable in UI
-    [
-        "class_name",
-        "",
-        0,
-        "Class Name",
-        True,
-        "Actual Class Name (leave blank to use the name field)",
-        0,
-        "str",
-    ],
-    ["comment", "", 0, "Comment", True, "Free form text description", 0, "str"],
-    ["files", [], 0, "Files", True, "File resources", 0, "list"],
-    ["name", "", 0, "Name", True, "Ex: F10-i386-webserver", 0, "str"],
-    [
-        "owners",
-        "SETTINGS:default_ownership",
-        "SETTINGS:default_ownership",
-        "Owners",
-        True,
-        "Owners list for authz_ownership (space delimited)",
-        0,
-        "list",
-    ],
-    ["packages", [], 0, "Packages", True, "Package resources", 0, "list"],
-    [
-        "params",
-        {},
-        0,
-        "Parameters/Variables",
-        True,
-        "List of parameters/variables",
-        0,
-        "dict",
-    ],
-]
-
-PACKAGE_FIELDS = [
-    # non-editable in UI (internal)
-    ["ctime", 0, 0, "", False, "", 0, "float"],
-    ["depth", 2, 0, "", False, "", 0, "float"],
-    ["mtime", 0, 0, "", False, "", 0, "float"],
-    ["uid", "", 0, "", False, "", 0, "str"],
-    # editable in UI
-    [
-        "action",
-        "create",
-        0,
-        "Action",
-        True,
-        "Install or remove package resource",
-        0,
-        "str",
-    ],
-    ["comment", "", 0, "Comment", True, "Free form text description", 0, "str"],
-    ["installer", "yum", 0, "Installer", True, "Package Manager", 0, "str"],
-    ["name", "", 0, "Name", True, "Name of file resource", 0, "str"],
-    [
-        "owners",
-        "SETTINGS:default_ownership",
-        0,
-        "Owners",
-        True,
-        "Owners list for authz_ownership (space delimited)",
-        [],
-        "list",
-    ],
-    ["version", "", 0, "Version", True, "Package Version", 0, "str"],
-]
-
 PROFILE_FIELDS = [
     # non-editable in UI (internal)
     ["ctime", 0, 0, "", False, "", 0, "float"],
@@ -748,26 +594,6 @@
         0,
         "dict",
     ],
-    [
-        "mgmt_classes",
-        [],
-        "<<inherit>>",
-        "Management Classes",
-        True,
-        "For external configuration management",
-        0,
-        "list",
-    ],
-    [
-        "mgmt_parameters",
-        "<<inherit>>",
-        "<<inherit>>",
-        "Management Parameters",
-        True,
-        "Parameters which will be handed to your management application (Must be valid YAML dictionary)",
-        0,
-        "str",
-    ],
     ["name", "", None, "Name", True, "Ex: F10-i386-webserver", 0, "str"],
     [
         "name_servers",
@@ -1230,26 +1056,6 @@
         0,
         "dict",
     ],
-    [
-        "mgmt_classes",
-        "<<inherit>>",
-        0,
-        "Management Classes",
-        True,
-        "For external config management",
-        0,
-        "list",
-    ],
-    [
-        "mgmt_parameters",
-        "<<inherit>>",
-        0,
-        "Management Parameters",
-        True,
-        "Parameters which will be handed to your management application (Must be valid YAML dictionary)",
-        0,
-        "str",
-    ],
     ["name", "", 0, "Name", True, "Ex: vanhalen.example.org", 0, "str"],
     ["name_servers", [], 0, "Name Servers", True, "space delimited", 0, "list"],
     [
@@ -1847,12 +1653,6 @@ def report_item(remote, otype: str, item=None, name=None):
         data = to_string_from_fields(item, REPO_FIELDS)
     elif otype == "image":
         data = to_string_from_fields(item, IMAGE_FIELDS)
-    elif otype == "mgmtclass":
-        data = to_string_from_fields(item, MGMTCLASS_FIELDS)
-    elif otype == "package":
-        data = to_string_from_fields(item, PACKAGE_FIELDS)
-    elif otype == "file":
-        data = to_string_from_fields(item, FILE_FIELDS)
     elif otype == "menu":
         data = to_string_from_fields(item, MENU_FIELDS)
     elif otype == "setting":
@@ -2206,12 +2006,6 @@ def get_fields(self, object_type: str) -> list:
             return REPO_FIELDS
         if object_type == "image":
             return IMAGE_FIELDS
-        if object_type == "mgmtclass":
-            return MGMTCLASS_FIELDS
-        if object_type == "package":
-            return PACKAGE_FIELDS
-        if object_type == "file":
-            return FILE_FIELDS
         if object_type == "menu":
             return MENU_FIELDS
         if object_type == "setting":
@@ -2475,19 +2269,6 @@ def direct_command(self, action_name: str):
             self.parser.add_option(
                 "--image", dest="image_patterns", help="patterns of images to replicate"
             )
-            self.parser.add_option(
-                "--mgmtclasses",
-                dest="mgmtclass_patterns",
-                help="patterns of mgmtclasses to replicate",
-            )
-            self.parser.add_option(
-                "--packages",
-                dest="package_patterns",
-                help="patterns of packages to replicate",
-            )
-            self.parser.add_option(
-                "--files", dest="file_patterns", help="patterns of files to replicate"
-            )
             self.parser.add_option(
                 "--omit-data",
                 dest="omit_data",
@@ -2655,12 +2436,6 @@ def direct_command(self, action_name: str):
             report_items(self.remote, "repo")
             print("\nimages:\n==========")
             report_items(self.remote, "image")
-            print("\nmgmtclasses:\n==========")
-            report_items(self.remote, "mgmtclass")
-            print("\npackages:\n==========")
-            report_items(self.remote, "package")
-            print("\nfiles:\n==========")
-            report_items(self.remote, "file")
             print("\nmenus:\n==========")
             report_items(self.remote, "menu")
         elif action_name == "list":
@@ -2678,12 +2453,6 @@ def direct_command(self, action_name: str):
             list_items(self.remote, "repo")
             print("\nimages:")
             list_items(self.remote, "image")
-            print("\nmgmtclasses:")
-            list_items(self.remote, "mgmtclass")
-            print("\npackages:")
-            list_items(self.remote, "package")
-            print("\nfiles:")
-            list_items(self.remote, "file")
             print("\nmenus:")
             list_items(self.remote, "menu")
         elif action_name == "mkloaders":
@@ -2763,9 +2532,7 @@ def print_help(self) -> int:
         Prints general-top level help, e.g. "cobbler --help" or "cobbler" or "cobbler command-does-not-exist"
         """
         print("usage\n=====")
-        print(
-            "cobbler <distro|profile|system|repo|image|mgmtclass|package|file|menu> ... "
-        )
+        print("cobbler <distro|profile|system|repo|image|menu> ... ")
         print(
             "        [add|edit|copy|get-autoinstall*|list|remove|rename|report] [options|--help]"
         )
diff --git a/cobbler/cobbler_collections/collection.py b/cobbler/cobbler_collections/collection.py
index 91e0174c2b..68c0702229 100644
--- a/cobbler/cobbler_collections/collection.py
+++ b/cobbler/cobbler_collections/collection.py
@@ -25,9 +25,9 @@
 
 from cobbler import enums, utils
 from cobbler.cexceptions import CX
-from cobbler.items import distro, file, image
+from cobbler.items import distro, image
 from cobbler.items import item as item_base
-from cobbler.items import menu, mgmtclass, package, profile, repo, system
+from cobbler.items import menu, profile, repo, system
 
 if TYPE_CHECKING:
     from cobbler.actions.sync import CobblerSync
@@ -40,14 +40,11 @@
     str, int, bool, Dict[Any, Any], List[Any]
 ]
 ITEM_UNION = Union[  # pylint: disable=invalid-name
-    "package.Package",
     "system.System",
     "image.Image",
     "profile.Profile",
     "repo.Repo",
-    "mgmtclass.Mgmtclass",
     "distro.Distro",
-    "file.File",
     "menu.Menu",
 ]
 
@@ -483,12 +480,6 @@ def add(
                     self.lite_sync.add_single_image(ref)
                 elif isinstance(ref, repo.Repo):
                     pass
-                elif isinstance(ref, mgmtclass.Mgmtclass):
-                    pass
-                elif isinstance(ref, package.Package):
-                    pass
-                elif isinstance(ref, file.File):
-                    pass
                 elif isinstance(ref, menu.Menu):
                     pass
                 else:
diff --git a/cobbler/cobbler_collections/files.py b/cobbler/cobbler_collections/files.py
deleted file mode 100644
index 293baa8422..0000000000
--- a/cobbler/cobbler_collections/files.py
+++ /dev/null
@@ -1,83 +0,0 @@
-"""
-Cobbler module that at runtime holds all files in Cobbler.
-"""
-
-# SPDX-License-Identifier: GPL-2.0-or-later
-# SPDX-FileCopyrightText: Copyright 2010, Kelsey Hightower <kelsey.hightower@gmail.com>
-
-from typing import TYPE_CHECKING, Any, Dict
-
-from cobbler import utils
-from cobbler.cexceptions import CX
-from cobbler.cobbler_collections import collection
-from cobbler.items import file
-
-if TYPE_CHECKING:
-    from cobbler.api import CobblerAPI
-
-
-class Files(collection.Collection[file.File]):
-    """
-    Files provide a container for file resources.
-    """
-
-    @staticmethod
-    def collection_type() -> str:
-        return "file"
-
-    @staticmethod
-    def collection_types() -> str:
-        return "files"
-
-    def factory_produce(self, api: "CobblerAPI", seed_data: Dict[str, Any]):
-        """
-        Return a File forged from seed_data
-
-        :param api: Parameter is skipped.
-        :param seed_data: Data to seed the object with.
-        :returns: The created object.
-        """
-        return file.File(api, **seed_data)
-
-    def remove(
-        self,
-        name: str,
-        with_delete: bool = True,
-        with_sync: bool = True,
-        with_triggers: bool = True,
-        recursive: bool = False,
-    ):
-        """
-        Remove element named 'name' from the collection
-
-        :raises CX: In case a non existent object should be deleted.
-        """
-        obj = self.find(name=name)
-
-        if obj is None:
-            raise CX(f"cannot delete an object that does not exist: {name}")
-
-        if isinstance(obj, list):
-            # Will never happen, but we want to make mypy happy.
-            raise CX("Ambiguous match detected!")
-
-        if with_delete:
-            if with_triggers:
-                utils.run_triggers(
-                    self.api, obj, "/var/lib/cobbler/triggers/delete/file/pre/*", []
-                )
-
-        with self.lock:
-            del self.listing[name]
-        self.collection_mgr.serialize_delete(self, obj)
-
-        if with_delete:
-            if with_triggers:
-                utils.run_triggers(
-                    self.api, obj, "/var/lib/cobbler/triggers/delete/file/post/*", []
-                )
-                utils.run_triggers(
-                    self.api, obj, "/var/lib/cobbler/triggers/change/*", []
-                )
-
-        return
diff --git a/cobbler/cobbler_collections/manager.py b/cobbler/cobbler_collections/manager.py
index a816962ba3..eb67ac3505 100644
--- a/cobbler/cobbler_collections/manager.py
+++ b/cobbler/cobbler_collections/manager.py
@@ -12,11 +12,8 @@
 from cobbler import serializer, validate
 from cobbler.cexceptions import CX
 from cobbler.cobbler_collections.distros import Distros
-from cobbler.cobbler_collections.files import Files
 from cobbler.cobbler_collections.images import Images
 from cobbler.cobbler_collections.menus import Menus
-from cobbler.cobbler_collections.mgmtclasses import Mgmtclasses
-from cobbler.cobbler_collections.packages import Packages
 from cobbler.cobbler_collections.profiles import Profiles
 from cobbler.cobbler_collections.repos import Repos
 from cobbler.cobbler_collections.systems import Systems
@@ -26,11 +23,8 @@
 if TYPE_CHECKING:
     from cobbler.api import CobblerAPI
     from cobbler.cobbler_collections.collection import ITEM, Collection
-    from cobbler.settings import Settings
 
-    COLLECTION_UNION = Union[
-        Menus, Distros, Repos, Profiles, Images, Systems, Mgmtclasses, Packages, Files
-    ]
+    COLLECTION_UNION = Union[Menus, Distros, Repos, Profiles, Images, Systems]
 
 
 class CollectionManager:
@@ -65,9 +59,6 @@ def __load(self, api: "CobblerAPI") -> None:
         self._profiles = Profiles(weakref.proxy(self))
         self._systems = Systems(weakref.proxy(self))
         self._images = Images(weakref.proxy(self))
-        self._mgmtclasses = Mgmtclasses(weakref.proxy(self))
-        self._packages = Packages(weakref.proxy(self))
-        self._files = Files(weakref.proxy(self))
         self._menus = Menus(weakref.proxy(self))
 
     def distros(self) -> Distros:
@@ -106,24 +97,6 @@ def images(self) -> Images:
         """
         return self._images
 
-    def mgmtclasses(self) -> Mgmtclasses:
-        """
-        Return the definitive copy of the Mgmtclasses collection
-        """
-        return self._mgmtclasses
-
-    def packages(self) -> Packages:
-        """
-        Return the definitive copy of the Packages collection
-        """
-        return self._packages
-
-    def files(self) -> Files:
-        """
-        Return the definitive copy of the Files collection
-        """
-        return self._files
-
     def menus(self) -> Menus:
         """
         Return the definitive copy of the Menus collection
@@ -140,9 +113,6 @@ def serialize(self) -> None:
         self.__serializer.serialize(self._profiles)
         self.__serializer.serialize(self._images)
         self.__serializer.serialize(self._systems)
-        self.__serializer.serialize(self._mgmtclasses)
-        self.__serializer.serialize(self._packages)
-        self.__serializer.serialize(self._files)
         self.__serializer.serialize(self._menus)
 
     def serialize_one_item(self, item: "ITEM") -> None:  # type: ignore
@@ -198,9 +168,6 @@ def deserialize(self) -> None:
             self._profiles,
             self._images,
             self._systems,
-            self._mgmtclasses,
-            self._packages,
-            self._files,
         ):
             try:
                 self.__serializer.deserialize(collection)  # type: ignore
@@ -221,23 +188,11 @@ def deserialize_one_item(self, obj: Item) -> Dict[str, Any]:
 
     def get_items(
         self, collection_type: str
-    ) -> Union[
-        Distros,
-        Profiles,
-        Systems,
-        Repos,
-        Images,
-        Mgmtclasses,
-        Packages,
-        Files,
-        Menus,
-        "Settings",
-    ]:
+    ) -> Union[Distros, Profiles, Systems, Repos, Images, Menus, "Settings"]:
         """
         Get a full collection of a single type.
 
-        Valid Values vor ``collection_type`` are: "distro", "profile", "repo", "image", "mgmtclass", "package", "file"
-        and "settings".
+        Valid Values vor ``collection_type`` are: "distro", "profile", "repo", "image", "menu" and "settings".
 
         :param collection_type: The type of collection to return.
         :return: The collection if ``collection_type`` is valid.
@@ -249,9 +204,6 @@ def get_items(
             Systems,
             Repos,
             Images,
-            Mgmtclasses,
-            Packages,
-            Files,
             Menus,
             "Settings",
         ]
@@ -259,8 +211,6 @@ def get_items(
             self, f"_{collection_type}s"
         ):
             result = getattr(self, f"_{collection_type}s")
-        elif collection_type == "mgmtclass":
-            result = self._mgmtclasses
         else:
             raise CX(
                 f'internal error, collection name "{collection_type}" not supported'
diff --git a/cobbler/cobbler_collections/mgmtclasses.py b/cobbler/cobbler_collections/mgmtclasses.py
deleted file mode 100644
index 23deb106a9..0000000000
--- a/cobbler/cobbler_collections/mgmtclasses.py
+++ /dev/null
@@ -1,87 +0,0 @@
-"""
-Cobbler module that at runtime holds all mgmtclasses in Cobbler.
-"""
-
-# SPDX-License-Identifier: GPL-2.0-or-later
-# SPDX-FileCopyrightText: Copyright 2010, Kelsey Hightower <kelsey.hightower@gmail.com>
-
-from typing import TYPE_CHECKING, Any, Dict
-
-from cobbler import utils
-from cobbler.cexceptions import CX
-from cobbler.cobbler_collections import collection
-from cobbler.items import mgmtclass
-
-if TYPE_CHECKING:
-    from cobbler.api import CobblerAPI
-
-
-class Mgmtclasses(collection.Collection[mgmtclass.Mgmtclass]):
-    """
-    A mgmtclass provides a container for management resources.
-    """
-
-    @staticmethod
-    def collection_type() -> str:
-        return "mgmtclass"
-
-    @staticmethod
-    def collection_types() -> str:
-        return "mgmtclasses"
-
-    def factory_produce(self, api: "CobblerAPI", seed_data: Dict[str, Any]):
-        """
-        Return a mgmtclass forged from seed_data
-
-        :param api: Parameter is skipped.
-        :param seed_data: Data to seed the object with.
-        :returns: The created object.
-        """
-        return mgmtclass.Mgmtclass(self.api, **seed_data)
-
-    def remove(
-        self,
-        name: str,
-        with_delete: bool = True,
-        with_sync: bool = True,
-        with_triggers: bool = True,
-        recursive: bool = False,
-    ) -> None:
-        """
-        Remove element named 'name' from the collection
-
-        :raises CX: In case the object does not exist.
-        """
-        obj = self.find(name=name)
-
-        if obj is None:
-            raise CX(f"cannot delete an object that does not exist: {name}")
-
-        if isinstance(obj, list):
-            # Will never happen, but we want to make mypy happy.
-            raise CX("Ambiguous match detected!")
-
-        if with_delete:
-            if with_triggers:
-                utils.run_triggers(
-                    self.api,
-                    obj,
-                    "/var/lib/cobbler/triggers/delete/mgmtclass/pre/*",
-                    [],
-                )
-
-        with self.lock:
-            del self.listing[name]
-        self.collection_mgr.serialize_delete(self, obj)
-
-        if with_delete:
-            if with_triggers:
-                utils.run_triggers(
-                    self.api,
-                    obj,
-                    "/var/lib/cobbler/triggers/delete/mgmtclass/post/*",
-                    [],
-                )
-                utils.run_triggers(
-                    self.api, obj, "/var/lib/cobbler/triggers/change/*", []
-                )
diff --git a/cobbler/cobbler_collections/packages.py b/cobbler/cobbler_collections/packages.py
deleted file mode 100644
index 0fd8131d1b..0000000000
--- a/cobbler/cobbler_collections/packages.py
+++ /dev/null
@@ -1,83 +0,0 @@
-"""
-Cobbler module that at runtime holds all packages in Cobbler.
-"""
-
-# SPDX-License-Identifier: GPL-2.0-or-later
-# SPDX-FileCopyrightText: Copyright 2010, Kelsey Hightower <kelsey.hightower@gmail.com>
-
-from typing import TYPE_CHECKING, Any, Dict
-
-from cobbler import utils
-from cobbler.cexceptions import CX
-from cobbler.cobbler_collections import collection
-from cobbler.items import package
-
-if TYPE_CHECKING:
-    from cobbler.api import CobblerAPI
-
-
-class Packages(collection.Collection[package.Package]):
-    """
-    A package provides a container for package resources.
-    """
-
-    @staticmethod
-    def collection_type() -> str:
-        return "package"
-
-    @staticmethod
-    def collection_types() -> str:
-        return "packages"
-
-    def factory_produce(
-        self, api: "CobblerAPI", seed_data: Dict[str, Any]
-    ) -> package.Package:
-        """
-        Return a Package forged from seed_data.
-
-        :param api: Parameter is skipped.
-        :param seed_data: Data to seed the object with.
-        :returns: The created object.
-        """
-        return package.Package(self.api, **seed_data)
-
-    def remove(
-        self,
-        name: str,
-        with_delete: bool = True,
-        with_sync: bool = True,
-        with_triggers: bool = True,
-        recursive: bool = False,
-    ):
-        """
-        Remove element named 'name' from the collection
-
-        :raises CX: In case the object does not exist.
-        """
-        obj = self.find(name=name)
-
-        if obj is None:
-            raise CX(f"cannot delete an object that does not exist: {name}")
-
-        if isinstance(obj, list):
-            # Will never happen, but we want to make mypy happy.
-            raise CX("Ambiguous match detected!")
-
-        if with_delete:
-            if with_triggers:
-                utils.run_triggers(
-                    self.api, obj, "/var/lib/cobbler/triggers/delete/package/pre/*", []
-                )
-
-        with self.lock:
-            del self.listing[name]
-        self.collection_mgr.serialize_delete(self, obj)
-
-        if with_delete:
-            if with_triggers:
-                utils.run_triggers(
-                    self.api, obj, "/var/lib/cobbler/triggers/delete/package/post/*", []
-                )
-                utils.run_triggers(
-                    self.api, obj, "/var/lib/cobbler/triggers/change/*", []
-                )
diff --git a/cobbler/configgen.py b/cobbler/configgen.py
index 3079b2cc29..9aeb602540 100644
--- a/cobbler/configgen.py
+++ b/cobbler/configgen.py
@@ -1,8 +1,7 @@
 """
 configgen.py: Generate configuration data.
 
-module for generating configuration manifest using autoinstall_meta data, mgmtclasses, resources, and templates for a
-given system (hostname)
+module for generating configuration manifest using autoinstall_meta data and templates for a given system (hostname)
 """
 
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,10 +9,9 @@
 
 import json
 import string
-from typing import TYPE_CHECKING, Any, Dict, List, Set, Union
+from typing import TYPE_CHECKING, Any, Dict, List, Union
 
-from cobbler import template_api, utils
-from cobbler.cexceptions import CX
+from cobbler import utils
 
 if TYPE_CHECKING:
     from cobbler.api import CobblerAPI
@@ -26,7 +24,7 @@
 
 class ConfigGen:
     """
-    Generate configuration data for Cobbler's management resources: repos, files and packages.
+    Generate configuration data for Cobbler's management resource "repos".
     Mainly used by Koan to configure systems.
     """
 
@@ -45,7 +43,6 @@ def __init__(self, cobbler_api: "CobblerAPI", hostname: str):
         self.system = target_system
         # This below var needs a dict but the method may possibly return an empty str.
         self.host_vars = self.get_cobbler_resource("autoinstall_meta")
-        self.mgmtclasses = self.get_cobbler_resource("mgmt_classes")
 
     # ----------------------------------------------------------------------
 
@@ -83,74 +80,15 @@ def get_cobbler_resource(
 
     def gen_config_data(self) -> Dict[Any, Any]:
         """
-        Generate configuration data for repos, files and packages.
+        Generate configuration data for repos.
 
         :return: A dict which has all config data in it.
-        :raises CX: In case the package or file resource is not defined.
         """
         config_data = {
             "repo_data": self.__api.get_repo_config_for_system(self.system),
             "repos_enabled": self.get_cobbler_resource("repos_enabled"),
         }
-        package_set: Set[str] = set()
-        file_set: Set[str] = set()
-
-        for mgmtclass in self.mgmtclasses:
-            _mgmtclass = self.__api.find_mgmtclass(name=mgmtclass)
-            if _mgmtclass is None or isinstance(_mgmtclass, list):
-                raise ValueError("Ambigous or no search result!")
-            for package in _mgmtclass.packages:
-                package_set.add(package)
-            for file in _mgmtclass.files:
-                file_set.add(file)
-
-        # Generate Package data
-        pkg_data: Dict[str, Dict[str, str]] = {}
-        for package in package_set:
-            _package = self.__api.find_package(name=package)
-            if _package is None or isinstance(_package, list):
-                raise CX(f"{package} package resource is not defined")
-            pkg_data[package] = {}
-            pkg_data[package]["action"] = self.resolve_resource_var(_package.action)
-            pkg_data[package]["installer"] = _package.installer
-            pkg_data[package]["version"] = self.resolve_resource_var(_package.version)
-            if pkg_data[package]["version"] != "":
-                pkg_data[package][
-                    "install_name"
-                ] = f"{package}-{pkg_data[package]['version']}"
-            else:
-                pkg_data[package]["install_name"] = package
-        config_data["packages"] = pkg_data
-
-        # Generate File data
-        file_data: Dict[str, Dict[str, Union[str, bool]]] = {}
-        for file in file_set:
-            _file = self.__api.find_file(name=file)
-
-            if _file is None or isinstance(_file, list):
-                raise CX(f"{file} file resource is not defined")
-
-            file_data[file] = {}
-            file_data[file]["is_dir"] = _file.is_dir
-            file_data[file]["action"] = self.resolve_resource_var(_file.action)
-            file_data[file]["group"] = self.resolve_resource_var(_file.group)
-            file_data[file]["mode"] = self.resolve_resource_var(_file.mode)
-            file_data[file]["owner"] = self.resolve_resource_var(_file.owner)
-            file_data[file]["path"] = self.resolve_resource_var(_file.path)
-
-            if not _file.is_dir:
-                file_data[file]["template"] = self.resolve_resource_var(_file.template)
-                try:
-                    template_api_instance = template_api.CobblerTemplate(
-                        file=file_data[file]["template"], searchList=[self.host_vars]
-                    )
-                    file_data[file]["content"] = template_api_instance.respond()  # type: ignore
-                except Exception as exception:
-                    raise ValueError(
-                        f"Missing template for this file resource {file_data[file]}"
-                    ) from exception
-
-        config_data["files"] = file_data
+
         return config_data
 
     # ----------------------------------------------------------------------
diff --git a/cobbler/enums.py b/cobbler/enums.py
index eec013a5c6..cb97242138 100644
--- a/cobbler/enums.py
+++ b/cobbler/enums.py
@@ -97,18 +97,6 @@ class ItemTypes(ConvertableEnum):
     """
     See :func:`~cobbler.items.image.Image`
     """
-    MGMTCLASS = "mgmtclass"
-    """
-    See :func:`~cobbler.items.mgmtclass.Mgmtclass`
-    """
-    PACKAGE = "package"
-    """
-    See :func:`~cobbler.items.package.Package`
-    """
-    FILE = "file"
-    """
-    See :func:`~cobbler.items.file.File`
-    """
     MENU = "menu"
     """
     See :func:`~cobbler.items.menu.Menu`
diff --git a/cobbler/items/file.py b/cobbler/items/file.py
deleted file mode 100644
index 479ac66895..0000000000
--- a/cobbler/items/file.py
+++ /dev/null
@@ -1,174 +0,0 @@
-"""
-Cobbler module that contains the code for a Cobbler file object.
-
-Changelog:
-
-V3.4.0 (unreleased):
-    * Changed:
-        * Constructor: ``kwargs`` can now be used to seed the item during creation.
-        * ``from_dict()``: The method was moved to the base class.
-V3.3.4 (unreleased):
-    * No changes
-V3.3.3:
-    * No changes
-V3.3.2:
-    * No changes
-V3.3.1:
-    * No changes
-V3.3.0:
-    * This release switched from pure attributes to properties (getters/setters).
-    * Moved to base classes (Resource/Item):
-        * ``uid``: str
-        * ``depth``: float
-        * ``comment``: str
-        * ``ctime``: float
-        * ``mtime``: float
-        * ``owners``: Union[list, SETTINGS:default_ownership]
-        * ``name``: str
-        * ``action``: str
-        * ``group``: str
-        * ``mode``: str
-        * ``owner``: str
-        * ``path``: str
-        * ``template``: str
-    * Removed:
-        * ``get_fields()``
-        * ``set_is_dir()``
-V3.2.2:
-    * No changes
-V3.2.1:
-    * No changes
-V3.2.0:
-    * No changes
-V3.1.2:
-    * No changes
-V3.1.1:
-    * No changes
-V3.1.0:
-    * No changes
-V3.0.1:
-    * No changes
-V3.0.0:
-    * Added:
-        * ``set_is_dir()``
-V2.8.5:
-    * Inital tracking of changes for the changelog.
-    * Added:
-        * ``uid``: str
-        * ``depth``: float
-        * ``comment``: str
-        * ``ctime``: float
-        * ``mtime``: float
-        * ``owners``: Union[list, SETTINGS:default_ownership]
-        * ``name``: str
-        * ``is_dir``: bool
-        * ``action``: str
-        * ``group``: str
-        * ``mode``: str
-        * ``owner``: str
-        * ``path``: str
-        * ``template``: str
-"""
-
-# SPDX-License-Identifier: GPL-2.0-or-later
-# SPDX-FileCopyrightText: Copyright 2006-2009, Red Hat, Inc and Others
-# SPDX-FileCopyrightText: Kelsey Hightower <kelsey.hightower@gmail.com>
-
-import copy
-from typing import TYPE_CHECKING, Any
-
-from cobbler.cexceptions import CX
-from cobbler.decorator import LazyProperty
-from cobbler.items import resource
-from cobbler.utils import input_converters
-
-if TYPE_CHECKING:
-    from cobbler.api import CobblerAPI
-
-
-class File(resource.Resource):
-    """
-    A Cobbler file object.
-    """
-
-    TYPE_NAME = "file"
-    COLLECTION_TYPE = "file"
-
-    def __init__(self, api: "CobblerAPI", *args: Any, **kwargs: Any) -> None:
-        """
-        Constructor.
-
-        :param api: The Cobbler API object which is used for resolving information.
-        """
-        super().__init__(api)
-        # Prevent attempts to clear the to_dict cache before the object is initialized.
-        self._has_initialized = False
-
-        self._is_dir = False
-
-        if len(kwargs) > 0:
-            self.from_dict(kwargs)
-        if not self._has_initialized:
-            self._has_initialized = True
-
-    #
-    # override some base class methods first (item.Item)
-    #
-
-    def make_clone(self) -> "File":
-        """
-        Clone this file object. Please manually adjust all values yourself to make the cloned object unique.
-
-        :return: The cloned instance of this object.
-        """
-        _dict = copy.deepcopy(self.to_dict())
-        _dict.pop("uid", None)
-        return File(self.api, **_dict)
-
-    def check_if_valid(self) -> None:
-        """
-        Checks if the object is valid. This is the case if name, path, owner, group, and mode are set.
-        Templates are only required for files if ``is_dir`` is true then template is not required.
-
-        :raises CX: Raised in case a required argument is missing
-        """
-        super().check_if_valid()
-        if not self.inmemory:
-            return
-        if not self.path:
-            raise CX("path is required")
-        if not self.owner:
-            raise CX("owner is required")
-        if not self.group:
-            raise CX("group is required")
-        if not self.mode:
-            raise CX("mode is required")
-        if not self.is_dir and self.template == "":
-            raise CX("Template is required when not a directory")
-
-    #
-    # specific methods for item.File
-    #
-
-    @LazyProperty
-    def is_dir(self) -> bool:
-        """
-        Is this a directory or not.
-
-        :getter: Returns the value of ``is_dir``
-        :setter: Sets the value of ``is_dir``. Raises a TypeError in case value is not a boolean.
-        """
-        return self._is_dir
-
-    @is_dir.setter
-    def is_dir(self, is_dir: bool) -> None:
-        """
-        If true, treat file resource as a directory. Templates are ignored.
-
-        :param is_dir: This is the path to check if it is a directory.
-        :raises TypeError: Raised in case ``is_dir`` is not a boolean.
-        """
-        is_dir = input_converters.input_boolean(is_dir)
-        if not isinstance(is_dir, bool):  # type: ignore
-            raise TypeError("Field is_dir in object file needs to be of type bool!")
-        self._is_dir = is_dir
diff --git a/cobbler/items/item.py b/cobbler/items/item.py
index a640583dd0..23c9a32532 100644
--- a/cobbler/items/item.py
+++ b/cobbler/items/item.py
@@ -14,6 +14,9 @@
         * ``logical_parent`` was added.
         * ``get_parent()`` was added which returns the internal reference that is used to return the object of the
           ``parent`` property.
+    * Removed:
+        * mgmt_classes
+        * mgmt_parameters
 V3.3.4 (unreleased):
     * No changes
 V3.3.3:
@@ -142,18 +145,6 @@ class Item:
     # Used to determine descendants and cache invalidation.
     # Format: {"Item Type": [("Dependent Item Type", "Dependent Type attribute"), ..], [..]}
     TYPE_DEPENDENCIES: Dict[str, List[Tuple[str, str]]] = {
-        "package": [
-            ("mgmtclass", "packages"),
-        ],
-        "file": [
-            ("mgmtclass", "files"),
-            ("image", "file"),
-        ],
-        "mgmtclass": [
-            ("distro", "mgmt_classes"),
-            ("profile", "mgmt_classes"),
-            ("system", "mgmt_classes"),
-        ],
         "repo": [
             ("profile", "repos"),
         ],
@@ -332,8 +323,6 @@ def __init__(self, api: "CobblerAPI", is_subobject: bool = False, **kwargs: Any)
         self._last_cached_mtime = 0
         self._owners: Union[List[Any], str] = enums.VALUE_INHERITED
         self._cache: ItemCache = ItemCache(api)
-        self._mgmt_classes: Union[List[Any], str] = enums.VALUE_INHERITED
-        self._mgmt_parameters: Union[Dict[Any, Any], str] = {}
         self._is_subobject = is_subobject
         self._inmemory = True
 
@@ -723,66 +712,6 @@ def autoinstall_meta(self, options: Dict[Any, Any]):
         # pyright doesn't understand that the only valid str return value is this constant.
         self._autoinstall_meta = self._deduplicate_dict("autoinstall_meta", value)  # type: ignore
 
-    @InheritableProperty
-    def mgmt_classes(self) -> List[Any]:
-        """
-        Assigns a list of configuration management classes that can be assigned to any object, such as those used by
-        Puppet's external_nodes feature.
-
-        .. note:: This property can be set to ``<<inherit>>``.
-
-        :getter: An empty list or the list of mgmt_classes.
-        :setter: Will split this according to :meth:`~cobbler.utils.input_string_or_list`.
-        """
-        return self._resolve("mgmt_classes")
-
-    @mgmt_classes.setter  # type: ignore[no-redef]
-    def mgmt_classes(self, mgmt_classes: Union[List[Any], str]):
-        """
-        Setter for the ``mgmt_classes`` property.
-
-        :param mgmt_classes: The new options for the management classes of an item.
-        """
-        if not isinstance(mgmt_classes, (str, list)):  # type: ignore
-            raise TypeError("mgmt_classes has to be either str or list")
-        self._mgmt_classes = input_converters.input_string_or_list(mgmt_classes)
-
-    @InheritableDictProperty
-    def mgmt_parameters(self) -> Dict[Any, Any]:
-        """
-        Parameters which will be handed to your management application (Must be a valid YAML dictionary)
-
-        .. note:: This property can be set to ``<<inherit>>``.
-
-        :getter: The mgmt_parameters or an empty dict.
-        :setter: A YAML string which can be assigned to any object, this is used by Puppet's external_nodes feature.
-        """
-        return self._resolve_dict("mgmt_parameters")
-
-    @mgmt_parameters.setter  # type: ignore[no-redef]
-    def mgmt_parameters(self, mgmt_parameters: Union[str, Dict[Any, Any]]):
-        """
-        A YAML string which can be assigned to any object, this is used by Puppet's external_nodes feature.
-
-        :param mgmt_parameters: The management parameters for an item.
-        :raises TypeError: In case the parsed YAML isn't of type dict afterwards.
-        """
-        if not isinstance(mgmt_parameters, (str, dict)):  # type: ignore
-            raise TypeError("mgmt_parameters must be of type str or dict")
-        if isinstance(mgmt_parameters, str):
-            if mgmt_parameters == enums.VALUE_INHERITED:
-                self._mgmt_parameters = enums.VALUE_INHERITED
-                return
-            if mgmt_parameters == "":
-                self._mgmt_parameters = {}
-                return
-            mgmt_parameters = yaml.safe_load(mgmt_parameters)
-            if not isinstance(mgmt_parameters, dict):
-                raise TypeError(
-                    "Input YAML in Puppet Parameter field must evaluate to a dictionary."
-                )
-        self._mgmt_parameters = mgmt_parameters
-
     @LazyProperty
     def template_files(self) -> Dict[Any, Any]:
         """
diff --git a/cobbler/items/mgmtclass.py b/cobbler/items/mgmtclass.py
deleted file mode 100644
index c203e8e0a1..0000000000
--- a/cobbler/items/mgmtclass.py
+++ /dev/null
@@ -1,240 +0,0 @@
-"""
-Cobbler module that contains the code for a Cobbler mgmtclass object.
-
-Changelog:
-
-V3.4.0 (unreleased):
-    * Changed:
-        * ``from_dict()``: The method was moved to the base class (Item)
-V3.3.4 (unreleased):
-    * No changes
-V3.3.3:
-    * Changed:
-        * ``check_if_valid()``: The method was moved to the base class (Item)
-V3.3.2:
-    * No changes
-V3.3.1:
-    * No changes
-V3.3.0:
-    * This release switched from pure attributes to properties (getters/setters).
-    * Moved to base class (Item):
-        * ``ctime``: int
-        * ``depth``: float
-        * ``mtime``: int
-        * ``uid``: str
-        * ``comment``: str
-        * ``name``: str
-        * ``owners``: Union[list, SETTINGS:default_ownership]
-    * Removed:
-        * ``get_fields()``
-        * ``set_packages()`` - Please use the property ``packages``
-        * ``set_files()`` - Please use the property ``files``
-        * ``set_params()`` - Please use the property ``params``
-        * ``set_is_definition()`` - Please use the property ``is_definition``
-        * ``set_class_name()`` - Please use the property ``class_name``
-V3.2.2:
-    * No changes
-V3.2.1:
-    * No changes
-V3.2.0:
-    * No changes
-V3.1.2:
-    * No changes
-V3.1.1:
-    * No changes
-V3.1.0:
-    * No changes
-V3.0.1:
-    * No changes
-V3.0.0:
-    * No changes
-V2.8.5:
-    * Inital tracking of changes for the changelog.
-    * Added:
-        * ``ctime``: int
-        * ``depth``: float
-        * ``is_definition``: bool
-        * ``mtime``: int
-        * ``uid``: str
-        * ``class_name``: str
-        * ``comment``: str
-        * ``files``: list
-        * ``name``: str
-        * ``owners``: Union[list, SETTINGS:default_ownership]
-        * ``packages``: list
-        * ``params``: dict
-"""
-
-# SPDX-License-Identifier: GPL-2.0-or-later
-# SPDX-FileCopyrightText: Copyright 2010, Kelsey Hightower <kelsey.hightower@gmail.com>
-
-import copy
-from typing import TYPE_CHECKING, Any, Dict, List, Union
-
-from cobbler.decorator import LazyProperty
-from cobbler.items import item
-from cobbler.utils import input_converters
-
-if TYPE_CHECKING:
-    from cobbler.api import CobblerAPI
-
-
-class Mgmtclass(item.Item):
-    """
-    This represents a group of systems which are related in Puppet through ``Classes``.
-    """
-
-    TYPE_NAME = "mgmtclass"
-    COLLECTION_TYPE = "mgmtclass"
-
-    def __init__(self, api: "CobblerAPI", *args: Any, **kwargs: Any) -> None:
-        """
-        Constructor.
-
-        :param api: The Cobbler API object which is used for resolving information.
-        """
-        super().__init__(api)
-        # Prevent attempts to clear the to_dict cache before the object is initialized.
-        self._has_initialized = False
-
-        self._is_definition = False
-        self._params: Dict[str, Any] = {}
-        self._class_name = ""
-        self._files: List[str] = []
-        self._packages: List[str] = []
-
-        if len(kwargs) > 0:
-            self.from_dict(kwargs)
-        if not self._has_initialized:
-            self._has_initialized = True
-
-    #
-    # override some base class methods first (item.Item)
-    #
-
-    def make_clone(self) -> "Mgmtclass":
-        """
-        Clone this file object. Please manually adjust all value yourself to make the cloned object unique.
-
-        :return: The cloned instance of this object.
-        """
-
-        _dict = copy.deepcopy(self.to_dict())
-        _dict.pop("uid", None)
-        return Mgmtclass(self.api, **_dict)
-
-    #
-    # specific methods for item.Mgmtclass
-    #
-
-    @LazyProperty
-    def packages(self) -> List[str]:
-        """
-        Packages property.
-
-        :getter: Returns the value for ``packages``.
-        :setter: Sets the value for the property ``packagges``.
-        """
-        return self._packages
-
-    @packages.setter
-    def packages(self, packages: List[str]) -> None:
-        """
-        Setter for the packages of the management class.
-
-        :param packages: A string or list which contains the new packages.
-        """
-        self._packages = input_converters.input_string_or_list_no_inherit(packages)
-
-    @LazyProperty
-    def files(self) -> List[str]:
-        """
-        Files property.
-
-        :getter: Returns the value for ``files``.
-        :setter: Sets the value for the property ``files``.
-        """
-        return self._files
-
-    @files.setter
-    def files(self, files: Union[str, List[str]]) -> None:
-        """
-        Setter for the files of the object.
-
-        :param files: A string or list which contains the new files.
-        """
-        self._files = input_converters.input_string_or_list_no_inherit(files)
-
-    @LazyProperty
-    def params(self) -> Dict[str, Any]:
-        """
-        Params property.
-
-        :getter: Returns the value for ``params``.
-        :setter: Sets the value for the property ``params``. Raises a TypeError in case of invalid parameters.
-        """
-        return self._params
-
-    @params.setter
-    def params(self, params: Dict[str, Any]) -> None:
-        """
-        Setter for the params of the management class.
-
-        :param params: The new params for the object.
-        :raises TypeError: Raised in case ``params`` is invalid.
-        """
-        try:
-            self._params = input_converters.input_string_or_dict_no_inherit(
-                params, allow_multiples=True
-            )
-        except TypeError as error:
-            raise TypeError("invalid value for params") from error
-
-    @LazyProperty
-    def is_definition(self) -> bool:
-        """
-        Is_definition property.
-
-        :getter: Returns the value for ``is_definition``.
-        :setter: Sets the value for property ``is_defintion``. Raises a TypeError if not from type boolean.
-        """
-        return self._is_definition
-
-    @is_definition.setter
-    def is_definition(self, isdef: bool) -> None:
-        """
-        Setter for property ``is_defintion``.
-
-        :param isdef: The new value for the property.
-        :raises TypeError: Raised in case ``isdef`` is not a boolean.
-        """
-        isdef = input_converters.input_boolean(isdef)
-        if not isinstance(isdef, bool):  # type: ignore
-            raise TypeError("Field is_defintion from mgmtclass must be of type bool.")
-        self._is_definition = isdef
-
-    @LazyProperty
-    def class_name(self) -> str:
-        """
-        The name of the management class.
-
-        :getter: Returns the class name.
-        :setter: Sets the name of the management class. Raises a TypeError or a Value Error.
-        """
-        return self._class_name
-
-    @class_name.setter
-    def class_name(self, name: str) -> None:
-        """
-        Setter for the name of the management class.
-
-        :param name: The new name of the class. This must not contain "_", "-", ".", ":" or "+".
-        :raises TypeError: Raised in case ``name`` is not a string.
-        :raises ValueError: Raised in case ``name`` contains invalid characters.
-        """
-        if not isinstance(name, str):  # type: ignore
-            raise TypeError("class name must be a string")
-        for letter in name:
-            if not letter.isalnum() and letter not in ["_", "-", ".", ":", "+"]:
-                raise ValueError(f"invalid characters in class name: '{name}'")
-        self._class_name = name
diff --git a/cobbler/items/package.py b/cobbler/items/package.py
deleted file mode 100644
index 71dc84276a..0000000000
--- a/cobbler/items/package.py
+++ /dev/null
@@ -1,171 +0,0 @@
-"""
-Cobbler module that contains the code for a Cobbler package object.
-
-Changelog:
-
-V3.4.0 (unreleased):
-    * Changes:
-        * Constructor: ``kwargs`` can now be used to seed the item during creation.
-        * ``from_dict()``: The method was moved to the base class.
-V3.3.4 (unreleased):
-    * No changes
-V3.3.3:
-    * Changed:
-        * ``check_if_valid()``: Now present in base class (Item).
-V3.3.2:
-    * No changes
-V3.3.1:
-    * No changes
-V3.3.0:
-    * This release switched from pure attributes to properties (getters/setters).
-    * Added:
-        * ``from_dict()``
-    * Moved to base classes (Resource & Item):
-        * ctime: float
-        * depth: float
-        * mtime: float
-        * uid: str
-        * action: str
-        * comment: str
-        * name: str
-        * owners: Union[list, SETTINGS:default_ownership]
-    * Removed:
-        * ``get_fields()``
-V3.2.2:
-    * No changes
-V3.2.1:
-    * No changes
-V3.2.0:
-    * No changes
-V3.1.2:
-    * No changes
-V3.1.1:
-    * No changes
-V3.1.0:
-    * No changes
-V3.0.1:
-    * File was moved from ``cobbler/item_package.py`` to ``cobbler/items/package.py``.
-V3.0.0:
-    * Added:
-        * ``set_installer()``
-        * ``set_version()``
-V2.8.5:
-    * Inital tracking of changes for the changelog.
-    * Added:
-        * ctime: float
-        * depth: float
-        * mtime: float
-        * uid: str
-        * action: str
-        * comment: str
-        * installer: str
-        * name: str
-        * owners: Union[list, SETTINGS:default_ownership]
-        * version: str
-"""
-
-# SPDX-License-Identifier: GPL-2.0-or-later
-# SPDX-FileCopyrightText: Copyright 2006-2009, Red Hat, Inc and Others
-# SPDX-FileCopyrightText: Kelsey Hightower <kelsey.hightower@gmail.com>
-
-import copy
-from typing import TYPE_CHECKING, Any
-
-from cobbler.decorator import LazyProperty
-from cobbler.items import resource
-
-if TYPE_CHECKING:
-    from cobbler.api import CobblerAPI
-
-
-class Package(resource.Resource):
-    """
-    This class represents a package which is being installed on a system.
-    """
-
-    TYPE_NAME = "package"
-    COLLECTION_TYPE = "package"
-
-    def __init__(self, api: "CobblerAPI", *args: Any, **kwargs: Any) -> None:
-        """
-        Constructor
-
-        :param api: The Cobbler API object which is used for resolving information.
-        :param item_dict: Dictionary of properties to initialize the object.
-        """
-        super().__init__(api)
-        # Prevent attempts to clear the to_dict cache before the object is initialized.
-        self._has_initialized = False
-
-        self._installer = ""
-        self._version = ""
-
-        if len(kwargs) > 0:
-            self.from_dict(kwargs)
-        if not self._has_initialized:
-            self._has_initialized = True
-
-    #
-    # override some base class methods first (item.Item)
-    #
-
-    def make_clone(self):
-        """
-        Clone this package object. Please manually adjust all value yourself to make the cloned object unique.
-
-        :return: The cloned instance of this object.
-        """
-        _dict = copy.deepcopy(self.to_dict())
-        _dict.pop("uid", None)
-        return Package(self.api, **_dict)
-
-    #
-    # specific methods for item.Package
-    #
-
-    @LazyProperty
-    def installer(self) -> str:
-        """
-        Installer property.
-
-        :getter: Returns the value for ``installer``.
-        :setter: Sets the value for property ``installer``. Raises a TypeError if ``installer`` is no string.
-        """
-        return self._installer
-
-    @installer.setter
-    def installer(self, installer: str):
-        """
-        Setter for the installer parameter.
-
-        :param installer: This parameter will be lowercased regardless of what string you give it.
-        :raises TypeError: Raised in case ``installer`` is no string.
-        """
-        if not isinstance(installer, str):  # type: ignore
-            raise TypeError(
-                "Field installer of package object needs to be of type str!"
-            )
-        self._installer = installer.lower()
-
-    @LazyProperty
-    def version(self) -> str:
-        """
-        Version property.
-
-        :getter: Returns the value for ``version``.
-        :setter: Sets the value for property ``version``. Raises a TypeError in case ``version`` is no string.
-        """
-        return self._version
-
-    @version.setter
-    def version(self, version: str):
-        """
-        Setter for the package version.
-
-        :param version: They may be anything which is suitable for describing the version of a package. Internally this
-                        is a string.
-        :raises TypeError: Raised in case ``version`` is no string.
-        """
-        if not isinstance(version, str):  # type: ignore
-            raise TypeError("Field version of package object needs to be of type str!")
-        self._version = version
diff --git a/cobbler/items/profile.py b/cobbler/items/profile.py
index 5a6cf13ae1..302660db49 100644
--- a/cobbler/items/profile.py
+++ b/cobbler/items/profile.py
@@ -226,8 +226,6 @@ def __init__(self, api: "CobblerAPI", *args: Any, **kwargs: Any) -> None:
         self._autoinstall_meta: Union[Dict[Any, Any], str] = enums.VALUE_INHERITED
         self._kernel_options: Union[Dict[Any, Any], str] = enums.VALUE_INHERITED
         self._kernel_options_post: Union[Dict[Any, Any], str] = enums.VALUE_INHERITED
-        self._mgmt_classes: Union[List[Any], str] = enums.VALUE_INHERITED
-        self._mgmt_parameters: Union[Dict[Any, Any], str] = enums.VALUE_INHERITED
 
         if self._is_subobject:
             self._filename = enums.VALUE_INHERITED
diff --git a/cobbler/items/resource.py b/cobbler/items/resource.py
deleted file mode 100644
index 18c67d965b..0000000000
--- a/cobbler/items/resource.py
+++ /dev/null
@@ -1,248 +0,0 @@
-"""
-A Resource is a serializable thing that can appear in a Collection
-
-Changelog:
-
-V3.4.0 (unreleased):
-    * No changes
-V3.3.4 (unreleased):
-    * No changes
-V3.3.3:
-    * No changes
-V3.3.2:
-    * No changes
-V3.3.1:
-    * No changes
-V3.3.0:
-    * This release switched from pure attributes to properties (getters/setters).
-    * File was moved from ``cobbler/resource.py`` to ``cobbler/items/resource.py``.
-    * Added:
-        * action: enums.ResourceAction
-        * mode: str
-        * owner: str
-        * group: str
-        * path: str
-        * template: str
-    * Removed:
-        * ``set_template`` - Please use the property ``template``
-        * ``set_path`` - Please use the property ``path``
-        * ``set_owner`` - Please use the property ``owner``
-        * ``set_mode`` - Please use the property ``mode``
-        * ``set_group`` - Please use the property ``group``
-        * ``set_action`` - Please use the property ``action``
-V3.2.2:
-    * No changes
-V3.2.1:
-    * No changes
-V3.2.0:
-    * No changes
-V3.1.2:
-    * No changes
-V3.1.1:
-    * No changes
-V3.1.0:
-    * No changes
-V3.0.1:
-    * No changes
-V3.0.0:
-    * No changes
-V2.8.5:
-    * Inital tracking of changes for the changelog.
-
-"""
-
-# SPDX-License-Identifier: GPL-2.0-or-later
-# SPDX-FileCopyrightText: Copyright 2006-2009, Red Hat, Inc and Others
-# SPDX-FileCopyrightText: Kelsey Hightower <kelsey.hightower@gmail.com>
-
-import copy
-from typing import TYPE_CHECKING, Any, Union
-
-from cobbler import enums
-from cobbler.decorator import LazyProperty
-from cobbler.items import item
-
-if TYPE_CHECKING:
-    from cobbler.api import CobblerAPI
-
-
-class Resource(item.Item):
-    """
-    Base Class for management resources.
-    """
-
-    def __init__(self, api: "CobblerAPI", *args: Any, **kwargs: Any) -> None:
-        """
-        Constructor.
-
-        :param api: The Cobbler API object which is used for resolving information.
-        """
-        super().__init__(api)
-        # Prevent attempts to clear the to_dict cache before the object is initialized.
-        self._has_initialized = False
-
-        self._action = enums.ResourceAction.CREATE
-        self._mode = ""
-        self._owner = ""
-        self._group = ""
-        self._path = ""
-        self._template = ""
-
-        if len(kwargs) > 0:
-            self.from_dict(kwargs)
-        if not self._has_initialized:
-            self._has_initialized = True
-
-    #
-    # override some base class methods first (item.Item)
-    #
-
-    def make_clone(self) -> "Resource":
-        """
-        Clone this file object. Please manually adjust all values yourself to make the cloned object unique.
-
-        :return: The cloned instance of this object.
-        """
-        _dict = copy.deepcopy(self.to_dict())
-        _dict.pop("uid", None)
-        return Resource(self.api, **_dict)
-
-    #
-    # specific methods for item.File
-    #
-
-    @LazyProperty
-    def action(self) -> enums.ResourceAction:
-        """
-        Action property.
-
-        :getter: Return the value for ``action``.
-        :setter: Sets the value for property ``action``. Raises a ValueError or a TypeError.
-        """
-        return self._action
-
-    @action.setter
-    def action(self, action: Union[str, enums.ResourceAction]) -> None:
-        """
-        All management resources have an action. Actions determine weather most resources should be created or removed,
-        and if packages should be installed or uninstalled.
-
-        :param action: The action which should be executed for the management resource. Must be of "create" or
-                       "remove". Parameter is case-insensitive.
-        :raise ValueError: Raised in case wrong value is provided.
-        :raise TypeError: Raised in case ``action`` is no ``enums.ResourceAction``.
-        """
-        self._action = enums.ResourceAction.to_enum(action)
-
-    @LazyProperty
-    def group(self) -> str:
-        """
-        Group property.
-
-        :getter: Return the value for ``group``.
-        :setter: Sets the value for property ``group``.
-        """
-        return self._group
-
-    @group.setter
-    def group(self, group: str) -> None:
-        """
-        Unix group ownership of a file or directory.
-
-        :param group: The group which the resource will belong to.
-        :raise TypeError: Raised in case ``group`` is no string. Raises a TypeError.
-        """
-        if not isinstance(group, str):  # type: ignore
-            raise TypeError("Field group of object resource needs to be of type str!")
-        self._group = group
-
-    @LazyProperty
-    def mode(self) -> str:
-        """
-        Mode property.
-
-        :getter: Return the value for ``mode``.
-        :setter: Sets the value for property ``mode``. Raises a TypeError.
-        """
-        return self._mode
-
-    @mode.setter
-    def mode(self, mode: str) -> None:
-        """
-        Unix file permission mode ie: '0644' assigned to file and directory resources.
-
-        :param mode: The mode which the resource will have.
-        :raise TypeError: Raised in case ``mode`` is no string.
-        """
-        if not isinstance(mode, str):  # type: ignore
-            raise TypeError("Field mode in object resource needs to be of type str!")
-        self._mode = mode
-
-    @LazyProperty
-    def owner(self) -> str:
-        """
-        Owner property.
-
-        :getter: Return the value for ``owner``.
-        :setter: Sets the value for property ``owner``. Raises a TypeError.
-        """
-        return self._owner
-
-    @owner.setter
-    def owner(self, owner: str) -> None:
-        """
-        Unix owner of a file or directory.
-
-        :param owner: The owner whom the resource will belong to.
-        :raise TypeError: Raised in case ``owner`` is no string.
-        """
-        if not isinstance(owner, str):  # type: ignore
-            raise TypeError("Field owner in object resource needs to be of type str!")
-        self._owner = owner
-
-    @LazyProperty
-    def path(self) -> str:
-        """
-        Path property.
-
-        :getter: Return the value for ``path``.
-        :setter: Sets the value for property ``path``. Raises a TypeError.
-        """
-        return self._path
-
-    @path.setter
-    def path(self, path: str) -> None:
-        """
-        File path used by file and directory resources.
-
-        :param path: Normally an absolute path of the file or directory to create or manage.
-        :raise TypeError: Raised in case ``path`` is no string.
-        """
-        if not isinstance(path, str):  # type: ignore
-            raise TypeError("Field path in object resource needs to be of type str!")
-        self._path = path
-
-    @LazyProperty
-    def template(self) -> str:
-        """
-        Template property.
-
-        :getter: Return the value for ``template``.
-        :setter: Sets the value for property ``template``. Raises a TypeError.
-        """
-        return self._template
-
-    @template.setter
-    def template(self, template: str) -> None:
-        """
-        Path to cheetah template on Cobbler's local file system. Used to generate file data shipped to koan via json.
-        All templates have access to flatten autoinstall_meta data.
-
-        :param template: The template to use for the resource.
-        :raise TypeError: Raised in case ``template`` is no string.
-        """
-        if not isinstance(template, str):  # type: ignore
-            raise TypeError(
-                "Field template in object resource needs to be of type str!"
-            )
-        self._template = template
diff --git a/cobbler/items/system.py b/cobbler/items/system.py
index 617bde2258..1cc77274e9 100644
--- a/cobbler/items/system.py
+++ b/cobbler/items/system.py
@@ -1113,8 +1113,6 @@ def __init__(self, api: "CobblerAPI", *args: Any, **kwargs: Any) -> None:
         self._autoinstall_meta = enums.VALUE_INHERITED
         self._kernel_options = enums.VALUE_INHERITED
         self._kernel_options_post = enums.VALUE_INHERITED
-        self._mgmt_parameters = enums.VALUE_INHERITED
-        self._mgmt_classes = enums.VALUE_INHERITED
 
         if len(kwargs) > 0:
             self.from_dict(kwargs)
diff --git a/cobbler/modules/managers/genders.py b/cobbler/modules/managers/genders.py
index 30f4b7a3c1..e37edb6a39 100644
--- a/cobbler/modules/managers/genders.py
+++ b/cobbler/modules/managers/genders.py
@@ -116,19 +116,6 @@ def run(api: "CobblerAPI", args: Any) -> int:
         if distros_genders[dist.name] == "":
             distros_genders.pop(dist.name, None)
 
-    # mgmtclasses
-    for mgmtcls in api.mgmtclasses():
-        # create the key
-        mgmtcls_genders[mgmtcls.name] = ""
-        my_systems = api.find_system(mgmt_classes=mgmtcls.name, return_list=True)
-        if my_systems is None or not isinstance(my_systems, list):
-            raise ValueError("Search error!")
-        for system in my_systems:
-            mgmtcls_genders[mgmtcls.name] += system.name + ","
-        # remove a trailing comma
-        mgmtcls_genders[mgmtcls.name] = mgmtcls_genders[mgmtcls.name][:-1]
-        if mgmtcls_genders[mgmtcls.name] == "":
-            mgmtcls_genders.pop(mgmtcls.name, None)
     # The file doesn't exist and for some reason the template engine won't create it, so spit out an error and tell the
     # user what to do.
     if not os.path.isfile(SETTINGS_FILE):
diff --git a/cobbler/modules/managers/isc.py b/cobbler/modules/managers/isc.py
index 8667e02c04..b9d72fd765 100644
--- a/cobbler/modules/managers/isc.py
+++ b/cobbler/modules/managers/isc.py
@@ -178,7 +178,6 @@ def write_v4_config(
                 interface["owner"] = blended_system["name"]
                 interface["enable_ipxe"] = blended_system["enable_ipxe"]
                 interface["name_servers"] = blended_system["name_servers"]
-                interface["mgmt_parameters"] = blended_system["mgmt_parameters"]
 
                 # For esxi/UEFI export filename_esxi as path to efi bootloader
                 if distro and distro.os_version.startswith("esxi"):
@@ -360,7 +359,6 @@ def write_v6_config(
                 interface["hostname"] = blended_system["hostname"]
                 interface["owner"] = blended_system["name"]
                 interface["name_servers"] = blended_system["name_servers"]
-                interface["mgmt_parameters"] = blended_system["mgmt_parameters"]
 
                 # Explicitly declare filename for other (non x86) archs as in DHCP discover package mostly the
                 # architecture cannot be differed due to missing bits...
diff --git a/cobbler/remote.py b/cobbler/remote.py
index 82616f080e..7689afa10e 100644
--- a/cobbler/remote.py
+++ b/cobbler/remote.py
@@ -364,9 +364,6 @@ def runner(self: "CobblerThread"):
                 self.options.get("system_patterns", ""),
                 self.options.get("repo_patterns", ""),
                 self.options.get("image_patterns", ""),
-                self.options.get("mgmtclass_patterns", ""),
-                self.options.get("package_patterns", ""),
-                self.options.get("file_patterns", ""),
                 self.options.get("prune", False),
                 self.options.get("omit_data", False),
                 self.options.get("sync_all", False),
@@ -1024,69 +1021,6 @@ def get_image(
         """
         return self.get_item("image", name, flatten=flatten, resolved=resolved)
 
-    def get_mgmtclass(
-        self,
-        name: str,
-        flatten: bool = False,
-        resolved: bool = False,
-        token: Optional[str] = None,
-        **rest: Any,
-    ):
-        """
-        Get a management class.
-
-        :param name: The name of the management class to get.
-        :param flatten: If the item should be flattened.
-        :param resolved: If this is True, Cobbler will resolve the values to its final form, rather than give you the
-                         objects raw value.
-        :param token: The API-token obtained via the login() method. The API-token obtained via the login() method.
-        :param rest: Not used with this method currently.
-        :return: The item or None.
-        """
-        return self.get_item("mgmtclass", name, flatten=flatten, resolved=resolved)
-
-    def get_package(
-        self,
-        name: str,
-        flatten: bool = False,
-        resolved: bool = False,
-        token: Optional[str] = None,
-        **rest: Any,
-    ):
-        """
-        Get a package.
-
-        :param name: The name of the package to get.
-        :param flatten: If the item should be flattened.
-        :param resolved: If this is True, Cobbler will resolve the values to its final form, rather than give you the
-                         objects raw value.
-        :param token: The API-token obtained via the login() method. The API-token obtained via the login() method.
-        :param rest: Not used with this method currently.
-        :return: The item or None.
-        """
-        return self.get_item("package", name, flatten=flatten, resolved=resolved)
-
-    def get_file(
-        self,
-        name: str,
-        flatten: bool = False,
-        resolved: bool = False,
-        token: Optional[str] = None,
-        **rest: Any,
-    ):
-        """
-        Get a file.
-
-        :param name: The name of the file to get.
-        :param flatten: If the item should be flattened.
-        :param resolved: If this is True, Cobbler will resolve the values to its final form, rather than give you the
-                         objects raw value.
-        :param token: The API-token obtained via the login() method. The API-token obtained via the login() method.
-        :param rest: Not used with this method currently.
-        :return: The item or None.
-        """
-        return self.get_item("file", name, flatten=flatten, resolved=resolved)
-
     def get_menu(
         self,
         name: str,
@@ -1217,60 +1151,6 @@ def get_images(
         """
         return self.get_items("image")
 
-    def get_mgmtclasses(
-        self,
-        page: Any = None,
-        results_per_page: Any = None,
-        token: Optional[str] = None,
-        **rest: Any,
-    ) -> List[Dict[str, Any]]:
-        """
-        This returns all managementclasses.
-
-        :param page: This parameter is not used currently.
-        :param results_per_page: This parameter is not used currently.
-        :param token: The API-token obtained via the login() method. The API-token obtained via the login() method.
-        :param rest: This parameter is not used currently.
-        :return: The list of all managementclasses.
-        """
-        return self.get_items("mgmtclass")
-
-    def get_packages(
-        self,
-        page: Any = None,
-        results_per_page: Any = None,
-        token: Optional[str] = None,
-        **rest: Any,
-    ) -> List[Dict[str, Any]]:
-        """
-        This returns all packages.
-
-        :param page: This parameter is not used currently.
-        :param results_per_page: This parameter is not used currently.
-        :param token: The API-token obtained via the login() method. The API-token obtained via the login() method.
-        :param rest: This parameter is not used currently.
-        :return: The list of all packages tracked in Cobbler.
-        """
-        return self.get_items("package")
-
-    def get_files(
-        self,
-        page: Any = None,
-        results_per_page: Any = None,
-        token: Optional[str] = None,
-        **rest: Any,
-    ) -> List[Dict[str, Any]]:
-        """
-        This returns all files.
-
-        :param page: This parameter is not used currently.
-        :param results_per_page: This parameter is not used currently.
-        :param token: The API-token obtained via the login() method.
-        :param rest: This parameter is not used currently.
-        :return: The list of all files.
-        """
-        return self.get_items("file")
-
     def get_menus(
         self,
         page: Any = None,
@@ -1435,69 +1315,6 @@ def find_image(
         """
         return self.find_items("image", criteria, expand=expand, resolved=resolved)
 
-    def find_mgmtclass(
-        self,
-        criteria: Optional[Dict[str, Any]] = None,
-        expand: bool = False,
-        resolved: bool = False,
-        token: Optional[str] = None,
-        **rest: Any,
-    ) -> List[Any]:
-        """
-        Find a management class matching certain criteria.
-
-        :param criteria: The criteria a distribution needs to match.
-        :param expand: Not only get the names but also the complete object in form of a dict.
-        :param resolved: This only has an effect when ``expand = True``. It returns the resolved representation of the
-                         object instead of the raw data.
-        :param token: The API-token obtained via the login() method.
-        :param rest: This parameter is not used currently.
-        :return: All management classes which have matched the criteria.
-        """
-        return self.find_items("mgmtclass", criteria, expand=expand, resolved=resolved)
-
-    def find_package(
-        self,
-        criteria: Optional[Dict[str, Any]] = None,
-        expand: bool = False,
-        resolved: bool = False,
-        token: Optional[str] = None,
-        **rest: Any,
-    ) -> List[Any]:
-        """
-        Find a package matching certain criteria.
-
-        :param criteria: The criteria a distribution needs to match.
-        :param expand: Not only get the names but also the complete object in form of a dict.
-        :param resolved: This only has an effect when ``expand = True``. It returns the resolved representation of the
-                         object instead of the raw data.
-        :param token: The API-token obtained via the login() method.
-        :param rest: This parameter is not used currently.
-        :return: All packages which have matched the criteria.
-        """
-        return self.find_items("package", criteria, expand=expand, resolved=resolved)
-
-    def find_file(
-        self,
-        criteria: Optional[Dict[str, Any]] = None,
-        expand: bool = False,
-        resolved: bool = False,
-        token: Optional[str] = None,
-        **rest: Any,
-    ) -> List[Any]:
-        """
-        Find a file matching certain criteria.
-
-        :param criteria: The criteria a distribution needs to match.
-        :param expand: Not only get the names but also the complete object in form of a dict.
-        :param resolved: This only has an effect when ``expand = True``. It returns the resolved representation of the
-                         object instead of the raw data.
-        :param token: The API-token obtained via the login() method.
-        :param rest: This parameter is not used currently.
-        :return: All files which have matched the criteria.
-        """
-        return self.find_items("file", criteria, expand=expand, resolved=resolved)
-
     def find_menu(
         self,
         criteria: Optional[Dict[str, Any]] = None,
@@ -1631,34 +1448,6 @@ def get_image_handle(self, name: str):
         """
         return self.get_item_handle("image", name)
 
-    def get_mgmtclass_handle(self, name: str):
-        """
-        Get a handle for a management class which allows you to use the functions ``modify_*`` or ``save_*`` to
-        manipulate it.
-
-        :param name: The name of the item.
-        :return: The handle of the desired object.
-        """
-        return self.get_item_handle("mgmtclass", name)
-
-    def get_package_handle(self, name: str):
-        """
-        Get a handle for a package which allows you to use the functions ``modify_*`` or ``save_*`` to manipulate it.
-
-        :param name: The name of the item.
-        :return: The handle of the desired object.
-        """
-        return self.get_item_handle("package", name)
-
-    def get_file_handle(self, name: str):
-        """
-        Get a handle for a file which allows you to use the functions ``modify_*`` or ``save_*`` to manipulate it.
-
-        :param name: The name of the item.
-        :return: The handle of the desired object.
-        """
-        return self.get_item_handle("file", name)
-
     def get_menu_handle(self, name: str):
         """
         Get a handle for a menu which allows you to use the functions ``modify_*`` or ``save_*`` to manipulate it.
@@ -1748,39 +1537,6 @@ def remove_image(self, name: str, token: str, recursive: bool = True):
         """
         return self.remove_item("image", name, token, recursive)
 
-    def remove_mgmtclass(self, name: str, token: str, recursive: bool = True):
-        """
-        Deletes a managementclass from Cobbler.
-
-        :param name: The name of the item to remove.
-        :param token: The API-token obtained via the login() method.
-        :param recursive: If items which are depending on this one should be erased too.
-        :return: True if the action was successful.
-        """
-        return self.remove_item("mgmtclass", name, token, recursive)
-
-    def remove_package(self, name: str, token: str, recursive: bool = True):
-        """
-        Deletes a package from Cobbler.
-
-        :param name: The name of the item to remove.
-        :param token: The API-token obtained via the login() method.
-        :param recursive: If items which are depending on this one should be erased too.
-        :return: True if the action was successful.
-        """
-        return self.remove_item("package", name, token, recursive)
-
-    def remove_file(self, name: str, token: str, recursive: bool = True):
-        """
-        Deletes a file from Cobbler.
-
-        :param name: The name of the item to remove.
-        :param token: The API-token obtained via the login() method.
-        :param recursive: If items which are depending on this one should be erased too.
-        :return: True if the action was successful.
-        """
-        return self.remove_item("file", name, token, recursive)
-
     def remove_menu(self, name: str, token: str, recursive: bool = True):
         """
         Deletes a menu from Cobbler.
@@ -1867,39 +1623,6 @@ def copy_image(self, object_id: str, newname: str, token: Optional[str] = None):
         """
         return self.copy_item("image", object_id, newname, token)
 
-    def copy_mgmtclass(self, object_id: str, newname: str, token: Optional[str] = None):
-        """
-        Copies a management class and rename it afterwards.
-
-        :param object_id: The object id of the item in question.
-        :param newname: The new name for the copied object.
-        :param token: The API-token obtained via the login() method.
-        :return: True if the action succeeded.
-        """
-        return self.copy_item("mgmtclass", object_id, newname, token)
-
-    def copy_package(self, object_id: str, newname: str, token: Optional[str] = None):
-        """
-        Copies a package and rename it afterwards.
-
-        :param object_id: The object id of the item in question.
-        :param newname: The new name for the copied object.
-        :param token: The API-token obtained via the login() method.
-        :return: True if the action succeeded.
-        """
-        return self.copy_item("package", object_id, newname, token)
-
-    def copy_file(self, object_id: str, newname: str, token: Optional[str] = None):
-        """
-        Copies a file and rename it afterwards.
-
-        :param object_id: The object id of the item in question.
-        :param newname: The new name for the copied object.
-        :param token: The API-token obtained via the login() method.
-        :return: True if the action succeeded.
-        """
-        return self.copy_item("file", object_id, newname, token)
-
     def copy_menu(self, object_id: str, newname: str, token: Optional[str] = None):
         """
         Copies a menu and rename it afterwards.
@@ -1998,45 +1721,6 @@ def rename_image(
         """
         return self.rename_item("image", object_id, newname, token)
 
-    def rename_mgmtclass(
-        self, object_id: str, newname: str, token: Optional[str] = None
-    ) -> bool:
-        """
-        Renames a managementclass specified by object_id to a new name.
-
-        :param object_id: The id which refers to the object.
-        :param newname: The new name for the object.
-        :param token: The API-token obtained via the login() method.
-        :return: True if the action succeeded.
-        """
-        return self.rename_item("mgmtclass", object_id, newname, token)
-
-    def rename_package(
-        self, object_id: str, newname: str, token: Optional[str] = None
-    ) -> bool:
-        """
-        Renames a package specified by object_id to a new name.
-
-        :param object_id: The id which refers to the object.
-        :param newname: The new name for the object.
-        :param token: The API-token obtained via the login() method.
-        :return: True if the action succeeded.
-        """
-        return self.rename_item("package", object_id, newname, token)
-
-    def rename_file(
-        self, object_id: str, newname: str, token: Optional[str] = None
-    ) -> bool:
-        """
-        Renames a file specified by object_id to a new name.
-
-        :param object_id: The id which refers to the object.
-        :param newname: The new name for the object.
-        :param token: The API-token obtained via the login() method.
-        :return: True if the action succeeded.
-        """
-        return self.rename_item("file", object_id, newname, token)
-
     def rename_menu(
         self, object_id: str, newname: str, token: Optional[str] = None
     ) -> bool:
@@ -2058,8 +1742,7 @@ def new_item(
         Creates a new (unconfigured) object, returning an object handle that can be used with ``modify_*`` methods and
         then finally ``save_*`` methods. The handle only exists in memory until saved.
 
-        :param what: specifies the type of object: ``distro``, ``profile``, ``system``, ``repo``, ``image``
-                                                   ``mgmtclass``, ``package``, ``file`` or ``menu``
+        :param what: specifies the type of object: ``distro``, ``profile``, ``system``, ``repo``, ``image`` or ``menu``.
         :param token: The API-token obtained via the login() method.
         :param is_subobject: If the object is a subobject of an already existing object or not.
         :return: The object id for the newly created object.
@@ -2124,33 +1807,6 @@ def new_image(self, token: str):
         """
         return self.new_item("image", token)
 
-    def new_mgmtclass(self, token: str):
-        """
-        See ``new_item()``.
-
-        :param token: The API-token obtained via the login() method.
-        :return: The object id for the newly created object.
-        """
-        return self.new_item("mgmtclass", token)
-
-    def new_package(self, token: str):
-        """
-        See ``new_item()``.
-
-        :param token: The API-token obtained via the login() method.
-        :return: The object id for the newly created object.
-        """
-        return self.new_item("package", token)
-
-    def new_file(self, token: str):
-        """
-        See ``new_item()``.
-
-        :param token: The API-token obtained via the login() method.
-        :return: The object id for the newly created object.
-        """
-        return self.new_item("file", token)
-
     def new_menu(self, token: str):
         """
         See ``new_item()``.
@@ -2267,42 +1923,6 @@ def modify_repo(self, object_id: str, attribute: str, arg: Any, token: str):
         """
         return self.modify_item("repo", object_id, attribute, arg, token)
 
-    def modify_mgmtclass(self, object_id: str, attribute: str, arg: Any, token: str):
-        """
-        Modify a single attribute of a managementclass.
-
-        :param object_id: The id of the object which shall be modified.
-        :param attribute: The attribute name which shall be edited.
-        :param arg: The new value for the argument.
-        :param token: The API-token obtained via the login() method.
-        :return: True if the action was successful. Otherwise False.
-        """
-        return self.modify_item("mgmtclass", object_id, attribute, arg, token)
-
-    def modify_package(self, object_id: str, attribute: str, arg: Any, token: str):
-        """
-        Modify a single attribute of a package.
-
-        :param object_id: The id of the object which shall be modified.
-        :param attribute: The attribute name which shall be edited.
-        :param arg: The new value for the argument.
-        :param token: The API-token obtained via the login() method.
-        :return: True if the action was successful. Otherwise False.
-        """
-        return self.modify_item("package", object_id, attribute, arg, token)
-
-    def modify_file(self, object_id: str, attribute: str, arg: Any, token: str):
-        """
-        Modify a single attribute of a file.
-
-        :param object_id: The id of the object which shall be modified.
-        :param attribute: The attribute name which shall be edited.
-        :param arg: The new value for the argument.
-        :param token: The API-token obtained via the login() method.
-        :return: True if the action was successful. Otherwise False.
-        """
-        return self.modify_item("file", object_id, attribute, arg, token)
-
     def modify_menu(self, object_id: str, attribute: str, arg: Any, token: str):
         """
         Modify a single attribute of a menu.
@@ -2684,42 +2304,6 @@ def save_repo(self, object_id: str, token: str, editmode: str = "bypass"):
         """
         return self.save_item("repo", object_id, token, editmode=editmode)
 
-    def save_mgmtclass(self, object_id: str, token: str, editmode: str = "bypass"):
-        """
-        Saves a newly created or modified object to disk. Calling save is required for any changes to persist.
-
-        :param object_id: The id of the object to save.
-        :param token: The API-token obtained via the login() method.
-        :param editmode: The mode which shall be used to persist the changes. Currently "new" and "bypass" are
-                         supported.
-        :return: True if the action succeeded.
-        """
-        return self.save_item("mgmtclass", object_id, token, editmode=editmode)
-
-    def save_package(self, object_id: str, token: str, editmode: str = "bypass"):
-        """
-        Saves a newly created or modified object to disk. Calling save is required for any changes to persist.
-
-        :param object_id: The id of the object to save.
-        :param token: The API-token obtained via the login() method.
-        :param editmode: The mode which shall be used to persist the changes. Currently "new" and "bypass" are
-                         supported.
-        :return: True if the action succeeded.
-        """
-        return self.save_item("package", object_id, token, editmode=editmode)
-
-    def save_file(self, object_id: str, token: str, editmode: str = "bypass"):
-        """
-        Saves a newly created or modified object to disk. Calling save is required for any changes to persist.
-
-        :param object_id: The id of the object to save.
-        :param token: The API-token obtained via the login() method.
-        :param editmode: The mode which shall be used to persist the changes. Currently "new" and "bypass" are
-                         supported.
-        :return: True if the action succeeded.
-        """
-        return self.save_item("file", object_id, token, editmode=editmode)
-
     def save_menu(self, object_id: str, token: str, editmode: str = "bypass"):
         """
         Saves a newly created or modified object to disk. Calling save is required for any changes to persist.
@@ -3558,42 +3142,6 @@ def get_images_since(
         data = self.api.get_images_since(mtime, collapse=True)
         return self.xmlrpc_hacks(data)
 
-    def get_mgmtclasses_since(
-        self, mtime: float
-    ) -> Union[List[Any], Dict[Any, Any], int, str, float]:
-        """
-        See documentation for get_distros_since
-
-        :param mtime: The time after which all items should be included. Everything before this will be excluded.
-        :return: The list of items which were modified after ``mtime``.
-        """
-        data = self.api.get_mgmtclasses_since(mtime, collapse=True)
-        return self.xmlrpc_hacks(data)
-
-    def get_packages_since(
-        self, mtime: float
-    ) -> Union[List[Any], Dict[Any, Any], int, str, float]:
-        """
-        See documentation for get_distros_since
-
-        :param mtime: The time after which all items should be included. Everything before this will be excluded.
-        :return: The list of items which were modified after ``mtime``.
-        """
-        data = self.api.get_packages_since(mtime, collapse=True)
-        return self.xmlrpc_hacks(data)
-
-    def get_files_since(
-        self, mtime: float
-    ) -> Union[List[Any], Dict[Any, Any], int, str, float]:
-        """
-        See documentation for get_distros_since
-
-        :param mtime: The time after which all items should be included. Everything before this will be excluded.
-        :return: The list of items which were modified after ``mtime``.
-        """
-        data = self.api.get_files_since(mtime, collapse=True)
-        return self.xmlrpc_hacks(data)
-
     def get_menus_since(
         self, mtime: float
     ) -> Union[List[Any], Dict[Any, Any], int, str, float]:
@@ -3729,17 +3277,6 @@ def get_system_as_rendered(
                 raise ValueError("Profile not found!")
             distro: Optional["Distro"] = profile.get_conceptual_parent()  # type: ignore
 
-            # The management classes stored in the system are just a list of names, so we need to turn it into a full
-            # list of dictionaries (right now we just use the params field).
-            management_classes = _dict["mgmt_classes"]
-            _dict["mgmt_classes"] = {}
-            for management_class in management_classes:
-                class_obj = self.api.find_mgmtclass(
-                    name=management_class, return_list=False
-                )
-                if class_obj and not isinstance(class_obj, list):
-                    _dict["mgmt_classes"][management_class] = class_obj.to_dict()
-
             arch = None
             if distro is None and profile.COLLECTION_TYPE == "image":
                 image_based = True
@@ -3796,60 +3333,6 @@ def get_image_as_rendered(
             return self.xmlrpc_hacks(utils.blender(self.api, True, obj))
         return self.xmlrpc_hacks({})
 
-    def get_mgmtclass_as_rendered(
-        self, name: str, token: Optional[str] = None, **rest: Any
-    ) -> Union[List[Any], Dict[Any, Any], int, str, float]:
-        """
-        Get management class after passing through Cobbler's inheritance engine
-
-        :param name: management class name
-        :param token: authentication token
-        :param rest: This is dropped in this method since it is not needed here.
-        :return: Get a template rendered as a management class.
-        """
-
-        self._log("get_mgmtclass_as_rendered", name=name, token=token)
-        obj = self.api.find_mgmtclass(name=name)
-        if obj is not None and not isinstance(obj, list):
-            return self.xmlrpc_hacks(utils.blender(self.api, True, obj))
-        return self.xmlrpc_hacks({})
-
-    def get_package_as_rendered(
-        self, name: str, token: Optional[str] = None, **rest: Any
-    ) -> Union[List[Any], Dict[Any, Any], int, str, float]:
-        """
-        Get package after passing through Cobbler's inheritance engine
-
-        :param name: package name
-        :param token: authentication token
-        :param rest: This is dropped in this method since it is not needed here.
-        :return: Get a template rendered as a package.
-        """
-
-        self._log("get_package_as_rendered", name=name, token=token)
-        obj = self.api.find_package(name=name)
-        if obj is not None and not isinstance(obj, list):
-            return self.xmlrpc_hacks(utils.blender(self.api, True, obj))
-        return self.xmlrpc_hacks({})
-
-    def get_file_as_rendered(
-        self, name: str, token: Optional[str] = None, **rest: Any
-    ) -> Union[List[Any], Dict[Any, Any], int, str, float]:
-        """
-        Get file after passing through Cobbler's inheritance engine
-
-        :param name: file name
-        :param token: authentication token
-        :param rest: This is dropped in this method since it is not needed here.
-        :return: Get a template rendered as a file.
-        """
-
-        self._log("get_file_as_rendered", name=name, token=token)
-        obj = self.api.find_file(name=name)
-        if obj is not None and not isinstance(obj, list):
-            return self.xmlrpc_hacks(utils.blender(self.api, True, obj))
-        return self.xmlrpc_hacks({})
-
     def get_menu_as_rendered(
         self, name: str, token: Optional[str] = None, **rest: Any
     ) -> Union[List[Any], Dict[Any, Any], int, str, float]:
@@ -4010,12 +3493,6 @@ def __name_to_object(self, resource: str, name: str) -> Optional["ITEM"]:  # typ
             result = self.api.find_system(name, return_list=False)  # type: ignore
         if resource.find("repo") != -1:
             result = self.api.find_repo(name, return_list=False)  # type: ignore
-        if resource.find("mgmtclass") != -1:
-            result = self.api.find_mgmtclass(name, return_list=False)  # type: ignore
-        if resource.find("package") != -1:
-            result = self.api.find_package(name, return_list=False)  # type: ignore
-        if resource.find("file") != -1:
-            result = self.api.find_file(name, return_list=False)  # type: ignore
         if resource.find("menu") != -1:
             result = self.api.find_menu(name, return_list=False)  # type: ignore
         if isinstance(result, list):
@@ -4042,9 +3519,6 @@ def check_access_no_fail(
             "system",
             "repo",
             "image",
-            "mgmtclass",
-            "package",
-            "file",
             "menu",
         ]:
             if arg1 is not None and resource.find(item_type) != -1:
diff --git a/cobbler/services.py b/cobbler/services.py
index 8ea8d63a35..3f7d7791da 100644
--- a/cobbler/services.py
+++ b/cobbler/services.py
@@ -361,8 +361,7 @@ def list(self, what: str = "systems", **rest: Any) -> str:
         """
         Return a list of objects of a desired category. Defaults to "systems".
 
-        :param what: May be "systems", "profiles", "distros", "images", "repos", "mgmtclasses", "packages",
-                            "files" or "menus"
+        :param what: May be "systems", "profiles", "distros", "images", "repos" or "menus"
         :param rest: This parameter is unused.
         :return: The list of object names.
         """
@@ -378,12 +377,6 @@ def list(self, what: str = "systems", **rest: Any) -> str:
             listing = self.remote.get_images()  # type: ignore
         elif what == "repos":
             listing = self.remote.get_repos()  # type: ignore
-        elif what == "mgmtclasses":
-            listing = self.remote.get_mgmtclasses()  # type: ignore
-        elif what == "packages":
-            listing = self.remote.get_packages()  # type: ignore
-        elif what == "files":
-            listing = self.remote.get_files()  # type: ignore
         elif what == "menus":
             listing = self.remote.get_menus()  # type: ignore
         else:
@@ -498,65 +491,6 @@ def findks(
         except Exception:
             return f"# kickstart retrieval failed ({url})"
 
-    def puppet(self, hostname: Optional[str] = None, **rest: Union[str, int]) -> str:
-        """
-        Dump the puppet data which is available for Cobbler.
-
-        :param hostname: The hostname for the system which should the puppet data be dumped for.
-        :param rest: This parameter is unused.
-        :return: The yaml for the host.
-        """
-        if hostname is None:
-            return "hostname is required"
-
-        settings = self.remote.get_settings()
-        if not isinstance(settings, dict):
-            raise ValueError("Server returned an unexpected data type!")
-        results = self.remote.find_system_by_dns_name(hostname)
-        if not isinstance(results, dict):
-            raise ValueError("Server returned an unexpected data type!")
-
-        classes = results.get("mgmt_classes", {})
-        params = results.get("mgmt_parameters", {})
-        environ = results.get("status", "")
-
-        data = {
-            "classes": classes,
-            "parameters": params,
-            "environment": environ,
-        }
-
-        if environ == "":
-            data.pop("environment", None)
-
-        if settings.get("puppet_parameterized_classes", False):
-            for ckey in list(classes.keys()):
-                tmp = {}
-                class_name = classes[ckey].get("class_name", "")
-                if class_name in (None, ""):
-                    class_name = ckey
-                if classes[ckey].get("is_definition", False):
-                    def_tmp = {}
-                    def_name = classes[ckey]["params"].get("name", "")
-                    del classes[ckey]["params"]["name"]
-                    if def_name != "":
-                        for pkey in list(classes[ckey]["params"].keys()):
-                            def_tmp[pkey] = classes[ckey]["params"][pkey]
-                        tmp["instances"] = {def_name: def_tmp}
-                    else:
-                        # FIXME: log an error here?
-                        # skip silently...
-                        continue
-                else:
-                    for pkey in list(classes[ckey]["params"].keys()):
-                        tmp[pkey] = classes[ckey]["params"][pkey]
-                del classes[ckey]
-                classes[class_name] = tmp
-        else:
-            classes = list(classes.keys())
-
-        return yaml.dump(data, default_flow_style=False)
-
 
 def __fillup_form_dict(form: Dict[Any, Any], my_uri: str) -> str:
     """
diff --git a/cobbler/settings/__init__.py b/cobbler/settings/__init__.py
index 968eca2dfa..b523460e5b 100644
--- a/cobbler/settings/__init__.py
+++ b/cobbler/settings/__init__.py
@@ -206,8 +206,6 @@ def __init__(self) -> None:
         self.manage_genders = False
         self.manage_rsync = False
         self.manage_tftpd = True
-        self.mgmt_classes: List[str] = []
-        self.mgmt_parameters = {"from_cobbler": 1}
         self.modules = {
             "authentication": {
                 "module": "authentication.configfile",
diff --git a/cobbler/settings/migrations/V3_4_0.py b/cobbler/settings/migrations/V3_4_0.py
index 8c56bdbef7..9730d83c3d 100644
--- a/cobbler/settings/migrations/V3_4_0.py
+++ b/cobbler/settings/migrations/V3_4_0.py
@@ -102,8 +102,6 @@
         Optional("manage_genders"): bool,
         Optional("manage_rsync"): bool,
         Optional("manage_tftpd"): bool,
-        Optional("mgmt_classes"): [str],
-        Optional("mgmt_parameters"): dict,
         Optional("next_server_v4"): str,
         Optional("next_server_v6"): str,
         Optional("nsupdate_enabled"): bool,
@@ -215,6 +213,8 @@ def migrate(settings: Dict[str, Any]) -> Dict[str, Any]:
 
     # rename keys and update their value if needed
     include = settings.pop("include")
+    include = settings.pop("mgmt_classes")
+    include = settings.pop("mgmt_parameters")
 
     # Do mongodb.conf migration
     mongodb_config = "/etc/cobbler/mongodb.conf"
diff --git a/cobbler/utils/__init__.py b/cobbler/utils/__init__.py
index c00ee4437d..d60ded0ba1 100644
--- a/cobbler/utils/__init__.py
+++ b/cobbler/utils/__init__.py
@@ -494,10 +494,6 @@ def blender(
     else:
         results["http_server"] = f"{results['server']}:{http_port}"
 
-    mgmt_parameters = results.get("mgmt_parameters", {})
-    mgmt_parameters.update(results.get("autoinstall_meta", {}))
-    results["mgmt_parameters"] = mgmt_parameters
-
     if "children" in results:
         child_names = results["children"]
         results["children"] = {}
diff --git a/cobbler/utils/filesystem_helpers.py b/cobbler/utils/filesystem_helpers.py
index a9361c0897..9afeaf07f5 100644
--- a/cobbler/utils/filesystem_helpers.py
+++ b/cobbler/utils/filesystem_helpers.py
@@ -501,15 +501,6 @@ def create_trigger_dirs(api: "CobblerAPI") -> None:
         trigger_directory / "add" / "repo",
         trigger_directory / "add" / "repo" / "pre",
         trigger_directory / "add" / "repo" / "post",
-        trigger_directory / "add" / "mgmtclass",
-        trigger_directory / "add" / "mgmtclass" / "pre",
-        trigger_directory / "add" / "mgmtclass" / "post",
-        trigger_directory / "add" / "package",
-        trigger_directory / "add" / "package" / "pre",
-        trigger_directory / "add" / "package" / "post",
-        trigger_directory / "add" / "file",
-        trigger_directory / "add" / "file" / "pre",
-        trigger_directory / "add" / "file" / "post",
         trigger_directory / "add" / "menu",
         trigger_directory / "add" / "menu" / "pre",
         trigger_directory / "add" / "menu" / "post",
@@ -526,15 +517,6 @@ def create_trigger_dirs(api: "CobblerAPI") -> None:
         trigger_directory / "delete" / "repo",
         trigger_directory / "delete" / "repo" / "pre",
         trigger_directory / "delete" / "repo" / "post",
-        trigger_directory / "delete" / "mgmtclass",
-        trigger_directory / "delete" / "mgmtclass" / "pre",
-        trigger_directory / "delete" / "mgmtclass" / "post",
-        trigger_directory / "delete" / "package",
-        trigger_directory / "delete" / "package" / "pre",
-        trigger_directory / "delete" / "package" / "post",
-        trigger_directory / "delete" / "file",
-        trigger_directory / "delete" / "file" / "pre",
-        trigger_directory / "delete" / "file" / "post",
         trigger_directory / "delete" / "menu",
         trigger_directory / "delete" / "menu" / "pre",
         trigger_directory / "delete" / "menu" / "post",
@@ -559,15 +541,6 @@ def create_trigger_dirs(api: "CobblerAPI") -> None:
         trigger_directory / "task" / "repo",
         trigger_directory / "task" / "repo" / "pre",
         trigger_directory / "task" / "repo" / "post",
-        trigger_directory / "task" / "mgmtclass",
-        trigger_directory / "task" / "mgmtclass" / "pre",
-        trigger_directory / "task" / "mgmtclass" / "post",
-        trigger_directory / "task" / "package",
-        trigger_directory / "task" / "package" / "pre",
-        trigger_directory / "task" / "package" / "post",
-        trigger_directory / "task" / "file",
-        trigger_directory / "task" / "file" / "pre",
-        trigger_directory / "task" / "file" / "post",
         trigger_directory / "task" / "menu",
         trigger_directory / "task" / "menu" / "pre",
         trigger_directory / "task" / "menu" / "post",
@@ -592,9 +565,6 @@ def create_json_database_dirs(api: "CobblerAPI") -> None:
         libpath / "collections" / "profiles",
         libpath / "collections" / "repos",
         libpath / "collections" / "systems",
-        libpath / "collections" / "mgmtclasses",
-        libpath / "collections" / "packages",
-        libpath / "collections" / "files",
         libpath / "collections" / "menus",
     ]
 
diff --git a/cobbler/validate.py b/cobbler/validate.py
index 6c00d45306..0df350462f 100644
--- a/cobbler/validate.py
+++ b/cobbler/validate.py
@@ -612,9 +612,6 @@ def validate_obj_type(object_type: str) -> bool:
         "system",
         "repo",
         "image",
-        "mgmtclass",
-        "package",
-        "file",
         "menu",
     ]
 
diff --git a/config/bash/completion/cobbler b/config/bash/completion/cobbler
index c2a369d047..64e7d8f687 100755
--- a/config/bash/completion/cobbler
+++ b/config/bash/completion/cobbler
@@ -9,17 +9,14 @@ _cobbler_completions()
     prev="${COMP_WORDS[COMP_CWORD-1]}"
     cobbler_type=${COMP_WORDS[1]}
     COMPREPLY=()
-    TYPE="distro profile system repo image mgmtclass package file aclsetup buildiso import list replicate report reposync sync version signature hardlink"
+    TYPE="distro profile system repo image aclsetup buildiso import list replicate report reposync sync version signature hardlink"
     ACTION="add edit copy list remove rename report mkloaders"
     opts=(
-        [distro]="--ctime --depth --mtime --source-repos --tree-build-time --uid --arch --autoinstall-meta --boot-files --boot-loaders --breed --comment --fetchable-files --initrd --kernel --kernel-options --kernel-options-post --mgmt-classes --name --os-version --owners --redhat-management-key --template-files --in-place --help"
-        [profile]="--ctime --depth --mtime --uid --autoinstall --autoinstall-meta --boot-files --comment --dhcp-tag --distro --enable-ipxe --enable-menu --fetchable-files --kernel-options --kernel-options-post --mgmt-classes --mgmt-parameters --name --name-servers --name-servers-search --next-server --owners --parent --proxy --redhat-management-key --repos --server --template-files --virt-auto-boot --virt-bridge --virt-cpus --virt-disk-driver --virt-file-size --virt-path --virt-ram --virt-type --in-place --help"
-        [system]="--ctime --depth --ipv6-autoconfiguration --mtime --repos-enabled --uid --autoinstall --autoinstall-meta --boot-files --boot-loaders --comment --enable-ipxe --fetchable-files --gateway --hostname --image --ipv6-default-device --kernel-options --kernel-options-post --mgmt-classes --mgmt-parameters --name --name-servers --name-servers-search --netboot-enabled --next-server --owners --power-address --power-id --power-pass --power-type --power-user --power-options --power-identity-file --profile --proxy --redhat-management-key --server --status --template-files --virt-auto-boot --virt-cpus --virt-disk-driver --virt-file-size --virt-path --virt-pxe-boot --virt-ram --virt-type --serial-device --serial-baud-rate --bonding-opts --bridge-opts --cnames --interface, --connected-mode --interface) --dhcp-tag --dns-name --if-gateway --interface) --interface-master --interface-type --ip-address --ipv6-address --ipv6-default-gateway --ipv6-mtu --ipv6-prefix --ipv6-secondaries --interface) --ipv6-static-routes --mac-address --management --mtu --netmask --static --interface) --static-routes --virt-bridge --interface --delete-interface --rename-interface --in-place --help"
+        [distro]="--ctime --depth --mtime --source-repos --tree-build-time --uid --arch --autoinstall-meta --boot-files --boot-loaders --breed --comment --fetchable-files --initrd --kernel --kernel-options --kernel-options-post --name --os-version --owners --redhat-management-key --template-files --in-place --help"
+        [profile]="--ctime --depth --mtime --uid --autoinstall --autoinstall-meta --boot-files --comment --dhcp-tag --distro --enable-ipxe --enable-menu --fetchable-files --kernel-options --kernel-options-post --name --name-servers --name-servers-search --next-server --owners --parent --proxy --redhat-management-key --repos --server --template-files --virt-auto-boot --virt-bridge --virt-cpus --virt-disk-driver --virt-file-size --virt-path --virt-ram --virt-type --in-place --help"
+        [system]="--ctime --depth --ipv6-autoconfiguration --mtime --repos-enabled --uid --autoinstall --autoinstall-meta --boot-files --boot-loaders --comment --enable-ipxe --fetchable-files --gateway --hostname --image --ipv6-default-device --kernel-options --kernel-options-post --name --name-servers --name-servers-search --netboot-enabled --next-server --owners --power-address --power-id --power-pass --power-type --power-user --power-options --power-identity-file --profile --proxy --redhat-management-key --server --status --template-files --virt-auto-boot --virt-cpus --virt-disk-driver --virt-file-size --virt-path --virt-pxe-boot --virt-ram --virt-type --serial-device --serial-baud-rate --bonding-opts --bridge-opts --cnames --interface, --connected-mode --interface) --dhcp-tag --dns-name --if-gateway --interface) --interface-master --interface-type --ip-address --ipv6-address --ipv6-default-gateway --ipv6-mtu --ipv6-prefix --ipv6-secondaries --interface) --ipv6-static-routes --mac-address --management --mtu --netmask --static --interface) --static-routes --virt-bridge --interface --delete-interface --rename-interface --in-place --help"
         [repo]="--ctime --depth --mtime --parent --uid --apt-components --apt-dists --arch --breed --comment --createrepo-flags --environment --keep-updated --mirror --mirror-locally --name --owners --priority --proxy --rpm-list --yumopts --in-place --help"
         [image]="--ctime --depth --mtime --parent --uid --arch --autoinstall --breed --comment --file --image-type --name --network-count --os-version --owners --virt-auto-boot --virt-bridge --virt-cpus --virt-disk-driver --virt-file-size --virt-path --virt-ram --virt-type --in-place --help"
-        [mgmtclass]="--ctime --depth --is-definition --mtime --uid --class-name --comment --files --name --owners --packages --params --in-place --help"
-        [package]="--ctime --depth --mtime --uid --action --comment --installer --name --owners --version --in-place --help"
-        [file]="--ctime --depth --mtime --uid --action --comment --group --is-dir --mode --name --owner --owners --path --template --in-place --help"
         [import]="--arch --breed --os-version --path --name --available-as --autoinstall --rsync-flags --help"
         [buildiso]="--iso --profiles --systems --tempdir --distro --standalone --source --exclude-dns --mkisofs-opts --help"
     )
@@ -30,7 +27,7 @@ _cobbler_completions()
                 COMPREPLY=($(compgen -W "${TYPE}" -- ${cur}))
                 return 0
                 ;;
-            distro|repo|image|mgmtclass|package|file)
+            distro|repo|image)
                 COMPREPLY=($(compgen -W "${ACTION}" -- ${cur}))
                 return 0
                 ;;
diff --git a/config/cobbler/settings.yaml b/config/cobbler/settings.yaml
index 0136f6a90e..cce6ea1022 100644
--- a/config/cobbler/settings.yaml
+++ b/config/cobbler/settings.yaml
@@ -260,14 +260,6 @@ ldap_tls_cacertdir: ''
 ldap_tls_cipher_suite: ''
 ldap_tls_reqcert: ''
 
-# Cobbler has a feature that allows for integration with config management
-# systems such as Puppet.  The following parameters work in conjunction with
-# --mgmt-classes  and are described in further detail at:
-# https://github.com/cobbler/cobbler/wiki/Using-cobbler-with-a-configuration-management-system
-mgmt_classes: []
-mgmt_parameters:
- from_cobbler: true
-
 # if enabled, this setting ensures that puppet is installed during
 # machine provision, a client certificate is generated and a
 # certificate signing request is made with the puppet master server
diff --git a/docs/cobbler.rst b/docs/cobbler.rst
index b3004cbc5f..dc69e65c5d 100644
--- a/docs/cobbler.rst
+++ b/docs/cobbler.rst
@@ -34,7 +34,7 @@ If you want to remove a specific object, use the remove command with the name th
 
 .. code-block:: shell
 
-    cobbler distro|profile|system|repo|image|mgmtclass|package|file|menu remove --name=string
+    cobbler distro|profile|system|repo|image|menu remove --name=string
 
 Editing
 =======
@@ -45,7 +45,7 @@ object, preserving settings not mentioned.
 
 .. code-block:: shell
 
-    cobbler distro|profile|system|repo|image|mgmtclass|package|file|menu edit --name=string [parameterlist]
+    cobbler distro|profile|system|repo|image|menu edit --name=string [parameterlist]
 
 Copying
 =======
@@ -54,7 +54,7 @@ Objects can also be copied:
 
 .. code-block:: shell
 
-    cobbler distro|profile|system|repo|image|mgmtclass|package|file|menu copy --name=oldname --newname=newname
+    cobbler distro|profile|system|repo|image|menu copy --name=oldname --newname=newname
 
 Renaming
 ========
@@ -63,7 +63,7 @@ Objects can also be renamed, as long as other objects don't reference them.
 
 .. code-block:: shell
 
-    cobbler distro|profile|system|repo|image|mgmtclass|package|file|menu rename --name=oldname --newname=newname
+    cobbler distro|profile|system|repo|image|menu rename --name=oldname --newname=newname
 
 CLI-Commands
 ############
@@ -74,7 +74,7 @@ Long Usage:
 
 .. code-block:: shell
 
-    cobbler <distro|profile|system|repo|image|mgmtclass|package|file|menu> ... [add|edit|copy|get-autoinstall*|list|remove|rename|report] [options|--help]
+    cobbler <distro|profile|system|repo|image|menu> ... [add|edit|copy|get-autoinstall*|list|remove|rename|report] [options|--help]
     cobbler <aclsetup|buildiso|import|list|mkloaders|replicate|report|reposync|sync|validate-autoinstalls|version|signature|hardlink> [options|--help]
 
 Cobbler distro
@@ -866,108 +866,6 @@ The system will boot to memtest until you put it back to its original profile.
 
 If you do want to reinstall it after running memtest, use ``--netboot-enabled=true``.
 
-Cobbler mgmtclass
-=================
-
-Management classes allows Cobbler to function as an configuration management system. Cobbler currently supports the
-following resource types:
-
-1. Packages
-2. Files
-
-Resources are executed in the order listed above.
-
-.. code-block:: shell
-
-    $ cobbler mgmtclass add --name=string --comment=string [--packages=list] [--files=list]
-
-+------------+-----------------------------------------------------------------------------------------------------------+
-| Name       | Description                                                                                               |
-+============+===========================================================================================================+
-| class-name | Class Name (Actual Class Name (leave blank to use the name field)).                                       |
-+------------+-----------------------------------------------------------------------------------------------------------+
-| comment    | A comment that describes the functions of the management class.                                           |
-+------------+-----------------------------------------------------------------------------------------------------------+
-| files      | Specifies a list of file resources required by the management class.                                      |
-+------------+-----------------------------------------------------------------------------------------------------------+
-| **name**   | The name of the mgmtclass. Use this name when adding a management class to a system, profile, or distro.  |
-|            | To add a mgmtclass to an existing system use something like                                               |
-|            | (``cobbler system edit --name="madhatter" --mgmt-classes="http mysql"``).                                 |
-+------------+-----------------------------------------------------------------------------------------------------------+
-| packages   | Specifies a list of package resources required by the management class.                                   |
-+------------+-----------------------------------------------------------------------------------------------------------+
-
-
-Cobbler package
-===============
-
-Package resources are managed using ``cobbler package add``
-
-Actions:
-
-+-----------+--------------------------------+
-| Name      | Description                    |
-+===========+================================+
-| install   | Install the package. [Default] |
-+-----------+--------------------------------+
-| uninstall | Uninstall the package.         |
-+-----------+--------------------------------+
-
-Attributes:
-
-+-----------+--------------------------------------------------------+
-| Name      | Description                                            |
-+===========+========================================================+
-| installer | Which package manager to use, valid options [rpm|yum]. |
-+-----------+--------------------------------------------------------+
-| **name**  | Cobbler object name.                                   |
-+-----------+--------------------------------------------------------+
-| version   | Which version of the package to install.               |
-+-----------+--------------------------------------------------------+
-
-Example:
-
-.. code-block:: shell
-
-    $ cobbler package add --name=string --comment=string [--action=install|uninstall] --installer=string [--version=string]
-
-Cobbler file
-============
-
-Actions:
-
-+--------+----------------------------+
-| Name   | Description                |
-+========+============================+
-| create | Create the file. [Default] |
-+--------+----------------------------+
-| remove | Remove the file.           |
-+--------+----------------------------+
-
-Attributes:
-
-+----------+---------------------------------+
-| Name     | Description                     |
-+==========+=================================+
-| group    | The group owner of the file.    |
-+----------+---------------------------------+
-| mode     | Permission mode (as in chmod).  |
-+----------+---------------------------------+
-| **name** | Name of the cobbler file object |
-+----------+---------------------------------+
-| **path** | The path for the file.          |
-+----------+---------------------------------+
-| template | The template for the file.      |
-+----------+---------------------------------+
-| user     | The user for the file.          |
-+----------+---------------------------------+
-
-Example:
-
-.. code-block:: shell
-
-    $ cobbler file add --name=string --comment=string [--action=string] --mode=string --group=string --owner=string --path=string [--template=string]
-
 Cobbler menu
 ============
 
@@ -1059,7 +957,7 @@ Cobbler list
 ============
 
 This list all the names grouped by type. Identically to ``cobbler report`` there are subcommands for most of the other
-Cobbler commands. (Currently: distro, profile, system, repo, image, mgmtclass, package, file)
+Cobbler commands. (Currently: distro, profile, system, repo, image)
 
 .. code-block:: shell
 
@@ -1101,7 +999,7 @@ Cobbler report
 =================
 
 This lists all configuration which Cobbler can obtain from the saved data. There are also ``report`` subcommands for
-most of the other Cobbler commands (currently: distro, profile, system, repo, image, mgmtclass, package, file, menu).
+most of the other Cobbler commands (currently: distro, profile, system, repo, image, menu).
 
 .. code-block:: shell
 
diff --git a/docs/code-autodoc/cobbler.cobbler_collections.rst b/docs/code-autodoc/cobbler.cobbler_collections.rst
index 41cb4ef18a..a590f6d290 100644
--- a/docs/code-autodoc/cobbler.cobbler_collections.rst
+++ b/docs/code-autodoc/cobbler.cobbler_collections.rst
@@ -20,14 +20,6 @@ cobbler.cobbler\_collections.distros module
    :undoc-members:
    :show-inheritance:
 
-cobbler.cobbler\_collections.files module
------------------------------------------
-
-.. automodule:: cobbler.cobbler_collections.files
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
 cobbler.cobbler\_collections.images module
 ------------------------------------------
 
@@ -52,22 +44,6 @@ cobbler.cobbler\_collections.menus module
    :undoc-members:
    :show-inheritance:
 
-cobbler.cobbler\_collections.mgmtclasses module
------------------------------------------------
-
-.. automodule:: cobbler.cobbler_collections.mgmtclasses
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-cobbler.cobbler\_collections.packages module
---------------------------------------------
-
-.. automodule:: cobbler.cobbler_collections.packages
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
 cobbler.cobbler\_collections.profiles module
 --------------------------------------------
 
diff --git a/docs/code-autodoc/cobbler.items.rst b/docs/code-autodoc/cobbler.items.rst
index ac692acb03..afbc000e66 100644
--- a/docs/code-autodoc/cobbler.items.rst
+++ b/docs/code-autodoc/cobbler.items.rst
@@ -12,14 +12,6 @@ cobbler.items.distro module
    :undoc-members:
    :show-inheritance:
 
-cobbler.items.file module
--------------------------
-
-.. automodule:: cobbler.items.file
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
 cobbler.items.image module
 --------------------------
 
@@ -44,22 +36,6 @@ cobbler.items.menu module
    :undoc-members:
    :show-inheritance:
 
-cobbler.items.mgmtclass module
-------------------------------
-
-.. automodule:: cobbler.items.mgmtclass
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-cobbler.items.package module
-----------------------------
-
-.. automodule:: cobbler.items.package
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
 cobbler.items.profile module
 ----------------------------
 
@@ -76,14 +52,6 @@ cobbler.items.repo module
    :undoc-members:
    :show-inheritance:
 
-cobbler.items.resource module
------------------------------
-
-.. automodule:: cobbler.items.resource
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
 cobbler.items.system module
 ---------------------------
 
diff --git a/docs/code-autodoc/cobbler.rst b/docs/code-autodoc/cobbler.rst
index 7fbf6a638b..7369e51e8f 100644
--- a/docs/code-autodoc/cobbler.rst
+++ b/docs/code-autodoc/cobbler.rst
@@ -105,14 +105,6 @@ cobbler.grub module
    :undoc-members:
    :show-inheritance:
 
-cobbler.manager module
-----------------------
-
-.. automodule:: cobbler.manager
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
 cobbler.module\_loader module
 -----------------------------
 
diff --git a/docs/user-guide/http-api.rst b/docs/user-guide/http-api.rst
index 08f98ee72e..3aab978e50 100644
--- a/docs/user-guide/http-api.rst
+++ b/docs/user-guide/http-api.rst
@@ -409,7 +409,7 @@ list
 
 Lists all instances of a specified type.
 Currently the valid options are:
-``systems, profiles, distros, images, repos, mgmtclasses, packages, files, menus``
+``systems, profiles, distros, images, repos, menus``
 If no option is selected the endpoint will default to ``systems``.
 If the selected option is not valid the endpoint will return ``?``.
 


Test patch:
diff --git a/system-tests/tests/settings-cli-modify-dict b/system-tests/tests/settings-cli-modify-dict
index 5c215b8b80..79b48883fa 100755
--- a/system-tests/tests/settings-cli-modify-dict
+++ b/system-tests/tests/settings-cli-modify-dict
@@ -9,7 +9,7 @@ set -x -e -o pipefail
 TEST_CONFIG="${tmp}/settings-dict.yaml"
 EXPECTED_CONFIG="${tmp}/settings-expected.yaml"
 cat <<-END >$TEST_CONFIG
-mgmt_parameters:
+kernel_options:
  from_cobbler: true
 END
 
@@ -17,10 +17,10 @@ cat <<-END >$EXPECTED_CONFIG
 # Cobbler settings file
 # Docs for this file can be found at: https://cobbler.readthedocs.io/en/latest/cobbler-conf.html
 
-mgmt_parameters: {}
+kernel_options: {}
 END
 
-TEST_KEY="mgmt_parameters"
+TEST_KEY="kernel_options"
 TEST_VALUE=""
 
 # Act
diff --git a/system-tests/tests/svc-list b/system-tests/tests/svc-list
index 82e2a01c07..9d1bbdce7c 100755
--- a/system-tests/tests/svc-list
+++ b/system-tests/tests/svc-list
@@ -10,7 +10,7 @@ cobbler distro add --name fake --arch x86_64 --kernel ${fake_kernel} \
 	--initrd ${fake_initramfs}
 cobbler profile add --name fake --distro fake
 cobbler system add --name testbed --profile fake
-# TODO add more systems, profiles and distros, images, repos, mgmtclasses, packages, files, menus
+# TODO add more systems, profiles and distros, images, repos, menus
 # Prepare expected result
 cat >${tmp}/a <<-EOF
 testbed
@@ -28,10 +28,7 @@ curl --output ${tmp}/d http://localhost/cblr/svc/op/list/what/profiles
 curl --output ${tmp}/e http://localhost/cblr/svc/op/list/what/distros
 curl --output ${tmp}/f http://localhost/cblr/svc/op/list/what/images
 curl --output ${tmp}/g http://localhost/cblr/svc/op/list/what/repos
-curl --output ${tmp}/h http://localhost/cblr/svc/op/list/what/mgmtclasses
-curl --output ${tmp}/i http://localhost/cblr/svc/op/list/what/packages
-curl --output ${tmp}/j http://localhost/cblr/svc/op/list/what/files
-curl --output ${tmp}/k http://localhost/cblr/svc/op/list/what/menus
+curl --output ${tmp}/h http://localhost/cblr/svc/op/list/what/menus
 
 # Assert
 diff ${tmp}/{a,b}
@@ -41,6 +38,3 @@ diff ${tmp}/{a2,e}
 diff ${tmp}/{a3,f}
 diff ${tmp}/{a3,g}
 diff ${tmp}/{a3,h}
-diff ${tmp}/{a3,i}
-diff ${tmp}/{a3,j}
-diff ${tmp}/{a3,k}
\ No newline at end of file
diff --git a/system-tests/tests/svc-puppet b/system-tests/tests/svc-puppet
deleted file mode 100755
index 7ab69a98d5..0000000000
--- a/system-tests/tests/svc-puppet
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/usr/bin/env bash
-# Check that the Cobbler HTTP endpoint /autoinstall/ is callable
-
-source ${SYSTESTS_PRELUDE} && prepare
-
-set -x -e -o pipefail
-
-# Arrange
-cobbler distro add --name fake --arch x86_64 --kernel ${fake_kernel} \
-	--initrd ${fake_initramfs}
-cobbler profile add --name fake --distro fake
-cobbler system add --name testbed --profile fake
-#TODO add hostname
-# Prepare expected result
-cat >${tmp}/a <<-EOF
-TODO
-EOF
-
-# Act
-curl --output ${tmp}/b http://localhost/cblr/svc/op/puppet/
-
-# Assert
-# FIXME endpoint not yet testable
-exit 0
-#diff ...
\ No newline at end of file
diff --git a/tests/actions/replicate_test.py b/tests/actions/replicate_test.py
index 2f2bda4384..5b1b7c1b14 100644
--- a/tests/actions/replicate_test.py
+++ b/tests/actions/replicate_test.py
@@ -181,9 +181,6 @@ def test_generate_include_map(
         "system": [{"a": 1}],
         "repo": [{"a": 1}],
         "image": [{"a": 1}],
-        "mgmtclass": [{"a": 1}],
-        "package": [{"a": 1}],
-        "file": [{"a": 1}],
     }
     expected_must_include = {
         "distro": {"a": 1},
@@ -191,9 +188,6 @@ def test_generate_include_map(
         "system": {"a": 1},
         "repo": {"a": 1},
         "image": {"a": 1},
-        "mgmtclass": {"a": 1},
-        "package": {"a": 1},
-        "file": {"a": 1},
     }
 
     # Act
diff --git a/tests/api/find_test.py b/tests/api/find_test.py
index 82caf5c76c..b7ed54ef22 100644
--- a/tests/api/find_test.py
+++ b/tests/api/find_test.py
@@ -192,96 +192,6 @@ def test_find_image(
             assert result == expected_result
 
 
-@pytest.mark.parametrize(
-    "name,return_list,no_errors,criteria,expected_exception,expected_result",
-    [
-        (None, False, False, {}, pytest.raises(ValueError), None),
-        ("testdistro", False, False, {}, does_not_raise(), None),
-    ],
-)
-def test_find_mgmtclass(
-    find_fillup,
-    name,
-    return_list,
-    no_errors,
-    criteria,
-    expected_exception,
-    expected_result,
-):
-    # Arrange
-    test_api = find_fillup
-
-    # Act
-    with expected_exception:
-        result = test_api.find_mgmtclass(name, return_list, no_errors, **criteria)
-
-        # Assert
-        if expected_result is None:
-            assert result is None
-        else:
-            assert result == expected_result
-
-
-@pytest.mark.parametrize(
-    "name,return_list,no_errors,criteria,expected_exception,expected_result",
-    [
-        (None, False, False, {}, pytest.raises(ValueError), None),
-        ("testdistro", False, False, {}, does_not_raise(), None),
-    ],
-)
-def test_find_package(
-    find_fillup,
-    name,
-    return_list,
-    no_errors,
-    criteria,
-    expected_exception,
-    expected_result,
-):
-    # Arrange
-    test_api = find_fillup
-
-    # Act
-    with expected_exception:
-        result = test_api.find_package(name, return_list, no_errors, **criteria)
-
-        # Assert
-        if expected_result is None:
-            assert result is None
-        else:
-            assert result == expected_result
-
-
-@pytest.mark.parametrize(
-    "name,return_list,no_errors,criteria,expected_exception,expected_result",
-    [
-        (None, False, False, {}, pytest.raises(ValueError), None),
-        ("testdistro", False, False, {}, does_not_raise(), None),
-    ],
-)
-def test_find_file(
-    find_fillup,
-    name,
-    return_list,
-    no_errors,
-    criteria,
-    expected_exception,
-    expected_result,
-):
-    # Arrange
-    test_api = find_fillup
-
-    # Act
-    with expected_exception:
-        result = test_api.find_file(name, return_list, no_errors, **criteria)
-
-        # Assert
-        if expected_result is None:
-            assert result is None
-        else:
-            assert result == expected_result
-
-
 @pytest.mark.parametrize(
     "name,return_list,no_errors,criteria,expected_exception,expected_result",
     [
diff --git a/tests/cli/cobbler_cli_direct_test.py b/tests/cli/cobbler_cli_direct_test.py
index 5702fd33a3..cf1b97e42b 100644
--- a/tests/cli/cobbler_cli_direct_test.py
+++ b/tests/cli/cobbler_cli_direct_test.py
@@ -158,9 +158,6 @@ def test_11_cobbler_list(self, run_cmd, assert_list_section):
         i = assert_list_section(lines, i, "systems")
         i = assert_list_section(lines, i, "repos")
         i = assert_list_section(lines, i, "images")
-        i = assert_list_section(lines, i, "mgmtclasses")
-        i = assert_list_section(lines, i, "packages")
-        i = assert_list_section(lines, i, "files")
         i = assert_list_section(lines, i, "menus")
 
     def test_cobbler_report(self, run_cmd, assert_report_section):
@@ -172,9 +169,6 @@ def test_cobbler_report(self, run_cmd, assert_report_section):
         i = assert_report_section(lines, i, "systems")
         i = assert_report_section(lines, i, "repos")
         i = assert_report_section(lines, i, "images")
-        i = assert_report_section(lines, i, "mgmtclasses")
-        i = assert_report_section(lines, i, "packages")
-        i = assert_report_section(lines, i, "files")
         i = assert_report_section(lines, i, "menus")
 
     def test_cobbler_hardlink(self, run_cmd, get_last_line):
diff --git a/tests/cli/cobbler_cli_object_test.py b/tests/cli/cobbler_cli_object_test.py
index b6b9d55ae6..05435f1916 100644
--- a/tests/cli/cobbler_cli_object_test.py
+++ b/tests/cli/cobbler_cli_object_test.py
@@ -79,15 +79,6 @@ def test_report(self, run_cmd):
 images:
 ==========
 
-mgmtclasses:
-==========
-
-packages:
-==========
-
-files:
-==========
-
 menus:
 ==========
 """
@@ -106,9 +97,6 @@ def test_report(self, run_cmd):
             "system",
             "image",
             "repo",
-            "package",
-            "mgmtclass",
-            "file",
             "menu",
         ],
     )
@@ -129,9 +117,6 @@ def test_report_with_type(self, run_cmd, object_type):
             "system",
             "image",
             "repo",
-            "package",
-            "mgmtclass",
-            "file",
             "menu",
         ],
     )
@@ -186,31 +171,6 @@ def test_report_with_type_and_name(self, run_cmd, object_type):
                 ["comment", "Testcomment"],
                 "Comment",
             ),
-            (
-                "package",
-                {"name": "testpackageedit"},
-                ["comment", "Testcomment"],
-                "Comment",
-            ),
-            (
-                "mgmtclass",
-                {"name": "testmgmtclassedit"},
-                ["comment", "Testcomment"],
-                "Comment",
-            ),
-            (
-                "file",
-                {
-                    "name": "testfileedit",
-                    "path": "/tmp",
-                    "owner": "root",
-                    "group": "root",
-                    "mode": "600",
-                    "is-dir": "True",
-                },
-                ["path", "/test_dir"],
-                "Path",
-            ),
             ("menu", {"name": "testmenuedit"}, ["comment", "Testcomment"], "Comment"),
         ],
     )
@@ -314,19 +274,6 @@ def test_edit(
             ("system", {"name": "testsystemfind", "profile": ""}),
             ("image", {"name": "testimagefind"}),
             ("repo", {"name": "testrepofind", "mirror": "http://localhost"}),
-            ("package", {"name": "testpackagefind"}),
-            ("mgmtclass", {"name": "testmgmtclassfind"}),
-            (
-                "file",
-                {
-                    "name": "testfilefind",
-                    "path": "/tmp",
-                    "owner": "root",
-                    "group": "root",
-                    "mode": "600",
-                    "is-dir": "True",
-                },
-            ),
             ("menu", {"name": "testmenufind"}),
         ],
     )
@@ -420,19 +367,6 @@ def test_find(
             ),
             ("image", {"name": "testimagecopy"}),
             ("repo", {"name": "testrepocopy", "mirror": "http://localhost"}),
-            ("package", {"name": "testpackagecopy"}),
-            ("mgmtclass", {"name": "testmgmtclasscopy"}),
-            (
-                "file",
-                {
-                    "name": "testfilecopy",
-                    "path": "/tmp",
-                    "owner": "root",
-                    "group": "root",
-                    "mode": "600",
-                    "is-dir": "True",
-                },
-            ),
             ("menu", {"name": "testmenucopy"}),
         ],
     )
@@ -530,19 +464,6 @@ def test_copy(
             ),
             ("image", {"name": "testimagerename"}),
             ("repo", {"name": "testreporename", "mirror": "http://localhost"}),
-            ("package", {"name": "testpackagerename"}),
-            ("mgmtclass", {"name": "testmgmtclassrename"}),
-            (
-                "file",
-                {
-                    "name": "testfilerename",
-                    "path": "/tmp",
-                    "owner": "root",
-                    "group": "root",
-                    "mode": "600",
-                    "is-dir": "True",
-                },
-            ),
             ("menu", {"name": "testmenurename"}),
         ],
     )
@@ -633,19 +554,6 @@ def test_rename(
             ("system", {"name": "testsystemadd", "profile": "testprofileadd_system"}),
             ("image", {"name": "testimageadd"}),
             ("repo", {"name": "testrepoadd", "mirror": "http://localhost"}),
-            ("package", {"name": "testpackageadd"}),
-            ("mgmtclass", {"name": "testmgmtclassadd"}),
-            (
-                "file",
-                {
-                    "name": "testfileadd",
-                    "path": "/tmp",
-                    "owner": "root",
-                    "group": "root",
-                    "mode": "600",
-                    "is-dir": "True",
-                },
-            ),
             ("menu", {"name": "testmenuadd"}),
         ],
     )
@@ -738,19 +646,6 @@ def test_add(
             ),
             ("image", {"name": "testimageremove"}),
             ("repo", {"name": "testreporemove", "mirror": "http://localhost"}),
-            ("package", {"name": "testpackageremove"}),
-            ("mgmtclass", {"name": "testmgmtclassremove"}),
-            (
-                "file",
-                {
-                    "name": "testfileremove",
-                    "path": "/tmp",
-                    "owner": "root",
-                    "group": "root",
-                    "mode": "600",
-                    "is-dir": "True",
-                },
-            ),
             ("menu", {"name": "testmenuremove"}),
         ],
     )
diff --git a/tests/configgen_test.py b/tests/configgen_test.py
index 16a9a30ae6..8f4b91ed0d 100644
--- a/tests/configgen_test.py
+++ b/tests/configgen_test.py
@@ -66,7 +66,7 @@ def test_object_creation(create_testbed):
 def test_resolve_resource_var(create_testbed):
     # Arrange
     test_api = create_testbed()
-    # FIXME: Arrange distro, profile and system, package and file
+    # FIXME: Arrange distro, profile and system
     config_gen = ConfigGen(test_api, "testhost.test.de")
 
     # Act
@@ -80,7 +80,7 @@ def test_resolve_resource_var(create_testbed):
 def test_get_cobbler_resource(create_testbed):
     # Arrange
     test_api = create_testbed()
-    # FIXME: Arrange distro, profile and system, package and file
+    # FIXME: Arrange distro, profile and system
     config_gen = ConfigGen(test_api, "testhost.test.de")
 
     # Act
@@ -93,7 +93,7 @@ def test_get_cobbler_resource(create_testbed):
 def test_get_config_data(create_testbed):
     # Arrange
     test_api = create_testbed()
-    # FIXME: Arrange distro, profile and system, package and file
+    # FIXME: Arrange distro, profile and system
     config_gen = ConfigGen(test_api, "testhost.test.de")
 
     # Act
@@ -106,7 +106,7 @@ def test_get_config_data(create_testbed):
 def test_get_config_data_for_koan(create_testbed):
     # Arrange
     test_api = create_testbed()
-    # FIXME: Arrange distro, profile and system, package and file
+    # FIXME: Arrange distro, profile and system
     config_gen = ConfigGen(test_api, "testhost.test.de")
 
     # Act
diff --git a/tests/conftest.py b/tests/conftest.py
index e2318c914e..b15fcc26a6 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -63,14 +63,8 @@ def reset_items(cobbler_api: CobblerAPI):
         cobbler_api.remove_profile(profile.name)
     for distro in cobbler_api.distros():
         cobbler_api.remove_distro(distro.name)
-    for package in cobbler_api.packages():
-        cobbler_api.remove_package(package.name)
     for repo in cobbler_api.repos():
         cobbler_api.remove_repo(repo.name)
-    for mgmtclass in cobbler_api.mgmtclasses():
-        cobbler_api.remove_mgmtclass(mgmtclass.name)
-    for file in cobbler_api.files():
-        cobbler_api.remove_file(file.name)
     for menu in cobbler_api.menus():
         cobbler_api.remove_menu(menu.name)
 
@@ -246,11 +240,8 @@ def cleanup_leftover_items():
     """
     cobbler_collections = [
         "distros",
-        "files",
         "images",
         "menus",
-        "mgmtclasses",
-        "packages",
         "profiles",
         "repos",
         "systems",
diff --git a/tests/items/cache_test.py b/tests/items/cache_test.py
index 1b76b31726..6acb05c44c 100644
--- a/tests/items/cache_test.py
+++ b/tests/items/cache_test.py
@@ -1,11 +1,8 @@
 import pytest
 
 from cobbler.cexceptions import CX
-from cobbler.items.file import File
 from cobbler.items.item import Item
 from cobbler.items.menu import Menu
-from cobbler.items.mgmtclass import Mgmtclass
-from cobbler.items.package import Package
 from cobbler.items.repo import Repo
 
 from tests.conftest import does_not_raise
@@ -20,96 +17,7 @@ def test_collection_types(cobbler_api):
 
     # Assert
     print(result)
-    assert len(result) == 11
-
-
-@pytest.mark.parametrize(
-    "input_value,expected_exception,expected_output",
-    [
-        (True, does_not_raise(), True),
-        (False, does_not_raise(), False),
-    ],
-)
-def test_package_dict_cache_load(
-    cobbler_api, input_value, expected_exception, expected_output
-):
-    # Arrange
-    cobbler_api.settings().cache_enabled = input_value
-    test_package = Package(cobbler_api)
-    test_package.name = "test_package"
-    cobbler_api.add_package(test_package)
-
-    # Act
-    with expected_exception:
-        result1 = test_package.to_dict(resolved=True)
-        result2 = test_package.to_dict(resolved=False)
-        cached_result1 = test_package.cache.get_dict_cache(True)
-        cached_result2 = test_package.cache.get_dict_cache(False)
-
-    # Assert
-    assert (cached_result1 == result1) == expected_output
-    assert (cached_result2 == result2) == expected_output
-
-
-@pytest.mark.parametrize(
-    "input_value,expected_exception,expected_output",
-    [
-        (True, does_not_raise(), True),
-        (False, does_not_raise(), False),
-    ],
-)
-def test_file_dict_cache_load(
-    cobbler_api, input_value, expected_exception, expected_output
-):
-    # Arrange
-    cobbler_api.settings().cache_enabled = input_value
-    test_file = File(cobbler_api)
-    test_file.name = "test_file"
-    test_file.path = "test path"
-    test_file.owner = "test owner"
-    test_file.group = "test group"
-    test_file.mode = "test mode"
-    test_file.is_dir = True
-    cobbler_api.add_file(test_file)
-
-    # Act
-    with expected_exception:
-        result1 = test_file.to_dict(resolved=True)
-        result2 = test_file.to_dict(resolved=False)
-        cached_result1 = test_file.cache.get_dict_cache(True)
-        cached_result2 = test_file.cache.get_dict_cache(False)
-
-    # Assert
-    assert (cached_result1 == result1) == expected_output
-    assert (cached_result2 == result2) == expected_output
-
-
-@pytest.mark.parametrize(
-    "input_value,expected_exception,expected_output",
-    [
-        (True, does_not_raise(), True),
-        (False, does_not_raise(), False),
-    ],
-)
-def test_mgmtclass_dict_cache_load(
-    cobbler_api, input_value, expected_exception, expected_output
-):
-    # Arrange
-    cobbler_api.settings().cache_enabled = input_value
-    test_mgmtclass = Mgmtclass(cobbler_api)
-    test_mgmtclass.name = "test_mgmtclass"
-    cobbler_api.add_mgmtclass(test_mgmtclass)
-
-    # Act
-    with expected_exception:
-        result1 = test_mgmtclass.to_dict(resolved=True)
-        result2 = test_mgmtclass.to_dict(resolved=False)
-        cached_result1 = test_mgmtclass.cache.get_dict_cache(True)
-        cached_result2 = test_mgmtclass.cache.get_dict_cache(False)
-
-    # Assert
-    assert (cached_result1 == result1) == expected_output
-    assert (cached_result2 == result2) == expected_output
+    assert len(result) == 8
 
 
 @pytest.mark.parametrize(
@@ -290,107 +198,6 @@ def test_system_dict_cache_load(
     assert (cached_result2 == result2) == expected_output
 
 
-@pytest.mark.parametrize(
-    "input_value,expected_exception,expected_output",
-    [
-        (True, does_not_raise(), True),
-        (False, does_not_raise(), False),
-    ],
-)
-def test_package_dict_cache_use(
-    cobbler_api, input_value, expected_exception, expected_output
-):
-    # Arrange
-    cobbler_api.settings().cache_enabled = input_value
-    test_package = Package(cobbler_api)
-    test_package.name = "test_package"
-    cobbler_api.add_package(test_package)
-    test_package.to_dict(resolved=True)
-    test_package.to_dict(resolved=False)
-    test_cache1 = "test1"
-    test_cache2 = "test2"
-
-    # Act
-    with expected_exception:
-        test_package.cache.set_dict_cache(test_cache1, True)
-        test_package.cache.set_dict_cache(test_cache2, False)
-        result1 = test_package.cache.get_dict_cache(True)
-        result2 = test_package.cache.get_dict_cache(False)
-
-    # Assert
-    assert (result1 == test_cache1) == expected_output
-    assert (result2 == test_cache2) == expected_output
-
-
-@pytest.mark.parametrize(
-    "input_value,expected_exception,expected_output",
-    [
-        (True, does_not_raise(), True),
-        (False, does_not_raise(), False),
-    ],
-)
-def test_file_dict_cache_use(
-    cobbler_api, input_value, expected_exception, expected_output
-):
-    # Arrange
-    cobbler_api.settings().cache_enabled = input_value
-    test_file = File(cobbler_api)
-    test_file.name = "test_file"
-    test_file.path = "test path"
-    test_file.owner = "test owner"
-    test_file.group = "test group"
-    test_file.mode = "test mode"
-    test_file.is_dir = True
-    cobbler_api.add_file(test_file)
-    test_file.to_dict(resolved=True)
-    test_file.to_dict(resolved=False)
-    test_cache1 = "test1"
-    test_cache2 = "test2"
-
-    # Act
-    with expected_exception:
-        test_file.cache.set_dict_cache(test_cache1, True)
-        test_file.cache.set_dict_cache(test_cache2, False)
-        result1 = test_file.cache.get_dict_cache(True)
-        result2 = test_file.cache.get_dict_cache(False)
-
-    # Assert
-    assert (result1 == test_cache1) == expected_output
-    assert (result2 == test_cache2) == expected_output
-
-
-@pytest.mark.parametrize(
-    "input_value,expected_exception,expected_output",
-    [
-        (True, does_not_raise(), True),
-        (False, does_not_raise(), False),
-    ],
-)
-def test_mgmtclass_dict_cache_use(
-    cobbler_api, input_value, expected_exception, expected_output
-):
-    # Arrange
-    cobbler_api.settings().cache_enabled = input_value
-    test_mgmtclass = Mgmtclass(cobbler_api)
-    test_mgmtclass.name = "test_mgmtclass"
-    cobbler_api.add_mgmtclass(test_mgmtclass)
-    test_mgmtclass.to_dict(resolved=True)
-    test_mgmtclass.to_dict(resolved=False)
-    test_cache1 = "test1"
-    test_cache2 = "test2"
-
-    # Act
-    with expected_exception:
-        test_mgmtclass.cache.set_dict_cache(test_cache1, True)
-        test_mgmtclass.cache.set_dict_cache(test_cache2, False)
-        result1 = test_mgmtclass.cache.get_dict_cache(True)
-        result2 = test_mgmtclass.cache.get_dict_cache(False)
-
-    # Assert
-    assert (result1 == test_cache1) == expected_output
-    assert (result2 == test_cache2) == expected_output
-
-
 @pytest.mark.parametrize(
     "input_value,expected_exception,expected_output",
     [
@@ -641,25 +448,7 @@ def validate_caches(test_api, objs, obj_test, dep):
 
     # Arrange
     cobbler_api.settings().cache_enabled = cache_enabled
-    test_package = Package(cobbler_api)
-    test_package.name = "test_package"
-    cobbler_api.add_package(test_package)
-    objs = [test_package]
-    test_file = File(cobbler_api)
-    test_file.name = "test_file"
-    test_file.path = "test path"
-    test_file.owner = "test owner"
-    test_file.group = "test group"
-    test_file.mode = "test mode"
-    test_file.is_dir = True
-    cobbler_api.add_file(test_file)
-    objs.append(test_file)
-    test_mgmtclass = Mgmtclass(cobbler_api)
-    test_mgmtclass.name = "test_mgmtclass"
-    test_mgmtclass.packages = [test_package.name]
-    test_mgmtclass.files = [test_file.name]
-    cobbler_api.add_mgmtclass(test_mgmtclass)
-    objs.append(test_mgmtclass)
+    objs = []
     test_repo = Repo(cobbler_api)
     test_repo.name = "test_repo"
     cobbler_api.add_repo(test_repo)
@@ -674,7 +463,6 @@ def validate_caches(test_api, objs, obj_test, dep):
     cobbler_api.add_menu(test_menu2)
     objs.append(test_menu2)
     test_distro = create_distro()
-    test_distro.mgmt_classes = test_mgmtclass.name
     test_distro.source_repos = [test_repo.name]
     objs.append(test_distro)
     test_profile1 = create_profile(distro_name=test_distro.name, name="test_profile1")
@@ -690,7 +478,6 @@ def validate_caches(test_api, objs, obj_test, dep):
         profile_name=test_profile1.name, name="test_profile3"
     )
     test_profile3.enable_menu = False
-    test_profile3.mgmt_classes = test_mgmtclass.name
     test_profile3.repos = [test_repo.name]
     objs.append(test_profile3)
     test_image = create_image()
@@ -702,9 +489,6 @@ def validate_caches(test_api, objs, obj_test, dep):
     objs.append(test_system2)
 
     # Act
-    package_dep = test_package.descendants
-    file_dep = test_file.descendants
-    mgmtclass_dep = test_mgmtclass.descendants
     repo_dep = test_repo.descendants
     menu1_dep = test_menu1.descendants
     menu2_dep = test_menu2.descendants
@@ -728,14 +512,6 @@ def validate_caches(test_api, objs, obj_test, dep):
     ]
 
     # Assert
-    assert (
-        validate_caches(cobbler_api, objs, test_package, package_dep) == expected_output
-    )
-    assert validate_caches(cobbler_api, objs, test_file, file_dep) == expected_output
-    assert (
-        validate_caches(cobbler_api, objs, test_mgmtclass, mgmtclass_dep)
-        == expected_output
-    )
     assert validate_caches(cobbler_api, objs, test_repo, repo_dep) == expected_output
     assert validate_caches(cobbler_api, objs, test_menu1, menu1_dep) == expected_output
     assert validate_caches(cobbler_api, objs, test_menu2, menu2_dep) == expected_output
diff --git a/tests/items/distro_test.py b/tests/items/distro_test.py
index 960c42d98b..6a018c87a1 100644
--- a/tests/items/distro_test.py
+++ b/tests/items/distro_test.py
@@ -317,21 +317,6 @@ def test_kernel(cobbler_api: CobblerAPI, value: Any, expected_exception: Any):
         assert distro.kernel == value
 
 
-@pytest.mark.parametrize("value", [[""], ["Test"]])
-def test_mgmt_classes(cobbler_api: CobblerAPI, value: Any):
-    """
-    Test that verifies if management classes can be set as expected.
-    """
-    # Arrange
-    distro = Distro(cobbler_api)
-
-    # Act
-    distro.mgmt_classes = value
-
-    # Assert
-    assert distro.mgmt_classes == value
-
-
 @pytest.mark.parametrize(
     "value,expected_exception",
     [([""], pytest.raises(TypeError)), (False, pytest.raises(TypeError))],
diff --git a/tests/items/file_test.py b/tests/items/file_test.py
deleted file mode 100644
index 31f23fc991..0000000000
--- a/tests/items/file_test.py
+++ /dev/null
@@ -1,119 +0,0 @@
-import pytest
-
-from cobbler import enums
-from cobbler.api import CobblerAPI
-from cobbler.items.file import File
-
-from tests.conftest import does_not_raise
-
-
-@pytest.fixture()
-def test_settings(mocker, cobbler_api: CobblerAPI):
-    settings = mocker.MagicMock(name="file_setting_mock", spec=cobbler_api.settings())
-    orig = cobbler_api.settings()
-    for key in orig.to_dict():
-        setattr(settings, key, getattr(orig, key))
-    return settings
-
-
-def test_object_creation(cobbler_api: CobblerAPI):
-    # Arrange
-
-    # Act
-    distro = File(cobbler_api)
-
-    # Arrange
-    assert isinstance(distro, File)
-
-
-def test_make_clone(cobbler_api: CobblerAPI):
-    # Arrange
-    file = File(cobbler_api)
-
-    # Act
-    clone = file.make_clone()
-
-    # Assert
-    assert clone != file
-
-
-def test_to_dict(cobbler_api: CobblerAPI):
-    # Arrange
-    titem = File(cobbler_api)
-
-    # Act
-    result = titem.to_dict()
-
-    # Assert
-    assert isinstance(result, dict)
-
-
-def test_to_dict_resolved(cobbler_api: CobblerAPI):
-    # Arrange
-    titem = File(cobbler_api)
-
-    # Act
-    result = titem.to_dict(resolved=True)
-
-    # Assert
-    assert isinstance(result, dict)
-    assert enums.VALUE_INHERITED not in str(result)
-
-
-# Properties Tests
-
-
-@pytest.mark.parametrize("value,expected_exception", [(False, does_not_raise())])
-def test_is_dir(cobbler_api: CobblerAPI, value, expected_exception):
-    # Arrange
-    file = File(cobbler_api)
-
-    # Act
-    with expected_exception:
-        file.is_dir = value
-
-        # Assert
-        assert file.is_dir is value
-
-
-def test_inheritance(mocker, cobbler_api: CobblerAPI, test_settings):
-    """
-    Checking that inherited properties are correctly inherited from settings and
-    that the <<inherit>> value can be set for them.
-    """
-    # Arrange
-    mocker.patch.object(cobbler_api, "settings", return_value=test_settings)
-    file = File(cobbler_api)
-
-    # Act
-    for key, key_value in file.__dict__.items():
-        if key_value == enums.VALUE_INHERITED:
-            new_key = key[1:].lower()
-            new_value = getattr(file, new_key)
-            settings_name = new_key
-            if new_key == "owners":
-                settings_name = "default_ownership"
-            if hasattr(test_settings, f"default_{settings_name}"):
-                settings_name = f"default_{settings_name}"
-            if hasattr(test_settings, settings_name):
-                setting = getattr(test_settings, settings_name)
-                if isinstance(setting, str):
-                    new_value = "test_inheritance"
-                elif isinstance(setting, bool):
-                    new_value = True
-                elif isinstance(setting, int):
-                    new_value = 1
-                elif isinstance(setting, float):
-                    new_value = 1.0
-                elif isinstance(setting, dict):
-                    new_value = {"test_inheritance": "test_inheritance"}
-                elif isinstance(setting, list):
-                    new_value = ["test_inheritance"]
-                setattr(test_settings, settings_name, new_value)
-
-            prev_value = getattr(file, new_key)
-            setattr(file, new_key, enums.VALUE_INHERITED)
-
-            # Assert
-            assert prev_value == new_value
-            assert prev_value == getattr(file, new_key)
diff --git a/tests/items/inmemory_test.py b/tests/items/inmemory_test.py
index 39375a41c8..517cef4fe9 100644
--- a/tests/items/inmemory_test.py
+++ b/tests/items/inmemory_test.py
@@ -11,11 +11,8 @@
 from cobbler.api import CobblerAPI
 from cobbler.cobbler_collections import manager
 from cobbler.items.distro import Distro
-from cobbler.items.file import File
 from cobbler.items.image import Image
 from cobbler.items.menu import Menu
-from cobbler.items.mgmtclass import Mgmtclass
-from cobbler.items.package import Package
 from cobbler.items.profile import Profile
 from cobbler.items.repo import Repo
 from cobbler.items.system import System
@@ -46,33 +43,6 @@ def test_inmemory(
     TODO
     """
     # Arrange
-    test_package = Package(
-        inmemory_api, **{"name": "test_package", "comment": "test comment"}
-    )
-    inmemory_api.add_package(test_package)
-    test_file = File(
-        inmemory_api,
-        **{
-            "name": "test_file",
-            "path": "test path",
-            "owner": "test owner",
-            "group": "test group",
-            "mode": "test mode",
-            "is_dir": True,
-            "comment": "test comment",
-        },
-    )
-    inmemory_api.add_file(test_file)
-    test_mgmtclass = Mgmtclass(
-        inmemory_api,
-        **{
-            "name": "test_mgmtclass",
-            "packages": [test_package.name],
-            "files": [test_file.name],
-            "comment": "test comment",
-        },
-    )
-    inmemory_api.add_mgmtclass(test_mgmtclass)
     test_repo = Repo(inmemory_api, **{"name": "test_repo", "comment": "test comment"})
     inmemory_api.add_repo(test_repo)
     test_menu1 = Menu(inmemory_api, **{"name": "test_menu1", "comment": "test comment"})
@@ -95,7 +65,6 @@ def test_inmemory(
             "name": "test_distro",
             "kernel": str(os.path.join(directory, fk_kernel)),
             "initrd": str(os.path.join(directory, fk_initrd)),
-            "mgmt_classes": test_mgmtclass.name,
             "comment": "test comment",
         },
     )
@@ -130,7 +99,6 @@ def test_inmemory(
             "name": "test_profile3",
             "parent": test_profile1.name,
             "enable_menu": False,
-            "mgmt_classes": test_mgmtclass.name,
             "repos": [test_repo.name],
             "menu": test_menu1.name,
             "comment": "test comment",
@@ -167,15 +135,9 @@ def test_inmemory(
     inmemory_api.menus().listing.pop(test_menu2.name)
     inmemory_api.menus().listing.pop(test_menu1.name)
     inmemory_api.repos().listing.pop(test_repo.name)
-    inmemory_api.mgmtclasses().listing.pop(test_mgmtclass.name)
-    inmemory_api.files().listing.pop(test_file.name)
-    inmemory_api.packages().listing.pop(test_package.name)
 
     inmemory_api.deserialize()
 
-    test_package = inmemory_api.find_package("test_package")
-    test_file = inmemory_api.find_file("test_file")
-    test_mgmtclass = inmemory_api.find_mgmtclass("test_mgmtclass")
     test_repo = inmemory_api.find_repo("test_repo")
     test_menu1 = inmemory_api.find_menu("test_menu1")
     test_menu2 = inmemory_api.find_menu("test_menu2")
@@ -190,9 +152,6 @@ def test_inmemory(
     # Act
     result = True
     for collection in [
-        "package",
-        "file",
-        "mgmtclass",
         "repo",
         "distro",
         "menu",
@@ -205,9 +164,6 @@ def test_inmemory(
             result = obj.__dict__["_comment"] == "" if result else result
 
     comment = test_system1.comment if result else result
-    result = test_package.inmemory if result else result
-    result = test_file.inmemory if result else result
-    result = test_mgmtclass.inmemory if result else result
     result = test_repo.inmemory if result else result
     result = test_menu1.inmemory if result else result
     result = not test_menu2.inmemory if result else result
@@ -219,9 +175,6 @@ def test_inmemory(
     result = test_system1.inmemory if result else result
     result = not test_system2.inmemory if result else result
 
-    result = test_package.__dict__["_comment"] == "test comment" if result else result
-    result = test_file.__dict__["_comment"] == "test comment" if result else result
-    result = test_mgmtclass.__dict__["_comment"] == "test comment" if result else result
     result = test_repo.__dict__["_comment"] == "test comment" if result else result
     result = test_menu1.__dict__["_comment"] == "test comment" if result else result
     result = test_menu2.__dict__["_comment"] == "" if result else result
@@ -244,9 +197,6 @@ def test_inmemory(
     inmemory_api.remove_menu(test_menu2)
     inmemory_api.remove_menu(test_menu1)
     inmemory_api.remove_repo(test_repo)
-    inmemory_api.remove_mgmtclass(test_mgmtclass)
-    inmemory_api.remove_package(test_package)
-    inmemory_api.remove_file(test_file)
 
     # Assert
     assert result
diff --git a/tests/items/item_test.py b/tests/items/item_test.py
index 91f69dce7f..6a9619d932 100644
--- a/tests/items/item_test.py
+++ b/tests/items/item_test.py
@@ -9,12 +9,9 @@
 from cobbler import enums
 from cobbler.api import CobblerAPI
 from cobbler.items.distro import Distro
-from cobbler.items.file import File
 from cobbler.items.image import Image
 from cobbler.items.item import Item
 from cobbler.items.menu import Menu
-from cobbler.items.mgmtclass import Mgmtclass
-from cobbler.items.package import Package
 from cobbler.items.profile import Profile
 from cobbler.items.repo import Repo
 from cobbler.items.system import System
@@ -148,22 +145,6 @@ def test_descendants(
     Assert that the decendants property is also working with an enabled Cache.
     """
     # Arrange
-    test_package = Package(cobbler_api)
-    test_package.name = "test_package"
-    cobbler_api.add_package(test_package)
-    test_file = File(cobbler_api)
-    test_file.name = "test_file"
-    test_file.path = "test path"
-    test_file.owner = "test owner"
-    test_file.group = "test group"
-    test_file.mode = "test mode"
-    test_file.is_dir = True
-    cobbler_api.add_file(test_file)
-    test_mgmtclass = Mgmtclass(cobbler_api)
-    test_mgmtclass.name = "test_mgmtclass"
-    test_mgmtclass.packages = [test_package.name]
-    test_mgmtclass.files = [test_file.name]
-    cobbler_api.add_mgmtclass(test_mgmtclass)
     test_repo = Repo(cobbler_api)
     test_repo.name = "test_repo"
     cobbler_api.add_repo(test_repo)
@@ -175,7 +156,6 @@ def test_descendants(
     test_menu2.parent = test_menu1.name
     cobbler_api.add_menu(test_menu2)
     test_distro = create_distro()
-    test_distro.mgmt_classes = test_mgmtclass.name
     test_profile1: Profile = create_profile(distro_name=test_distro.name, name="test_profile1")  # type: ignore
     test_profile1.enable_menu = False
     test_profile1.repos = [test_repo.name]
@@ -188,7 +168,6 @@ def test_descendants(
         profile_name=test_profile1.name, name="test_profile3"  # type: ignore
     )
     test_profile3.enable_menu = False
-    test_profile3.mgmt_classes = test_mgmtclass.name
     test_profile3.repos = [test_repo.name]
     test_image = create_image()
     test_image.menu = test_menu1.name
@@ -197,9 +176,6 @@ def test_descendants(
 
     # Act
     cache_tests = [
-        test_package.descendants,
-        test_file.descendants,
-        test_mgmtclass.descendants,
         test_repo.descendants,
         test_distro.descendants,
         test_image.descendants,
@@ -212,23 +188,6 @@ def test_descendants(
         test_system2.descendants,
     ]
     results = [
-        [
-            test_mgmtclass,
-            test_distro,
-            test_profile1,
-            test_profile2,
-            test_profile3,
-            test_system1,
-        ],
-        [
-            test_mgmtclass,
-            test_distro,
-            test_profile1,
-            test_profile2,
-            test_profile3,
-            test_system1,
-        ],
-        [test_distro, test_profile1, test_profile2, test_profile3, test_system1],
         [test_profile1, test_profile2, test_profile3, test_system1],
         [test_profile1, test_profile2, test_profile3, test_system1],
         [test_system2],
@@ -411,67 +370,6 @@ def test_autoinstall_meta(
         assert titem.autoinstall_meta == expected_result
 
 
-@pytest.mark.parametrize(
-    "input_mgmt_classes,expected_exception,expected_result",
-    [
-        ("", does_not_raise(), []),
-        ("<<inherit>>", does_not_raise(), []),
-        ("Test1 Test2", does_not_raise(), ["Test1", "Test2"]),
-        (True, pytest.raises(TypeError), None),
-        (False, pytest.raises(TypeError), None),
-    ],
-)
-def test_mgmt_classes(
-    create_distro: Callable[[], Distro],
-    input_mgmt_classes: Any,
-    expected_exception: Any,
-    expected_result: Optional[List[Any]],
-):
-    """
-    Assert that an abstract Cobbler Item can use the Getter and Setter of the mgmt_classes property correctly.
-    """
-    # Arrange
-    tmp_distro = create_distro()
-    tmp_distro.mgmt_classes = ["Test0"]
-
-    # Act
-    with expected_exception:
-        tmp_distro.mgmt_classes = input_mgmt_classes
-
-        # Assert
-        assert tmp_distro.mgmt_classes == expected_result
-
-
-@pytest.mark.parametrize(
-    "input_mgmt_parameters,expected_exception,expected_result",
-    [
-        ("", does_not_raise(), {"from_cobbler": 1}),
-        ("a: 5", does_not_raise(), {"from_cobbler": 1, "a": 5}),
-        ("<<inherit>>", does_not_raise(), {"from_cobbler": 1}),
-        ({}, does_not_raise(), {"from_cobbler": 1}),
-        ({"a": 5}, does_not_raise(), {"from_cobbler": 1, "a": 5}),
-    ],
-)
-def test_mgmt_parameters(
-    cobbler_api: CobblerAPI,
-    input_mgmt_parameters: Any,
-    expected_exception: Any,
-    expected_result: Dict[str, Any],
-):
-    """
-    Assert that an abstract Cobbler Item can use the Getter and Setter of the mgmt_parameters property correctly.
-    """
-    # Arrange
-    titem = Item(cobbler_api)
-
-    # Act
-    with expected_exception:
-        titem.mgmt_parameters = input_mgmt_parameters
-
-        # Assert
-        assert titem.mgmt_parameters == expected_result
-
-
 def test_template_files(cobbler_api: CobblerAPI):
     """
     Assert that an abstract Cobbler Item can use the Getter and Setter of the template_files property correctly.
@@ -605,7 +503,7 @@ def test_dump_vars(cobbler_api: CobblerAPI):
     print(result)
     assert "default_ownership" in result
     assert "owners" in result
-    assert len(result) == 154
+    assert len(result) == 152
 
 
 @pytest.mark.parametrize(
diff --git a/tests/items/mgmtclass_test.py b/tests/items/mgmtclass_test.py
deleted file mode 100644
index cf7bcf3ec1..0000000000
--- a/tests/items/mgmtclass_test.py
+++ /dev/null
@@ -1,170 +0,0 @@
-import pytest
-
-from cobbler import enums
-from cobbler.api import CobblerAPI
-from cobbler.items.mgmtclass import Mgmtclass
-
-
-@pytest.fixture()
-def test_settings(mocker, cobbler_api: CobblerAPI):
-    settings = mocker.MagicMock(
-        name="mgmtclass_setting_mock", spec=cobbler_api.settings()
-    )
-    orig = cobbler_api.settings()
-    for key in orig.to_dict():
-        setattr(settings, key, getattr(orig, key))
-    return settings
-
-
-def test_object_creation(cobbler_api: CobblerAPI):
-    # Arrange
-
-    # Act
-    mgmtclass = Mgmtclass(cobbler_api)
-
-    # Arrange
-    assert isinstance(mgmtclass, Mgmtclass)
-
-
-def test_make_clone(cobbler_api: CobblerAPI):
-    # Arrange
-    mgmtclass = Mgmtclass(cobbler_api)
-
-    # Act
-    result = mgmtclass.make_clone()
-
-    # Arrange
-    assert result != mgmtclass
-
-
-def test_check_if_valid(cobbler_api: CobblerAPI):
-    # Arrange
-    mgmtclass = Mgmtclass(cobbler_api)
-    mgmtclass.name = "unittest_mgmtclass"
-
-    # Act
-    mgmtclass.check_if_valid()
-
-    # Assert
-    assert True
-
-
-def test_packages(cobbler_api: CobblerAPI):
-    # Arrange
-    mgmtclass = Mgmtclass(cobbler_api)
-
-    # Act
-    mgmtclass.packages = ""
-
-    # Assert
-    assert mgmtclass.packages == []
-
-
-def test_files(cobbler_api: CobblerAPI):
-    # Arrange
-    mgmtclass = Mgmtclass(cobbler_api)
-
-    # Act
-    mgmtclass.files = ""
-
-    # Assert
-    assert mgmtclass.files == []
-
-
-def test_params(cobbler_api: CobblerAPI):
-    # Arrange
-    mgmtclass = Mgmtclass(cobbler_api)
-
-    # Act
-    mgmtclass.params = ""
-
-    # Assert
-    assert mgmtclass.params == {}
-
-
-def test_is_definition(cobbler_api: CobblerAPI):
-    # Arrange
-    mgmtclass = Mgmtclass(cobbler_api)
-
-    # Act
-    mgmtclass.is_definition = False
-
-    # Assert
-    assert not mgmtclass.is_definition
-
-
-def test_class_name(cobbler_api: CobblerAPI):
-    # Arrange
-    mgmtclass = Mgmtclass(cobbler_api)
-
-    # Act
-    mgmtclass.class_name = ""
-
-    # Assert
-    assert mgmtclass.class_name == ""
-
-
-def test_to_dict(cobbler_api: CobblerAPI):
-    # Arrange
-    titem = Mgmtclass(cobbler_api)
-
-    # Act
-    result = titem.to_dict()
-
-    # Assert
-    assert isinstance(result, dict)
-
-
-def test_to_dict_resolved(cobbler_api: CobblerAPI):
-    # Arrange
-    titem = Mgmtclass(cobbler_api)
-
-    # Act
-    result = titem.to_dict(resolved=True)
-
-    # Assert
-    assert isinstance(result, dict)
-    assert enums.VALUE_INHERITED not in str(result)
-
-
-def test_inheritance(mocker, cobbler_api: CobblerAPI, test_settings):
-    """
-    Checking that inherited properties are correctly inherited from settings and
-    that the <<inherit>> value can be set for them.
-    """
-    # Arrange
-    mocker.patch.object(cobbler_api, "settings", return_value=test_settings)
-    titem = Mgmtclass(cobbler_api)
-
-    # Act
-    for key, key_value in titem.__dict__.items():
-        if key_value == enums.VALUE_INHERITED:
-            new_key = key[1:].lower()
-            new_value = getattr(titem, new_key)
-            settings_name = new_key
-            if new_key == "owners":
-                settings_name = "default_ownership"
-            if hasattr(test_settings, f"default_{settings_name}"):
-                settings_name = f"default_{settings_name}"
-            if hasattr(test_settings, settings_name):
-                setting = getattr(test_settings, settings_name)
-                if isinstance(setting, str):
-                    new_value = "test_inheritance"
-                elif isinstance(setting, bool):
-                    new_value = True
-                elif isinstance(setting, int):
-                    new_value = 1
-                elif isinstance(setting, float):
-                    new_value = 1.0
-                elif isinstance(setting, dict):
-                    new_value = {"test_inheritance": "test_inheritance"}
-                elif isinstance(setting, list):
-                    new_value = ["test_inheritance"]
-                setattr(test_settings, settings_name, new_value)
-
-            prev_value = getattr(titem, new_key)
-            setattr(titem, new_key, enums.VALUE_INHERITED)
-
-            # Assert
-            assert prev_value == new_value
-            assert prev_value == getattr(titem, new_key)
diff --git a/tests/items/package_test.py b/tests/items/package_test.py
deleted file mode 100644
index 61483f8cea..0000000000
--- a/tests/items/package_test.py
+++ /dev/null
@@ -1,125 +0,0 @@
-import pytest
-
-from cobbler import enums
-from cobbler.api import CobblerAPI
-from cobbler.items.package import Package
-
-
-@pytest.fixture()
-def test_settings(mocker, cobbler_api: CobblerAPI):
-    settings = mocker.MagicMock(
-        name="package_setting_mock", spec=cobbler_api.settings()
-    )
-    orig = cobbler_api.settings()
-    for key in orig.to_dict():
-        setattr(settings, key, getattr(orig, key))
-    return settings
-
-
-def test_object_creation(cobbler_api: CobblerAPI):
-    # Arrange
-
-    # & Act
-    package = Package(cobbler_api)
-
-    # Arrange
-    assert isinstance(package, Package)
-
-
-def test_make_clone(cobbler_api: CobblerAPI):
-    # Arrange
-    package = Package(cobbler_api)
-
-    # Act
-    result = package.make_clone()
-
-    # Assert
-    assert package != result
-
-
-def test_installer(cobbler_api: CobblerAPI):
-    # Arrange
-    package = Package(cobbler_api)
-
-    # Act
-    package.installer = ""
-
-    # Assert
-    assert package.installer == ""
-
-
-def test_version(cobbler_api: CobblerAPI):
-    # Arrange
-    package = Package(cobbler_api)
-
-    # Act
-    package.version = ""
-
-    # Assert
-    assert package.version == ""
-
-
-def test_to_dict(cobbler_api: CobblerAPI):
-    # Arrange
-    titem = Package(cobbler_api)
-
-    # Act
-    result = titem.to_dict()
-
-    # Assert
-    assert isinstance(result, dict)
-
-
-def test_to_dict_resolved(cobbler_api: CobblerAPI):
-    # Arrange
-    titem = Package(cobbler_api)
-
-    # Act
-    result = titem.to_dict(resolved=True)
-
-    # Assert
-    assert isinstance(result, dict)
-    assert enums.VALUE_INHERITED not in str(result)
-
-
-def test_inheritance(mocker, cobbler_api: CobblerAPI, test_settings):
-    """
-    Checking that inherited properties are correctly inherited from settings and
-    that the <<inherit>> value can be set for them.
-    """
-    # Arrange
-    mocker.patch.object(cobbler_api, "settings", return_value=test_settings)
-    titem = Package(cobbler_api)
-
-    # Act
-    for key, key_value in titem.__dict__.items():
-        if key_value == enums.VALUE_INHERITED:
-            new_key = key[1:].lower()
-            new_value = getattr(titem, new_key)
-            settings_name = new_key
-            if new_key == "owners":
-                settings_name = "default_ownership"
-            if hasattr(test_settings, f"default_{settings_name}"):
-                settings_name = f"default_{settings_name}"
-            if hasattr(test_settings, settings_name):
-                setting = getattr(test_settings, settings_name)
-                if isinstance(setting, str):
-                    new_value = "test_inheritance"
-                elif isinstance(setting, bool):
-                    new_value = True
-                elif isinstance(setting, int):
-                    new_value = 1
-                elif isinstance(setting, float):
-                    new_value = 1.0
-                elif isinstance(setting, dict):
-                    new_value = {"test_inheritance": "test_inheritance"}
-                elif isinstance(setting, list):
-                    new_value = ["test_inheritance"]
-                setattr(test_settings, settings_name, new_value)
-
-            prev_value = getattr(titem, new_key)
-            setattr(titem, new_key, enums.VALUE_INHERITED)
-
-            # Assert
-            assert prev_value == new_value
-            assert prev_value == getattr(titem, new_key)
diff --git a/tests/items/profile_test.py b/tests/items/profile_test.py
index 85fed4060f..39e50ae443 100644
--- a/tests/items/profile_test.py
+++ b/tests/items/profile_test.py
@@ -69,7 +69,7 @@ def test_to_dict(
     result = profile.to_dict()
 
     # Assert
-    assert len(result) == 45
+    assert len(result) == 43
     assert result["distro"] == distro.name
     assert result.get("boot_loaders") == enums.VALUE_INHERITED
 
diff --git a/tests/items/resource_test.py b/tests/items/resource_test.py
deleted file mode 100644
index 8db161ef52..0000000000
--- a/tests/items/resource_test.py
+++ /dev/null
@@ -1,172 +0,0 @@
-import pytest
-
-from cobbler import enums
-from cobbler.api import CobblerAPI
-from cobbler.items.resource import Resource
-
-
-@pytest.fixture()
-def test_settings(mocker, cobbler_api: CobblerAPI):
-    settings = mocker.MagicMock(
-        name="resource_setting_mock", spec=cobbler_api.settings()
-    )
-    orig = cobbler_api.settings()
-    for key in orig.to_dict():
-        setattr(settings, key, getattr(orig, key))
-    return settings
-
-
-def test_object_creation(cobbler_api: CobblerAPI):
-    # Arrange
-
-    # Act
-    distro = Resource(cobbler_api)
-
-    # Arrange
-    assert isinstance(distro, Resource)
-
-
-def test_make_clone(cobbler_api: CobblerAPI):
-    # Arrange
-    resource = Resource(cobbler_api)
-
-    # Act
-    result = resource.make_clone()
-
-    # Assert
-    assert result != resource
-
-
-def test_to_dict(cobbler_api: CobblerAPI):
-    # Arrange
-    titem = Resource(cobbler_api)
-
-    # Act
-    result = titem.to_dict()
-
-    # Assert
-    assert isinstance(result, dict)
-
-
-def test_to_dict_resolved(cobbler_api: CobblerAPI):
-    # Arrange
-    titem = Resource(cobbler_api)
-
-    # Act
-    result = titem.to_dict(resolved=True)
-
-    # Assert
-    assert isinstance(result, dict)
-    assert enums.VALUE_INHERITED not in str(result)
-
-
-# Properties Tests
-
-
-def test_action(cobbler_api: CobblerAPI):
-    # Arrange
-    resource = Resource(cobbler_api)
-
-    # Act
-    resource.action = "create"
-
-    # Assert
-    assert resource.action == enums.ResourceAction.CREATE
-
-
-def test_group(cobbler_api: CobblerAPI):
-    # Arrange
-    resource = Resource(cobbler_api)
-
-    # Act
-    resource.group = "test"
-
-    # Assert
-    assert resource.group == "test"
-
-
-def test_mode(cobbler_api: CobblerAPI):
-    # Arrange
-    resource = Resource(cobbler_api)
-
-    # Act
-    resource.mode = "test"
-
-    # Assert
-    assert resource.mode == "test"
-
-
-def test_owner(cobbler_api: CobblerAPI):
-    # Arrange
-    resource = Resource(cobbler_api)
-
-    # Act
-    resource.owner = "test"
-
-    # Assert
-    assert resource.owner == "test"
-
-
-def test_path(cobbler_api: CobblerAPI):
-    # Arrange
-    resource = Resource(cobbler_api)
-
-    # Act
-    resource.path = "test"
-
-    # Assert
-    assert resource.path == "test"
-
-
-def test_template(cobbler_api: CobblerAPI):
-    # Arrange
-    resource = Resource(cobbler_api)
-
-    # Act
-    resource.template = "test"
-
-    # Assert
-    assert resource.template == "test"
-
-
-def test_inheritance(mocker, cobbler_api: CobblerAPI, test_settings):
-    """
-    Checking that inherited properties are correctly inherited from settings and
-    that the <<inherit>> value can be set for them.
-    """
-    # Arrange
-    mocker.patch.object(cobbler_api, "settings", return_value=test_settings)
-    resource = Resource(cobbler_api)
-
-    # Act
-    for key, key_value in resource.__dict__.items():
-        if key_value == enums.VALUE_INHERITED:
-            new_key = key[1:].lower()
-            new_value = getattr(resource, new_key)
-            settings_name = new_key
-            if new_key == "owners":
-                settings_name = "default_ownership"
-            if hasattr(test_settings, f"default_{settings_name}"):
-                settings_name = f"default_{settings_name}"
-            if hasattr(test_settings, settings_name):
-                setting = getattr(test_settings, settings_name)
-                if isinstance(setting, str):
-                    new_value = "test_inheritance"
-                elif isinstance(setting, bool):
-                    new_value = True
-                elif isinstance(setting, int):
-                    new_value = 1
-                elif isinstance(setting, float):
-                    new_value = 1.0
-                elif isinstance(setting, dict):
-                    new_value = {"test_inheritance": "test_inheritance"}
-                elif isinstance(setting, list):
-                    new_value = ["test_inheritance"]
-                setattr(test_settings, settings_name, new_value)
-
-            prev_value = getattr(resource, new_key)
-            setattr(resource, new_key, enums.VALUE_INHERITED)
-
-            # Assert
-            assert prev_value == new_value
-            assert prev_value == getattr(resource, new_key)
diff --git a/tests/modules/managers/genders_test.py b/tests/modules/managers/genders_test.py
index 5683f8aa08..f48cd528cd 100644
--- a/tests/modules/managers/genders_test.py
+++ b/tests/modules/managers/genders_test.py
@@ -5,7 +5,6 @@
 
 from cobbler.api import CobblerAPI
 from cobbler.items.distro import Distro
-from cobbler.items.mgmtclass import Mgmtclass
 from cobbler.items.profile import Profile
 from cobbler.items.system import System
 from cobbler.modules.managers import genders
@@ -52,9 +51,6 @@ def api_genders_mock():
     test_system._parent = test_profile.name
     api_mock.find_system.return_value = [test_system]
     api_mock.systems.return_value = [test_system]
-    test_mgmtclass = Mgmtclass(api_mock)
-    test_mgmtclass.name = "test_mgmtclass"
-    api_mock.mgmtclasses.return_value = [test_mgmtclass]
     return api_mock
 
 
@@ -114,6 +110,6 @@ def test_run(mocker, api_genders_mock):
         api_genders_mock,
         {"test_profile": "test_system"},
         {"test_distro": "test_system"},
-        {"test_mgmtclass": "test_system"},
+        {},
     )
     assert result == 0
diff --git a/tests/performance/__init__.py b/tests/performance/__init__.py
index 2db96118eb..5e8efe4627 100644
--- a/tests/performance/__init__.py
+++ b/tests/performance/__init__.py
@@ -7,11 +7,8 @@
 
 from cobbler.api import CobblerAPI
 from cobbler.items.distro import Distro
-from cobbler.items.file import File
 from cobbler.items.image import Image
 from cobbler.items.menu import Menu
-from cobbler.items.mgmtclass import Mgmtclass
-from cobbler.items.package import Package
 from cobbler.items.profile import Profile
 from cobbler.items.repo import Repo
 from cobbler.items.system import System
@@ -26,43 +23,6 @@ class CobblerTree:
     test_rounds = 1
     tree_levels = 3
 
-    @staticmethod
-    def create_packages(api: CobblerAPI):
-        """
-        Create a number of packages for benchmark testing.
-        """
-        for i in range(CobblerTree.objs_count):
-            test_item = Package(api)
-            test_item.name = f"test_package_{i}"
-            api.add_package(test_item)
-
-    @staticmethod
-    def create_files(api: CobblerAPI):
-        """
-        Create a number of files for benchmark testing.
-        """
-        for i in range(CobblerTree.objs_count):
-            test_item = File(api)
-            test_item.name = f"test_file_{i}"
-            test_item.path = "test path"
-            test_item.owner = "test owner"
-            test_item.group = "test group"
-            test_item.mode = "test mode"
-            test_item.is_dir = True
-            api.add_file(test_item)
-
-    @staticmethod
-    def create_mgmtclasses(api: CobblerAPI):
-        """
-        Create a number of managemment classes for benchmark testing.
-        """
-        for i in range(CobblerTree.objs_count):
-            test_item = Mgmtclass(api)
-            test_item.name = f"test_mgmtclass_{i}"
-            test_item.package = f"test_package_{i}"
-            test_item.file = f"test_file_{i}"
-            api.add_mgmtclass(test_item)
-
     @staticmethod
     def create_repos(api: CobblerAPI):
         """
@@ -81,7 +41,6 @@ def create_distros(api: CobblerAPI, create_distro: Callable[[str], Distro]):
         for i in range(CobblerTree.objs_count):
             test_item = create_distro(name=f"test_distro_{i}")
             test_item.source_repos = [f"test_repo_{i}"]
-            test_item.mgmt_classes = [f"test_mgmtclass_{i}"]
 
     @staticmethod
     def create_menus(api: CobblerAPI):
@@ -162,9 +121,6 @@ def create_all_objs(
         """
         Method that collectively creates all items at the same time.
         """
-        CobblerTree.create_packages(api)
-        CobblerTree.create_files(api)
-        CobblerTree.create_mgmtclasses(api)
         CobblerTree.create_repos(api)
         CobblerTree.create_distros(api, create_distro)
         CobblerTree.create_menus(api)
@@ -172,30 +128,6 @@ def create_all_objs(
         CobblerTree.create_images(api, create_image)
         CobblerTree.create_systems(api, create_system)
 
-    @staticmethod
-    def remove_packages(api: CobblerAPI):
-        """
-        Method that removes all packages.
-        """
-        for test_item in api.packages():
-            api.remove_package(test_item.name)
-
-    @staticmethod
-    def remove_files(api: CobblerAPI):
-        """
-        Method that removes all files.
-        """
-        for test_item in api.files():
-            api.remove_file(test_item.name)
-
-    @staticmethod
-    def remove_mgmtclasses(api: CobblerAPI):
-        """
-        Method that removes all management classes.
-        """
-        for test_item in api.mgmtclasses():
-            api.remove_mgmtclass(test_item.name)
-
     @staticmethod
     def remove_repos(api: CobblerAPI):
         """
@@ -255,6 +187,3 @@ def remove_all_objs(api: CobblerAPI):
         CobblerTree.remove_menus(api)
         CobblerTree.remove_distros(api)
         CobblerTree.remove_repos(api)
-        CobblerTree.remove_mgmtclasses(api)
-        CobblerTree.remove_files(api)
-        CobblerTree.remove_packages(api)
diff --git a/tests/performance/item_add_test.py b/tests/performance/item_add_test.py
index 03b9666021..6ff9bc1c9e 100644
--- a/tests/performance/item_add_test.py
+++ b/tests/performance/item_add_test.py
@@ -16,102 +16,6 @@
 from tests.performance import CobblerTree
 
 
-@pytest.mark.parametrize(
-    "cache_enabled",
-    [
-        (False,),
-        (True,),
-    ],
-)
-def test_packages_create(
-    benchmark: BenchmarkFixture, cobbler_api: CobblerAPI, cache_enabled: bool
-):
-    """
-    Test that asserts if creating a package is running without a performance decrease.
-    """
-
-    def setup_func() -> Tuple[Tuple[Any, ...], Dict[str, Any]]:
-        CobblerTree.remove_all_objs(cobbler_api)
-        return (cobbler_api,), {}
-
-    # Arrange
-    cobbler_api.settings().cache_enabled = cache_enabled
-
-    # Act
-    result = benchmark.pedantic(
-        CobblerTree.create_packages, setup=setup_func, rounds=CobblerTree.test_rounds
-    )
-
-    # Cleanup
-    CobblerTree.remove_all_objs(cobbler_api)
-
-    # Assert
-
-
-@pytest.mark.parametrize(
-    "cache_enabled",
-    [
-        (False,),
-        (True,),
-    ],
-)
-def test_files_create(
-    benchmark: BenchmarkFixture, cobbler_api: CobblerAPI, cache_enabled: bool
-):
-    """
-    Test that asserts if creating a package is running without a performance decrease.
-    """
-
-    def setup_func() -> Tuple[Tuple[Any, ...], Dict[str, Any]]:
-        CobblerTree.remove_all_objs(cobbler_api)
-        return (cobbler_api,), {}
-
-    # Arrange
-    cobbler_api.settings().cache_enabled = cache_enabled
-
-    # Act
-    result = benchmark.pedantic(
-        CobblerTree.create_files, setup=setup_func, rounds=CobblerTree.test_rounds
-    )
-
-    # Cleanup
-    CobblerTree.remove_all_objs(cobbler_api)
-
-    # Assert
-
-
-@pytest.mark.parametrize(
-    "cache_enabled",
-    [
-        (False,),
-        (True,),
-    ],
-)
-def test_mgmtclasses_create(
-    benchmark: BenchmarkFixture, cobbler_api: CobblerAPI, cache_enabled: bool
-):
-    """
-    Test that asserts if creating a package is running without a performance decrease.
-    """
-
-    def setup_func() -> Tuple[Tuple[Any, ...], Dict[str, Any]]:
-        CobblerTree.remove_all_objs(cobbler_api)
-        return (cobbler_api,), {}
-
-    # Arrange
-    cobbler_api.settings().cache_enabled = cache_enabled
-
-    # Act
-    result = benchmark.pedantic(
-        CobblerTree.create_mgmtclasses, setup=setup_func, rounds=CobblerTree.test_rounds
-    )
-
-    # Cleanup
-    CobblerTree.remove_all_objs(cobbler_api)
-
-    # Assert
-
-
 @pytest.mark.parametrize(
     "cache_enabled",
     [
@@ -163,9 +67,6 @@ def test_distros_create(
 
     def setup_func() -> Tuple[Tuple[Any, ...], Dict[str, Any]]:
         CobblerTree.remove_all_objs(cobbler_api)
-        CobblerTree.create_packages(cobbler_api)
-        CobblerTree.create_files(cobbler_api)
-        CobblerTree.create_mgmtclasses(cobbler_api)
         CobblerTree.create_repos(cobbler_api)
         return (cobbler_api, create_distro), {}
 
@@ -250,9 +151,6 @@ def test_profiles_create(
 
     def setup_func() -> Tuple[Tuple[Any, ...], Dict[str, Any]]:
         CobblerTree.remove_all_objs(cobbler_api)
-        CobblerTree.create_packages(cobbler_api)
-        CobblerTree.create_files(cobbler_api)
-        CobblerTree.create_mgmtclasses(cobbler_api)
         CobblerTree.create_repos(cobbler_api)
         CobblerTree.create_distros(cobbler_api, create_distro)
         CobblerTree.create_menus(cobbler_api)
@@ -346,9 +244,6 @@ def test_systems_create(
 
     def setup_func() -> Tuple[Tuple[Any, ...], Dict[str, Any]]:
         CobblerTree.remove_all_objs(cobbler_api)
-        CobblerTree.create_packages(cobbler_api)
-        CobblerTree.create_files(cobbler_api)
-        CobblerTree.create_mgmtclasses(cobbler_api)
         CobblerTree.create_repos(cobbler_api)
         CobblerTree.create_distros(cobbler_api, create_distro)
         CobblerTree.create_menus(cobbler_api)
diff --git a/tests/performance/item_copy_test.py b/tests/performance/item_copy_test.py
index 40432a0dc8..6655017ecf 100644
--- a/tests/performance/item_copy_test.py
+++ b/tests/performance/item_copy_test.py
@@ -19,9 +19,6 @@
 @pytest.mark.parametrize(
     "what",
     [
-        "package",
-        "file",
-        "mgmtclass",
         "repo",
         "distro",
         "menu",
diff --git a/tests/performance/item_edit_test.py b/tests/performance/item_edit_test.py
index 4d20efc709..99954e79fe 100644
--- a/tests/performance/item_edit_test.py
+++ b/tests/performance/item_edit_test.py
@@ -26,9 +26,6 @@
 @pytest.mark.parametrize(
     "what",
     [
-        "package",
-        "file",
-        "mgmtclass",
         "repo",
         "distro",
         "menu",
diff --git a/tests/performance/item_remove_test.py b/tests/performance/item_remove_test.py
index c96ae98907..9b487699eb 100644
--- a/tests/performance/item_remove_test.py
+++ b/tests/performance/item_remove_test.py
@@ -19,9 +19,6 @@
 @pytest.mark.parametrize(
     "what",
     [
-        "package",
-        "file",
-        "mgmtclass",
         "repo",
         "distro",
         "menu",
diff --git a/tests/performance/item_rename_test.py b/tests/performance/item_rename_test.py
index f0125b7835..79029f4d99 100644
--- a/tests/performance/item_rename_test.py
+++ b/tests/performance/item_rename_test.py
@@ -19,9 +19,6 @@
 @pytest.mark.parametrize(
     "what",
     [
-        "package",
-        "file",
-        "mgmtclass",
         "repo",
         "distro",
         "menu",
diff --git a/tests/settings/migrations/normalize_test.py b/tests/settings/migrations/normalize_test.py
index 010ed86c9c..cda8235c5b 100644
--- a/tests/settings/migrations/normalize_test.py
+++ b/tests/settings/migrations/normalize_test.py
@@ -193,4 +193,4 @@ def test_normalize_v3_4_0_full():
     assert "cache_enabled" in new_settings
     assert new_settings["cache_enabled"] == False
     assert new_settings["lazy_start"] == False
-    assert len(V3_4_0.normalize(new_settings)) == 135
+    assert len(V3_4_0.normalize(new_settings)) == 133
diff --git a/tests/test_data/V3_4_0/settings.yaml b/tests/test_data/V3_4_0/settings.yaml
index 308805974c..11060fba69 100644
--- a/tests/test_data/V3_4_0/settings.yaml
+++ b/tests/test_data/V3_4_0/settings.yaml
@@ -260,14 +260,6 @@ ldap_tls_cacertdir: ''
 ldap_tls_cipher_suite: ''
 ldap_tls_reqcert: ''
 
-# Cobbler has a feature that allows for integration with config management
-# systems such as Puppet.  The following parameters work in conjunction with
-# --mgmt-classes  and are described in further detail at:
-# https://github.com/cobbler/cobbler/wiki/Using-cobbler-with-a-configuration-management-system
-mgmt_classes: []
-mgmt_parameters:
- from_cobbler: true
-
 # if enabled, this setting ensures that puppet is installed during
 # machine provision, a client certificate is generated and a
 # certificate signing request is made with the puppet master server
diff --git a/tests/utils/filesystem_helpers_test.py b/tests/utils/filesystem_helpers_test.py
index 24e4df72c6..0f41e1f9e7 100644
--- a/tests/utils/filesystem_helpers_test.py
+++ b/tests/utils/filesystem_helpers_test.py
@@ -287,7 +287,7 @@ def test_create_trigger_dirs(mocker: MockerFixture, cobbler_api: CobblerAPI):
     filesystem_helpers.create_trigger_dirs(cobbler_api)
 
     # Assert
-    assert mock_mkdir.call_count == 84
+    assert mock_mkdir.call_count == 57
 
 
 def test_create_json_database_dirs(mocker: MockerFixture, cobbler_api: CobblerAPI):
@@ -301,4 +301,4 @@ def test_create_json_database_dirs(mocker: MockerFixture, cobbler_api: CobblerAP
     # Assert
     mock_mkdir.assert_any_call("/var/lib/cobbler/collections")
     # 1 collections parent directory + (1 child directory per item type * 9 item types atm)
-    assert mock_mkdir.call_count == 10
+    assert mock_mkdir.call_count == 7
diff --git a/tests/xmlrpcapi/conftest.py b/tests/xmlrpcapi/conftest.py
index 8809387e1e..899db064f0 100644
--- a/tests/xmlrpcapi/conftest.py
+++ b/tests/xmlrpcapi/conftest.py
@@ -176,78 +176,6 @@ def _remove_system(name: str):
     return _remove_system
 
 
-@pytest.fixture(scope="function")
-def create_file(remote: CobblerXMLRPCInterface, token: str):
-    """
-    Fixture that creates a file and adds it to Cobbler.
-    """
-
-    def _create_file(
-        name: str,
-        is_directory: bool,
-        action: str,
-        group: str,
-        mode: str,
-        owner: str,
-        path: str,
-        template: str,
-    ):
-        file_id = remote.new_file(token)
-
-        remote.modify_file(file_id, "name", name, token)
-        remote.modify_file(file_id, "is_directory", is_directory, token)
-        remote.modify_file(file_id, "action", action, token)
-        remote.modify_file(file_id, "group", group, token)
-        remote.modify_file(file_id, "mode", mode, token)
-        remote.modify_file(file_id, "owner", owner, token)
-        remote.modify_file(file_id, "path", path, token)
-        remote.modify_file(file_id, "template", template, token)
-
-        remote.save_file(file_id, token)
-        return file_id
-
-    return _create_file
-
-
-@pytest.fixture(scope="function")
-def remove_file(remote: CobblerXMLRPCInterface, token: str):
-    """
-    Fixture that removes a file from Cobbler.
-    """
-
-    def _remove_file(name: str):
-        remote.remove_file(name, token)
-
-    return _remove_file
-
-
-@pytest.fixture()
-def create_mgmt_class(remote: CobblerXMLRPCInterface, token: str):
-    """
-    Fixture that creates a mgmt class and adds it to Cobbler.
-    """
-
-    def _create_mgmt_class(name: str):
-        mgmtclass = remote.new_mgmtclass(token)
-        remote.modify_mgmtclass(mgmtclass, "name", name, token)
-        remote.save_mgmtclass(mgmtclass, token)
-        return mgmtclass
-
-    return _create_mgmt_class
-
-
-@pytest.fixture(scope="function")
-def remove_mgmt_class(remote: CobblerXMLRPCInterface, token: str):
-    """
-    Fixture that removes a mgmt class from Cobbler.
-    """
-
-    def _remove_mgmt_class(name: str):
-        remote.remove_mgmtclass(name, token)
-
-    return _remove_mgmt_class
-
-
 @pytest.fixture(scope="function")
 def create_autoinstall_template(
     remote: CobblerXMLRPCInterface, token: str
@@ -472,83 +400,6 @@ def remove_testimage(remote: CobblerXMLRPCInterface, token: str):
     remote.remove_image("testimage0", token, False)
 
 
-@pytest.fixture(scope="function")
-def create_testpackage(remote: CobblerXMLRPCInterface, token: str):
-    """
-    Create a testpackage with the name "testpackage0"
-    :param remote: See the corresponding fixture.
-    :param token: See the corresponding fixture.
-    """
-    package = remote.new_package(token)
-    remote.modify_package(package, "name", "testpackage0", token)
-    remote.save_package(package, token)
-
-
-@pytest.fixture(scope="function")
-def remove_testpackage(remote: CobblerXMLRPCInterface, token: str):
-    """
-    Remove a package "testpackage0".
-    :param remote: See the corresponding fixture.
-    :param token: See the corresponding fixture.
-    """
-
-    yield
-    remote.remove_package("testpackage0", token, False)
-
-
-@pytest.fixture(scope="function")
-def create_testfile_item(remote: CobblerXMLRPCInterface, token: str):
-    """
-    Create a testfile with the name "testfile0"
-    :param remote: See the corresponding fixture.
-    :param token: See the corresponding fixture.
-    """
-
-    mfile = remote.new_file(token)
-    remote.modify_file(mfile, "name", "testfile0", token)
-    remote.modify_file(mfile, "path", "/dev/shm/", token)
-    remote.modify_file(mfile, "group", "root", token)
-    remote.modify_file(mfile, "owner", "root", token)
-    remote.modify_file(mfile, "mode", "0600", token)
-    remote.modify_file(mfile, "is_dir", "True", token)
-    remote.save_file(mfile, token)
-
-
-@pytest.fixture(scope="function")
-def remove_testfile(remote: CobblerXMLRPCInterface, token: str):
-    """
-    Remove a file "testfile0".
-    :param remote: See the corresponding fixture.
-    :param token: See the corresponding fixture.
-    """
-    yield
-    remote.remove_file("testfile0", token, False)
-
-
-@pytest.fixture(scope="function")
-def create_mgmtclass(remote: CobblerXMLRPCInterface, token: str):
-    """
-    Create a mgmtclass with the name "mgmtclass0"
-    :param remote: See the corresponding fixture.
-    :param token: See the corresponding fixture.
-    """
-
-    mgmtclass0 = remote.new_mgmtclass(token)
-    remote.modify_mgmtclass(mgmtclass0, "name", "mgmtclass0", token)
-    remote.save_mgmtclass(mgmtclass0, token)
-
-
-@pytest.fixture(scope="function")
-def remove_mgmtclass(remote: CobblerXMLRPCInterface, token: str):
-    """
-    Remove a mgmtclass "mgmtclass0".
-    :param remote: See the corresponding fixture.
-    :param token: See the corresponding fixture.
-    """
-    yield
-    remote.remove_mgmtclass("mgmtclass0", token, False)
-
-
 @pytest.fixture(scope="function")
 def create_testmenu(remote: CobblerXMLRPCInterface, token: str):
     """
diff --git a/tests/xmlrpcapi/distro_test.py b/tests/xmlrpcapi/distro_test.py
index 41dd5ca3af..ee92de5793 100644
--- a/tests/xmlrpcapi/distro_test.py
+++ b/tests/xmlrpcapi/distro_test.py
@@ -49,7 +49,6 @@ def test_get_distros(remote: CobblerXMLRPCInterface, token: str):
         ("kernel_options", "a=1 b=2 c=3 c=4 c=5 d e"),
         ("kernel_options_post", "a=1 b=2 c=3 c=4 c=5 d e"),
         ("autoinstall_meta", "a=1 b=2 c=3 c=4 c=5 d e"),
-        ("mgmt_classes", "one two three"),
         ("os_version", "rhel4"),
         ("owners", "user1 user2 user3"),
         ("boot_loaders", "pxe ipxe grub"),
diff --git a/tests/xmlrpcapi/file_test.py b/tests/xmlrpcapi/file_test.py
deleted file mode 100644
index 658a021fff..0000000000
--- a/tests/xmlrpcapi/file_test.py
+++ /dev/null
@@ -1,193 +0,0 @@
-import pytest
-
-
-class TestFile:
-    """
-    Test remote calls related to files
-    """
-
-    def test_create_file(self, remote, token, remove_file):
-        # Arrange
-
-        # Act
-        file_id = remote.new_file(token)
-        filename = "testfile_create"
-
-        remote.modify_file(file_id, "name", filename, token)
-        remote.modify_file(file_id, "is_directory", False, token)
-        remote.modify_file(file_id, "action", "create", token)
-        remote.modify_file(file_id, "group", "root", token)
-        remote.modify_file(file_id, "mode", "0644", token)
-        remote.modify_file(file_id, "owner", "root", token)
-        remote.modify_file(file_id, "path", "/root/testfile0", token)
-        remote.modify_file(file_id, "template", "testtemplate0", token)
-
-        result = remote.save_file(file_id, token)
-        new_files = remote.get_files(token)
-
-        # Cleanup
-        remove_file(filename)
-
-        # Assert
-        assert result
-        assert len(new_files) == 1
-
-    def test_get_files(self, remote, token, create_file, remove_file):
-        """
-        Test: get files
-        """
-        # Arrange
-        filename = "testfile_get_files"
-        create_file(
-            filename,
-            False,
-            "create",
-            "root",
-            "0644",
-            "root",
-            "/root/testfile0",
-            "testtemplate0",
-        )
-
-        # Act
-        result = remote.get_files(token)
-
-        # Cleanup
-        remove_file(filename)
-
-        # Assert
-        assert type(result) == list
-        assert len(result) == 1
-        assert result[0].get("name") == filename
-
-    def test_get_file(self, remote, token, create_file, remove_file):
-        """
-        Test: Get a file object
-        """
-        # Arrange
-        filename = "testfile_get_file"
-        create_file(
-            filename,
-            False,
-            "create",
-            "root",
-            "0644",
-            "root",
-            "/root/testfile0",
-            "testtemplate0",
-        )
-
-        # Act
-        file = remote.get_file("testfile0")
-
-        # Cleanup
-        remove_file(filename)
-
-        # Assert
-        assert file
-
-    def test_find_file(self, remote, token, create_file, remove_file):
-        """
-        Test: find a file object
-        """
-        # Arrange
-        filename = "testfile_find"
-        create_file(
-            filename,
-            False,
-            "create",
-            "root",
-            "0644",
-            "root",
-            "/root/testfile0",
-            "testtemplate0",
-        )
-
-        # Act
-        result = remote.find_file({"name": filename}, token)
-
-        # Cleanup
-        remove_file(filename)
-
-        # Assert
-        assert result
-
-    def test_copy_file(self, remote, token, create_file, remove_file):
-        """
-        Test: copy a file object
-        """
-        # Arrange
-        filename_base = "testfile_copy_base"
-        filename_copy = "testfile_copy_copied"
-        create_file(
-            filename_base,
-            False,
-            "create",
-            "root",
-            "0644",
-            "root",
-            "/root/testfile0",
-            "testtemplate0",
-        )
-
-        # Act
-        file = remote.get_item_handle("file", filename_base)
-        result = remote.copy_file(file, filename_copy, token)
-
-        # Cleanup
-        remove_file(filename_base)
-        remove_file(filename_copy)
-
-        # Assert
-        assert result
-
-    def test_rename_file(self, remote, token, create_file, remove_file):
-        """
-        Test: rename a file object
-        """
-        # Arrange
-        filename = "testfile_renamed"
-        filename_renamed = "testfile_renamed_successful"
-        create_file(
-            filename,
-            False,
-            "create",
-            "root",
-            "0644",
-            "root",
-            "/root/testfile0",
-            "testtemplate0",
-        )
-        file = remote.get_item_handle("file", filename)
-
-        # Act
-        result = remote.rename_file(file, filename_renamed, token)
-
-        # Cleanup
-        remove_file(filename_renamed)
-
-        # Assert
-        assert result
-
-    def test_remove_file(self, remote, token, create_file):
-        """
-        Test: remove a file object
-        """
-        # Arrange
-        filename = "testfile_remove"
-        create_file(
-            filename,
-            False,
-            "create",
-            "root",
-            "0644",
-            "root",
-            "/root/testfile0",
-            "testtemplate0",
-        )
-
-        # Act
-        result = remote.remove_file(filename, token)
-
-        # Assert
-        assert result
diff --git a/tests/xmlrpcapi/mgmt_class_test.py b/tests/xmlrpcapi/mgmt_class_test.py
deleted file mode 100644
index 71e574c47b..0000000000
--- a/tests/xmlrpcapi/mgmt_class_test.py
+++ /dev/null
@@ -1,123 +0,0 @@
-import pytest
-
-
-class TestMgmtClass:
-    def test_create_mgmtclass(self, remote, token, remove_mgmt_class):
-        """
-        Test: create/edit a mgmtclass object
-        """
-        # Arrange
-        name = "test_mgmt_class_create"
-
-        # Act
-        mgmtclass = remote.new_mgmtclass(token)
-        result_modify = remote.modify_mgmtclass(mgmtclass, "name", name, token)
-        result_save = remote.save_mgmtclass(mgmtclass, token)
-        mgmtclass_count = remote.get_mgmtclasses(token)
-
-        # Cleanup
-        remove_mgmt_class(name)
-
-        # Assert
-        assert result_modify
-        assert result_save
-        assert len(mgmtclass_count) == 1
-
-    def test_get_mgmtclasses(self, remote):
-        """
-        Test: Get mgmtclasses objects
-        """
-        # Arrange
-
-        # Act
-        result = remote.get_mgmtclasses()
-
-        # Assert
-        assert result == []
-
-    def test_get_mgmtclass(self, remote, token, create_mgmt_class, remove_mgmt_class):
-        """
-        Test: get a mgmtclass object
-        """
-        # Arrange
-        name = "test_mgmt_class_get"
-        create_mgmt_class(name)
-
-        # Act
-        mgmtclass = remote.get_mgmtclass(name)
-
-        # Cleanup
-        remove_mgmt_class(name)
-
-        # Assert
-        assert mgmtclass
-
-    def test_find_mgmtclass(self, remote, token, create_mgmt_class, remove_mgmt_class):
-        """
-        Test: find a mgmtclass object
-        """
-        # Arrange
-        name = "test_mgmt_class_find"
-        create_mgmt_class(name)
-
-        # Act
-        result = remote.find_mgmtclass({"name": name}, token)
-
-        # Cleanup
-        remove_mgmt_class(name)
-
-        # Assert
-        assert result
-
-    def test_copy_mgmtclass(self, remote, token, create_mgmt_class, remove_mgmt_class):
-        """
-        Test: copy a mgmtclass object
-        """
-        # Arrange
-        name = "testmgmtclass0"
-        name_copy = "testmgmtclasscopy"
-        mgmtclass = create_mgmt_class(name)
-
-        # Act
-        result = remote.copy_mgmtclass(mgmtclass, name_copy, token)
-
-        # Cleanup
-        remove_mgmt_class(name)
-        remove_mgmt_class(name_copy)
-
-        # Assert
-        assert result
-
-    def test_rename_mgmtclass(
-        self, remote, token, create_mgmt_class, remove_mgmt_class
-    ):
-        """
-        Test: rename a mgmtclass object
-        """
-        # Arrange
-        name = "test_mgmt_class_prerename"
-        name_new = "test_mgmt_class_postrename"
-        mgmtclass = create_mgmt_class(name)
-
-        # Act
-        result = remote.rename_mgmtclass(mgmtclass, name_new, token)
-
-        # Cleanup
-        remove_mgmt_class(name_new)
-
-        # Assert
-        assert result
-
-    def test_remove_mgmtclass(self, remote, token, create_mgmt_class):
-        """
-        Test: remove a mgmtclass object
-        """
-        # Arrange
-        name = "test_mgmt_class_remove"
-        create_mgmt_class(name)
-
-        # Act
-        result = remote.remove_mgmtclass(name, token)
-
-        # Assert
-        assert result
diff --git a/tests/xmlrpcapi/miscellaneous_test.py b/tests/xmlrpcapi/miscellaneous_test.py
index 7fa8368eb7..f80f6447a4 100644
--- a/tests/xmlrpcapi/miscellaneous_test.py
+++ b/tests/xmlrpcapi/miscellaneous_test.py
@@ -111,7 +111,7 @@ def test_find_items_paged(
     # 'tree_build_time': 0, 'uid': 'cbf288465c724c439cf2ede6c94de4e8', 'arch': 'x86_64', 'autoinstall_meta': {},
     # 'boot_files': {}, 'boot_loaders': '<<inherit>>', 'breed': 'suse', 'comment': '', 'fetchable_files': {},
     # 'initrd': '/var/log/cobbler/cobbler.log', 'kernel': '/var/log/cobbler/cobbler.log', 'remote_boot_initrd': '~',
-    # 'remote_boot_kernel': '~', 'kernel_options': {}, 'kernel_options_post': {}, 'mgmt_classes': [],
+    # 'remote_boot_kernel': '~', 'kernel_options': {}, 'kernel_options_post': {},
     # 'name': 'distro_items_paged_1', 'os_version': 'virtio26', 'owners': ['admin'], 'redhat_management_key': '',
     # 'template_files': {}}], 'pageinfo': {'page': 1, 'prev_page': '~', 'next_page': 2, 'pages': [1, 2],
     # 'num_pages': 2, 'num_items': 2, 'start_item': 0, 'end_item': 1, 'items_per_page': 1,
diff --git a/tests/xmlrpcapi/package_test.py b/tests/xmlrpcapi/package_test.py
deleted file mode 100644
index 68262bf754..0000000000
--- a/tests/xmlrpcapi/package_test.py
+++ /dev/null
@@ -1,114 +0,0 @@
-import pytest
-
-"""
-Order is important currently:
-self._get_packages()
-self._create_package()
-self._get_package()
-self._find_package()
-self._copy_package()
-self._rename_package()
-self._remove_package()
-"""
-
-
-@pytest.fixture()
-def create_package(remote, token):
-    """
-    Adds a "testpackage0" for a test.
-    :param remote: See the correesponding fixture.
-    :param token: See the correesponding fixture.
-    """
-    package = remote.new_package(token)
-    remote.modify_package(package, "name", "testpackage0", token)
-    remote.save_package(package, token)
-
-
-@pytest.fixture()
-def remove_package(remote, token):
-    """
-    Removes a "testpackage0" for a test.
-    :param remote: See the correesponding fixture.
-    :param token: See the correesponding fixture.
-    """
-    yield
-    remote.remove_package("testpackage0", token)
-
-
-class TestPackage:
-    @pytest.mark.usefixtures("remove_package")
-    def test_create_package(self, remote, token):
-        """
-        Test: create/edit a package object
-        """
-
-        packages = remote.get_packages(token)
-        package = remote.new_package(token)
-
-        assert remote.modify_package(package, "name", "testpackage0", token)
-        assert remote.save_package(package, token)
-
-        new_packages = remote.get_packages(token)
-        assert len(new_packages) == len(packages) + 1
-
-    @pytest.mark.usefixtures("create_package", "remove_package")
-    def test_get_packages(self, remote, token):
-        """
-        Test: Get packages
-        """
-
-        package = remote.get_packages()
-
-    @pytest.mark.usefixtures("create_package", "remove_package")
-    def test_get_package(self, remote):
-        """
-        Test: Get a package object
-        """
-
-        package = remote.get_package("testpackage0")
-
-    @pytest.mark.usefixtures("create_package", "remove_package")
-    def test_find_package(self, remote, token):
-        """
-        Test: find a package object
-        """
-
-        result = remote.find_package({"name": "testpackage0"}, token)
-        assert result
-
-    @pytest.mark.usefixtures("create_package", "remove_package")
-    def test_copy_package(self, remote, token):
-        """
-        Test: copy a package object
-        """
-        # Arrange --> Done in fixture
-
-        # Act
-        package = remote.get_item_handle("package", "testpackage0")
-        result = remote.copy_package(package, "testpackagecopy", token)
-
-        # Assert
-        assert result
-
-        # Cleanup
-        remote.remove_package("testpackagecopy", token)
-
-    @pytest.mark.usefixtures("create_package", "remove_package")
-    def test_rename_package(self, remote, token):
-        """
-        Test: rename a package object
-        """
-
-        package = remote.get_item_handle("package", "testpackage0")
-        assert remote.rename_package(package, "testpackage1", token)
-        package = remote.get_item_handle("package", "testpackage1")
-        assert remote.rename_package(package, "testpackage0", token)
-
-    @pytest.mark.usefixtures("create_package")
-    def test_remove_package(self, remote, token):
-        """
-        Test: remove a package object
-        """
-        # Arrange --> Done in Fixture
-        # Act & Assert
-        assert remote.remove_package("testpackage0", token)
diff --git a/tests/xmlrpcapi/profile_test.py b/tests/xmlrpcapi/profile_test.py
index ee2fc61d9f..d32c57ce7c 100644
--- a/tests/xmlrpcapi/profile_test.py
+++ b/tests/xmlrpcapi/profile_test.py
@@ -44,8 +44,6 @@ def test_get_profiles(remote: CobblerXMLRPCInterface, token: str):
         ("autoinstall", "test.xml"),
         ("autoinstall", "test.seed"),
         ("autoinstall_meta", "a=1 b=2 c=3 c=4 c=5 d e"),
-        ("mgmt_classes", "one two three"),
-        ("mgmt_parameters", "<<inherit>>"),
         ("name", "testprofile0"),
         ("name_servers", "1.1.1.1 1.1.1.2 1.1.1.3"),
         ("name_servers_search", "example.com foo.bar.com"),
@@ -134,7 +132,6 @@ def test_create_profile_positive(
     [
         ("distro", "baddistro"),
         ("autoinstall", "/path/to/bad/autoinstall"),
-        ("mgmt_parameters", "badyaml"),
         ("menu", "badmenu"),
         ("virt_cpus", "a"),
         ("virt_file_size", "a"),
diff --git a/tests/xmlrpcapi/system_test.py b/tests/xmlrpcapi/system_test.py
index db75718c3e..8d6f8cdbf5 100644
--- a/tests/xmlrpcapi/system_test.py
+++ b/tests/xmlrpcapi/system_test.py
@@ -41,8 +41,6 @@ def test_get_systems(remote: CobblerXMLRPCInterface, token: str):
         ("autoinstall", "test.xml"),
         ("autoinstall", "test.seed"),
         ("autoinstall_meta", "a=1 b=2 c=3 c=4 c=5 d e"),
-        ("mgmt_classes", "one two three"),
-        ("mgmt_parameters", "<<inherit>>"),
         ("name", "testsystem0"),
         ("netboot_enabled", True),
         ("netboot_enabled", False),
@@ -124,7 +122,6 @@ def test_create_system_positive(
     "field_name,field_value",
     [
         ("autoinstall", "/path/to/bad/autoinstall"),
-        ("mgmt_parameters", "badyaml"),
         ("profile", "badprofile"),
         ("boot_loaders", "badloader"),
         ("virt_cpus", "a"),