diff --git a/LICENSE.md b/LICENSE.md
new file mode 100644
--- /dev/null
+++ b/LICENSE.md
@@ -0,0 +1,20 @@
+Copyright (c) 2016 David Reaver
+Copyright (c) 2022 Markus Schirp
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/gen/Stratosphere/EntityResolution/IdMappingWorkflow.hs b/gen/Stratosphere/EntityResolution/IdMappingWorkflow.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/EntityResolution/IdMappingWorkflow.hs
@@ -0,0 +1,113 @@
+module Stratosphere.EntityResolution.IdMappingWorkflow (
+        module Exports, IdMappingWorkflow(..), mkIdMappingWorkflow
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.EntityResolution.IdMappingWorkflow.IdMappingIncrementalRunConfigProperty as Exports
+import {-# SOURCE #-} Stratosphere.EntityResolution.IdMappingWorkflow.IdMappingTechniquesProperty as Exports
+import {-# SOURCE #-} Stratosphere.EntityResolution.IdMappingWorkflow.IdMappingWorkflowInputSourceProperty as Exports
+import {-# SOURCE #-} Stratosphere.EntityResolution.IdMappingWorkflow.IdMappingWorkflowOutputSourceProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Tag
+import Stratosphere.Value
+data IdMappingWorkflow
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-entityresolution-idmappingworkflow.html>
+    IdMappingWorkflow {haddock_workaround_ :: (),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-entityresolution-idmappingworkflow.html#cfn-entityresolution-idmappingworkflow-description>
+                       description :: (Prelude.Maybe (Value Prelude.Text)),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-entityresolution-idmappingworkflow.html#cfn-entityresolution-idmappingworkflow-idmappingincrementalrunconfig>
+                       idMappingIncrementalRunConfig :: (Prelude.Maybe IdMappingIncrementalRunConfigProperty),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-entityresolution-idmappingworkflow.html#cfn-entityresolution-idmappingworkflow-idmappingtechniques>
+                       idMappingTechniques :: IdMappingTechniquesProperty,
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-entityresolution-idmappingworkflow.html#cfn-entityresolution-idmappingworkflow-inputsourceconfig>
+                       inputSourceConfig :: [IdMappingWorkflowInputSourceProperty],
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-entityresolution-idmappingworkflow.html#cfn-entityresolution-idmappingworkflow-outputsourceconfig>
+                       outputSourceConfig :: (Prelude.Maybe [IdMappingWorkflowOutputSourceProperty]),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-entityresolution-idmappingworkflow.html#cfn-entityresolution-idmappingworkflow-rolearn>
+                       roleArn :: (Value Prelude.Text),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-entityresolution-idmappingworkflow.html#cfn-entityresolution-idmappingworkflow-tags>
+                       tags :: (Prelude.Maybe [Tag]),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-entityresolution-idmappingworkflow.html#cfn-entityresolution-idmappingworkflow-workflowname>
+                       workflowName :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkIdMappingWorkflow ::
+  IdMappingTechniquesProperty
+  -> [IdMappingWorkflowInputSourceProperty]
+     -> Value Prelude.Text -> Value Prelude.Text -> IdMappingWorkflow
+mkIdMappingWorkflow
+  idMappingTechniques
+  inputSourceConfig
+  roleArn
+  workflowName
+  = IdMappingWorkflow
+      {haddock_workaround_ = (),
+       idMappingTechniques = idMappingTechniques,
+       inputSourceConfig = inputSourceConfig, roleArn = roleArn,
+       workflowName = workflowName, description = Prelude.Nothing,
+       idMappingIncrementalRunConfig = Prelude.Nothing,
+       outputSourceConfig = Prelude.Nothing, tags = Prelude.Nothing}
+instance ToResourceProperties IdMappingWorkflow where
+  toResourceProperties IdMappingWorkflow {..}
+    = ResourceProperties
+        {awsType = "AWS::EntityResolution::IdMappingWorkflow",
+         supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["IdMappingTechniques" JSON..= idMappingTechniques,
+                            "InputSourceConfig" JSON..= inputSourceConfig,
+                            "RoleArn" JSON..= roleArn, "WorkflowName" JSON..= workflowName]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Description" Prelude.<$> description,
+                               (JSON..=) "IdMappingIncrementalRunConfig"
+                                 Prelude.<$> idMappingIncrementalRunConfig,
+                               (JSON..=) "OutputSourceConfig" Prelude.<$> outputSourceConfig,
+                               (JSON..=) "Tags" Prelude.<$> tags]))}
+instance JSON.ToJSON IdMappingWorkflow where
+  toJSON IdMappingWorkflow {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["IdMappingTechniques" JSON..= idMappingTechniques,
+               "InputSourceConfig" JSON..= inputSourceConfig,
+               "RoleArn" JSON..= roleArn, "WorkflowName" JSON..= workflowName]
+              (Prelude.catMaybes
+                 [(JSON..=) "Description" Prelude.<$> description,
+                  (JSON..=) "IdMappingIncrementalRunConfig"
+                    Prelude.<$> idMappingIncrementalRunConfig,
+                  (JSON..=) "OutputSourceConfig" Prelude.<$> outputSourceConfig,
+                  (JSON..=) "Tags" Prelude.<$> tags])))
+instance Property "Description" IdMappingWorkflow where
+  type PropertyType "Description" IdMappingWorkflow = Value Prelude.Text
+  set newValue IdMappingWorkflow {..}
+    = IdMappingWorkflow {description = Prelude.pure newValue, ..}
+instance Property "IdMappingIncrementalRunConfig" IdMappingWorkflow where
+  type PropertyType "IdMappingIncrementalRunConfig" IdMappingWorkflow = IdMappingIncrementalRunConfigProperty
+  set newValue IdMappingWorkflow {..}
+    = IdMappingWorkflow
+        {idMappingIncrementalRunConfig = Prelude.pure newValue, ..}
+instance Property "IdMappingTechniques" IdMappingWorkflow where
+  type PropertyType "IdMappingTechniques" IdMappingWorkflow = IdMappingTechniquesProperty
+  set newValue IdMappingWorkflow {..}
+    = IdMappingWorkflow {idMappingTechniques = newValue, ..}
+instance Property "InputSourceConfig" IdMappingWorkflow where
+  type PropertyType "InputSourceConfig" IdMappingWorkflow = [IdMappingWorkflowInputSourceProperty]
+  set newValue IdMappingWorkflow {..}
+    = IdMappingWorkflow {inputSourceConfig = newValue, ..}
+instance Property "OutputSourceConfig" IdMappingWorkflow where
+  type PropertyType "OutputSourceConfig" IdMappingWorkflow = [IdMappingWorkflowOutputSourceProperty]
+  set newValue IdMappingWorkflow {..}
+    = IdMappingWorkflow
+        {outputSourceConfig = Prelude.pure newValue, ..}
+instance Property "RoleArn" IdMappingWorkflow where
+  type PropertyType "RoleArn" IdMappingWorkflow = Value Prelude.Text
+  set newValue IdMappingWorkflow {..}
+    = IdMappingWorkflow {roleArn = newValue, ..}
+instance Property "Tags" IdMappingWorkflow where
+  type PropertyType "Tags" IdMappingWorkflow = [Tag]
+  set newValue IdMappingWorkflow {..}
+    = IdMappingWorkflow {tags = Prelude.pure newValue, ..}
+instance Property "WorkflowName" IdMappingWorkflow where
+  type PropertyType "WorkflowName" IdMappingWorkflow = Value Prelude.Text
+  set newValue IdMappingWorkflow {..}
+    = IdMappingWorkflow {workflowName = newValue, ..}
diff --git a/gen/Stratosphere/EntityResolution/IdMappingWorkflow/IdMappingIncrementalRunConfigProperty.hs b/gen/Stratosphere/EntityResolution/IdMappingWorkflow/IdMappingIncrementalRunConfigProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/EntityResolution/IdMappingWorkflow/IdMappingIncrementalRunConfigProperty.hs
@@ -0,0 +1,34 @@
+module Stratosphere.EntityResolution.IdMappingWorkflow.IdMappingIncrementalRunConfigProperty (
+        IdMappingIncrementalRunConfigProperty(..),
+        mkIdMappingIncrementalRunConfigProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data IdMappingIncrementalRunConfigProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-idmappingworkflow-idmappingincrementalrunconfig.html>
+    IdMappingIncrementalRunConfigProperty {haddock_workaround_ :: (),
+                                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-idmappingworkflow-idmappingincrementalrunconfig.html#cfn-entityresolution-idmappingworkflow-idmappingincrementalrunconfig-incrementalruntype>
+                                           incrementalRunType :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkIdMappingIncrementalRunConfigProperty ::
+  Value Prelude.Text -> IdMappingIncrementalRunConfigProperty
+mkIdMappingIncrementalRunConfigProperty incrementalRunType
+  = IdMappingIncrementalRunConfigProperty
+      {haddock_workaround_ = (), incrementalRunType = incrementalRunType}
+instance ToResourceProperties IdMappingIncrementalRunConfigProperty where
+  toResourceProperties IdMappingIncrementalRunConfigProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::EntityResolution::IdMappingWorkflow.IdMappingIncrementalRunConfig",
+         supportsTags = Prelude.False,
+         properties = ["IncrementalRunType" JSON..= incrementalRunType]}
+instance JSON.ToJSON IdMappingIncrementalRunConfigProperty where
+  toJSON IdMappingIncrementalRunConfigProperty {..}
+    = JSON.object ["IncrementalRunType" JSON..= incrementalRunType]
+instance Property "IncrementalRunType" IdMappingIncrementalRunConfigProperty where
+  type PropertyType "IncrementalRunType" IdMappingIncrementalRunConfigProperty = Value Prelude.Text
+  set newValue IdMappingIncrementalRunConfigProperty {..}
+    = IdMappingIncrementalRunConfigProperty
+        {incrementalRunType = newValue, ..}
diff --git a/gen/Stratosphere/EntityResolution/IdMappingWorkflow/IdMappingIncrementalRunConfigProperty.hs-boot b/gen/Stratosphere/EntityResolution/IdMappingWorkflow/IdMappingIncrementalRunConfigProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/EntityResolution/IdMappingWorkflow/IdMappingIncrementalRunConfigProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.EntityResolution.IdMappingWorkflow.IdMappingIncrementalRunConfigProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data IdMappingIncrementalRunConfigProperty :: Prelude.Type
+instance ToResourceProperties IdMappingIncrementalRunConfigProperty
+instance Prelude.Eq IdMappingIncrementalRunConfigProperty
+instance Prelude.Show IdMappingIncrementalRunConfigProperty
+instance JSON.ToJSON IdMappingIncrementalRunConfigProperty
diff --git a/gen/Stratosphere/EntityResolution/IdMappingWorkflow/IdMappingRuleBasedPropertiesProperty.hs b/gen/Stratosphere/EntityResolution/IdMappingWorkflow/IdMappingRuleBasedPropertiesProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/EntityResolution/IdMappingWorkflow/IdMappingRuleBasedPropertiesProperty.hs
@@ -0,0 +1,75 @@
+module Stratosphere.EntityResolution.IdMappingWorkflow.IdMappingRuleBasedPropertiesProperty (
+        module Exports, IdMappingRuleBasedPropertiesProperty(..),
+        mkIdMappingRuleBasedPropertiesProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.EntityResolution.IdMappingWorkflow.RuleProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data IdMappingRuleBasedPropertiesProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-idmappingworkflow-idmappingrulebasedproperties.html>
+    IdMappingRuleBasedPropertiesProperty {haddock_workaround_ :: (),
+                                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-idmappingworkflow-idmappingrulebasedproperties.html#cfn-entityresolution-idmappingworkflow-idmappingrulebasedproperties-attributematchingmodel>
+                                          attributeMatchingModel :: (Value Prelude.Text),
+                                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-idmappingworkflow-idmappingrulebasedproperties.html#cfn-entityresolution-idmappingworkflow-idmappingrulebasedproperties-recordmatchingmodel>
+                                          recordMatchingModel :: (Value Prelude.Text),
+                                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-idmappingworkflow-idmappingrulebasedproperties.html#cfn-entityresolution-idmappingworkflow-idmappingrulebasedproperties-ruledefinitiontype>
+                                          ruleDefinitionType :: (Prelude.Maybe (Value Prelude.Text)),
+                                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-idmappingworkflow-idmappingrulebasedproperties.html#cfn-entityresolution-idmappingworkflow-idmappingrulebasedproperties-rules>
+                                          rules :: (Prelude.Maybe [RuleProperty])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkIdMappingRuleBasedPropertiesProperty ::
+  Value Prelude.Text
+  -> Value Prelude.Text -> IdMappingRuleBasedPropertiesProperty
+mkIdMappingRuleBasedPropertiesProperty
+  attributeMatchingModel
+  recordMatchingModel
+  = IdMappingRuleBasedPropertiesProperty
+      {haddock_workaround_ = (),
+       attributeMatchingModel = attributeMatchingModel,
+       recordMatchingModel = recordMatchingModel,
+       ruleDefinitionType = Prelude.Nothing, rules = Prelude.Nothing}
+instance ToResourceProperties IdMappingRuleBasedPropertiesProperty where
+  toResourceProperties IdMappingRuleBasedPropertiesProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::EntityResolution::IdMappingWorkflow.IdMappingRuleBasedProperties",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["AttributeMatchingModel" JSON..= attributeMatchingModel,
+                            "RecordMatchingModel" JSON..= recordMatchingModel]
+                           (Prelude.catMaybes
+                              [(JSON..=) "RuleDefinitionType" Prelude.<$> ruleDefinitionType,
+                               (JSON..=) "Rules" Prelude.<$> rules]))}
+instance JSON.ToJSON IdMappingRuleBasedPropertiesProperty where
+  toJSON IdMappingRuleBasedPropertiesProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["AttributeMatchingModel" JSON..= attributeMatchingModel,
+               "RecordMatchingModel" JSON..= recordMatchingModel]
+              (Prelude.catMaybes
+                 [(JSON..=) "RuleDefinitionType" Prelude.<$> ruleDefinitionType,
+                  (JSON..=) "Rules" Prelude.<$> rules])))
+instance Property "AttributeMatchingModel" IdMappingRuleBasedPropertiesProperty where
+  type PropertyType "AttributeMatchingModel" IdMappingRuleBasedPropertiesProperty = Value Prelude.Text
+  set newValue IdMappingRuleBasedPropertiesProperty {..}
+    = IdMappingRuleBasedPropertiesProperty
+        {attributeMatchingModel = newValue, ..}
+instance Property "RecordMatchingModel" IdMappingRuleBasedPropertiesProperty where
+  type PropertyType "RecordMatchingModel" IdMappingRuleBasedPropertiesProperty = Value Prelude.Text
+  set newValue IdMappingRuleBasedPropertiesProperty {..}
+    = IdMappingRuleBasedPropertiesProperty
+        {recordMatchingModel = newValue, ..}
+instance Property "RuleDefinitionType" IdMappingRuleBasedPropertiesProperty where
+  type PropertyType "RuleDefinitionType" IdMappingRuleBasedPropertiesProperty = Value Prelude.Text
+  set newValue IdMappingRuleBasedPropertiesProperty {..}
+    = IdMappingRuleBasedPropertiesProperty
+        {ruleDefinitionType = Prelude.pure newValue, ..}
+instance Property "Rules" IdMappingRuleBasedPropertiesProperty where
+  type PropertyType "Rules" IdMappingRuleBasedPropertiesProperty = [RuleProperty]
+  set newValue IdMappingRuleBasedPropertiesProperty {..}
+    = IdMappingRuleBasedPropertiesProperty
+        {rules = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/EntityResolution/IdMappingWorkflow/IdMappingRuleBasedPropertiesProperty.hs-boot b/gen/Stratosphere/EntityResolution/IdMappingWorkflow/IdMappingRuleBasedPropertiesProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/EntityResolution/IdMappingWorkflow/IdMappingRuleBasedPropertiesProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.EntityResolution.IdMappingWorkflow.IdMappingRuleBasedPropertiesProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data IdMappingRuleBasedPropertiesProperty :: Prelude.Type
+instance ToResourceProperties IdMappingRuleBasedPropertiesProperty
+instance Prelude.Eq IdMappingRuleBasedPropertiesProperty
+instance Prelude.Show IdMappingRuleBasedPropertiesProperty
+instance JSON.ToJSON IdMappingRuleBasedPropertiesProperty
diff --git a/gen/Stratosphere/EntityResolution/IdMappingWorkflow/IdMappingTechniquesProperty.hs b/gen/Stratosphere/EntityResolution/IdMappingWorkflow/IdMappingTechniquesProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/EntityResolution/IdMappingWorkflow/IdMappingTechniquesProperty.hs
@@ -0,0 +1,70 @@
+module Stratosphere.EntityResolution.IdMappingWorkflow.IdMappingTechniquesProperty (
+        module Exports, IdMappingTechniquesProperty(..),
+        mkIdMappingTechniquesProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.EntityResolution.IdMappingWorkflow.IdMappingRuleBasedPropertiesProperty as Exports
+import {-# SOURCE #-} Stratosphere.EntityResolution.IdMappingWorkflow.ProviderPropertiesProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data IdMappingTechniquesProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-idmappingworkflow-idmappingtechniques.html>
+    IdMappingTechniquesProperty {haddock_workaround_ :: (),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-idmappingworkflow-idmappingtechniques.html#cfn-entityresolution-idmappingworkflow-idmappingtechniques-idmappingtype>
+                                 idMappingType :: (Prelude.Maybe (Value Prelude.Text)),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-idmappingworkflow-idmappingtechniques.html#cfn-entityresolution-idmappingworkflow-idmappingtechniques-normalizationversion>
+                                 normalizationVersion :: (Prelude.Maybe (Value Prelude.Text)),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-idmappingworkflow-idmappingtechniques.html#cfn-entityresolution-idmappingworkflow-idmappingtechniques-providerproperties>
+                                 providerProperties :: (Prelude.Maybe ProviderPropertiesProperty),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-idmappingworkflow-idmappingtechniques.html#cfn-entityresolution-idmappingworkflow-idmappingtechniques-rulebasedproperties>
+                                 ruleBasedProperties :: (Prelude.Maybe IdMappingRuleBasedPropertiesProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkIdMappingTechniquesProperty :: IdMappingTechniquesProperty
+mkIdMappingTechniquesProperty
+  = IdMappingTechniquesProperty
+      {haddock_workaround_ = (), idMappingType = Prelude.Nothing,
+       normalizationVersion = Prelude.Nothing,
+       providerProperties = Prelude.Nothing,
+       ruleBasedProperties = Prelude.Nothing}
+instance ToResourceProperties IdMappingTechniquesProperty where
+  toResourceProperties IdMappingTechniquesProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::EntityResolution::IdMappingWorkflow.IdMappingTechniques",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "IdMappingType" Prelude.<$> idMappingType,
+                            (JSON..=) "NormalizationVersion" Prelude.<$> normalizationVersion,
+                            (JSON..=) "ProviderProperties" Prelude.<$> providerProperties,
+                            (JSON..=) "RuleBasedProperties" Prelude.<$> ruleBasedProperties])}
+instance JSON.ToJSON IdMappingTechniquesProperty where
+  toJSON IdMappingTechniquesProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "IdMappingType" Prelude.<$> idMappingType,
+               (JSON..=) "NormalizationVersion" Prelude.<$> normalizationVersion,
+               (JSON..=) "ProviderProperties" Prelude.<$> providerProperties,
+               (JSON..=) "RuleBasedProperties" Prelude.<$> ruleBasedProperties]))
+instance Property "IdMappingType" IdMappingTechniquesProperty where
+  type PropertyType "IdMappingType" IdMappingTechniquesProperty = Value Prelude.Text
+  set newValue IdMappingTechniquesProperty {..}
+    = IdMappingTechniquesProperty
+        {idMappingType = Prelude.pure newValue, ..}
+instance Property "NormalizationVersion" IdMappingTechniquesProperty where
+  type PropertyType "NormalizationVersion" IdMappingTechniquesProperty = Value Prelude.Text
+  set newValue IdMappingTechniquesProperty {..}
+    = IdMappingTechniquesProperty
+        {normalizationVersion = Prelude.pure newValue, ..}
+instance Property "ProviderProperties" IdMappingTechniquesProperty where
+  type PropertyType "ProviderProperties" IdMappingTechniquesProperty = ProviderPropertiesProperty
+  set newValue IdMappingTechniquesProperty {..}
+    = IdMappingTechniquesProperty
+        {providerProperties = Prelude.pure newValue, ..}
+instance Property "RuleBasedProperties" IdMappingTechniquesProperty where
+  type PropertyType "RuleBasedProperties" IdMappingTechniquesProperty = IdMappingRuleBasedPropertiesProperty
+  set newValue IdMappingTechniquesProperty {..}
+    = IdMappingTechniquesProperty
+        {ruleBasedProperties = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/EntityResolution/IdMappingWorkflow/IdMappingTechniquesProperty.hs-boot b/gen/Stratosphere/EntityResolution/IdMappingWorkflow/IdMappingTechniquesProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/EntityResolution/IdMappingWorkflow/IdMappingTechniquesProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.EntityResolution.IdMappingWorkflow.IdMappingTechniquesProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data IdMappingTechniquesProperty :: Prelude.Type
+instance ToResourceProperties IdMappingTechniquesProperty
+instance Prelude.Eq IdMappingTechniquesProperty
+instance Prelude.Show IdMappingTechniquesProperty
+instance JSON.ToJSON IdMappingTechniquesProperty
diff --git a/gen/Stratosphere/EntityResolution/IdMappingWorkflow/IdMappingWorkflowInputSourceProperty.hs b/gen/Stratosphere/EntityResolution/IdMappingWorkflow/IdMappingWorkflowInputSourceProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/EntityResolution/IdMappingWorkflow/IdMappingWorkflowInputSourceProperty.hs
@@ -0,0 +1,60 @@
+module Stratosphere.EntityResolution.IdMappingWorkflow.IdMappingWorkflowInputSourceProperty (
+        IdMappingWorkflowInputSourceProperty(..),
+        mkIdMappingWorkflowInputSourceProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data IdMappingWorkflowInputSourceProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-idmappingworkflow-idmappingworkflowinputsource.html>
+    IdMappingWorkflowInputSourceProperty {haddock_workaround_ :: (),
+                                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-idmappingworkflow-idmappingworkflowinputsource.html#cfn-entityresolution-idmappingworkflow-idmappingworkflowinputsource-inputsourcearn>
+                                          inputSourceARN :: (Value Prelude.Text),
+                                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-idmappingworkflow-idmappingworkflowinputsource.html#cfn-entityresolution-idmappingworkflow-idmappingworkflowinputsource-schemaarn>
+                                          schemaArn :: (Prelude.Maybe (Value Prelude.Text)),
+                                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-idmappingworkflow-idmappingworkflowinputsource.html#cfn-entityresolution-idmappingworkflow-idmappingworkflowinputsource-type>
+                                          type' :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkIdMappingWorkflowInputSourceProperty ::
+  Value Prelude.Text -> IdMappingWorkflowInputSourceProperty
+mkIdMappingWorkflowInputSourceProperty inputSourceARN
+  = IdMappingWorkflowInputSourceProperty
+      {haddock_workaround_ = (), inputSourceARN = inputSourceARN,
+       schemaArn = Prelude.Nothing, type' = Prelude.Nothing}
+instance ToResourceProperties IdMappingWorkflowInputSourceProperty where
+  toResourceProperties IdMappingWorkflowInputSourceProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::EntityResolution::IdMappingWorkflow.IdMappingWorkflowInputSource",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["InputSourceARN" JSON..= inputSourceARN]
+                           (Prelude.catMaybes
+                              [(JSON..=) "SchemaArn" Prelude.<$> schemaArn,
+                               (JSON..=) "Type" Prelude.<$> type']))}
+instance JSON.ToJSON IdMappingWorkflowInputSourceProperty where
+  toJSON IdMappingWorkflowInputSourceProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["InputSourceARN" JSON..= inputSourceARN]
+              (Prelude.catMaybes
+                 [(JSON..=) "SchemaArn" Prelude.<$> schemaArn,
+                  (JSON..=) "Type" Prelude.<$> type'])))
+instance Property "InputSourceARN" IdMappingWorkflowInputSourceProperty where
+  type PropertyType "InputSourceARN" IdMappingWorkflowInputSourceProperty = Value Prelude.Text
+  set newValue IdMappingWorkflowInputSourceProperty {..}
+    = IdMappingWorkflowInputSourceProperty
+        {inputSourceARN = newValue, ..}
+instance Property "SchemaArn" IdMappingWorkflowInputSourceProperty where
+  type PropertyType "SchemaArn" IdMappingWorkflowInputSourceProperty = Value Prelude.Text
+  set newValue IdMappingWorkflowInputSourceProperty {..}
+    = IdMappingWorkflowInputSourceProperty
+        {schemaArn = Prelude.pure newValue, ..}
+instance Property "Type" IdMappingWorkflowInputSourceProperty where
+  type PropertyType "Type" IdMappingWorkflowInputSourceProperty = Value Prelude.Text
+  set newValue IdMappingWorkflowInputSourceProperty {..}
+    = IdMappingWorkflowInputSourceProperty
+        {type' = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/EntityResolution/IdMappingWorkflow/IdMappingWorkflowInputSourceProperty.hs-boot b/gen/Stratosphere/EntityResolution/IdMappingWorkflow/IdMappingWorkflowInputSourceProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/EntityResolution/IdMappingWorkflow/IdMappingWorkflowInputSourceProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.EntityResolution.IdMappingWorkflow.IdMappingWorkflowInputSourceProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data IdMappingWorkflowInputSourceProperty :: Prelude.Type
+instance ToResourceProperties IdMappingWorkflowInputSourceProperty
+instance Prelude.Eq IdMappingWorkflowInputSourceProperty
+instance Prelude.Show IdMappingWorkflowInputSourceProperty
+instance JSON.ToJSON IdMappingWorkflowInputSourceProperty
diff --git a/gen/Stratosphere/EntityResolution/IdMappingWorkflow/IdMappingWorkflowOutputSourceProperty.hs b/gen/Stratosphere/EntityResolution/IdMappingWorkflow/IdMappingWorkflowOutputSourceProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/EntityResolution/IdMappingWorkflow/IdMappingWorkflowOutputSourceProperty.hs
@@ -0,0 +1,49 @@
+module Stratosphere.EntityResolution.IdMappingWorkflow.IdMappingWorkflowOutputSourceProperty (
+        IdMappingWorkflowOutputSourceProperty(..),
+        mkIdMappingWorkflowOutputSourceProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data IdMappingWorkflowOutputSourceProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-idmappingworkflow-idmappingworkflowoutputsource.html>
+    IdMappingWorkflowOutputSourceProperty {haddock_workaround_ :: (),
+                                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-idmappingworkflow-idmappingworkflowoutputsource.html#cfn-entityresolution-idmappingworkflow-idmappingworkflowoutputsource-kmsarn>
+                                           kMSArn :: (Prelude.Maybe (Value Prelude.Text)),
+                                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-idmappingworkflow-idmappingworkflowoutputsource.html#cfn-entityresolution-idmappingworkflow-idmappingworkflowoutputsource-outputs3path>
+                                           outputS3Path :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkIdMappingWorkflowOutputSourceProperty ::
+  Value Prelude.Text -> IdMappingWorkflowOutputSourceProperty
+mkIdMappingWorkflowOutputSourceProperty outputS3Path
+  = IdMappingWorkflowOutputSourceProperty
+      {haddock_workaround_ = (), outputS3Path = outputS3Path,
+       kMSArn = Prelude.Nothing}
+instance ToResourceProperties IdMappingWorkflowOutputSourceProperty where
+  toResourceProperties IdMappingWorkflowOutputSourceProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::EntityResolution::IdMappingWorkflow.IdMappingWorkflowOutputSource",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["OutputS3Path" JSON..= outputS3Path]
+                           (Prelude.catMaybes [(JSON..=) "KMSArn" Prelude.<$> kMSArn]))}
+instance JSON.ToJSON IdMappingWorkflowOutputSourceProperty where
+  toJSON IdMappingWorkflowOutputSourceProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["OutputS3Path" JSON..= outputS3Path]
+              (Prelude.catMaybes [(JSON..=) "KMSArn" Prelude.<$> kMSArn])))
+instance Property "KMSArn" IdMappingWorkflowOutputSourceProperty where
+  type PropertyType "KMSArn" IdMappingWorkflowOutputSourceProperty = Value Prelude.Text
+  set newValue IdMappingWorkflowOutputSourceProperty {..}
+    = IdMappingWorkflowOutputSourceProperty
+        {kMSArn = Prelude.pure newValue, ..}
+instance Property "OutputS3Path" IdMappingWorkflowOutputSourceProperty where
+  type PropertyType "OutputS3Path" IdMappingWorkflowOutputSourceProperty = Value Prelude.Text
+  set newValue IdMappingWorkflowOutputSourceProperty {..}
+    = IdMappingWorkflowOutputSourceProperty
+        {outputS3Path = newValue, ..}
diff --git a/gen/Stratosphere/EntityResolution/IdMappingWorkflow/IdMappingWorkflowOutputSourceProperty.hs-boot b/gen/Stratosphere/EntityResolution/IdMappingWorkflow/IdMappingWorkflowOutputSourceProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/EntityResolution/IdMappingWorkflow/IdMappingWorkflowOutputSourceProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.EntityResolution.IdMappingWorkflow.IdMappingWorkflowOutputSourceProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data IdMappingWorkflowOutputSourceProperty :: Prelude.Type
+instance ToResourceProperties IdMappingWorkflowOutputSourceProperty
+instance Prelude.Eq IdMappingWorkflowOutputSourceProperty
+instance Prelude.Show IdMappingWorkflowOutputSourceProperty
+instance JSON.ToJSON IdMappingWorkflowOutputSourceProperty
diff --git a/gen/Stratosphere/EntityResolution/IdMappingWorkflow/IntermediateSourceConfigurationProperty.hs b/gen/Stratosphere/EntityResolution/IdMappingWorkflow/IntermediateSourceConfigurationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/EntityResolution/IdMappingWorkflow/IntermediateSourceConfigurationProperty.hs
@@ -0,0 +1,34 @@
+module Stratosphere.EntityResolution.IdMappingWorkflow.IntermediateSourceConfigurationProperty (
+        IntermediateSourceConfigurationProperty(..),
+        mkIntermediateSourceConfigurationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data IntermediateSourceConfigurationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-idmappingworkflow-intermediatesourceconfiguration.html>
+    IntermediateSourceConfigurationProperty {haddock_workaround_ :: (),
+                                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-idmappingworkflow-intermediatesourceconfiguration.html#cfn-entityresolution-idmappingworkflow-intermediatesourceconfiguration-intermediates3path>
+                                             intermediateS3Path :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkIntermediateSourceConfigurationProperty ::
+  Value Prelude.Text -> IntermediateSourceConfigurationProperty
+mkIntermediateSourceConfigurationProperty intermediateS3Path
+  = IntermediateSourceConfigurationProperty
+      {haddock_workaround_ = (), intermediateS3Path = intermediateS3Path}
+instance ToResourceProperties IntermediateSourceConfigurationProperty where
+  toResourceProperties IntermediateSourceConfigurationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::EntityResolution::IdMappingWorkflow.IntermediateSourceConfiguration",
+         supportsTags = Prelude.False,
+         properties = ["IntermediateS3Path" JSON..= intermediateS3Path]}
+instance JSON.ToJSON IntermediateSourceConfigurationProperty where
+  toJSON IntermediateSourceConfigurationProperty {..}
+    = JSON.object ["IntermediateS3Path" JSON..= intermediateS3Path]
+instance Property "IntermediateS3Path" IntermediateSourceConfigurationProperty where
+  type PropertyType "IntermediateS3Path" IntermediateSourceConfigurationProperty = Value Prelude.Text
+  set newValue IntermediateSourceConfigurationProperty {..}
+    = IntermediateSourceConfigurationProperty
+        {intermediateS3Path = newValue, ..}
diff --git a/gen/Stratosphere/EntityResolution/IdMappingWorkflow/IntermediateSourceConfigurationProperty.hs-boot b/gen/Stratosphere/EntityResolution/IdMappingWorkflow/IntermediateSourceConfigurationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/EntityResolution/IdMappingWorkflow/IntermediateSourceConfigurationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.EntityResolution.IdMappingWorkflow.IntermediateSourceConfigurationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data IntermediateSourceConfigurationProperty :: Prelude.Type
+instance ToResourceProperties IntermediateSourceConfigurationProperty
+instance Prelude.Eq IntermediateSourceConfigurationProperty
+instance Prelude.Show IntermediateSourceConfigurationProperty
+instance JSON.ToJSON IntermediateSourceConfigurationProperty
diff --git a/gen/Stratosphere/EntityResolution/IdMappingWorkflow/ProviderPropertiesProperty.hs b/gen/Stratosphere/EntityResolution/IdMappingWorkflow/ProviderPropertiesProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/EntityResolution/IdMappingWorkflow/ProviderPropertiesProperty.hs
@@ -0,0 +1,65 @@
+module Stratosphere.EntityResolution.IdMappingWorkflow.ProviderPropertiesProperty (
+        module Exports, ProviderPropertiesProperty(..),
+        mkProviderPropertiesProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.EntityResolution.IdMappingWorkflow.IntermediateSourceConfigurationProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ProviderPropertiesProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-idmappingworkflow-providerproperties.html>
+    ProviderPropertiesProperty {haddock_workaround_ :: (),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-idmappingworkflow-providerproperties.html#cfn-entityresolution-idmappingworkflow-providerproperties-intermediatesourceconfiguration>
+                                intermediateSourceConfiguration :: (Prelude.Maybe IntermediateSourceConfigurationProperty),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-idmappingworkflow-providerproperties.html#cfn-entityresolution-idmappingworkflow-providerproperties-providerconfiguration>
+                                providerConfiguration :: (Prelude.Maybe (Prelude.Map Prelude.Text (Value Prelude.Text))),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-idmappingworkflow-providerproperties.html#cfn-entityresolution-idmappingworkflow-providerproperties-providerservicearn>
+                                providerServiceArn :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkProviderPropertiesProperty ::
+  Value Prelude.Text -> ProviderPropertiesProperty
+mkProviderPropertiesProperty providerServiceArn
+  = ProviderPropertiesProperty
+      {haddock_workaround_ = (), providerServiceArn = providerServiceArn,
+       intermediateSourceConfiguration = Prelude.Nothing,
+       providerConfiguration = Prelude.Nothing}
+instance ToResourceProperties ProviderPropertiesProperty where
+  toResourceProperties ProviderPropertiesProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::EntityResolution::IdMappingWorkflow.ProviderProperties",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["ProviderServiceArn" JSON..= providerServiceArn]
+                           (Prelude.catMaybes
+                              [(JSON..=) "IntermediateSourceConfiguration"
+                                 Prelude.<$> intermediateSourceConfiguration,
+                               (JSON..=) "ProviderConfiguration"
+                                 Prelude.<$> providerConfiguration]))}
+instance JSON.ToJSON ProviderPropertiesProperty where
+  toJSON ProviderPropertiesProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["ProviderServiceArn" JSON..= providerServiceArn]
+              (Prelude.catMaybes
+                 [(JSON..=) "IntermediateSourceConfiguration"
+                    Prelude.<$> intermediateSourceConfiguration,
+                  (JSON..=) "ProviderConfiguration"
+                    Prelude.<$> providerConfiguration])))
+instance Property "IntermediateSourceConfiguration" ProviderPropertiesProperty where
+  type PropertyType "IntermediateSourceConfiguration" ProviderPropertiesProperty = IntermediateSourceConfigurationProperty
+  set newValue ProviderPropertiesProperty {..}
+    = ProviderPropertiesProperty
+        {intermediateSourceConfiguration = Prelude.pure newValue, ..}
+instance Property "ProviderConfiguration" ProviderPropertiesProperty where
+  type PropertyType "ProviderConfiguration" ProviderPropertiesProperty = Prelude.Map Prelude.Text (Value Prelude.Text)
+  set newValue ProviderPropertiesProperty {..}
+    = ProviderPropertiesProperty
+        {providerConfiguration = Prelude.pure newValue, ..}
+instance Property "ProviderServiceArn" ProviderPropertiesProperty where
+  type PropertyType "ProviderServiceArn" ProviderPropertiesProperty = Value Prelude.Text
+  set newValue ProviderPropertiesProperty {..}
+    = ProviderPropertiesProperty {providerServiceArn = newValue, ..}
diff --git a/gen/Stratosphere/EntityResolution/IdMappingWorkflow/ProviderPropertiesProperty.hs-boot b/gen/Stratosphere/EntityResolution/IdMappingWorkflow/ProviderPropertiesProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/EntityResolution/IdMappingWorkflow/ProviderPropertiesProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.EntityResolution.IdMappingWorkflow.ProviderPropertiesProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ProviderPropertiesProperty :: Prelude.Type
+instance ToResourceProperties ProviderPropertiesProperty
+instance Prelude.Eq ProviderPropertiesProperty
+instance Prelude.Show ProviderPropertiesProperty
+instance JSON.ToJSON ProviderPropertiesProperty
diff --git a/gen/Stratosphere/EntityResolution/IdMappingWorkflow/RuleProperty.hs b/gen/Stratosphere/EntityResolution/IdMappingWorkflow/RuleProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/EntityResolution/IdMappingWorkflow/RuleProperty.hs
@@ -0,0 +1,41 @@
+module Stratosphere.EntityResolution.IdMappingWorkflow.RuleProperty (
+        RuleProperty(..), mkRuleProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data RuleProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-idmappingworkflow-rule.html>
+    RuleProperty {haddock_workaround_ :: (),
+                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-idmappingworkflow-rule.html#cfn-entityresolution-idmappingworkflow-rule-matchingkeys>
+                  matchingKeys :: (ValueList Prelude.Text),
+                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-idmappingworkflow-rule.html#cfn-entityresolution-idmappingworkflow-rule-rulename>
+                  ruleName :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkRuleProperty ::
+  ValueList Prelude.Text -> Value Prelude.Text -> RuleProperty
+mkRuleProperty matchingKeys ruleName
+  = RuleProperty
+      {haddock_workaround_ = (), matchingKeys = matchingKeys,
+       ruleName = ruleName}
+instance ToResourceProperties RuleProperty where
+  toResourceProperties RuleProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::EntityResolution::IdMappingWorkflow.Rule",
+         supportsTags = Prelude.False,
+         properties = ["MatchingKeys" JSON..= matchingKeys,
+                       "RuleName" JSON..= ruleName]}
+instance JSON.ToJSON RuleProperty where
+  toJSON RuleProperty {..}
+    = JSON.object
+        ["MatchingKeys" JSON..= matchingKeys, "RuleName" JSON..= ruleName]
+instance Property "MatchingKeys" RuleProperty where
+  type PropertyType "MatchingKeys" RuleProperty = ValueList Prelude.Text
+  set newValue RuleProperty {..}
+    = RuleProperty {matchingKeys = newValue, ..}
+instance Property "RuleName" RuleProperty where
+  type PropertyType "RuleName" RuleProperty = Value Prelude.Text
+  set newValue RuleProperty {..}
+    = RuleProperty {ruleName = newValue, ..}
diff --git a/gen/Stratosphere/EntityResolution/IdMappingWorkflow/RuleProperty.hs-boot b/gen/Stratosphere/EntityResolution/IdMappingWorkflow/RuleProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/EntityResolution/IdMappingWorkflow/RuleProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.EntityResolution.IdMappingWorkflow.RuleProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data RuleProperty :: Prelude.Type
+instance ToResourceProperties RuleProperty
+instance Prelude.Eq RuleProperty
+instance Prelude.Show RuleProperty
+instance JSON.ToJSON RuleProperty
diff --git a/gen/Stratosphere/EntityResolution/IdNamespace.hs b/gen/Stratosphere/EntityResolution/IdNamespace.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/EntityResolution/IdNamespace.hs
@@ -0,0 +1,94 @@
+module Stratosphere.EntityResolution.IdNamespace (
+        module Exports, IdNamespace(..), mkIdNamespace
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.EntityResolution.IdNamespace.IdNamespaceIdMappingWorkflowPropertiesProperty as Exports
+import {-# SOURCE #-} Stratosphere.EntityResolution.IdNamespace.IdNamespaceInputSourceProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Tag
+import Stratosphere.Value
+data IdNamespace
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-entityresolution-idnamespace.html>
+    IdNamespace {haddock_workaround_ :: (),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-entityresolution-idnamespace.html#cfn-entityresolution-idnamespace-description>
+                 description :: (Prelude.Maybe (Value Prelude.Text)),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-entityresolution-idnamespace.html#cfn-entityresolution-idnamespace-idmappingworkflowproperties>
+                 idMappingWorkflowProperties :: (Prelude.Maybe [IdNamespaceIdMappingWorkflowPropertiesProperty]),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-entityresolution-idnamespace.html#cfn-entityresolution-idnamespace-idnamespacename>
+                 idNamespaceName :: (Value Prelude.Text),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-entityresolution-idnamespace.html#cfn-entityresolution-idnamespace-inputsourceconfig>
+                 inputSourceConfig :: (Prelude.Maybe [IdNamespaceInputSourceProperty]),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-entityresolution-idnamespace.html#cfn-entityresolution-idnamespace-rolearn>
+                 roleArn :: (Prelude.Maybe (Value Prelude.Text)),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-entityresolution-idnamespace.html#cfn-entityresolution-idnamespace-tags>
+                 tags :: (Prelude.Maybe [Tag]),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-entityresolution-idnamespace.html#cfn-entityresolution-idnamespace-type>
+                 type' :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkIdNamespace ::
+  Value Prelude.Text -> Value Prelude.Text -> IdNamespace
+mkIdNamespace idNamespaceName type'
+  = IdNamespace
+      {haddock_workaround_ = (), idNamespaceName = idNamespaceName,
+       type' = type', description = Prelude.Nothing,
+       idMappingWorkflowProperties = Prelude.Nothing,
+       inputSourceConfig = Prelude.Nothing, roleArn = Prelude.Nothing,
+       tags = Prelude.Nothing}
+instance ToResourceProperties IdNamespace where
+  toResourceProperties IdNamespace {..}
+    = ResourceProperties
+        {awsType = "AWS::EntityResolution::IdNamespace",
+         supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["IdNamespaceName" JSON..= idNamespaceName, "Type" JSON..= type']
+                           (Prelude.catMaybes
+                              [(JSON..=) "Description" Prelude.<$> description,
+                               (JSON..=) "IdMappingWorkflowProperties"
+                                 Prelude.<$> idMappingWorkflowProperties,
+                               (JSON..=) "InputSourceConfig" Prelude.<$> inputSourceConfig,
+                               (JSON..=) "RoleArn" Prelude.<$> roleArn,
+                               (JSON..=) "Tags" Prelude.<$> tags]))}
+instance JSON.ToJSON IdNamespace where
+  toJSON IdNamespace {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["IdNamespaceName" JSON..= idNamespaceName, "Type" JSON..= type']
+              (Prelude.catMaybes
+                 [(JSON..=) "Description" Prelude.<$> description,
+                  (JSON..=) "IdMappingWorkflowProperties"
+                    Prelude.<$> idMappingWorkflowProperties,
+                  (JSON..=) "InputSourceConfig" Prelude.<$> inputSourceConfig,
+                  (JSON..=) "RoleArn" Prelude.<$> roleArn,
+                  (JSON..=) "Tags" Prelude.<$> tags])))
+instance Property "Description" IdNamespace where
+  type PropertyType "Description" IdNamespace = Value Prelude.Text
+  set newValue IdNamespace {..}
+    = IdNamespace {description = Prelude.pure newValue, ..}
+instance Property "IdMappingWorkflowProperties" IdNamespace where
+  type PropertyType "IdMappingWorkflowProperties" IdNamespace = [IdNamespaceIdMappingWorkflowPropertiesProperty]
+  set newValue IdNamespace {..}
+    = IdNamespace
+        {idMappingWorkflowProperties = Prelude.pure newValue, ..}
+instance Property "IdNamespaceName" IdNamespace where
+  type PropertyType "IdNamespaceName" IdNamespace = Value Prelude.Text
+  set newValue IdNamespace {..}
+    = IdNamespace {idNamespaceName = newValue, ..}
+instance Property "InputSourceConfig" IdNamespace where
+  type PropertyType "InputSourceConfig" IdNamespace = [IdNamespaceInputSourceProperty]
+  set newValue IdNamespace {..}
+    = IdNamespace {inputSourceConfig = Prelude.pure newValue, ..}
+instance Property "RoleArn" IdNamespace where
+  type PropertyType "RoleArn" IdNamespace = Value Prelude.Text
+  set newValue IdNamespace {..}
+    = IdNamespace {roleArn = Prelude.pure newValue, ..}
+instance Property "Tags" IdNamespace where
+  type PropertyType "Tags" IdNamespace = [Tag]
+  set newValue IdNamespace {..}
+    = IdNamespace {tags = Prelude.pure newValue, ..}
+instance Property "Type" IdNamespace where
+  type PropertyType "Type" IdNamespace = Value Prelude.Text
+  set newValue IdNamespace {..} = IdNamespace {type' = newValue, ..}
diff --git a/gen/Stratosphere/EntityResolution/IdNamespace/IdNamespaceIdMappingWorkflowPropertiesProperty.hs b/gen/Stratosphere/EntityResolution/IdNamespace/IdNamespaceIdMappingWorkflowPropertiesProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/EntityResolution/IdNamespace/IdNamespaceIdMappingWorkflowPropertiesProperty.hs
@@ -0,0 +1,65 @@
+module Stratosphere.EntityResolution.IdNamespace.IdNamespaceIdMappingWorkflowPropertiesProperty (
+        module Exports, IdNamespaceIdMappingWorkflowPropertiesProperty(..),
+        mkIdNamespaceIdMappingWorkflowPropertiesProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.EntityResolution.IdNamespace.NamespaceProviderPropertiesProperty as Exports
+import {-# SOURCE #-} Stratosphere.EntityResolution.IdNamespace.NamespaceRuleBasedPropertiesProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data IdNamespaceIdMappingWorkflowPropertiesProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-idnamespace-idnamespaceidmappingworkflowproperties.html>
+    IdNamespaceIdMappingWorkflowPropertiesProperty {haddock_workaround_ :: (),
+                                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-idnamespace-idnamespaceidmappingworkflowproperties.html#cfn-entityresolution-idnamespace-idnamespaceidmappingworkflowproperties-idmappingtype>
+                                                    idMappingType :: (Value Prelude.Text),
+                                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-idnamespace-idnamespaceidmappingworkflowproperties.html#cfn-entityresolution-idnamespace-idnamespaceidmappingworkflowproperties-providerproperties>
+                                                    providerProperties :: (Prelude.Maybe NamespaceProviderPropertiesProperty),
+                                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-idnamespace-idnamespaceidmappingworkflowproperties.html#cfn-entityresolution-idnamespace-idnamespaceidmappingworkflowproperties-rulebasedproperties>
+                                                    ruleBasedProperties :: (Prelude.Maybe NamespaceRuleBasedPropertiesProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkIdNamespaceIdMappingWorkflowPropertiesProperty ::
+  Value Prelude.Text
+  -> IdNamespaceIdMappingWorkflowPropertiesProperty
+mkIdNamespaceIdMappingWorkflowPropertiesProperty idMappingType
+  = IdNamespaceIdMappingWorkflowPropertiesProperty
+      {haddock_workaround_ = (), idMappingType = idMappingType,
+       providerProperties = Prelude.Nothing,
+       ruleBasedProperties = Prelude.Nothing}
+instance ToResourceProperties IdNamespaceIdMappingWorkflowPropertiesProperty where
+  toResourceProperties
+    IdNamespaceIdMappingWorkflowPropertiesProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::EntityResolution::IdNamespace.IdNamespaceIdMappingWorkflowProperties",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["IdMappingType" JSON..= idMappingType]
+                           (Prelude.catMaybes
+                              [(JSON..=) "ProviderProperties" Prelude.<$> providerProperties,
+                               (JSON..=) "RuleBasedProperties" Prelude.<$> ruleBasedProperties]))}
+instance JSON.ToJSON IdNamespaceIdMappingWorkflowPropertiesProperty where
+  toJSON IdNamespaceIdMappingWorkflowPropertiesProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["IdMappingType" JSON..= idMappingType]
+              (Prelude.catMaybes
+                 [(JSON..=) "ProviderProperties" Prelude.<$> providerProperties,
+                  (JSON..=) "RuleBasedProperties" Prelude.<$> ruleBasedProperties])))
+instance Property "IdMappingType" IdNamespaceIdMappingWorkflowPropertiesProperty where
+  type PropertyType "IdMappingType" IdNamespaceIdMappingWorkflowPropertiesProperty = Value Prelude.Text
+  set newValue IdNamespaceIdMappingWorkflowPropertiesProperty {..}
+    = IdNamespaceIdMappingWorkflowPropertiesProperty
+        {idMappingType = newValue, ..}
+instance Property "ProviderProperties" IdNamespaceIdMappingWorkflowPropertiesProperty where
+  type PropertyType "ProviderProperties" IdNamespaceIdMappingWorkflowPropertiesProperty = NamespaceProviderPropertiesProperty
+  set newValue IdNamespaceIdMappingWorkflowPropertiesProperty {..}
+    = IdNamespaceIdMappingWorkflowPropertiesProperty
+        {providerProperties = Prelude.pure newValue, ..}
+instance Property "RuleBasedProperties" IdNamespaceIdMappingWorkflowPropertiesProperty where
+  type PropertyType "RuleBasedProperties" IdNamespaceIdMappingWorkflowPropertiesProperty = NamespaceRuleBasedPropertiesProperty
+  set newValue IdNamespaceIdMappingWorkflowPropertiesProperty {..}
+    = IdNamespaceIdMappingWorkflowPropertiesProperty
+        {ruleBasedProperties = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/EntityResolution/IdNamespace/IdNamespaceIdMappingWorkflowPropertiesProperty.hs-boot b/gen/Stratosphere/EntityResolution/IdNamespace/IdNamespaceIdMappingWorkflowPropertiesProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/EntityResolution/IdNamespace/IdNamespaceIdMappingWorkflowPropertiesProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.EntityResolution.IdNamespace.IdNamespaceIdMappingWorkflowPropertiesProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data IdNamespaceIdMappingWorkflowPropertiesProperty :: Prelude.Type
+instance ToResourceProperties IdNamespaceIdMappingWorkflowPropertiesProperty
+instance Prelude.Eq IdNamespaceIdMappingWorkflowPropertiesProperty
+instance Prelude.Show IdNamespaceIdMappingWorkflowPropertiesProperty
+instance JSON.ToJSON IdNamespaceIdMappingWorkflowPropertiesProperty
diff --git a/gen/Stratosphere/EntityResolution/IdNamespace/IdNamespaceInputSourceProperty.hs b/gen/Stratosphere/EntityResolution/IdNamespace/IdNamespaceInputSourceProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/EntityResolution/IdNamespace/IdNamespaceInputSourceProperty.hs
@@ -0,0 +1,50 @@
+module Stratosphere.EntityResolution.IdNamespace.IdNamespaceInputSourceProperty (
+        IdNamespaceInputSourceProperty(..),
+        mkIdNamespaceInputSourceProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data IdNamespaceInputSourceProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-idnamespace-idnamespaceinputsource.html>
+    IdNamespaceInputSourceProperty {haddock_workaround_ :: (),
+                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-idnamespace-idnamespaceinputsource.html#cfn-entityresolution-idnamespace-idnamespaceinputsource-inputsourcearn>
+                                    inputSourceARN :: (Value Prelude.Text),
+                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-idnamespace-idnamespaceinputsource.html#cfn-entityresolution-idnamespace-idnamespaceinputsource-schemaname>
+                                    schemaName :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkIdNamespaceInputSourceProperty ::
+  Value Prelude.Text -> IdNamespaceInputSourceProperty
+mkIdNamespaceInputSourceProperty inputSourceARN
+  = IdNamespaceInputSourceProperty
+      {haddock_workaround_ = (), inputSourceARN = inputSourceARN,
+       schemaName = Prelude.Nothing}
+instance ToResourceProperties IdNamespaceInputSourceProperty where
+  toResourceProperties IdNamespaceInputSourceProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::EntityResolution::IdNamespace.IdNamespaceInputSource",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["InputSourceARN" JSON..= inputSourceARN]
+                           (Prelude.catMaybes
+                              [(JSON..=) "SchemaName" Prelude.<$> schemaName]))}
+instance JSON.ToJSON IdNamespaceInputSourceProperty where
+  toJSON IdNamespaceInputSourceProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["InputSourceARN" JSON..= inputSourceARN]
+              (Prelude.catMaybes
+                 [(JSON..=) "SchemaName" Prelude.<$> schemaName])))
+instance Property "InputSourceARN" IdNamespaceInputSourceProperty where
+  type PropertyType "InputSourceARN" IdNamespaceInputSourceProperty = Value Prelude.Text
+  set newValue IdNamespaceInputSourceProperty {..}
+    = IdNamespaceInputSourceProperty {inputSourceARN = newValue, ..}
+instance Property "SchemaName" IdNamespaceInputSourceProperty where
+  type PropertyType "SchemaName" IdNamespaceInputSourceProperty = Value Prelude.Text
+  set newValue IdNamespaceInputSourceProperty {..}
+    = IdNamespaceInputSourceProperty
+        {schemaName = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/EntityResolution/IdNamespace/IdNamespaceInputSourceProperty.hs-boot b/gen/Stratosphere/EntityResolution/IdNamespace/IdNamespaceInputSourceProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/EntityResolution/IdNamespace/IdNamespaceInputSourceProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.EntityResolution.IdNamespace.IdNamespaceInputSourceProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data IdNamespaceInputSourceProperty :: Prelude.Type
+instance ToResourceProperties IdNamespaceInputSourceProperty
+instance Prelude.Eq IdNamespaceInputSourceProperty
+instance Prelude.Show IdNamespaceInputSourceProperty
+instance JSON.ToJSON IdNamespaceInputSourceProperty
diff --git a/gen/Stratosphere/EntityResolution/IdNamespace/NamespaceProviderPropertiesProperty.hs b/gen/Stratosphere/EntityResolution/IdNamespace/NamespaceProviderPropertiesProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/EntityResolution/IdNamespace/NamespaceProviderPropertiesProperty.hs
@@ -0,0 +1,53 @@
+module Stratosphere.EntityResolution.IdNamespace.NamespaceProviderPropertiesProperty (
+        NamespaceProviderPropertiesProperty(..),
+        mkNamespaceProviderPropertiesProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data NamespaceProviderPropertiesProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-idnamespace-namespaceproviderproperties.html>
+    NamespaceProviderPropertiesProperty {haddock_workaround_ :: (),
+                                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-idnamespace-namespaceproviderproperties.html#cfn-entityresolution-idnamespace-namespaceproviderproperties-providerconfiguration>
+                                         providerConfiguration :: (Prelude.Maybe (Prelude.Map Prelude.Text (Value Prelude.Text))),
+                                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-idnamespace-namespaceproviderproperties.html#cfn-entityresolution-idnamespace-namespaceproviderproperties-providerservicearn>
+                                         providerServiceArn :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkNamespaceProviderPropertiesProperty ::
+  Value Prelude.Text -> NamespaceProviderPropertiesProperty
+mkNamespaceProviderPropertiesProperty providerServiceArn
+  = NamespaceProviderPropertiesProperty
+      {haddock_workaround_ = (), providerServiceArn = providerServiceArn,
+       providerConfiguration = Prelude.Nothing}
+instance ToResourceProperties NamespaceProviderPropertiesProperty where
+  toResourceProperties NamespaceProviderPropertiesProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::EntityResolution::IdNamespace.NamespaceProviderProperties",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["ProviderServiceArn" JSON..= providerServiceArn]
+                           (Prelude.catMaybes
+                              [(JSON..=) "ProviderConfiguration"
+                                 Prelude.<$> providerConfiguration]))}
+instance JSON.ToJSON NamespaceProviderPropertiesProperty where
+  toJSON NamespaceProviderPropertiesProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["ProviderServiceArn" JSON..= providerServiceArn]
+              (Prelude.catMaybes
+                 [(JSON..=) "ProviderConfiguration"
+                    Prelude.<$> providerConfiguration])))
+instance Property "ProviderConfiguration" NamespaceProviderPropertiesProperty where
+  type PropertyType "ProviderConfiguration" NamespaceProviderPropertiesProperty = Prelude.Map Prelude.Text (Value Prelude.Text)
+  set newValue NamespaceProviderPropertiesProperty {..}
+    = NamespaceProviderPropertiesProperty
+        {providerConfiguration = Prelude.pure newValue, ..}
+instance Property "ProviderServiceArn" NamespaceProviderPropertiesProperty where
+  type PropertyType "ProviderServiceArn" NamespaceProviderPropertiesProperty = Value Prelude.Text
+  set newValue NamespaceProviderPropertiesProperty {..}
+    = NamespaceProviderPropertiesProperty
+        {providerServiceArn = newValue, ..}
diff --git a/gen/Stratosphere/EntityResolution/IdNamespace/NamespaceProviderPropertiesProperty.hs-boot b/gen/Stratosphere/EntityResolution/IdNamespace/NamespaceProviderPropertiesProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/EntityResolution/IdNamespace/NamespaceProviderPropertiesProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.EntityResolution.IdNamespace.NamespaceProviderPropertiesProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data NamespaceProviderPropertiesProperty :: Prelude.Type
+instance ToResourceProperties NamespaceProviderPropertiesProperty
+instance Prelude.Eq NamespaceProviderPropertiesProperty
+instance Prelude.Show NamespaceProviderPropertiesProperty
+instance JSON.ToJSON NamespaceProviderPropertiesProperty
diff --git a/gen/Stratosphere/EntityResolution/IdNamespace/NamespaceRuleBasedPropertiesProperty.hs b/gen/Stratosphere/EntityResolution/IdNamespace/NamespaceRuleBasedPropertiesProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/EntityResolution/IdNamespace/NamespaceRuleBasedPropertiesProperty.hs
@@ -0,0 +1,72 @@
+module Stratosphere.EntityResolution.IdNamespace.NamespaceRuleBasedPropertiesProperty (
+        module Exports, NamespaceRuleBasedPropertiesProperty(..),
+        mkNamespaceRuleBasedPropertiesProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.EntityResolution.IdNamespace.RuleProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data NamespaceRuleBasedPropertiesProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-idnamespace-namespacerulebasedproperties.html>
+    NamespaceRuleBasedPropertiesProperty {haddock_workaround_ :: (),
+                                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-idnamespace-namespacerulebasedproperties.html#cfn-entityresolution-idnamespace-namespacerulebasedproperties-attributematchingmodel>
+                                          attributeMatchingModel :: (Prelude.Maybe (Value Prelude.Text)),
+                                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-idnamespace-namespacerulebasedproperties.html#cfn-entityresolution-idnamespace-namespacerulebasedproperties-recordmatchingmodels>
+                                          recordMatchingModels :: (Prelude.Maybe (ValueList Prelude.Text)),
+                                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-idnamespace-namespacerulebasedproperties.html#cfn-entityresolution-idnamespace-namespacerulebasedproperties-ruledefinitiontypes>
+                                          ruleDefinitionTypes :: (Prelude.Maybe (ValueList Prelude.Text)),
+                                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-idnamespace-namespacerulebasedproperties.html#cfn-entityresolution-idnamespace-namespacerulebasedproperties-rules>
+                                          rules :: (Prelude.Maybe [RuleProperty])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkNamespaceRuleBasedPropertiesProperty ::
+  NamespaceRuleBasedPropertiesProperty
+mkNamespaceRuleBasedPropertiesProperty
+  = NamespaceRuleBasedPropertiesProperty
+      {haddock_workaround_ = (),
+       attributeMatchingModel = Prelude.Nothing,
+       recordMatchingModels = Prelude.Nothing,
+       ruleDefinitionTypes = Prelude.Nothing, rules = Prelude.Nothing}
+instance ToResourceProperties NamespaceRuleBasedPropertiesProperty where
+  toResourceProperties NamespaceRuleBasedPropertiesProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::EntityResolution::IdNamespace.NamespaceRuleBasedProperties",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "AttributeMatchingModel"
+                              Prelude.<$> attributeMatchingModel,
+                            (JSON..=) "RecordMatchingModels" Prelude.<$> recordMatchingModels,
+                            (JSON..=) "RuleDefinitionTypes" Prelude.<$> ruleDefinitionTypes,
+                            (JSON..=) "Rules" Prelude.<$> rules])}
+instance JSON.ToJSON NamespaceRuleBasedPropertiesProperty where
+  toJSON NamespaceRuleBasedPropertiesProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "AttributeMatchingModel"
+                 Prelude.<$> attributeMatchingModel,
+               (JSON..=) "RecordMatchingModels" Prelude.<$> recordMatchingModels,
+               (JSON..=) "RuleDefinitionTypes" Prelude.<$> ruleDefinitionTypes,
+               (JSON..=) "Rules" Prelude.<$> rules]))
+instance Property "AttributeMatchingModel" NamespaceRuleBasedPropertiesProperty where
+  type PropertyType "AttributeMatchingModel" NamespaceRuleBasedPropertiesProperty = Value Prelude.Text
+  set newValue NamespaceRuleBasedPropertiesProperty {..}
+    = NamespaceRuleBasedPropertiesProperty
+        {attributeMatchingModel = Prelude.pure newValue, ..}
+instance Property "RecordMatchingModels" NamespaceRuleBasedPropertiesProperty where
+  type PropertyType "RecordMatchingModels" NamespaceRuleBasedPropertiesProperty = ValueList Prelude.Text
+  set newValue NamespaceRuleBasedPropertiesProperty {..}
+    = NamespaceRuleBasedPropertiesProperty
+        {recordMatchingModels = Prelude.pure newValue, ..}
+instance Property "RuleDefinitionTypes" NamespaceRuleBasedPropertiesProperty where
+  type PropertyType "RuleDefinitionTypes" NamespaceRuleBasedPropertiesProperty = ValueList Prelude.Text
+  set newValue NamespaceRuleBasedPropertiesProperty {..}
+    = NamespaceRuleBasedPropertiesProperty
+        {ruleDefinitionTypes = Prelude.pure newValue, ..}
+instance Property "Rules" NamespaceRuleBasedPropertiesProperty where
+  type PropertyType "Rules" NamespaceRuleBasedPropertiesProperty = [RuleProperty]
+  set newValue NamespaceRuleBasedPropertiesProperty {..}
+    = NamespaceRuleBasedPropertiesProperty
+        {rules = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/EntityResolution/IdNamespace/NamespaceRuleBasedPropertiesProperty.hs-boot b/gen/Stratosphere/EntityResolution/IdNamespace/NamespaceRuleBasedPropertiesProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/EntityResolution/IdNamespace/NamespaceRuleBasedPropertiesProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.EntityResolution.IdNamespace.NamespaceRuleBasedPropertiesProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data NamespaceRuleBasedPropertiesProperty :: Prelude.Type
+instance ToResourceProperties NamespaceRuleBasedPropertiesProperty
+instance Prelude.Eq NamespaceRuleBasedPropertiesProperty
+instance Prelude.Show NamespaceRuleBasedPropertiesProperty
+instance JSON.ToJSON NamespaceRuleBasedPropertiesProperty
diff --git a/gen/Stratosphere/EntityResolution/IdNamespace/RuleProperty.hs b/gen/Stratosphere/EntityResolution/IdNamespace/RuleProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/EntityResolution/IdNamespace/RuleProperty.hs
@@ -0,0 +1,41 @@
+module Stratosphere.EntityResolution.IdNamespace.RuleProperty (
+        RuleProperty(..), mkRuleProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data RuleProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-idnamespace-rule.html>
+    RuleProperty {haddock_workaround_ :: (),
+                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-idnamespace-rule.html#cfn-entityresolution-idnamespace-rule-matchingkeys>
+                  matchingKeys :: (ValueList Prelude.Text),
+                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-idnamespace-rule.html#cfn-entityresolution-idnamespace-rule-rulename>
+                  ruleName :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkRuleProperty ::
+  ValueList Prelude.Text -> Value Prelude.Text -> RuleProperty
+mkRuleProperty matchingKeys ruleName
+  = RuleProperty
+      {haddock_workaround_ = (), matchingKeys = matchingKeys,
+       ruleName = ruleName}
+instance ToResourceProperties RuleProperty where
+  toResourceProperties RuleProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::EntityResolution::IdNamespace.Rule",
+         supportsTags = Prelude.False,
+         properties = ["MatchingKeys" JSON..= matchingKeys,
+                       "RuleName" JSON..= ruleName]}
+instance JSON.ToJSON RuleProperty where
+  toJSON RuleProperty {..}
+    = JSON.object
+        ["MatchingKeys" JSON..= matchingKeys, "RuleName" JSON..= ruleName]
+instance Property "MatchingKeys" RuleProperty where
+  type PropertyType "MatchingKeys" RuleProperty = ValueList Prelude.Text
+  set newValue RuleProperty {..}
+    = RuleProperty {matchingKeys = newValue, ..}
+instance Property "RuleName" RuleProperty where
+  type PropertyType "RuleName" RuleProperty = Value Prelude.Text
+  set newValue RuleProperty {..}
+    = RuleProperty {ruleName = newValue, ..}
diff --git a/gen/Stratosphere/EntityResolution/IdNamespace/RuleProperty.hs-boot b/gen/Stratosphere/EntityResolution/IdNamespace/RuleProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/EntityResolution/IdNamespace/RuleProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.EntityResolution.IdNamespace.RuleProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data RuleProperty :: Prelude.Type
+instance ToResourceProperties RuleProperty
+instance Prelude.Eq RuleProperty
+instance Prelude.Show RuleProperty
+instance JSON.ToJSON RuleProperty
diff --git a/gen/Stratosphere/EntityResolution/MatchingWorkflow.hs b/gen/Stratosphere/EntityResolution/MatchingWorkflow.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/EntityResolution/MatchingWorkflow.hs
@@ -0,0 +1,111 @@
+module Stratosphere.EntityResolution.MatchingWorkflow (
+        module Exports, MatchingWorkflow(..), mkMatchingWorkflow
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.EntityResolution.MatchingWorkflow.IncrementalRunConfigProperty as Exports
+import {-# SOURCE #-} Stratosphere.EntityResolution.MatchingWorkflow.InputSourceProperty as Exports
+import {-# SOURCE #-} Stratosphere.EntityResolution.MatchingWorkflow.OutputSourceProperty as Exports
+import {-# SOURCE #-} Stratosphere.EntityResolution.MatchingWorkflow.ResolutionTechniquesProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Tag
+import Stratosphere.Value
+data MatchingWorkflow
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-entityresolution-matchingworkflow.html>
+    MatchingWorkflow {haddock_workaround_ :: (),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-entityresolution-matchingworkflow.html#cfn-entityresolution-matchingworkflow-description>
+                      description :: (Prelude.Maybe (Value Prelude.Text)),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-entityresolution-matchingworkflow.html#cfn-entityresolution-matchingworkflow-incrementalrunconfig>
+                      incrementalRunConfig :: (Prelude.Maybe IncrementalRunConfigProperty),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-entityresolution-matchingworkflow.html#cfn-entityresolution-matchingworkflow-inputsourceconfig>
+                      inputSourceConfig :: [InputSourceProperty],
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-entityresolution-matchingworkflow.html#cfn-entityresolution-matchingworkflow-outputsourceconfig>
+                      outputSourceConfig :: [OutputSourceProperty],
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-entityresolution-matchingworkflow.html#cfn-entityresolution-matchingworkflow-resolutiontechniques>
+                      resolutionTechniques :: ResolutionTechniquesProperty,
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-entityresolution-matchingworkflow.html#cfn-entityresolution-matchingworkflow-rolearn>
+                      roleArn :: (Value Prelude.Text),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-entityresolution-matchingworkflow.html#cfn-entityresolution-matchingworkflow-tags>
+                      tags :: (Prelude.Maybe [Tag]),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-entityresolution-matchingworkflow.html#cfn-entityresolution-matchingworkflow-workflowname>
+                      workflowName :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkMatchingWorkflow ::
+  [InputSourceProperty]
+  -> [OutputSourceProperty]
+     -> ResolutionTechniquesProperty
+        -> Value Prelude.Text -> Value Prelude.Text -> MatchingWorkflow
+mkMatchingWorkflow
+  inputSourceConfig
+  outputSourceConfig
+  resolutionTechniques
+  roleArn
+  workflowName
+  = MatchingWorkflow
+      {haddock_workaround_ = (), inputSourceConfig = inputSourceConfig,
+       outputSourceConfig = outputSourceConfig,
+       resolutionTechniques = resolutionTechniques, roleArn = roleArn,
+       workflowName = workflowName, description = Prelude.Nothing,
+       incrementalRunConfig = Prelude.Nothing, tags = Prelude.Nothing}
+instance ToResourceProperties MatchingWorkflow where
+  toResourceProperties MatchingWorkflow {..}
+    = ResourceProperties
+        {awsType = "AWS::EntityResolution::MatchingWorkflow",
+         supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["InputSourceConfig" JSON..= inputSourceConfig,
+                            "OutputSourceConfig" JSON..= outputSourceConfig,
+                            "ResolutionTechniques" JSON..= resolutionTechniques,
+                            "RoleArn" JSON..= roleArn, "WorkflowName" JSON..= workflowName]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Description" Prelude.<$> description,
+                               (JSON..=) "IncrementalRunConfig" Prelude.<$> incrementalRunConfig,
+                               (JSON..=) "Tags" Prelude.<$> tags]))}
+instance JSON.ToJSON MatchingWorkflow where
+  toJSON MatchingWorkflow {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["InputSourceConfig" JSON..= inputSourceConfig,
+               "OutputSourceConfig" JSON..= outputSourceConfig,
+               "ResolutionTechniques" JSON..= resolutionTechniques,
+               "RoleArn" JSON..= roleArn, "WorkflowName" JSON..= workflowName]
+              (Prelude.catMaybes
+                 [(JSON..=) "Description" Prelude.<$> description,
+                  (JSON..=) "IncrementalRunConfig" Prelude.<$> incrementalRunConfig,
+                  (JSON..=) "Tags" Prelude.<$> tags])))
+instance Property "Description" MatchingWorkflow where
+  type PropertyType "Description" MatchingWorkflow = Value Prelude.Text
+  set newValue MatchingWorkflow {..}
+    = MatchingWorkflow {description = Prelude.pure newValue, ..}
+instance Property "IncrementalRunConfig" MatchingWorkflow where
+  type PropertyType "IncrementalRunConfig" MatchingWorkflow = IncrementalRunConfigProperty
+  set newValue MatchingWorkflow {..}
+    = MatchingWorkflow
+        {incrementalRunConfig = Prelude.pure newValue, ..}
+instance Property "InputSourceConfig" MatchingWorkflow where
+  type PropertyType "InputSourceConfig" MatchingWorkflow = [InputSourceProperty]
+  set newValue MatchingWorkflow {..}
+    = MatchingWorkflow {inputSourceConfig = newValue, ..}
+instance Property "OutputSourceConfig" MatchingWorkflow where
+  type PropertyType "OutputSourceConfig" MatchingWorkflow = [OutputSourceProperty]
+  set newValue MatchingWorkflow {..}
+    = MatchingWorkflow {outputSourceConfig = newValue, ..}
+instance Property "ResolutionTechniques" MatchingWorkflow where
+  type PropertyType "ResolutionTechniques" MatchingWorkflow = ResolutionTechniquesProperty
+  set newValue MatchingWorkflow {..}
+    = MatchingWorkflow {resolutionTechniques = newValue, ..}
+instance Property "RoleArn" MatchingWorkflow where
+  type PropertyType "RoleArn" MatchingWorkflow = Value Prelude.Text
+  set newValue MatchingWorkflow {..}
+    = MatchingWorkflow {roleArn = newValue, ..}
+instance Property "Tags" MatchingWorkflow where
+  type PropertyType "Tags" MatchingWorkflow = [Tag]
+  set newValue MatchingWorkflow {..}
+    = MatchingWorkflow {tags = Prelude.pure newValue, ..}
+instance Property "WorkflowName" MatchingWorkflow where
+  type PropertyType "WorkflowName" MatchingWorkflow = Value Prelude.Text
+  set newValue MatchingWorkflow {..}
+    = MatchingWorkflow {workflowName = newValue, ..}
diff --git a/gen/Stratosphere/EntityResolution/MatchingWorkflow/IncrementalRunConfigProperty.hs b/gen/Stratosphere/EntityResolution/MatchingWorkflow/IncrementalRunConfigProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/EntityResolution/MatchingWorkflow/IncrementalRunConfigProperty.hs
@@ -0,0 +1,32 @@
+module Stratosphere.EntityResolution.MatchingWorkflow.IncrementalRunConfigProperty (
+        IncrementalRunConfigProperty(..), mkIncrementalRunConfigProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data IncrementalRunConfigProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-matchingworkflow-incrementalrunconfig.html>
+    IncrementalRunConfigProperty {haddock_workaround_ :: (),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-matchingworkflow-incrementalrunconfig.html#cfn-entityresolution-matchingworkflow-incrementalrunconfig-incrementalruntype>
+                                  incrementalRunType :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkIncrementalRunConfigProperty ::
+  Value Prelude.Text -> IncrementalRunConfigProperty
+mkIncrementalRunConfigProperty incrementalRunType
+  = IncrementalRunConfigProperty
+      {haddock_workaround_ = (), incrementalRunType = incrementalRunType}
+instance ToResourceProperties IncrementalRunConfigProperty where
+  toResourceProperties IncrementalRunConfigProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::EntityResolution::MatchingWorkflow.IncrementalRunConfig",
+         supportsTags = Prelude.False,
+         properties = ["IncrementalRunType" JSON..= incrementalRunType]}
+instance JSON.ToJSON IncrementalRunConfigProperty where
+  toJSON IncrementalRunConfigProperty {..}
+    = JSON.object ["IncrementalRunType" JSON..= incrementalRunType]
+instance Property "IncrementalRunType" IncrementalRunConfigProperty where
+  type PropertyType "IncrementalRunType" IncrementalRunConfigProperty = Value Prelude.Text
+  set newValue IncrementalRunConfigProperty {..}
+    = IncrementalRunConfigProperty {incrementalRunType = newValue, ..}
diff --git a/gen/Stratosphere/EntityResolution/MatchingWorkflow/IncrementalRunConfigProperty.hs-boot b/gen/Stratosphere/EntityResolution/MatchingWorkflow/IncrementalRunConfigProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/EntityResolution/MatchingWorkflow/IncrementalRunConfigProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.EntityResolution.MatchingWorkflow.IncrementalRunConfigProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data IncrementalRunConfigProperty :: Prelude.Type
+instance ToResourceProperties IncrementalRunConfigProperty
+instance Prelude.Eq IncrementalRunConfigProperty
+instance Prelude.Show IncrementalRunConfigProperty
+instance JSON.ToJSON IncrementalRunConfigProperty
diff --git a/gen/Stratosphere/EntityResolution/MatchingWorkflow/InputSourceProperty.hs b/gen/Stratosphere/EntityResolution/MatchingWorkflow/InputSourceProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/EntityResolution/MatchingWorkflow/InputSourceProperty.hs
@@ -0,0 +1,57 @@
+module Stratosphere.EntityResolution.MatchingWorkflow.InputSourceProperty (
+        InputSourceProperty(..), mkInputSourceProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data InputSourceProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-matchingworkflow-inputsource.html>
+    InputSourceProperty {haddock_workaround_ :: (),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-matchingworkflow-inputsource.html#cfn-entityresolution-matchingworkflow-inputsource-applynormalization>
+                         applyNormalization :: (Prelude.Maybe (Value Prelude.Bool)),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-matchingworkflow-inputsource.html#cfn-entityresolution-matchingworkflow-inputsource-inputsourcearn>
+                         inputSourceARN :: (Value Prelude.Text),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-matchingworkflow-inputsource.html#cfn-entityresolution-matchingworkflow-inputsource-schemaarn>
+                         schemaArn :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkInputSourceProperty ::
+  Value Prelude.Text -> Value Prelude.Text -> InputSourceProperty
+mkInputSourceProperty inputSourceARN schemaArn
+  = InputSourceProperty
+      {haddock_workaround_ = (), inputSourceARN = inputSourceARN,
+       schemaArn = schemaArn, applyNormalization = Prelude.Nothing}
+instance ToResourceProperties InputSourceProperty where
+  toResourceProperties InputSourceProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::EntityResolution::MatchingWorkflow.InputSource",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["InputSourceARN" JSON..= inputSourceARN,
+                            "SchemaArn" JSON..= schemaArn]
+                           (Prelude.catMaybes
+                              [(JSON..=) "ApplyNormalization" Prelude.<$> applyNormalization]))}
+instance JSON.ToJSON InputSourceProperty where
+  toJSON InputSourceProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["InputSourceARN" JSON..= inputSourceARN,
+               "SchemaArn" JSON..= schemaArn]
+              (Prelude.catMaybes
+                 [(JSON..=) "ApplyNormalization" Prelude.<$> applyNormalization])))
+instance Property "ApplyNormalization" InputSourceProperty where
+  type PropertyType "ApplyNormalization" InputSourceProperty = Value Prelude.Bool
+  set newValue InputSourceProperty {..}
+    = InputSourceProperty
+        {applyNormalization = Prelude.pure newValue, ..}
+instance Property "InputSourceARN" InputSourceProperty where
+  type PropertyType "InputSourceARN" InputSourceProperty = Value Prelude.Text
+  set newValue InputSourceProperty {..}
+    = InputSourceProperty {inputSourceARN = newValue, ..}
+instance Property "SchemaArn" InputSourceProperty where
+  type PropertyType "SchemaArn" InputSourceProperty = Value Prelude.Text
+  set newValue InputSourceProperty {..}
+    = InputSourceProperty {schemaArn = newValue, ..}
diff --git a/gen/Stratosphere/EntityResolution/MatchingWorkflow/InputSourceProperty.hs-boot b/gen/Stratosphere/EntityResolution/MatchingWorkflow/InputSourceProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/EntityResolution/MatchingWorkflow/InputSourceProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.EntityResolution.MatchingWorkflow.InputSourceProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data InputSourceProperty :: Prelude.Type
+instance ToResourceProperties InputSourceProperty
+instance Prelude.Eq InputSourceProperty
+instance Prelude.Show InputSourceProperty
+instance JSON.ToJSON InputSourceProperty
diff --git a/gen/Stratosphere/EntityResolution/MatchingWorkflow/IntermediateSourceConfigurationProperty.hs b/gen/Stratosphere/EntityResolution/MatchingWorkflow/IntermediateSourceConfigurationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/EntityResolution/MatchingWorkflow/IntermediateSourceConfigurationProperty.hs
@@ -0,0 +1,34 @@
+module Stratosphere.EntityResolution.MatchingWorkflow.IntermediateSourceConfigurationProperty (
+        IntermediateSourceConfigurationProperty(..),
+        mkIntermediateSourceConfigurationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data IntermediateSourceConfigurationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-matchingworkflow-intermediatesourceconfiguration.html>
+    IntermediateSourceConfigurationProperty {haddock_workaround_ :: (),
+                                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-matchingworkflow-intermediatesourceconfiguration.html#cfn-entityresolution-matchingworkflow-intermediatesourceconfiguration-intermediates3path>
+                                             intermediateS3Path :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkIntermediateSourceConfigurationProperty ::
+  Value Prelude.Text -> IntermediateSourceConfigurationProperty
+mkIntermediateSourceConfigurationProperty intermediateS3Path
+  = IntermediateSourceConfigurationProperty
+      {haddock_workaround_ = (), intermediateS3Path = intermediateS3Path}
+instance ToResourceProperties IntermediateSourceConfigurationProperty where
+  toResourceProperties IntermediateSourceConfigurationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::EntityResolution::MatchingWorkflow.IntermediateSourceConfiguration",
+         supportsTags = Prelude.False,
+         properties = ["IntermediateS3Path" JSON..= intermediateS3Path]}
+instance JSON.ToJSON IntermediateSourceConfigurationProperty where
+  toJSON IntermediateSourceConfigurationProperty {..}
+    = JSON.object ["IntermediateS3Path" JSON..= intermediateS3Path]
+instance Property "IntermediateS3Path" IntermediateSourceConfigurationProperty where
+  type PropertyType "IntermediateS3Path" IntermediateSourceConfigurationProperty = Value Prelude.Text
+  set newValue IntermediateSourceConfigurationProperty {..}
+    = IntermediateSourceConfigurationProperty
+        {intermediateS3Path = newValue, ..}
diff --git a/gen/Stratosphere/EntityResolution/MatchingWorkflow/IntermediateSourceConfigurationProperty.hs-boot b/gen/Stratosphere/EntityResolution/MatchingWorkflow/IntermediateSourceConfigurationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/EntityResolution/MatchingWorkflow/IntermediateSourceConfigurationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.EntityResolution.MatchingWorkflow.IntermediateSourceConfigurationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data IntermediateSourceConfigurationProperty :: Prelude.Type
+instance ToResourceProperties IntermediateSourceConfigurationProperty
+instance Prelude.Eq IntermediateSourceConfigurationProperty
+instance Prelude.Show IntermediateSourceConfigurationProperty
+instance JSON.ToJSON IntermediateSourceConfigurationProperty
diff --git a/gen/Stratosphere/EntityResolution/MatchingWorkflow/OutputAttributeProperty.hs b/gen/Stratosphere/EntityResolution/MatchingWorkflow/OutputAttributeProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/EntityResolution/MatchingWorkflow/OutputAttributeProperty.hs
@@ -0,0 +1,45 @@
+module Stratosphere.EntityResolution.MatchingWorkflow.OutputAttributeProperty (
+        OutputAttributeProperty(..), mkOutputAttributeProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data OutputAttributeProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-matchingworkflow-outputattribute.html>
+    OutputAttributeProperty {haddock_workaround_ :: (),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-matchingworkflow-outputattribute.html#cfn-entityresolution-matchingworkflow-outputattribute-hashed>
+                             hashed :: (Prelude.Maybe (Value Prelude.Bool)),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-matchingworkflow-outputattribute.html#cfn-entityresolution-matchingworkflow-outputattribute-name>
+                             name :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkOutputAttributeProperty ::
+  Value Prelude.Text -> OutputAttributeProperty
+mkOutputAttributeProperty name
+  = OutputAttributeProperty
+      {haddock_workaround_ = (), name = name, hashed = Prelude.Nothing}
+instance ToResourceProperties OutputAttributeProperty where
+  toResourceProperties OutputAttributeProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::EntityResolution::MatchingWorkflow.OutputAttribute",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Name" JSON..= name]
+                           (Prelude.catMaybes [(JSON..=) "Hashed" Prelude.<$> hashed]))}
+instance JSON.ToJSON OutputAttributeProperty where
+  toJSON OutputAttributeProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Name" JSON..= name]
+              (Prelude.catMaybes [(JSON..=) "Hashed" Prelude.<$> hashed])))
+instance Property "Hashed" OutputAttributeProperty where
+  type PropertyType "Hashed" OutputAttributeProperty = Value Prelude.Bool
+  set newValue OutputAttributeProperty {..}
+    = OutputAttributeProperty {hashed = Prelude.pure newValue, ..}
+instance Property "Name" OutputAttributeProperty where
+  type PropertyType "Name" OutputAttributeProperty = Value Prelude.Text
+  set newValue OutputAttributeProperty {..}
+    = OutputAttributeProperty {name = newValue, ..}
diff --git a/gen/Stratosphere/EntityResolution/MatchingWorkflow/OutputAttributeProperty.hs-boot b/gen/Stratosphere/EntityResolution/MatchingWorkflow/OutputAttributeProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/EntityResolution/MatchingWorkflow/OutputAttributeProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.EntityResolution.MatchingWorkflow.OutputAttributeProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data OutputAttributeProperty :: Prelude.Type
+instance ToResourceProperties OutputAttributeProperty
+instance Prelude.Eq OutputAttributeProperty
+instance Prelude.Show OutputAttributeProperty
+instance JSON.ToJSON OutputAttributeProperty
diff --git a/gen/Stratosphere/EntityResolution/MatchingWorkflow/OutputSourceProperty.hs b/gen/Stratosphere/EntityResolution/MatchingWorkflow/OutputSourceProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/EntityResolution/MatchingWorkflow/OutputSourceProperty.hs
@@ -0,0 +1,66 @@
+module Stratosphere.EntityResolution.MatchingWorkflow.OutputSourceProperty (
+        module Exports, OutputSourceProperty(..), mkOutputSourceProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.EntityResolution.MatchingWorkflow.OutputAttributeProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data OutputSourceProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-matchingworkflow-outputsource.html>
+    OutputSourceProperty {haddock_workaround_ :: (),
+                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-matchingworkflow-outputsource.html#cfn-entityresolution-matchingworkflow-outputsource-applynormalization>
+                          applyNormalization :: (Prelude.Maybe (Value Prelude.Bool)),
+                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-matchingworkflow-outputsource.html#cfn-entityresolution-matchingworkflow-outputsource-kmsarn>
+                          kMSArn :: (Prelude.Maybe (Value Prelude.Text)),
+                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-matchingworkflow-outputsource.html#cfn-entityresolution-matchingworkflow-outputsource-output>
+                          output :: [OutputAttributeProperty],
+                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-matchingworkflow-outputsource.html#cfn-entityresolution-matchingworkflow-outputsource-outputs3path>
+                          outputS3Path :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkOutputSourceProperty ::
+  [OutputAttributeProperty]
+  -> Value Prelude.Text -> OutputSourceProperty
+mkOutputSourceProperty output outputS3Path
+  = OutputSourceProperty
+      {haddock_workaround_ = (), output = output,
+       outputS3Path = outputS3Path, applyNormalization = Prelude.Nothing,
+       kMSArn = Prelude.Nothing}
+instance ToResourceProperties OutputSourceProperty where
+  toResourceProperties OutputSourceProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::EntityResolution::MatchingWorkflow.OutputSource",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Output" JSON..= output, "OutputS3Path" JSON..= outputS3Path]
+                           (Prelude.catMaybes
+                              [(JSON..=) "ApplyNormalization" Prelude.<$> applyNormalization,
+                               (JSON..=) "KMSArn" Prelude.<$> kMSArn]))}
+instance JSON.ToJSON OutputSourceProperty where
+  toJSON OutputSourceProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Output" JSON..= output, "OutputS3Path" JSON..= outputS3Path]
+              (Prelude.catMaybes
+                 [(JSON..=) "ApplyNormalization" Prelude.<$> applyNormalization,
+                  (JSON..=) "KMSArn" Prelude.<$> kMSArn])))
+instance Property "ApplyNormalization" OutputSourceProperty where
+  type PropertyType "ApplyNormalization" OutputSourceProperty = Value Prelude.Bool
+  set newValue OutputSourceProperty {..}
+    = OutputSourceProperty
+        {applyNormalization = Prelude.pure newValue, ..}
+instance Property "KMSArn" OutputSourceProperty where
+  type PropertyType "KMSArn" OutputSourceProperty = Value Prelude.Text
+  set newValue OutputSourceProperty {..}
+    = OutputSourceProperty {kMSArn = Prelude.pure newValue, ..}
+instance Property "Output" OutputSourceProperty where
+  type PropertyType "Output" OutputSourceProperty = [OutputAttributeProperty]
+  set newValue OutputSourceProperty {..}
+    = OutputSourceProperty {output = newValue, ..}
+instance Property "OutputS3Path" OutputSourceProperty where
+  type PropertyType "OutputS3Path" OutputSourceProperty = Value Prelude.Text
+  set newValue OutputSourceProperty {..}
+    = OutputSourceProperty {outputS3Path = newValue, ..}
diff --git a/gen/Stratosphere/EntityResolution/MatchingWorkflow/OutputSourceProperty.hs-boot b/gen/Stratosphere/EntityResolution/MatchingWorkflow/OutputSourceProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/EntityResolution/MatchingWorkflow/OutputSourceProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.EntityResolution.MatchingWorkflow.OutputSourceProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data OutputSourceProperty :: Prelude.Type
+instance ToResourceProperties OutputSourceProperty
+instance Prelude.Eq OutputSourceProperty
+instance Prelude.Show OutputSourceProperty
+instance JSON.ToJSON OutputSourceProperty
diff --git a/gen/Stratosphere/EntityResolution/MatchingWorkflow/ProviderPropertiesProperty.hs b/gen/Stratosphere/EntityResolution/MatchingWorkflow/ProviderPropertiesProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/EntityResolution/MatchingWorkflow/ProviderPropertiesProperty.hs
@@ -0,0 +1,65 @@
+module Stratosphere.EntityResolution.MatchingWorkflow.ProviderPropertiesProperty (
+        module Exports, ProviderPropertiesProperty(..),
+        mkProviderPropertiesProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.EntityResolution.MatchingWorkflow.IntermediateSourceConfigurationProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ProviderPropertiesProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-matchingworkflow-providerproperties.html>
+    ProviderPropertiesProperty {haddock_workaround_ :: (),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-matchingworkflow-providerproperties.html#cfn-entityresolution-matchingworkflow-providerproperties-intermediatesourceconfiguration>
+                                intermediateSourceConfiguration :: (Prelude.Maybe IntermediateSourceConfigurationProperty),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-matchingworkflow-providerproperties.html#cfn-entityresolution-matchingworkflow-providerproperties-providerconfiguration>
+                                providerConfiguration :: (Prelude.Maybe (Prelude.Map Prelude.Text (Value Prelude.Text))),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-matchingworkflow-providerproperties.html#cfn-entityresolution-matchingworkflow-providerproperties-providerservicearn>
+                                providerServiceArn :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkProviderPropertiesProperty ::
+  Value Prelude.Text -> ProviderPropertiesProperty
+mkProviderPropertiesProperty providerServiceArn
+  = ProviderPropertiesProperty
+      {haddock_workaround_ = (), providerServiceArn = providerServiceArn,
+       intermediateSourceConfiguration = Prelude.Nothing,
+       providerConfiguration = Prelude.Nothing}
+instance ToResourceProperties ProviderPropertiesProperty where
+  toResourceProperties ProviderPropertiesProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::EntityResolution::MatchingWorkflow.ProviderProperties",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["ProviderServiceArn" JSON..= providerServiceArn]
+                           (Prelude.catMaybes
+                              [(JSON..=) "IntermediateSourceConfiguration"
+                                 Prelude.<$> intermediateSourceConfiguration,
+                               (JSON..=) "ProviderConfiguration"
+                                 Prelude.<$> providerConfiguration]))}
+instance JSON.ToJSON ProviderPropertiesProperty where
+  toJSON ProviderPropertiesProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["ProviderServiceArn" JSON..= providerServiceArn]
+              (Prelude.catMaybes
+                 [(JSON..=) "IntermediateSourceConfiguration"
+                    Prelude.<$> intermediateSourceConfiguration,
+                  (JSON..=) "ProviderConfiguration"
+                    Prelude.<$> providerConfiguration])))
+instance Property "IntermediateSourceConfiguration" ProviderPropertiesProperty where
+  type PropertyType "IntermediateSourceConfiguration" ProviderPropertiesProperty = IntermediateSourceConfigurationProperty
+  set newValue ProviderPropertiesProperty {..}
+    = ProviderPropertiesProperty
+        {intermediateSourceConfiguration = Prelude.pure newValue, ..}
+instance Property "ProviderConfiguration" ProviderPropertiesProperty where
+  type PropertyType "ProviderConfiguration" ProviderPropertiesProperty = Prelude.Map Prelude.Text (Value Prelude.Text)
+  set newValue ProviderPropertiesProperty {..}
+    = ProviderPropertiesProperty
+        {providerConfiguration = Prelude.pure newValue, ..}
+instance Property "ProviderServiceArn" ProviderPropertiesProperty where
+  type PropertyType "ProviderServiceArn" ProviderPropertiesProperty = Value Prelude.Text
+  set newValue ProviderPropertiesProperty {..}
+    = ProviderPropertiesProperty {providerServiceArn = newValue, ..}
diff --git a/gen/Stratosphere/EntityResolution/MatchingWorkflow/ProviderPropertiesProperty.hs-boot b/gen/Stratosphere/EntityResolution/MatchingWorkflow/ProviderPropertiesProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/EntityResolution/MatchingWorkflow/ProviderPropertiesProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.EntityResolution.MatchingWorkflow.ProviderPropertiesProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ProviderPropertiesProperty :: Prelude.Type
+instance ToResourceProperties ProviderPropertiesProperty
+instance Prelude.Eq ProviderPropertiesProperty
+instance Prelude.Show ProviderPropertiesProperty
+instance JSON.ToJSON ProviderPropertiesProperty
diff --git a/gen/Stratosphere/EntityResolution/MatchingWorkflow/ResolutionTechniquesProperty.hs b/gen/Stratosphere/EntityResolution/MatchingWorkflow/ResolutionTechniquesProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/EntityResolution/MatchingWorkflow/ResolutionTechniquesProperty.hs
@@ -0,0 +1,73 @@
+module Stratosphere.EntityResolution.MatchingWorkflow.ResolutionTechniquesProperty (
+        module Exports, ResolutionTechniquesProperty(..),
+        mkResolutionTechniquesProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.EntityResolution.MatchingWorkflow.ProviderPropertiesProperty as Exports
+import {-# SOURCE #-} Stratosphere.EntityResolution.MatchingWorkflow.RuleBasedPropertiesProperty as Exports
+import {-# SOURCE #-} Stratosphere.EntityResolution.MatchingWorkflow.RuleConditionPropertiesProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ResolutionTechniquesProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-matchingworkflow-resolutiontechniques.html>
+    ResolutionTechniquesProperty {haddock_workaround_ :: (),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-matchingworkflow-resolutiontechniques.html#cfn-entityresolution-matchingworkflow-resolutiontechniques-providerproperties>
+                                  providerProperties :: (Prelude.Maybe ProviderPropertiesProperty),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-matchingworkflow-resolutiontechniques.html#cfn-entityresolution-matchingworkflow-resolutiontechniques-resolutiontype>
+                                  resolutionType :: (Prelude.Maybe (Value Prelude.Text)),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-matchingworkflow-resolutiontechniques.html#cfn-entityresolution-matchingworkflow-resolutiontechniques-rulebasedproperties>
+                                  ruleBasedProperties :: (Prelude.Maybe RuleBasedPropertiesProperty),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-matchingworkflow-resolutiontechniques.html#cfn-entityresolution-matchingworkflow-resolutiontechniques-ruleconditionproperties>
+                                  ruleConditionProperties :: (Prelude.Maybe RuleConditionPropertiesProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkResolutionTechniquesProperty :: ResolutionTechniquesProperty
+mkResolutionTechniquesProperty
+  = ResolutionTechniquesProperty
+      {haddock_workaround_ = (), providerProperties = Prelude.Nothing,
+       resolutionType = Prelude.Nothing,
+       ruleBasedProperties = Prelude.Nothing,
+       ruleConditionProperties = Prelude.Nothing}
+instance ToResourceProperties ResolutionTechniquesProperty where
+  toResourceProperties ResolutionTechniquesProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::EntityResolution::MatchingWorkflow.ResolutionTechniques",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "ProviderProperties" Prelude.<$> providerProperties,
+                            (JSON..=) "ResolutionType" Prelude.<$> resolutionType,
+                            (JSON..=) "RuleBasedProperties" Prelude.<$> ruleBasedProperties,
+                            (JSON..=) "RuleConditionProperties"
+                              Prelude.<$> ruleConditionProperties])}
+instance JSON.ToJSON ResolutionTechniquesProperty where
+  toJSON ResolutionTechniquesProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "ProviderProperties" Prelude.<$> providerProperties,
+               (JSON..=) "ResolutionType" Prelude.<$> resolutionType,
+               (JSON..=) "RuleBasedProperties" Prelude.<$> ruleBasedProperties,
+               (JSON..=) "RuleConditionProperties"
+                 Prelude.<$> ruleConditionProperties]))
+instance Property "ProviderProperties" ResolutionTechniquesProperty where
+  type PropertyType "ProviderProperties" ResolutionTechniquesProperty = ProviderPropertiesProperty
+  set newValue ResolutionTechniquesProperty {..}
+    = ResolutionTechniquesProperty
+        {providerProperties = Prelude.pure newValue, ..}
+instance Property "ResolutionType" ResolutionTechniquesProperty where
+  type PropertyType "ResolutionType" ResolutionTechniquesProperty = Value Prelude.Text
+  set newValue ResolutionTechniquesProperty {..}
+    = ResolutionTechniquesProperty
+        {resolutionType = Prelude.pure newValue, ..}
+instance Property "RuleBasedProperties" ResolutionTechniquesProperty where
+  type PropertyType "RuleBasedProperties" ResolutionTechniquesProperty = RuleBasedPropertiesProperty
+  set newValue ResolutionTechniquesProperty {..}
+    = ResolutionTechniquesProperty
+        {ruleBasedProperties = Prelude.pure newValue, ..}
+instance Property "RuleConditionProperties" ResolutionTechniquesProperty where
+  type PropertyType "RuleConditionProperties" ResolutionTechniquesProperty = RuleConditionPropertiesProperty
+  set newValue ResolutionTechniquesProperty {..}
+    = ResolutionTechniquesProperty
+        {ruleConditionProperties = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/EntityResolution/MatchingWorkflow/ResolutionTechniquesProperty.hs-boot b/gen/Stratosphere/EntityResolution/MatchingWorkflow/ResolutionTechniquesProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/EntityResolution/MatchingWorkflow/ResolutionTechniquesProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.EntityResolution.MatchingWorkflow.ResolutionTechniquesProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ResolutionTechniquesProperty :: Prelude.Type
+instance ToResourceProperties ResolutionTechniquesProperty
+instance Prelude.Eq ResolutionTechniquesProperty
+instance Prelude.Show ResolutionTechniquesProperty
+instance JSON.ToJSON ResolutionTechniquesProperty
diff --git a/gen/Stratosphere/EntityResolution/MatchingWorkflow/RuleBasedPropertiesProperty.hs b/gen/Stratosphere/EntityResolution/MatchingWorkflow/RuleBasedPropertiesProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/EntityResolution/MatchingWorkflow/RuleBasedPropertiesProperty.hs
@@ -0,0 +1,61 @@
+module Stratosphere.EntityResolution.MatchingWorkflow.RuleBasedPropertiesProperty (
+        module Exports, RuleBasedPropertiesProperty(..),
+        mkRuleBasedPropertiesProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.EntityResolution.MatchingWorkflow.RuleProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data RuleBasedPropertiesProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-matchingworkflow-rulebasedproperties.html>
+    RuleBasedPropertiesProperty {haddock_workaround_ :: (),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-matchingworkflow-rulebasedproperties.html#cfn-entityresolution-matchingworkflow-rulebasedproperties-attributematchingmodel>
+                                 attributeMatchingModel :: (Value Prelude.Text),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-matchingworkflow-rulebasedproperties.html#cfn-entityresolution-matchingworkflow-rulebasedproperties-matchpurpose>
+                                 matchPurpose :: (Prelude.Maybe (Value Prelude.Text)),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-matchingworkflow-rulebasedproperties.html#cfn-entityresolution-matchingworkflow-rulebasedproperties-rules>
+                                 rules :: [RuleProperty]}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkRuleBasedPropertiesProperty ::
+  Value Prelude.Text -> [RuleProperty] -> RuleBasedPropertiesProperty
+mkRuleBasedPropertiesProperty attributeMatchingModel rules
+  = RuleBasedPropertiesProperty
+      {haddock_workaround_ = (),
+       attributeMatchingModel = attributeMatchingModel, rules = rules,
+       matchPurpose = Prelude.Nothing}
+instance ToResourceProperties RuleBasedPropertiesProperty where
+  toResourceProperties RuleBasedPropertiesProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::EntityResolution::MatchingWorkflow.RuleBasedProperties",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["AttributeMatchingModel" JSON..= attributeMatchingModel,
+                            "Rules" JSON..= rules]
+                           (Prelude.catMaybes
+                              [(JSON..=) "MatchPurpose" Prelude.<$> matchPurpose]))}
+instance JSON.ToJSON RuleBasedPropertiesProperty where
+  toJSON RuleBasedPropertiesProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["AttributeMatchingModel" JSON..= attributeMatchingModel,
+               "Rules" JSON..= rules]
+              (Prelude.catMaybes
+                 [(JSON..=) "MatchPurpose" Prelude.<$> matchPurpose])))
+instance Property "AttributeMatchingModel" RuleBasedPropertiesProperty where
+  type PropertyType "AttributeMatchingModel" RuleBasedPropertiesProperty = Value Prelude.Text
+  set newValue RuleBasedPropertiesProperty {..}
+    = RuleBasedPropertiesProperty
+        {attributeMatchingModel = newValue, ..}
+instance Property "MatchPurpose" RuleBasedPropertiesProperty where
+  type PropertyType "MatchPurpose" RuleBasedPropertiesProperty = Value Prelude.Text
+  set newValue RuleBasedPropertiesProperty {..}
+    = RuleBasedPropertiesProperty
+        {matchPurpose = Prelude.pure newValue, ..}
+instance Property "Rules" RuleBasedPropertiesProperty where
+  type PropertyType "Rules" RuleBasedPropertiesProperty = [RuleProperty]
+  set newValue RuleBasedPropertiesProperty {..}
+    = RuleBasedPropertiesProperty {rules = newValue, ..}
diff --git a/gen/Stratosphere/EntityResolution/MatchingWorkflow/RuleBasedPropertiesProperty.hs-boot b/gen/Stratosphere/EntityResolution/MatchingWorkflow/RuleBasedPropertiesProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/EntityResolution/MatchingWorkflow/RuleBasedPropertiesProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.EntityResolution.MatchingWorkflow.RuleBasedPropertiesProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data RuleBasedPropertiesProperty :: Prelude.Type
+instance ToResourceProperties RuleBasedPropertiesProperty
+instance Prelude.Eq RuleBasedPropertiesProperty
+instance Prelude.Show RuleBasedPropertiesProperty
+instance JSON.ToJSON RuleBasedPropertiesProperty
diff --git a/gen/Stratosphere/EntityResolution/MatchingWorkflow/RuleConditionPropertiesProperty.hs b/gen/Stratosphere/EntityResolution/MatchingWorkflow/RuleConditionPropertiesProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/EntityResolution/MatchingWorkflow/RuleConditionPropertiesProperty.hs
@@ -0,0 +1,32 @@
+module Stratosphere.EntityResolution.MatchingWorkflow.RuleConditionPropertiesProperty (
+        module Exports, RuleConditionPropertiesProperty(..),
+        mkRuleConditionPropertiesProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.EntityResolution.MatchingWorkflow.RuleConditionProperty as Exports
+import Stratosphere.ResourceProperties
+data RuleConditionPropertiesProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-matchingworkflow-ruleconditionproperties.html>
+    RuleConditionPropertiesProperty {haddock_workaround_ :: (),
+                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-matchingworkflow-ruleconditionproperties.html#cfn-entityresolution-matchingworkflow-ruleconditionproperties-rules>
+                                     rules :: [RuleConditionProperty]}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkRuleConditionPropertiesProperty ::
+  [RuleConditionProperty] -> RuleConditionPropertiesProperty
+mkRuleConditionPropertiesProperty rules
+  = RuleConditionPropertiesProperty
+      {haddock_workaround_ = (), rules = rules}
+instance ToResourceProperties RuleConditionPropertiesProperty where
+  toResourceProperties RuleConditionPropertiesProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::EntityResolution::MatchingWorkflow.RuleConditionProperties",
+         supportsTags = Prelude.False, properties = ["Rules" JSON..= rules]}
+instance JSON.ToJSON RuleConditionPropertiesProperty where
+  toJSON RuleConditionPropertiesProperty {..}
+    = JSON.object ["Rules" JSON..= rules]
+instance Property "Rules" RuleConditionPropertiesProperty where
+  type PropertyType "Rules" RuleConditionPropertiesProperty = [RuleConditionProperty]
+  set newValue RuleConditionPropertiesProperty {..}
+    = RuleConditionPropertiesProperty {rules = newValue, ..}
diff --git a/gen/Stratosphere/EntityResolution/MatchingWorkflow/RuleConditionPropertiesProperty.hs-boot b/gen/Stratosphere/EntityResolution/MatchingWorkflow/RuleConditionPropertiesProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/EntityResolution/MatchingWorkflow/RuleConditionPropertiesProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.EntityResolution.MatchingWorkflow.RuleConditionPropertiesProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data RuleConditionPropertiesProperty :: Prelude.Type
+instance ToResourceProperties RuleConditionPropertiesProperty
+instance Prelude.Eq RuleConditionPropertiesProperty
+instance Prelude.Show RuleConditionPropertiesProperty
+instance JSON.ToJSON RuleConditionPropertiesProperty
diff --git a/gen/Stratosphere/EntityResolution/MatchingWorkflow/RuleConditionProperty.hs b/gen/Stratosphere/EntityResolution/MatchingWorkflow/RuleConditionProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/EntityResolution/MatchingWorkflow/RuleConditionProperty.hs
@@ -0,0 +1,45 @@
+module Stratosphere.EntityResolution.MatchingWorkflow.RuleConditionProperty (
+        RuleConditionProperty(..), mkRuleConditionProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data RuleConditionProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-matchingworkflow-rulecondition.html>
+    RuleConditionProperty {haddock_workaround_ :: (),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-matchingworkflow-rulecondition.html#cfn-entityresolution-matchingworkflow-rulecondition-condition>
+                           condition :: (Prelude.Maybe (Value Prelude.Text)),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-matchingworkflow-rulecondition.html#cfn-entityresolution-matchingworkflow-rulecondition-rulename>
+                           ruleName :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkRuleConditionProperty :: RuleConditionProperty
+mkRuleConditionProperty
+  = RuleConditionProperty
+      {haddock_workaround_ = (), condition = Prelude.Nothing,
+       ruleName = Prelude.Nothing}
+instance ToResourceProperties RuleConditionProperty where
+  toResourceProperties RuleConditionProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::EntityResolution::MatchingWorkflow.RuleCondition",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Condition" Prelude.<$> condition,
+                            (JSON..=) "RuleName" Prelude.<$> ruleName])}
+instance JSON.ToJSON RuleConditionProperty where
+  toJSON RuleConditionProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Condition" Prelude.<$> condition,
+               (JSON..=) "RuleName" Prelude.<$> ruleName]))
+instance Property "Condition" RuleConditionProperty where
+  type PropertyType "Condition" RuleConditionProperty = Value Prelude.Text
+  set newValue RuleConditionProperty {..}
+    = RuleConditionProperty {condition = Prelude.pure newValue, ..}
+instance Property "RuleName" RuleConditionProperty where
+  type PropertyType "RuleName" RuleConditionProperty = Value Prelude.Text
+  set newValue RuleConditionProperty {..}
+    = RuleConditionProperty {ruleName = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/EntityResolution/MatchingWorkflow/RuleConditionProperty.hs-boot b/gen/Stratosphere/EntityResolution/MatchingWorkflow/RuleConditionProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/EntityResolution/MatchingWorkflow/RuleConditionProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.EntityResolution.MatchingWorkflow.RuleConditionProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data RuleConditionProperty :: Prelude.Type
+instance ToResourceProperties RuleConditionProperty
+instance Prelude.Eq RuleConditionProperty
+instance Prelude.Show RuleConditionProperty
+instance JSON.ToJSON RuleConditionProperty
diff --git a/gen/Stratosphere/EntityResolution/MatchingWorkflow/RuleProperty.hs b/gen/Stratosphere/EntityResolution/MatchingWorkflow/RuleProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/EntityResolution/MatchingWorkflow/RuleProperty.hs
@@ -0,0 +1,41 @@
+module Stratosphere.EntityResolution.MatchingWorkflow.RuleProperty (
+        RuleProperty(..), mkRuleProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data RuleProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-matchingworkflow-rule.html>
+    RuleProperty {haddock_workaround_ :: (),
+                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-matchingworkflow-rule.html#cfn-entityresolution-matchingworkflow-rule-matchingkeys>
+                  matchingKeys :: (ValueList Prelude.Text),
+                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-matchingworkflow-rule.html#cfn-entityresolution-matchingworkflow-rule-rulename>
+                  ruleName :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkRuleProperty ::
+  ValueList Prelude.Text -> Value Prelude.Text -> RuleProperty
+mkRuleProperty matchingKeys ruleName
+  = RuleProperty
+      {haddock_workaround_ = (), matchingKeys = matchingKeys,
+       ruleName = ruleName}
+instance ToResourceProperties RuleProperty where
+  toResourceProperties RuleProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::EntityResolution::MatchingWorkflow.Rule",
+         supportsTags = Prelude.False,
+         properties = ["MatchingKeys" JSON..= matchingKeys,
+                       "RuleName" JSON..= ruleName]}
+instance JSON.ToJSON RuleProperty where
+  toJSON RuleProperty {..}
+    = JSON.object
+        ["MatchingKeys" JSON..= matchingKeys, "RuleName" JSON..= ruleName]
+instance Property "MatchingKeys" RuleProperty where
+  type PropertyType "MatchingKeys" RuleProperty = ValueList Prelude.Text
+  set newValue RuleProperty {..}
+    = RuleProperty {matchingKeys = newValue, ..}
+instance Property "RuleName" RuleProperty where
+  type PropertyType "RuleName" RuleProperty = Value Prelude.Text
+  set newValue RuleProperty {..}
+    = RuleProperty {ruleName = newValue, ..}
diff --git a/gen/Stratosphere/EntityResolution/MatchingWorkflow/RuleProperty.hs-boot b/gen/Stratosphere/EntityResolution/MatchingWorkflow/RuleProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/EntityResolution/MatchingWorkflow/RuleProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.EntityResolution.MatchingWorkflow.RuleProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data RuleProperty :: Prelude.Type
+instance ToResourceProperties RuleProperty
+instance Prelude.Eq RuleProperty
+instance Prelude.Show RuleProperty
+instance JSON.ToJSON RuleProperty
diff --git a/gen/Stratosphere/EntityResolution/PolicyStatement.hs b/gen/Stratosphere/EntityResolution/PolicyStatement.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/EntityResolution/PolicyStatement.hs
@@ -0,0 +1,79 @@
+module Stratosphere.EntityResolution.PolicyStatement (
+        PolicyStatement(..), mkPolicyStatement
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data PolicyStatement
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-entityresolution-policystatement.html>
+    PolicyStatement {haddock_workaround_ :: (),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-entityresolution-policystatement.html#cfn-entityresolution-policystatement-action>
+                     action :: (Prelude.Maybe (ValueList Prelude.Text)),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-entityresolution-policystatement.html#cfn-entityresolution-policystatement-arn>
+                     arn :: (Value Prelude.Text),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-entityresolution-policystatement.html#cfn-entityresolution-policystatement-condition>
+                     condition :: (Prelude.Maybe (Value Prelude.Text)),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-entityresolution-policystatement.html#cfn-entityresolution-policystatement-effect>
+                     effect :: (Prelude.Maybe (Value Prelude.Text)),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-entityresolution-policystatement.html#cfn-entityresolution-policystatement-principal>
+                     principal :: (Prelude.Maybe (ValueList Prelude.Text)),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-entityresolution-policystatement.html#cfn-entityresolution-policystatement-statementid>
+                     statementId :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkPolicyStatement ::
+  Value Prelude.Text -> Value Prelude.Text -> PolicyStatement
+mkPolicyStatement arn statementId
+  = PolicyStatement
+      {haddock_workaround_ = (), arn = arn, statementId = statementId,
+       action = Prelude.Nothing, condition = Prelude.Nothing,
+       effect = Prelude.Nothing, principal = Prelude.Nothing}
+instance ToResourceProperties PolicyStatement where
+  toResourceProperties PolicyStatement {..}
+    = ResourceProperties
+        {awsType = "AWS::EntityResolution::PolicyStatement",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Arn" JSON..= arn, "StatementId" JSON..= statementId]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Action" Prelude.<$> action,
+                               (JSON..=) "Condition" Prelude.<$> condition,
+                               (JSON..=) "Effect" Prelude.<$> effect,
+                               (JSON..=) "Principal" Prelude.<$> principal]))}
+instance JSON.ToJSON PolicyStatement where
+  toJSON PolicyStatement {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Arn" JSON..= arn, "StatementId" JSON..= statementId]
+              (Prelude.catMaybes
+                 [(JSON..=) "Action" Prelude.<$> action,
+                  (JSON..=) "Condition" Prelude.<$> condition,
+                  (JSON..=) "Effect" Prelude.<$> effect,
+                  (JSON..=) "Principal" Prelude.<$> principal])))
+instance Property "Action" PolicyStatement where
+  type PropertyType "Action" PolicyStatement = ValueList Prelude.Text
+  set newValue PolicyStatement {..}
+    = PolicyStatement {action = Prelude.pure newValue, ..}
+instance Property "Arn" PolicyStatement where
+  type PropertyType "Arn" PolicyStatement = Value Prelude.Text
+  set newValue PolicyStatement {..}
+    = PolicyStatement {arn = newValue, ..}
+instance Property "Condition" PolicyStatement where
+  type PropertyType "Condition" PolicyStatement = Value Prelude.Text
+  set newValue PolicyStatement {..}
+    = PolicyStatement {condition = Prelude.pure newValue, ..}
+instance Property "Effect" PolicyStatement where
+  type PropertyType "Effect" PolicyStatement = Value Prelude.Text
+  set newValue PolicyStatement {..}
+    = PolicyStatement {effect = Prelude.pure newValue, ..}
+instance Property "Principal" PolicyStatement where
+  type PropertyType "Principal" PolicyStatement = ValueList Prelude.Text
+  set newValue PolicyStatement {..}
+    = PolicyStatement {principal = Prelude.pure newValue, ..}
+instance Property "StatementId" PolicyStatement where
+  type PropertyType "StatementId" PolicyStatement = Value Prelude.Text
+  set newValue PolicyStatement {..}
+    = PolicyStatement {statementId = newValue, ..}
diff --git a/gen/Stratosphere/EntityResolution/SchemaMapping.hs b/gen/Stratosphere/EntityResolution/SchemaMapping.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/EntityResolution/SchemaMapping.hs
@@ -0,0 +1,68 @@
+module Stratosphere.EntityResolution.SchemaMapping (
+        module Exports, SchemaMapping(..), mkSchemaMapping
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.EntityResolution.SchemaMapping.SchemaInputAttributeProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Tag
+import Stratosphere.Value
+data SchemaMapping
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-entityresolution-schemamapping.html>
+    SchemaMapping {haddock_workaround_ :: (),
+                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-entityresolution-schemamapping.html#cfn-entityresolution-schemamapping-description>
+                   description :: (Prelude.Maybe (Value Prelude.Text)),
+                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-entityresolution-schemamapping.html#cfn-entityresolution-schemamapping-mappedinputfields>
+                   mappedInputFields :: [SchemaInputAttributeProperty],
+                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-entityresolution-schemamapping.html#cfn-entityresolution-schemamapping-schemaname>
+                   schemaName :: (Value Prelude.Text),
+                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-entityresolution-schemamapping.html#cfn-entityresolution-schemamapping-tags>
+                   tags :: (Prelude.Maybe [Tag])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkSchemaMapping ::
+  [SchemaInputAttributeProperty]
+  -> Value Prelude.Text -> SchemaMapping
+mkSchemaMapping mappedInputFields schemaName
+  = SchemaMapping
+      {haddock_workaround_ = (), mappedInputFields = mappedInputFields,
+       schemaName = schemaName, description = Prelude.Nothing,
+       tags = Prelude.Nothing}
+instance ToResourceProperties SchemaMapping where
+  toResourceProperties SchemaMapping {..}
+    = ResourceProperties
+        {awsType = "AWS::EntityResolution::SchemaMapping",
+         supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["MappedInputFields" JSON..= mappedInputFields,
+                            "SchemaName" JSON..= schemaName]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Description" Prelude.<$> description,
+                               (JSON..=) "Tags" Prelude.<$> tags]))}
+instance JSON.ToJSON SchemaMapping where
+  toJSON SchemaMapping {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["MappedInputFields" JSON..= mappedInputFields,
+               "SchemaName" JSON..= schemaName]
+              (Prelude.catMaybes
+                 [(JSON..=) "Description" Prelude.<$> description,
+                  (JSON..=) "Tags" Prelude.<$> tags])))
+instance Property "Description" SchemaMapping where
+  type PropertyType "Description" SchemaMapping = Value Prelude.Text
+  set newValue SchemaMapping {..}
+    = SchemaMapping {description = Prelude.pure newValue, ..}
+instance Property "MappedInputFields" SchemaMapping where
+  type PropertyType "MappedInputFields" SchemaMapping = [SchemaInputAttributeProperty]
+  set newValue SchemaMapping {..}
+    = SchemaMapping {mappedInputFields = newValue, ..}
+instance Property "SchemaName" SchemaMapping where
+  type PropertyType "SchemaName" SchemaMapping = Value Prelude.Text
+  set newValue SchemaMapping {..}
+    = SchemaMapping {schemaName = newValue, ..}
+instance Property "Tags" SchemaMapping where
+  type PropertyType "Tags" SchemaMapping = [Tag]
+  set newValue SchemaMapping {..}
+    = SchemaMapping {tags = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/EntityResolution/SchemaMapping/SchemaInputAttributeProperty.hs b/gen/Stratosphere/EntityResolution/SchemaMapping/SchemaInputAttributeProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/EntityResolution/SchemaMapping/SchemaInputAttributeProperty.hs
@@ -0,0 +1,83 @@
+module Stratosphere.EntityResolution.SchemaMapping.SchemaInputAttributeProperty (
+        SchemaInputAttributeProperty(..), mkSchemaInputAttributeProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data SchemaInputAttributeProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-schemamapping-schemainputattribute.html>
+    SchemaInputAttributeProperty {haddock_workaround_ :: (),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-schemamapping-schemainputattribute.html#cfn-entityresolution-schemamapping-schemainputattribute-fieldname>
+                                  fieldName :: (Value Prelude.Text),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-schemamapping-schemainputattribute.html#cfn-entityresolution-schemamapping-schemainputattribute-groupname>
+                                  groupName :: (Prelude.Maybe (Value Prelude.Text)),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-schemamapping-schemainputattribute.html#cfn-entityresolution-schemamapping-schemainputattribute-hashed>
+                                  hashed :: (Prelude.Maybe (Value Prelude.Bool)),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-schemamapping-schemainputattribute.html#cfn-entityresolution-schemamapping-schemainputattribute-matchkey>
+                                  matchKey :: (Prelude.Maybe (Value Prelude.Text)),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-schemamapping-schemainputattribute.html#cfn-entityresolution-schemamapping-schemainputattribute-subtype>
+                                  subType :: (Prelude.Maybe (Value Prelude.Text)),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-schemamapping-schemainputattribute.html#cfn-entityresolution-schemamapping-schemainputattribute-type>
+                                  type' :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkSchemaInputAttributeProperty ::
+  Value Prelude.Text
+  -> Value Prelude.Text -> SchemaInputAttributeProperty
+mkSchemaInputAttributeProperty fieldName type'
+  = SchemaInputAttributeProperty
+      {haddock_workaround_ = (), fieldName = fieldName, type' = type',
+       groupName = Prelude.Nothing, hashed = Prelude.Nothing,
+       matchKey = Prelude.Nothing, subType = Prelude.Nothing}
+instance ToResourceProperties SchemaInputAttributeProperty where
+  toResourceProperties SchemaInputAttributeProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::EntityResolution::SchemaMapping.SchemaInputAttribute",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["FieldName" JSON..= fieldName, "Type" JSON..= type']
+                           (Prelude.catMaybes
+                              [(JSON..=) "GroupName" Prelude.<$> groupName,
+                               (JSON..=) "Hashed" Prelude.<$> hashed,
+                               (JSON..=) "MatchKey" Prelude.<$> matchKey,
+                               (JSON..=) "SubType" Prelude.<$> subType]))}
+instance JSON.ToJSON SchemaInputAttributeProperty where
+  toJSON SchemaInputAttributeProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["FieldName" JSON..= fieldName, "Type" JSON..= type']
+              (Prelude.catMaybes
+                 [(JSON..=) "GroupName" Prelude.<$> groupName,
+                  (JSON..=) "Hashed" Prelude.<$> hashed,
+                  (JSON..=) "MatchKey" Prelude.<$> matchKey,
+                  (JSON..=) "SubType" Prelude.<$> subType])))
+instance Property "FieldName" SchemaInputAttributeProperty where
+  type PropertyType "FieldName" SchemaInputAttributeProperty = Value Prelude.Text
+  set newValue SchemaInputAttributeProperty {..}
+    = SchemaInputAttributeProperty {fieldName = newValue, ..}
+instance Property "GroupName" SchemaInputAttributeProperty where
+  type PropertyType "GroupName" SchemaInputAttributeProperty = Value Prelude.Text
+  set newValue SchemaInputAttributeProperty {..}
+    = SchemaInputAttributeProperty
+        {groupName = Prelude.pure newValue, ..}
+instance Property "Hashed" SchemaInputAttributeProperty where
+  type PropertyType "Hashed" SchemaInputAttributeProperty = Value Prelude.Bool
+  set newValue SchemaInputAttributeProperty {..}
+    = SchemaInputAttributeProperty {hashed = Prelude.pure newValue, ..}
+instance Property "MatchKey" SchemaInputAttributeProperty where
+  type PropertyType "MatchKey" SchemaInputAttributeProperty = Value Prelude.Text
+  set newValue SchemaInputAttributeProperty {..}
+    = SchemaInputAttributeProperty
+        {matchKey = Prelude.pure newValue, ..}
+instance Property "SubType" SchemaInputAttributeProperty where
+  type PropertyType "SubType" SchemaInputAttributeProperty = Value Prelude.Text
+  set newValue SchemaInputAttributeProperty {..}
+    = SchemaInputAttributeProperty
+        {subType = Prelude.pure newValue, ..}
+instance Property "Type" SchemaInputAttributeProperty where
+  type PropertyType "Type" SchemaInputAttributeProperty = Value Prelude.Text
+  set newValue SchemaInputAttributeProperty {..}
+    = SchemaInputAttributeProperty {type' = newValue, ..}
diff --git a/gen/Stratosphere/EntityResolution/SchemaMapping/SchemaInputAttributeProperty.hs-boot b/gen/Stratosphere/EntityResolution/SchemaMapping/SchemaInputAttributeProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/EntityResolution/SchemaMapping/SchemaInputAttributeProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.EntityResolution.SchemaMapping.SchemaInputAttributeProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data SchemaInputAttributeProperty :: Prelude.Type
+instance ToResourceProperties SchemaInputAttributeProperty
+instance Prelude.Eq SchemaInputAttributeProperty
+instance Prelude.Show SchemaInputAttributeProperty
+instance JSON.ToJSON SchemaInputAttributeProperty
diff --git a/stratosphere-entityresolution.cabal b/stratosphere-entityresolution.cabal
new file mode 100644
--- /dev/null
+++ b/stratosphere-entityresolution.cabal
@@ -0,0 +1,102 @@
+cabal-version: 1.12
+
+-- This file has been generated from package.yaml by hpack version 0.38.2.
+--
+-- see: https://github.com/sol/hpack
+
+name:           stratosphere-entityresolution
+version:        1.0.0
+synopsis:       Stratosphere integration for AWS EntityResolution.
+description:    Integration into stratosphere to generate resources and properties for AWS EntityResolution
+category:       AWS, Cloud, EntityResolution
+stability:      experimental
+homepage:       https://github.com/mbj/stratosphere#readme
+bug-reports:    https://github.com/mbj/stratosphere/issues
+maintainer:     Markus Schirp
+license:        MIT
+license-file:   LICENSE.md
+build-type:     Simple
+
+source-repository head
+  type: git
+  location: https://github.com/mbj/stratosphere
+
+flag development
+  description: Run GHC with development flags
+  manual: True
+  default: False
+
+library
+  exposed-modules:
+      Stratosphere.EntityResolution.IdMappingWorkflow
+      Stratosphere.EntityResolution.IdMappingWorkflow.IdMappingIncrementalRunConfigProperty
+      Stratosphere.EntityResolution.IdMappingWorkflow.IdMappingRuleBasedPropertiesProperty
+      Stratosphere.EntityResolution.IdMappingWorkflow.IdMappingTechniquesProperty
+      Stratosphere.EntityResolution.IdMappingWorkflow.IdMappingWorkflowInputSourceProperty
+      Stratosphere.EntityResolution.IdMappingWorkflow.IdMappingWorkflowOutputSourceProperty
+      Stratosphere.EntityResolution.IdMappingWorkflow.IntermediateSourceConfigurationProperty
+      Stratosphere.EntityResolution.IdMappingWorkflow.ProviderPropertiesProperty
+      Stratosphere.EntityResolution.IdMappingWorkflow.RuleProperty
+      Stratosphere.EntityResolution.IdNamespace
+      Stratosphere.EntityResolution.IdNamespace.IdNamespaceIdMappingWorkflowPropertiesProperty
+      Stratosphere.EntityResolution.IdNamespace.IdNamespaceInputSourceProperty
+      Stratosphere.EntityResolution.IdNamespace.NamespaceProviderPropertiesProperty
+      Stratosphere.EntityResolution.IdNamespace.NamespaceRuleBasedPropertiesProperty
+      Stratosphere.EntityResolution.IdNamespace.RuleProperty
+      Stratosphere.EntityResolution.MatchingWorkflow
+      Stratosphere.EntityResolution.MatchingWorkflow.IncrementalRunConfigProperty
+      Stratosphere.EntityResolution.MatchingWorkflow.InputSourceProperty
+      Stratosphere.EntityResolution.MatchingWorkflow.IntermediateSourceConfigurationProperty
+      Stratosphere.EntityResolution.MatchingWorkflow.OutputAttributeProperty
+      Stratosphere.EntityResolution.MatchingWorkflow.OutputSourceProperty
+      Stratosphere.EntityResolution.MatchingWorkflow.ProviderPropertiesProperty
+      Stratosphere.EntityResolution.MatchingWorkflow.ResolutionTechniquesProperty
+      Stratosphere.EntityResolution.MatchingWorkflow.RuleBasedPropertiesProperty
+      Stratosphere.EntityResolution.MatchingWorkflow.RuleConditionPropertiesProperty
+      Stratosphere.EntityResolution.MatchingWorkflow.RuleConditionProperty
+      Stratosphere.EntityResolution.MatchingWorkflow.RuleProperty
+      Stratosphere.EntityResolution.PolicyStatement
+      Stratosphere.EntityResolution.SchemaMapping
+      Stratosphere.EntityResolution.SchemaMapping.SchemaInputAttributeProperty
+  other-modules:
+      Paths_stratosphere_entityresolution
+  hs-source-dirs:
+      gen
+  default-extensions:
+      DataKinds
+      DeriveGeneric
+      DerivingStrategies
+      DerivingVia
+      DuplicateRecordFields
+      FlexibleContexts
+      FlexibleInstances
+      GADTs
+      GeneralizedNewtypeDeriving
+      InstanceSigs
+      LambdaCase
+      MultiParamTypeClasses
+      NoFieldSelectors
+      NoImplicitPrelude
+      NumericUnderscores
+      OverloadedLists
+      OverloadedRecordDot
+      OverloadedStrings
+      PolyKinds
+      RecordWildCards
+      ScopedTypeVariables
+      StandaloneDeriving
+      Strict
+      TemplateHaskell
+      TupleSections
+      TypeApplications
+      TypeFamilies
+  ghc-options: -Wall -Wcompat -Widentities -Wimplicit-prelude -Wincomplete-record-updates -Wincomplete-uni-patterns -Wmissing-local-signatures -Wmissing-signatures -Wmonomorphism-restriction -Wredundant-constraints -fhide-source-paths -funbox-strict-fields -optP-Wno-nonportable-include-path -Wno-unused-imports
+  build-depends:
+      aeson ==2.*
+    , base >=4.8 && <4.22
+    , stratosphere ==1.0.0
+  default-language: Haskell2010
+  if flag(development)
+    ghc-options: -Werror
+  else
+    ghc-options: -Wwarn
