diff --git a/Deployment/Scripts/Common.ps1 b/Deployment/Scripts/Common.ps1
index 33b1fc5a..5cf4866a 100644
--- a/Deployment/Scripts/Common.ps1
+++ b/Deployment/Scripts/Common.ps1
@@ -18,5 +18,5 @@ function Build-CrmConnectionString
param($jsonSettings)
$appsettings = Get-Content -Path $jsonSettings.AppsettingsPath
- return "Url=$(Get-AppSettingValue $appsettings "Url");AuthType=$(Get-AppSettingValue $appsettings "AuthType");Username=$(Get-AppSettingValue $appsettings "Username");Password=$(Get-AppSettingValue $appsettings "Password")"
+ return "Url=$(Get-AppSettingValue $appsettings "Url");AuthType=$(Get-AppSettingValue $appsettings "AuthType");ClientId=$(Get-AppSettingValue $appsettings "ClientId");ClientSecret=$(Get-AppSettingValue $appsettings "ClientSecret")"
}
diff --git a/Deployment/Solutions/SpecFlowDemo/AppModules/mv_SpecFlowDemo/AppModule.xml b/Deployment/Solutions/SpecFlowDemo/AppModules/mv_SpecFlowDemo/AppModule.xml
index ce5b6edf..1ddc9637 100644
--- a/Deployment/Solutions/SpecFlowDemo/AppModules/mv_SpecFlowDemo/AppModule.xml
+++ b/Deployment/Solutions/SpecFlowDemo/AppModules/mv_SpecFlowDemo/AppModule.xml
@@ -4,6 +4,8 @@
3.0.0.0
953b9fac-1e5e-e611-80d6-00155ded156f
+ 0
+ 1
1
4
0
@@ -89,8 +91,8 @@
-
+
diff --git a/Deployment/Solutions/SpecFlowDemo/AppModules/mv_SpecFlowDemo/AppModule_managed.xml b/Deployment/Solutions/SpecFlowDemo/AppModules/mv_SpecFlowDemo/AppModule_managed.xml
index ce5b6edf..1ddc9637 100644
--- a/Deployment/Solutions/SpecFlowDemo/AppModules/mv_SpecFlowDemo/AppModule_managed.xml
+++ b/Deployment/Solutions/SpecFlowDemo/AppModules/mv_SpecFlowDemo/AppModule_managed.xml
@@ -4,6 +4,8 @@
3.0.0.0
953b9fac-1e5e-e611-80d6-00155ded156f
+ 0
+ 1
1
4
0
@@ -89,8 +91,8 @@
-
+
diff --git a/Deployment/Solutions/SpecFlowDemo/Entities/Account/Entity.xml b/Deployment/Solutions/SpecFlowDemo/Entities/Account/Entity.xml
index 7fe99ea6..fa7d84b7 100644
--- a/Deployment/Solutions/SpecFlowDemo/Entities/Account/Entity.xml
+++ b/Deployment/Solutions/SpecFlowDemo/Entities/Account/Entity.xml
@@ -52,6 +52,67 @@
+
+ bit
+ mv_contactdeleted
+ mv_contactdeleted
+ none
+ ValidForAdvancedFind|ValidForForm|ValidForGrid
+ auto
+ 1
+ 1
+ 1
+ 1
+ 1
+ 0
+ 1.0.0.148
+ 1
+ 1
+ 1
+ 1
+ 1
+ 0
+ 0
+ 0
+ 1
+ 1
+ 0
+
+ 0
+ 0
+ 0
+ 0
+ 0
+
+ bit
+ 1.0.0.148
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
bit
mv_contactpresent
@@ -113,6 +174,44 @@
+
+ multiselectpicklist
+ mv_subcriptions
+ mv_subcriptions
+ none
+ ValidForAdvancedFind|ValidForForm|ValidForGrid
+ auto
+ 1
+ 1
+ 1
+ 1
+ 1
+ 0
+ 1.0.0.148
+ 1
+ 1
+ 1
+ 1
+ 1
+ 0
+ 0
+ 0
+ 1
+ 1
+ 0
+
+ 0
+ 0
+ 0
+ 0
+ mv_subscriptions
+
+
+
+
+
+
+
accounts
1
@@ -124,6 +223,7 @@
1
#794300
1
+ 0
1
0
0
diff --git a/Deployment/Solutions/SpecFlowDemo/Entities/Account/FormXml/main/{8448b78f-8f42-454e-8e2a-f8196b0419af}.xml b/Deployment/Solutions/SpecFlowDemo/Entities/Account/FormXml/main/{8448b78f-8f42-454e-8e2a-f8196b0419af}.xml
index fcbbd92a..2148254e 100644
--- a/Deployment/Solutions/SpecFlowDemo/Entities/Account/FormXml/main/{8448b78f-8f42-454e-8e2a-f8196b0419af}.xml
+++ b/Deployment/Solutions/SpecFlowDemo/Entities/Account/FormXml/main/{8448b78f-8f42-454e-8e2a-f8196b0419af}.xml
@@ -56,6 +56,14 @@
+
+
+
+
+
+
+ |
+
@@ -744,6 +752,58 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -848,205 +908,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -1099,56 +960,56 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1203,56 +1064,203 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1330,12 +1338,12 @@
-
-
-
+
+
+
diff --git a/Deployment/Solutions/SpecFlowDemo/Entities/Account/FormXml/main/{8448b78f-8f42-454e-8e2a-f8196b0419af}_managed.xml b/Deployment/Solutions/SpecFlowDemo/Entities/Account/FormXml/main/{8448b78f-8f42-454e-8e2a-f8196b0419af}_managed.xml
index 9d0993cb..89784299 100644
--- a/Deployment/Solutions/SpecFlowDemo/Entities/Account/FormXml/main/{8448b78f-8f42-454e-8e2a-f8196b0419af}_managed.xml
+++ b/Deployment/Solutions/SpecFlowDemo/Entities/Account/FormXml/main/{8448b78f-8f42-454e-8e2a-f8196b0419af}_managed.xml
@@ -9,6 +9,68 @@
+
+
+
+
+
+
+
+
+
+ |
+
+
+
+
+
+
+ |
+
+
+
+
+
+
+ |
+
+
+
+
+
+
+ |
+
+
+
+
+
+
+ |
+
+
+
+
+
+
+
+ |
+
+
+
+
+
+
@@ -28,6 +90,9 @@
+
+
+
false
@@ -35,6 +100,13 @@
|
+
+
+
+
+
+ |
+
@@ -44,6 +116,15 @@
|
+
+
+
+
+ opportunity_customer_accounts
+
+
+ |
+
@@ -56,17 +137,56 @@
+
+
+
+
+
+ |
+
+
+
+
+
+
+ |
+
+
+
+
|
+
+
@@ -92,10 +212,38 @@
+
+
+
+
+
+ |
+
+
+
+
+
+
+ |
+
+
+
+
+
+
+ |
+
+
+
+
+
+
+ |
+
-
+
|
@@ -106,15 +254,75 @@
+
-
+
+
+
+
+
+
+
+
+ |
+
+
+
+
+ |
+
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -188,6 +396,7 @@
+
diff --git a/Deployment/Solutions/SpecFlowDemo/Entities/Contact/Entity.xml b/Deployment/Solutions/SpecFlowDemo/Entities/Contact/Entity.xml
index 8f79c48e..1866758f 100644
--- a/Deployment/Solutions/SpecFlowDemo/Entities/Contact/Entity.xml
+++ b/Deployment/Solutions/SpecFlowDemo/Entities/Contact/Entity.xml
@@ -23,6 +23,7 @@
1
#005088
0
+ 0
0
0
0
diff --git a/Deployment/Solutions/SpecFlowDemo/Entities/mv_autogenerated/Entity.xml b/Deployment/Solutions/SpecFlowDemo/Entities/mv_autogenerated/Entity.xml
index 0ffc634d..a202269d 100644
--- a/Deployment/Solutions/SpecFlowDemo/Entities/mv_autogenerated/Entity.xml
+++ b/Deployment/Solutions/SpecFlowDemo/Entities/mv_autogenerated/Entity.xml
@@ -20,7 +20,9 @@
none
ValidForAdvancedFind|ValidForForm|ValidForGrid
auto
+ 0
1
+ 0
0
0
0
@@ -57,7 +59,9 @@
none
ValidForAdvancedFind|ValidForForm|ValidForGrid
inactive
+ 0
1
+ 0
0
0
0
@@ -95,7 +99,9 @@
none
ValidForAdvancedFind|ValidForForm|ValidForGrid
auto
+ 0
1
+ 0
0
0
0
@@ -132,7 +138,9 @@
none
ValidForAdvancedFind|ValidForForm|ValidForGrid
disabled
+ 0
1
+ 0
0
1
0
@@ -170,6 +178,7 @@
none
ValidForAdvancedFind
disabled
+ 0
1
1
0
@@ -209,7 +218,9 @@
none
ValidForAdvancedFind|ValidForForm|ValidForGrid
auto
+ 0
1
+ 0
0
0
0
@@ -246,7 +257,9 @@
none
ValidForAdvancedFind|ValidForForm|ValidForGrid
inactive
+ 0
1
+ 0
0
0
0
@@ -284,7 +297,9 @@
none
ValidForAdvancedFind|ValidForForm|ValidForGrid
auto
+ 0
1
+ 0
0
0
0
@@ -321,6 +336,7 @@
systemrequired
ValidForAdvancedFind|RequiredForGrid
auto
+ 0
1
1
0
@@ -398,7 +414,9 @@
none
ValidForAdvancedFind|ValidForForm|ValidForGrid
disabled
+ 0
1
+ 0
1
1
0
@@ -478,6 +496,7 @@
none
ValidForAdvancedFind|ValidForGrid
inactive
+ 0
1
1
0
@@ -558,7 +577,9 @@
owningbusinessunit
none
auto
+ 0
1
+ 0
0
0
0
@@ -594,7 +615,9 @@
owningteam
none
auto
+ 0
1
+ 0
0
0
1
@@ -631,7 +654,9 @@
owninguser
none
auto
+ 0
1
+ 0
0
0
1
@@ -671,6 +696,7 @@
auto
1
1
+ 0
0
1
0
@@ -909,6 +935,7 @@
0
0
+ 0
0
0
0
diff --git a/Deployment/Solutions/SpecFlowDemo/Entities/mv_autogenerated/FormXml/card/{84837fbe-15ab-4816-82e4-4da1afdb28d9}_managed.xml b/Deployment/Solutions/SpecFlowDemo/Entities/mv_autogenerated/FormXml/card/{84837fbe-15ab-4816-82e4-4da1afdb28d9}_managed.xml
index b33c4e0a..0d0c8ff9 100644
--- a/Deployment/Solutions/SpecFlowDemo/Entities/mv_autogenerated/FormXml/card/{84837fbe-15ab-4816-82e4-4da1afdb28d9}_managed.xml
+++ b/Deployment/Solutions/SpecFlowDemo/Entities/mv_autogenerated/FormXml/card/{84837fbe-15ab-4816-82e4-4da1afdb28d9}_managed.xml
@@ -31,7 +31,7 @@
-
+
|
@@ -56,7 +56,7 @@
-
+
|
@@ -71,13 +71,13 @@
-
+
|
-
+
|
diff --git a/Deployment/Solutions/SpecFlowDemo/Entities/mv_autogenerated/FormXml/main/{6ee15fcd-6f5f-4bf8-961d-c9bd37696fe8}_managed.xml b/Deployment/Solutions/SpecFlowDemo/Entities/mv_autogenerated/FormXml/main/{6ee15fcd-6f5f-4bf8-961d-c9bd37696fe8}_managed.xml
index 72ac6366..adf7d65e 100644
--- a/Deployment/Solutions/SpecFlowDemo/Entities/mv_autogenerated/FormXml/main/{6ee15fcd-6f5f-4bf8-961d-c9bd37696fe8}_managed.xml
+++ b/Deployment/Solutions/SpecFlowDemo/Entities/mv_autogenerated/FormXml/main/{6ee15fcd-6f5f-4bf8-961d-c9bd37696fe8}_managed.xml
@@ -22,7 +22,7 @@
-
+
|
@@ -30,7 +30,7 @@
-
+
|
diff --git a/Deployment/Solutions/SpecFlowDemo/Entities/mv_autogenerated/FormXml/quick/{ee7e56b0-536f-478b-b5cd-f3a9c7420519}_managed.xml b/Deployment/Solutions/SpecFlowDemo/Entities/mv_autogenerated/FormXml/quick/{ee7e56b0-536f-478b-b5cd-f3a9c7420519}_managed.xml
index 8b7c8734..386a956d 100644
--- a/Deployment/Solutions/SpecFlowDemo/Entities/mv_autogenerated/FormXml/quick/{ee7e56b0-536f-478b-b5cd-f3a9c7420519}_managed.xml
+++ b/Deployment/Solutions/SpecFlowDemo/Entities/mv_autogenerated/FormXml/quick/{ee7e56b0-536f-478b-b5cd-f3a9c7420519}_managed.xml
@@ -22,7 +22,7 @@
-
+
|
@@ -30,7 +30,7 @@
-
+
|
diff --git a/Deployment/Solutions/SpecFlowDemo/Entities/mv_datetester/Entity.xml b/Deployment/Solutions/SpecFlowDemo/Entities/mv_datetester/Entity.xml
index eb1ac0d3..84c2cdb5 100644
--- a/Deployment/Solutions/SpecFlowDemo/Entities/mv_datetester/Entity.xml
+++ b/Deployment/Solutions/SpecFlowDemo/Entities/mv_datetester/Entity.xml
@@ -20,7 +20,9 @@
none
ValidForAdvancedFind|ValidForForm|ValidForGrid
auto
+ 0
1
+ 0
0
0
0
@@ -57,7 +59,9 @@
none
ValidForAdvancedFind|ValidForForm|ValidForGrid
inactive
+ 0
1
+ 0
0
0
0
@@ -95,7 +99,9 @@
none
ValidForAdvancedFind|ValidForForm|ValidForGrid
auto
+ 0
1
+ 0
0
0
0
@@ -132,6 +138,7 @@
none
ValidForAdvancedFind
disabled
+ 0
1
1
0
@@ -171,7 +178,9 @@
none
ValidForAdvancedFind|ValidForForm|ValidForGrid
auto
+ 0
1
+ 0
0
0
0
@@ -208,7 +217,9 @@
none
ValidForAdvancedFind|ValidForForm|ValidForGrid
inactive
+ 0
1
+ 0
0
0
0
@@ -246,7 +257,9 @@
none
ValidForAdvancedFind|ValidForForm|ValidForGrid
auto
+ 0
1
+ 0
0
0
0
@@ -323,6 +336,7 @@
systemrequired
ValidForAdvancedFind|RequiredForGrid
auto
+ 0
1
1
0
@@ -559,6 +573,7 @@
none
ValidForAdvancedFind|ValidForGrid
inactive
+ 0
1
1
0
@@ -639,7 +654,9 @@
owningbusinessunit
none
auto
+ 0
1
+ 0
0
0
0
@@ -675,7 +692,9 @@
owningteam
none
auto
+ 0
1
+ 0
0
0
1
@@ -712,7 +731,9 @@
owninguser
none
auto
+ 0
1
+ 0
0
0
1
@@ -752,6 +773,7 @@
auto
1
1
+ 0
0
1
0
@@ -951,6 +973,7 @@
0
0
+ 0
0
0
0
diff --git a/Deployment/Solutions/SpecFlowDemo/Entities/mv_datetester/FormXml/card/{6da9d210-4467-4fdd-9e61-0661284c9e23}_managed.xml b/Deployment/Solutions/SpecFlowDemo/Entities/mv_datetester/FormXml/card/{6da9d210-4467-4fdd-9e61-0661284c9e23}_managed.xml
index 3f386ab0..b9d5849f 100644
--- a/Deployment/Solutions/SpecFlowDemo/Entities/mv_datetester/FormXml/card/{6da9d210-4467-4fdd-9e61-0661284c9e23}_managed.xml
+++ b/Deployment/Solutions/SpecFlowDemo/Entities/mv_datetester/FormXml/card/{6da9d210-4467-4fdd-9e61-0661284c9e23}_managed.xml
@@ -31,7 +31,7 @@
-
+
|
@@ -56,7 +56,7 @@
-
+
|
@@ -71,13 +71,13 @@
-
+
|
-
+
|
diff --git a/Deployment/Solutions/SpecFlowDemo/Entities/mv_datetester/FormXml/main/{10345a21-8ed5-4f7f-98d7-32f8ffe4bd9d}_managed.xml b/Deployment/Solutions/SpecFlowDemo/Entities/mv_datetester/FormXml/main/{10345a21-8ed5-4f7f-98d7-32f8ffe4bd9d}_managed.xml
index 8b5375d9..db22adff 100644
--- a/Deployment/Solutions/SpecFlowDemo/Entities/mv_datetester/FormXml/main/{10345a21-8ed5-4f7f-98d7-32f8ffe4bd9d}_managed.xml
+++ b/Deployment/Solutions/SpecFlowDemo/Entities/mv_datetester/FormXml/main/{10345a21-8ed5-4f7f-98d7-32f8ffe4bd9d}_managed.xml
@@ -22,7 +22,7 @@
-
+
|
@@ -30,7 +30,7 @@
-
+
|
@@ -38,7 +38,7 @@
-
+
|
@@ -46,7 +46,7 @@
-
+
|
@@ -65,7 +65,7 @@
-
+
|
@@ -73,7 +73,7 @@
-
+
|
@@ -81,7 +81,7 @@
-
+
|
diff --git a/Deployment/Solutions/SpecFlowDemo/Entities/mv_datetester/FormXml/quick/{639c2fda-0bca-43b9-a821-672b7d54236a}_managed.xml b/Deployment/Solutions/SpecFlowDemo/Entities/mv_datetester/FormXml/quick/{639c2fda-0bca-43b9-a821-672b7d54236a}_managed.xml
index e8f5f3ee..03fe1bb8 100644
--- a/Deployment/Solutions/SpecFlowDemo/Entities/mv_datetester/FormXml/quick/{639c2fda-0bca-43b9-a821-672b7d54236a}_managed.xml
+++ b/Deployment/Solutions/SpecFlowDemo/Entities/mv_datetester/FormXml/quick/{639c2fda-0bca-43b9-a821-672b7d54236a}_managed.xml
@@ -22,7 +22,7 @@
-
+
|
@@ -30,7 +30,7 @@
-
+
|
diff --git a/Deployment/Solutions/SpecFlowDemo/OptionSets/mv_subscriptions.xml b/Deployment/Solutions/SpecFlowDemo/OptionSets/mv_subscriptions.xml
new file mode 100644
index 00000000..dd6fd3b8
--- /dev/null
+++ b/Deployment/Solutions/SpecFlowDemo/OptionSets/mv_subscriptions.xml
@@ -0,0 +1,48 @@
+
+
+ picklist
+ 1
+ 1.0.0.148
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Deployment/Solutions/SpecFlowDemo/Other/Solution.xml b/Deployment/Solutions/SpecFlowDemo/Other/Solution.xml
index 36e08897..639f7cd6 100644
--- a/Deployment/Solutions/SpecFlowDemo/Other/Solution.xml
+++ b/Deployment/Solutions/SpecFlowDemo/Other/Solution.xml
@@ -1,5 +1,5 @@
-
+
SpecFlowDemo
@@ -85,6 +85,8 @@
+
+
@@ -100,15 +102,11 @@
-
-
-
-
-
-
+
+
-
+
@@ -116,216 +114,220 @@
-
+
-
+
-
+
-
+
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
+
+
+
+
diff --git a/Deployment/Solutions/SpecFlowDemo/Workflows/Account-Error-FD14F3D4-B715-416F-AEB1-521F49737AB3.xaml.data.xml b/Deployment/Solutions/SpecFlowDemo/Workflows/Account-Error-FD14F3D4-B715-416F-AEB1-521F49737AB3.xaml.data.xml
index 6ab891f1..b7c412ea 100644
--- a/Deployment/Solutions/SpecFlowDemo/Workflows/Account-Error-FD14F3D4-B715-416F-AEB1-521F49737AB3.xaml.data.xml
+++ b/Deployment/Solutions/SpecFlowDemo/Workflows/Account-Error-FD14F3D4-B715-416F-AEB1-521F49737AB3.xaml.data.xml
@@ -18,6 +18,7 @@
1
1.0.0.107
1
+ 1
Account
diff --git a/Deployment/Solutions/SpecFlowDemo/Workflows/AutoGenerate-BCFFF598-9531-4922-9355-EE87C9F37070.xaml.data.xml b/Deployment/Solutions/SpecFlowDemo/Workflows/AutoGenerate-BCFFF598-9531-4922-9355-EE87C9F37070.xaml.data.xml
index 23b271ed..3d27192a 100644
--- a/Deployment/Solutions/SpecFlowDemo/Workflows/AutoGenerate-BCFFF598-9531-4922-9355-EE87C9F37070.xaml.data.xml
+++ b/Deployment/Solutions/SpecFlowDemo/Workflows/AutoGenerate-BCFFF598-9531-4922-9355-EE87C9F37070.xaml.data.xml
@@ -17,6 +17,7 @@
1
1.0.0.124
1
+ 1
Account
diff --git a/Deployment/Solutions/SpecFlowDemo/Workflows/Contact-SetContactpresentonAccount-4B0D104F-7F76-4277-B0B2-1967D0236016.xaml.data.xml b/Deployment/Solutions/SpecFlowDemo/Workflows/Contact-SetContactpresentonAccount-4B0D104F-7F76-4277-B0B2-1967D0236016.xaml.data.xml
index e08a7b9e..f60a6584 100644
--- a/Deployment/Solutions/SpecFlowDemo/Workflows/Contact-SetContactpresentonAccount-4B0D104F-7F76-4277-B0B2-1967D0236016.xaml.data.xml
+++ b/Deployment/Solutions/SpecFlowDemo/Workflows/Contact-SetContactpresentonAccount-4B0D104F-7F76-4277-B0B2-1967D0236016.xaml.data.xml
@@ -17,6 +17,7 @@
1
1.0.0.76
1
+ 1
Contact
diff --git a/Deployment/Solutions/SpecFlowDemo/Workflows/ContactDeleted-2647BD65-BBE2-4FCA-9DF5-DFD661491C90.xaml b/Deployment/Solutions/SpecFlowDemo/Workflows/ContactDeleted-2647BD65-BBE2-4FCA-9DF5-DFD661491C90.xaml
new file mode 100644
index 00000000..ce07b708
--- /dev/null
+++ b/Deployment/Solutions/SpecFlowDemo/Workflows/ContactDeleted-2647BD65-BBE2-4FCA-9DF5-DFD661491C90.xaml
@@ -0,0 +1,88 @@
+
+
+
+
+
+
+
+
+
+
+
+ Assembly references and imported namespaces for internal implementation
+
+
+
+ False
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ NotNull
+
+ [ConditionBranchStep2_1]
+ [ConditionBranchStep2_condition]
+
+
+
+
+ [ConditionBranchStep2_condition]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ CreateCrmType
+ [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.Boolean, "True" }]
+
+
+
+ [UpdateStep3_1]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ False
+
+
+
+
\ No newline at end of file
diff --git a/Deployment/Solutions/SpecFlowDemo/Workflows/ContactDeleted-2647BD65-BBE2-4FCA-9DF5-DFD661491C90.xaml.data.xml b/Deployment/Solutions/SpecFlowDemo/Workflows/ContactDeleted-2647BD65-BBE2-4FCA-9DF5-DFD661491C90.xaml.data.xml
new file mode 100644
index 00000000..15baa993
--- /dev/null
+++ b/Deployment/Solutions/SpecFlowDemo/Workflows/ContactDeleted-2647BD65-BBE2-4FCA-9DF5-DFD661491C90.xaml.data.xml
@@ -0,0 +1,27 @@
+
+
+ /Workflows/ContactDeleted-2647BD65-BBE2-4FCA-9DF5-DFD661491C90.xaml
+ 1
+ 0
+ 0
+ 1
+ 4
+ 0
+ 1
+ 1
+ 0
+ 1
+ 1
+ 2
+ 40
+ 20
+ 1
+ 1
+ 1.0.0.148
+ 1
+ 1
+ Contact
+
+
+
+
\ No newline at end of file
diff --git a/Vermaat.Crm.Specflow.Sample/DataTypes/MultiSelectOptionSet.feature b/Vermaat.Crm.Specflow.Sample/DataTypes/MultiSelectOptionSet.feature
new file mode 100644
index 00000000..9f53f203
--- /dev/null
+++ b/Vermaat.Crm.Specflow.Sample/DataTypes/MultiSelectOptionSet.feature
@@ -0,0 +1,12 @@
+Feature: MultiSelectOptionSet
+
+@API @Chrome @Firefox @Cleanup
+Scenario: Create Account - Check two option fields
+ When an account named TestAccount is created with the following values
+ | Property | Value |
+ | Account Name | MultiOptionSet |
+ | Subscriptions | Donald Duck, Katrien Duck |
+ Then TestAccount has the following values
+ | Property | Value |
+ | Account Name | MultiOptionSet |
+ | Subscriptions | Donald Duck, Katrien Duck |
\ No newline at end of file
diff --git a/Vermaat.Crm.Specflow.Sample/General/DeleteData.feature b/Vermaat.Crm.Specflow.Sample/General/DeleteData.feature
new file mode 100644
index 00000000..cbe5bdfa
--- /dev/null
+++ b/Vermaat.Crm.Specflow.Sample/General/DeleteData.feature
@@ -0,0 +1,19 @@
+Feature: DeleteData
+
+@API @Chrome @Firefox @Cleanup
+Scenario: Delete a contact
+ Given an account named TestAccount with the following values
+ | Property | Value |
+ | Account Name | DynamicHands |
+ | Main Phone | 0612345678 |
+ | Website | https://dynamichands.nl |
+ | Industry | Consulting |
+ | Description | Test Deletes |
+ And a related contact from TestAccount named ChildContact with the following values
+ | Property | Value |
+ | First Name | Child |
+ | Last Name | Record |
+ When ChildContact is deleted
+ Then TestAccount has the following values
+ | Property | Value |
+ | Contact Deleted | Yes |
\ No newline at end of file
diff --git a/Vermaat.Crm.Specflow/AssertHelper.cs b/Vermaat.Crm.Specflow/AssertHelper.cs
index 2cc78da4..e5281ea6 100644
--- a/Vermaat.Crm.Specflow/AssertHelper.cs
+++ b/Vermaat.Crm.Specflow/AssertHelper.cs
@@ -32,6 +32,14 @@ public static void AreEqual(object actualValue, object expectedValue, string att
Assert.AreEqual(((OptionSetValue)expectedValue)?.Value, ((OptionSetValue)actualValue)?.Value, $"Field {attributeName} is different");
else if (type == typeof(Money))
Assert.AreEqual(((Money)expectedValue)?.Value, ((Money)actualValue)?.Value, $"Field {attributeName} is different");
+ else if(type == typeof(OptionSetValueCollection))
+ {
+ var expected = ((OptionSetValueCollection)expectedValue).Select(e => e.Value).ToArray();
+ var actual = ((OptionSetValueCollection)actualValue).Select(a => a.Value).ToArray();
+ Assert.AreEqual(expected.Length, actual.Length, $"Expected Values: {string.Join(", ", expected)} | Actual Values: {string.Join(", ", actual)}");
+ Assert.AreEqual(expected.Except(actual).Count(), 0, $"Expected Values: {string.Join(", ", expected)} | Actual Values: {string.Join(", ", actual)}");
+ Assert.AreEqual(actual.Except(expected).Count(), 0, $"Expected Values: {string.Join(", ", expected)} | Actual Values: {string.Join(", ", actual)}");
+ }
else
Assert.AreEqual(expectedValue, actualValue, $"Field {attributeName} is different");
}
diff --git a/Vermaat.Crm.Specflow/EasyRepro/CommandBarActions.cs b/Vermaat.Crm.Specflow/EasyRepro/CommandBarActions.cs
index 2a4390e6..82032c63 100644
--- a/Vermaat.Crm.Specflow/EasyRepro/CommandBarActions.cs
+++ b/Vermaat.Crm.Specflow/EasyRepro/CommandBarActions.cs
@@ -22,7 +22,7 @@ public CommandBarActions(UCIApp app)
public void ClickButton(string buttonText)
{
- _app.App.CommandBar.ClickCommand(buttonText);
+ _app.Client.ClickCommand(buttonText);
}
@@ -108,8 +108,6 @@ public EntityReference ReviseQuote()
}).Value;
}
-
-
private void CreateOrderDialog()
{
_app.Client.Execute(BrowserOptionHelper.GetOptions($"Create Sales Order"), driver =>
diff --git a/Vermaat.Crm.Specflow/EasyRepro/TemporaryFixes.cs b/Vermaat.Crm.Specflow/EasyRepro/TemporaryFixes.cs
index 062b021b..c48c6136 100644
--- a/Vermaat.Crm.Specflow/EasyRepro/TemporaryFixes.cs
+++ b/Vermaat.Crm.Specflow/EasyRepro/TemporaryFixes.cs
@@ -376,6 +376,90 @@ private static void SelectOption(ReadOnlyCollection options, string
#endregion
+ #region https://github.com/DynamicHands/Crm.Specflow/issues/112
+
+ public static BrowserCommandResult ClickCommand(this WebClient client, string name, string subname = null, string subSecondName = null)
+ {
+ return client.Execute(BrowserOptionHelper.GetOptions($"Click Command"), driver =>
+ {
+ //Find the button in the CommandBar
+ var ribbon = driver.WaitUntilAvailable(By.XPath(AppElements.Xpath[AppReference.CommandBar.Container]),
+ TimeSpan.FromSeconds(5));
+
+ if (ribbon == null)
+ {
+ ribbon = driver.WaitUntilAvailable(By.XPath(AppElements.Xpath[AppReference.CommandBar.ContainerGrid]),
+ TimeSpan.FromSeconds(5),
+ "Unable to find the ribbon.");
+ }
+
+ //Get the CommandBar buttons
+ var items = ribbon.FindElements(By.TagName("button"));
+
+ //Is the button in the ribbon?
+ if (items.Any(x => x.GetAttribute("aria-label").Equals(name, StringComparison.OrdinalIgnoreCase)))
+ {
+ items.FirstOrDefault(x => x.GetAttribute("aria-label").Equals(name, StringComparison.OrdinalIgnoreCase)).Click(true);
+ driver.WaitForTransaction();
+ }
+ else
+ {
+ //Is the button in More Commands?
+ if (items.Any(x => x.GetAttribute("aria-label").Contains("More Commands", StringComparison.OrdinalIgnoreCase)))
+ {
+ //Click More Commands
+ items.FirstOrDefault(x => x.GetAttribute("aria-label").Contains("More Commands", StringComparison.OrdinalIgnoreCase)).Click(true);
+ driver.WaitForTransaction();
+
+ //Click the button
+ if (driver.HasElement(By.XPath(AppElements.Xpath[AppReference.CommandBar.Button].Replace("[NAME]", name))))
+ {
+ driver.FindElement(By.XPath(AppElements.Xpath[AppReference.CommandBar.Button].Replace("[NAME]", name))).Click(true);
+ driver.WaitForTransaction();
+ }
+ else
+ throw new InvalidOperationException($"No command with the name '{name}' exists inside of Commandbar.");
+ }
+ else
+ throw new InvalidOperationException($"No command with the name '{name}' exists inside of Commandbar.");
+ }
+
+ if (!string.IsNullOrEmpty(subname))
+ {
+ var submenu = driver.WaitUntilAvailable(By.XPath(AppElements.Xpath[AppReference.CommandBar.MoreCommandsMenu]));
+
+ var subbutton = submenu.FindElements(By.TagName("button")).FirstOrDefault(x => x.Text == subname);
+
+ if (subbutton != null)
+ {
+ subbutton.Click(true);
+ }
+ else
+ throw new InvalidOperationException($"No sub command with the name '{subname}' exists inside of Commandbar.");
+
+ if (!string.IsNullOrEmpty(subSecondName))
+ {
+ var subSecondmenu = driver.WaitUntilAvailable(By.XPath(AppElements.Xpath[AppReference.CommandBar.MoreCommandsMenu]));
+
+ var subSecondbutton = subSecondmenu.FindElements(By.TagName("button")).FirstOrDefault(x => x.Text == subSecondName);
+
+ if (subSecondbutton != null)
+ {
+ subSecondbutton.Click(true);
+ }
+ else
+ throw new InvalidOperationException($"No sub command with the name '{subSecondName}' exists inside of Commandbar.");
+ }
+ }
+
+ driver.WaitForTransaction();
+
+ return true;
+ });
+ }
+
+ #endregion
+
}
|