diff --git a/config/install/replication.replication_settings.entity_type.article.yml b/config/install/replication.replication_settings.entity_type.article.yml
new file mode 100644
index 0000000..0089281
--- /dev/null
+++ b/config/install/replication.replication_settings.entity_type.article.yml
@@ -0,0 +1,8 @@
+langcode: en
+status: true
+dependencies: {  }
+id: article
+label: Replicate only article entities
+filter_id: entity_type
+parameters:
+  entity_type: article
diff --git a/config/install/replication.replication_settings.entity_type.page.yml b/config/install/replication.replication_settings.entity_type.page.yml
new file mode 100644
index 0000000..13a88e1
--- /dev/null
+++ b/config/install/replication.replication_settings.entity_type.page.yml
@@ -0,0 +1,8 @@
+langcode: en
+status: true
+dependencies: {  }
+id: page
+label: Replicate only page entities
+filter_id: entity_type
+parameters:
+  entity_type: page
diff --git a/config/install/replication.replication_settings.published.yml b/config/install/replication.replication_settings.published.yml
new file mode 100644
index 0000000..8062f77
--- /dev/null
+++ b/config/install/replication.replication_settings.published.yml
@@ -0,0 +1,6 @@
+langcode: en
+status: true
+dependencies: {  }
+id: published
+label: Replicate published entities
+filter_id: published
diff --git a/config/schema/replication.replication_settings.schema.yml b/config/schema/replication.replication_settings.schema.yml
new file mode 100644
index 0000000..4a0c664
--- /dev/null
+++ b/config/schema/replication.replication_settings.schema.yml
@@ -0,0 +1,16 @@
+replication.replication_settings.*:
+  type: config_entity
+  label: 'Replication settings config'
+  mapping:
+    id:
+      type: string
+      label: 'ID'
+    label:
+      type: label
+      label: 'Label'
+    filter_id:
+      type: string
+      label: 'Filter plugin id'
+    parameters:
+      type: array
+      label: 'Filter parameters'
diff --git a/src/Entity/ReplicationSettings.php b/src/Entity/ReplicationSettings.php
new file mode 100644
index 0000000..d64f021
--- /dev/null
+++ b/src/Entity/ReplicationSettings.php
@@ -0,0 +1,68 @@
+<?php
+
+namespace Drupal\replication\Entity;
+
+use Drupal\Core\Config\Entity\ConfigEntityBase;
+use Drupal\replication\Entity\ReplicationSettingsInterface;
+
+/**
+ * Defines the replication settings entity.
+ *
+ * The replication settings are attached to a Workspace to define how that
+ * Workspace should be replicated.
+ *
+ * @ConfigEntityType(
+ *   id = "replication_settings",
+ *   label = @Translation("Replication settings"),
+ *   config_prefix = "replication_settings",
+ *   entity_keys = {
+ *     "id" = "id",
+ *     "label" = "label",
+ *     "filter_id" = "filter_id"
+ *   }
+ * )
+ */
+class ReplicationSettings extends ConfigEntityBase implements ReplicationSettingsInterface {
+
+  /**
+   * An identifier for this replication settings.
+   *
+   * @var string
+   */
+  protected $id;
+
+  /**
+   * The human readable name for this replication settings.
+   *
+   * @var string
+   */
+  protected $label;
+
+  /**
+   * The plugin ID of a replication filter.
+   *
+   * @var string
+   */
+  protected $filter_id;
+
+  /**
+   * The replication filter parameters.
+   *
+   * @var string[string]
+   */
+  protected $parameters;
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getFilterId() {
+    return $this->filter_id;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getParameters() {
+    return $this->parameters;
+  }
+}
diff --git a/src/Entity/ReplicationSettingsInterface.php b/src/Entity/ReplicationSettingsInterface.php
new file mode 100644
index 0000000..f046c9f
--- /dev/null
+++ b/src/Entity/ReplicationSettingsInterface.php
@@ -0,0 +1,26 @@
+<?php
+
+namespace Drupal\replication\Entity;
+
+use Drupal\Core\Config\Entity\ConfigEntityInterface;
+
+/**
+ * Provides an interface for replication settings entities.
+ */
+interface ReplicationSettingsInterface extends ConfigEntityInterface {
+
+  /**
+   * Get the plugin ID of the replication filter to use.
+   *
+   * @return string
+   */
+  public function getFilterId();
+
+  /**
+   * Get the replication filter parameters.
+   *
+   * @return string[string]
+   */
+  public function getParameters();
+
+}
diff --git a/src/ReplicationTask/ReplicationTask.php b/src/ReplicationTask/ReplicationTask.php
index bb39a21..7b109e8 100644
--- a/src/ReplicationTask/ReplicationTask.php
+++ b/src/ReplicationTask/ReplicationTask.php
@@ -55,7 +55,10 @@ class ReplicationTask implements ReplicationTaskInterface {
   /**
    * {@inheritdoc}
    */
-  public function setParametersByArray(array $parameters_array = array()) {
+  public function setParametersByArray(array $parameters_array = NULL) {
+    if ($parameters_array == NULL) {
+      $parameters_array = [];
+    }
     $parameters = new ParameterBag($parameters_array);
     return $this->setParameters($parameters);
   }
diff --git a/src/ReplicationTask/ReplicationTaskInterface.php b/src/ReplicationTask/ReplicationTaskInterface.php
index 22f7a13..a8f0146 100644
--- a/src/ReplicationTask/ReplicationTaskInterface.php
+++ b/src/ReplicationTask/ReplicationTaskInterface.php
@@ -51,13 +51,13 @@ interface ReplicationTaskInterface {
    * The array input is converted to a ParameterBag and then passed to
    * setParameters.
    *
-   * @param array $parameters_array
+   * @param array|NULL $parameters_array
    *   An associative array of name-value parameters.
    *
    * @return ReplicationTaskInterface
    *   Returns $this.
    */
-  public function setParametersByArray(array $parameters_array = array());
+  public function setParametersByArray(array $parameters_array = NULL);
 
   /**
    * Set a parameter for the filter plugin.
diff --git a/tests/src/Kernel/ReplicationSettingsTest.php b/tests/src/Kernel/ReplicationSettingsTest.php
new file mode 100644
index 0000000..c2815b6
--- /dev/null
+++ b/tests/src/Kernel/ReplicationSettingsTest.php
@@ -0,0 +1,45 @@
+<?php
+
+namespace Drupal\Tests\replication\Kernel;
+
+use Drupal\KernelTests\KernelTestBase;
+use Drupal\replication\Entity\ReplicationSettings;
+
+/**
+ * Test operations on ReplicationSettings config entity.
+ *
+ * @group replication
+ */
+class ReplicationSettingsTest extends KernelTestBase {
+
+  protected $strictConfigSchema = FALSE;
+
+  public static $modules = [
+    'user',
+    'serialization',
+    'key_value',
+    'multiversion',
+    'replication',
+  ];
+
+  /**
+   * Test creation of ReplicationSettings config entity.
+   */
+  public function testCreation() {
+    $this->installEntitySchema('replication_settings');
+    $entityTypeManager = $this->container->get('entity_type.manager');
+    $entity = $entityTypeManager->getStorage('replication_settings')->create([
+      'id' => 'test',
+      'label' => 'Replication settings test',
+      'filter_id' => 'entity_type',
+      'parameters' => ['entity_type' => 'article'],
+    ]);
+    $this->assertTrue($entity instanceof ReplicationSettings, 'Replication Settings entity was created.');
+    $entity->save();
+
+    $entity = $entityTypeManager->getStorage('replication_settings')->load('test');
+
+    $this->assertEquals($entity->id(), 'test', 'Test replication settings config entity successfully saved.');
+  }
+
+}
