diff --git a/.gitignore b/.gitignore
index 6ef5c6d096f1f589bdd1959215d22d14de08cf2a..3d254de604955baadb3bc03d76b426da4fa4c0d0 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,12 @@
 .directory
 
+.idea/deployment.xml
+.idea/fd-plugins.iml
+.idea/modules.xml
+.idea/php.xml
+.idea/sshConfigs.xml
+.idea/vcs.xml
+.idea/webServers.xml
+.idea/workspace.xml
+.gitignore
+filelist
diff --git a/extractor/contrib/openldap/extractor-fd.schema b/extractor/contrib/openldap/extractor-fd.schema
new file mode 100644
index 0000000000000000000000000000000000000000..d4f0ae02ab263b0114fd17888858c818e2477cea
--- /dev/null
+++ b/extractor/contrib/openldap/extractor-fd.schema
@@ -0,0 +1,32 @@
+##
+## extractor-fd.schema - Needed by Fusion Directory for extractor plugin
+##
+## Allows extracting LDAP data based on selected members or groups and a chosen format.
+##
+
+# Attributes
+
+attributetype ( 1.3.6.1.4.1.38414.93.1.1 NAME 'fdExtractorTaskMembers'
+    DESC 'Fusion Directory - List of members or groups for extraction tasks'
+    EQUALITY caseExactMatch
+    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
+
+attributetype ( 1.3.6.1.4.1.38414.93.1.2 NAME 'fdExtractorTaskListOfDN'
+    DESC 'Fusion Directory - DNs derived from the selected members/groups'
+    EQUALITY caseExactMatch
+    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
+
+attributetype ( 1.3.6.1.4.1.38414.93.1.3 NAME 'fdExtractorTaskFormat'
+    DESC 'Fusion Directory - Format used for data extraction (CSV for now, extensible later)'
+    EQUALITY caseExactMatch
+    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
+    SINGLE-VALUE )
+
+# Object Class
+
+objectclass ( 1.3.6.1.4.1.38414.93.2.1 NAME 'fdExtractorTasks'
+    DESC 'Fusion Directory - Extractor tasks plugin object class'
+    SUP top
+    AUXILIARY
+    MUST ( fdExtractorTaskMembers $ fdExtractorTaskFormat )
+    MAY ( fdExtractorTaskListOfDN ) )
\ No newline at end of file
diff --git a/extractor/contrib/yaml/description.yaml b/extractor/contrib/yaml/description.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..c4a8f9fd0025b6cc103694ba775d2a51eaeee567
--- /dev/null
+++ b/extractor/contrib/yaml/description.yaml
@@ -0,0 +1,27 @@
+information:
+  authors:
+    - FusionDirectory
+  description: LDAP data extraction plugin for FusionDirectory
+  license: GPLv2
+  logoUrl: https://raw.githubusercontent.com/fusiondirectory/fusiondirectory-plugins/dev/extractor/html/themes/breezy/icons/48/apps/extractor.png
+  name: extractor
+  origin: package
+  screenshotUrl:
+    - https://raw.githubusercontent.com/fusiondirectory/fusiondirectory-plugins/dev/extractor/contrib/screenshots/extractor-task.png
+  status: Stable
+  tags:
+    - user
+    - group
+    - automation
+    - extraction
+  version: '1.0'
+requirement:
+  fdVersion: 1.5
+  phpVersion: 7.4
+support:
+  contractUrl: https://www.fusiondirectory.org/abonnements-fusiondirectory/
+  documentationUrl: https://fusiondirectory-user-manual.readthedocs.io/
+  homeUrl: https://gitlab.fusiondirectory.org/fusiondirectory/fd-plugins
+  provider: fusiondirectory
+  schemaUrl: https://schemas.fusiondirectory.org/
+  ticketUrl: https://gitlab.fusiondirectory.org/fusiondirectory/fd-plugins/-/issues
\ No newline at end of file
diff --git a/extractor/html/themes/breezy/icons/48/apps/extractor-task.png b/extractor/html/themes/breezy/icons/48/apps/extractor-task.png
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/extractor/locale/en/fusiondirectory.po b/extractor/locale/en/fusiondirectory.po
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391