├── docs ├── Copy To Static List.md ├── Share Record With Team.md ├── 49.gif ├── Remove From All Marketing Lists.md ├── 49.0.gif ├── 49.1.gif ├── 49.2.gif ├── 49.3.gif ├── dqs.bmp ├── dqs.jpg ├── dqs.png ├── inn.png ├── Copy Marketing List Members.md ├── Home_w1.gif ├── inogic.png ├── Home_err1.png ├── Home_err2.png ├── Home_err3.png ├── Home_err4.png ├── Home_err5.png ├── Home_err6.png ├── Home_wf1.gif ├── Home_wf1.png ├── CreateTeam1.png ├── CreateTeam2.png ├── EncryptText1.png ├── EncryptText2.png ├── EntityEmail1.gif ├── GetRecordID1.gif ├── GetRecordID2.gif ├── GetRecordID3.gif ├── Home_wf1_40.png ├── Home_wf1_42.png ├── Home_wf1_43.png ├── Home_wf1_44.png ├── Home_wf1_45.png ├── Home_wf1_46.png ├── Home_wf1_47.png ├── Home_wf1_48.png ├── Home_wf1_49.gif ├── Home_wf1_50.gif ├── Home_wf1_51.gif ├── Home_wf1_52.gif ├── Home_wf1_53.gif ├── Home_wf1_54.gif ├── Home_wf1_61.gif ├── JSONParser1.png ├── JSONParser2.png ├── JSONParser3.png ├── JSONParser4.png ├── QualifyLead1.gif ├── updatechild.gif ├── Add Marketing List To Campaign.md ├── CloneRecord44_1.png ├── CloneRecord44_2.png ├── DateFunctions1.png ├── DateFunctions2.png ├── DateFunctions3.png ├── GetAppModuleID1.gif ├── GetAppModuleID2.gif ├── GetAppModuleID3.gif ├── GetAppModuleID4.gif ├── Home_wf1_48_1.png ├── IsMemberOfTeam1.gif ├── IsMemberOfTeam2.gif ├── IsMemberOfTeam3.gif ├── Send Email_wf1.gif ├── Send Email_wf2.gif ├── Send Email_wf3.gif ├── Set Process_wf1.gif ├── Set Process_wf2.gif ├── Set State_wf1.png ├── Set State_wf2.png ├── calculateprice1.png ├── calculateprice2.png ├── goalrecalculate.png ├── Clone Children_1.gif ├── Clone Children_2.gif ├── CurrencyConvert1.gif ├── CurrencyConvert2.gif ├── CurrencyConvert3.gif ├── Delete Record_wf1.gif ├── Delete Record_wf2.gif ├── Delete Record_wf3.gif ├── Email To Team_wf1.gif ├── Email To Team_wf2.gif ├── Email To Team_wf3.gif ├── Encrypt Text_wf1.gif ├── Encrypt Text_wf3.gif ├── Encrypt Text_wf4.gif ├── Encrypt Text_wf5.gif ├── GetAppRecordUrl1.gif ├── GetAppRecordUrl3.gif ├── GetAppRecordUrl4.gif ├── Qualify Lead_wf1.gif ├── Qualify Lead_wf2.gif ├── Add Role To Team_wf2.gif ├── Add Role To User_wf2.gif ├── Add User To Team_wf1.gif ├── Add User To Team_wf2.gif ├── Associate Entity_wf1.gif ├── Associate Entity_wf2.gif ├── Associate Entity_wf3.png ├── Clone Record_wfclone.gif ├── Documentation_err1.png ├── Documentation_err2.png ├── Documentation_err3.png ├── Documentation_img1.gif ├── ExecuteWorkflowById1.png ├── ExecuteWorkflowById2.png ├── Geocode Address_wf1.gif ├── Geocode Address_wf2.gif ├── Geocode Address_wf3.gif ├── GetOptionSetValue1.png ├── GetOptionSetValue2.png ├── Goal Recalculate_wf1.gif ├── Goal Recalculate_wf2.gif ├── Logo completo negro.jpg ├── OrgDBSettingsUpdate1.png ├── OrgDBSettingsUpdate2.png ├── Pick From Queue_wf1.gif ├── Pick From Queue_wf2.gif ├── Queue Item Count_wf1.gif ├── Queue Item Count_wf2.gif ├── Queue Item Count_wf4.gif ├── Rollup Functions_wf1.gif ├── Rollup Functions_wf2.gif ├── Rollup Functions_wf3.gif ├── Rollup Functions_wf4.gif ├── SalesLiterature_wf1.gif ├── SalesLiterature_wf2.gif ├── ShareRecordWithTeam1.gif ├── String Functions_wf1.gif ├── String Functions_wf2.gif ├── string functions_33.png ├── CalculateAgregateDate1.png ├── CalculateAgregateDate2.png ├── CalculateAgregateDate3.png ├── CalculateAgregateDate4.png ├── Clone Record_wfclone2.gif ├── ConcatenateFromQuery_1.png ├── ConcatenateFromQuery_2.png ├── ConcatenateFromQuery_4.gif ├── GetSharepointLocation1.png ├── GetSharepointLocation2.png ├── GetSharepointLocation3.png ├── Home_workflowActivity1.gif ├── Home_workflowActivity4.gif ├── Numeric Functions_wf1.gif ├── Numeric Functions_wf2.gif ├── Numeric Functions_wf3.gif ├── OrgDBSettingsExample1.png ├── OrgDBSettingsExample2.png ├── OrgDBSettingsExample3.png ├── OrgDBSettingsRetrieve.png ├── OrgDBSettingsRetrieve1.png ├── OrgDBSettingsRetrieve2.png ├── ResolveCaseParameters.png ├── Set Process Stage_wf1.gif ├── Set Process Stage_wf2.gif ├── Set User Settings_wf1.gif ├── Set User Settings_wf2.gif ├── Set User Settings_wf2.png ├── Share Record With User.md ├── UnshareRecordWithTeam1.gif ├── UnshareRecordWithUser1.gif ├── Add To Marketing List_w2.gif ├── Add To Marketing List_w3.gif ├── Add To Marketing List_wf3.gif ├── Copy To Static List_wf2.gif ├── CountChildEntityRecord1.gif ├── CountChildEntityRecord3.gif ├── CountChildEntityRecord4.gif ├── Delete Option Value_wf1.png ├── Delete Option Value_wf2.png ├── DeleteRecordAuditHistory1.gif ├── DeleteRecordAuditHistory2.gif ├── DeleteRecordAuditHistory3.gif ├── DeleteRecordAuditHistory4.gif ├── Disassociate Entity_wf1.png ├── Disassociate Entity_wf2.png ├── EntityAttachmentToEmail2.gif ├── Get Initiating User_wf1.gif ├── Get Initiating User_wf2.gif ├── GetMultiSelectOptionSet.png ├── Insert Option Value_wf1.png ├── Insert Option Value_wf2.png ├── MapMultiSelectOptionSet.png ├── Remove Role From Team_wf2.gif ├── Remove Role From User_wf3.gif ├── Remove User From Team_wf1.gif ├── Remove User From Team_wf3.gif ├── SendEmailToUsersInRole1.png ├── SendEmailToUsersInRole2.png ├── SetMultiSelectOptionSet.png ├── Update Child Records_wf1.png ├── Update Child Records_wf2.png ├── Check Associate Entity_wf1.png ├── Check Associate Entity_wf2.png ├── Check Associate Entity_wf3.png ├── Entity Json Serializer_wf1.gif ├── Entity Json Serializer_wf2.gif ├── Entity Json Serializer_wf3.gif ├── Entity Json Serializer_wf4.gif ├── Entity Mobile Deep Link_wf1.gif ├── Entity Mobile Deep Link_wf2.gif ├── Entity Mobile Deep Link_wf3.gif ├── Entity Mobile Deep Link_wf4.gif ├── Entity Mobile Deep Link_wf5.gif ├── Entity Mobile Deep Link_wf6.gif ├── Entity Mobile Deep Link_wf7.gif ├── Entity Mobile Deep Link_wf8.gif ├── Entity Mobile Deep Link_wf9.gif ├── Home_workflowactivity5 (2).gif ├── Remove Role From a Team_wf2.gif ├── RetrieveUserBUDefaultTeam1.gif ├── RetrieveUserBUDefaultTeam2.gif ├── RetrieveUserBUDefaultTeam3.gif ├── Share Record With User_wf1.gif ├── Apply Routing Rules_workflow6.gif ├── Apply Routing Rules_workflow7.gif ├── Apply Routing Rules_workflow8.gif ├── Check If User is in Team_wf2.gif ├── Check If User is in Team_wf3.gif ├── Check If User is in Team_wf4.gif ├── Entity Attachment To Email_wf1.gif ├── Entity Attachment To Email_wf2.gif ├── Remove From Marketing List_wf2.gif ├── Copy Marketing List Members_wf2.gif ├── Is Member Of Marketing List_wf2.gif ├── Is Member Of Marketing List_wf3.gif ├── Add Marketing List To Campaign_wf2.gif ├── Query Values Step_workflowActivity5.gif ├── Query Values Step_workflowActivity6.gif ├── Query Values Step_workflowActivity7.gif ├── SendEmailFromTemplateToUsersInRole1.png ├── SendEmailFromTemplateToUsersInRole2.png ├── Unshare Record With Team.md ├── Add User To Team.md ├── Check If User is in Role_userinrole1.gif ├── Check If User is in Role_userinrole2.gif ├── Check If User is in Role_userinrole3.gif ├── Remove From All Marketing Lists_wf33.gif ├── Sharing Record Step_workflowActivity2.gif ├── Sharing Record Step_workflowActivity3.gif ├── Unshare Record With User.md ├── Force Calculate Rollup Field_workflow4.gif ├── Force Calculate Rollup Field_workflow5.gif ├── GetMultiSelectOptionSetInputParameters.png ├── MapMultiSelectOptionSetInputProperties.png ├── SetMultiSelectOptionSetInputParameters.png ├── GetMultiSelectOptionSet_with_options_names.jpg ├── Is Member Of Marketing List.md ├── Remove User From Team.md ├── Associate Entity.md ├── Set State.md ├── Set Process Stage.md ├── Goal Recalculate.md ├── Check Associate Entity.md ├── GetRecordID.md ├── IsMemberOfTeam.md ├── RetrieveUserBUDefaultTeam.md ├── SendEmailToUsersInRole.md ├── Add Role To Team.md ├── CountChildEntityRecord.md ├── Remove Role From Team.md ├── Remove Role From User.md ├── Remove Role From a Team.md ├── Add Role To User.md ├── Get Initiating User.md ├── CurrencyConvert.md ├── OrgDBSettingsExample.md ├── Sales Literature To Email.md ├── DeleteRecordAuditHistory.md ├── Email To Team.md ├── GetSharepointLocationURL.md ├── GetAppModuleID.md ├── Disassociate Entity.md ├── Send Email.md ├── SendEmailFromTemplateToUsersInRole.md ├── ExecuteWorkflowByID.md ├── Encrypt Text.md ├── GetOptionSetValue.md ├── CreateTeam.md ├── Entity Json Serializer.md ├── Geocode Address.md ├── CalculatePrice.md ├── Check If User is in Team.md ├── Delete Option Value.md ├── Numeric Functions.md ├── CalculateAgregateDate.md ├── GetAppRecordUrl.md ├── SetLookupFieldFromRecordUrl.md ├── JSONParser.md ├── ResolveCase.md ├── Check If User is in Role.md ├── Add To Marketing List.md ├── Delete Record.md ├── Insert Option Value.md ├── Qualify Lead.md ├── TranslateText.md ├── Remove From Marketing List.md ├── Pick From Queue.md ├── Sharing Record Step.md ├── Queue Item Count.md ├── OrgDBSettingsRetrieve.md ├── OrgDBSettingsUpdate.md ├── DateFunctions.md ├── Apply Routing Rules.md ├── Set User Settings.md ├── Set Process.md ├── Force Calculate Rollup Field.md ├── Rollup Functions.md ├── Update Child Records.md ├── Clone Record.md ├── Entity Attachment To Email.md ├── Query Values Step.md ├── String Functions.md ├── SetMultiSelectOptionSet.md ├── Entity Mobile Deep Link.md ├── MapMultiSelectOptionSet.md └── GetMultiSelectOptionSet.md ├── msdyncrmWorkflowTools ├── msdyncrmWorkflowTools_Class │ ├── Scripts │ │ └── nugetexample.js │ ├── msdyncrmWorkflowTools_Class.csproj.vspscc │ ├── packages.config │ ├── app.config │ ├── Newtonsoft │ │ ├── Linq │ │ │ ├── MergeNullValueHandling.cs │ │ │ ├── MergeArrayHandling.cs │ │ │ ├── JsonPath │ │ │ │ ├── QueryFilter.cs │ │ │ │ ├── ArrayMultipleIndexFilter.cs │ │ │ │ └── ArrayIndexFilter.cs │ │ │ ├── CommentHandling.cs │ │ │ ├── JsonLoadSettings.cs │ │ │ └── JsonMergeSettings.cs │ │ ├── Serialization │ │ │ ├── DefaultNamingStrategy.cs │ │ │ ├── ITraceWriter.cs │ │ │ ├── ObjectConstructor.cs │ │ │ └── OnErrorAttribute.cs │ │ ├── IArrayPool.cs │ │ ├── FormatterAssemblyStyle.cs │ │ ├── TraceLevel.cs │ │ ├── Utilities │ │ │ ├── MethodCall.cs │ │ │ └── ValidationUtils.cs │ │ ├── JsonExtensionDataAttribute.cs │ │ ├── JsonConverterCollection.cs │ │ ├── JsonConstructorAttribute.cs │ │ └── SerializationBinder.cs │ └── Properties │ │ └── AssemblyInfo.cs ├── UpgradeLog.htm ├── msdyncrmWorkflowTools │ ├── codes.snk │ ├── msdyncrmWorkflowTools.csproj.user │ ├── msdyncrmWorkflowTools.csproj.vspscc │ ├── packages.config │ ├── Newtonsoft │ │ ├── Linq │ │ │ ├── MergeNullValueHandling.cs │ │ │ ├── MergeArrayHandling.cs │ │ │ ├── JsonPath │ │ │ │ ├── QueryFilter.cs │ │ │ │ ├── ArrayMultipleIndexFilter.cs │ │ │ │ ├── ArrayIndexFilter.cs │ │ │ │ └── FieldMultipleFilter.cs │ │ │ ├── CommentHandling.cs │ │ │ ├── JsonLoadSettings.cs │ │ │ └── JsonMergeSettings.cs │ │ ├── Serialization │ │ │ ├── DefaultNamingStrategy.cs │ │ │ ├── ITraceWriter.cs │ │ │ ├── ObjectConstructor.cs │ │ │ └── OnErrorAttribute.cs │ │ ├── IArrayPool.cs │ │ ├── FormatterAssemblyStyle.cs │ │ ├── TraceLevel.cs │ │ ├── Utilities │ │ │ ├── MethodCall.cs │ │ │ └── ValidationUtils.cs │ │ ├── JsonExtensionDataAttribute.cs │ │ ├── JsonConverterCollection.cs │ │ ├── JsonConstructorAttribute.cs │ │ ├── SerializationBinder.cs │ │ ├── JsonIgnoreAttribute.cs │ │ └── JsonRequiredAttribute.cs │ └── Class │ │ ├── GetInitiatingUser.cs │ │ ├── CopyToStaticList.cs │ │ ├── GetRecordID.cs │ │ └── GetAppModuleID.cs ├── .vs │ └── msdyncrmWorkflowTools │ │ └── v15 │ │ └── .suo ├── powerplatformWorkflowTools │ ├── codes.snk │ └── packages.config ├── packages │ └── Microsoft.IdentityModel.6.1.7600.16394 │ │ ├── lib │ │ └── net35 │ │ │ └── Microsoft.IdentityModel.dll │ │ └── Microsoft.IdentityModel.6.1.7600.16394.nupkg ├── msdyncrmWorkflowTools.vssscc ├── msdyncrmWorkflowTools_ConsoleTest │ ├── msdyncrmWorkflowTools_ConsoleTest.csproj.vspscc │ ├── packages.config │ └── Properties │ │ └── AssemblyInfo.cs └── msdyncrmWorkflowTools_Tests │ ├── Properties │ └── AssemblyInfo.cs │ ├── packages.config │ ├── GetRecordID_Tests.cs │ ├── app.config │ ├── CrmService.cs │ ├── TranslateText_Tests.cs │ └── CurrencyConvert_Tests.cs ├── .vs ├── slnx.sqlite ├── VSWorkspaceState.json └── Dynamics-365-Workflow-Tools │ └── v15 │ └── .suo ├── ISSUE_TEMPLATE.md ├── CONTRIBUTING.md ├── .github └── ISSUE_TEMPLATE │ ├── feature_request.md │ └── bug_report.md └── azure-pipelines.yml /docs/Copy To Static List.md: -------------------------------------------------------------------------------- 1 | Documentation 2 | ![](Copy%20To%20Static%20List_wf2.gif) 3 | -------------------------------------------------------------------------------- /docs/Share Record With Team.md: -------------------------------------------------------------------------------- 1 | Share Record With Team 2 | ![](ShareRecordWithTeam1.gif) 3 | -------------------------------------------------------------------------------- /docs/49.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/49.gif -------------------------------------------------------------------------------- /docs/Remove From All Marketing Lists.md: -------------------------------------------------------------------------------- 1 | ![](Remove%20From%20All%20Marketing%20Lists_wf33.gif) 2 | -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/msdyncrmWorkflowTools_Class/Scripts/nugetexample.js: -------------------------------------------------------------------------------- 1 | alert("nuget rawks"); -------------------------------------------------------------------------------- /docs/49.0.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/49.0.gif -------------------------------------------------------------------------------- /docs/49.1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/49.1.gif -------------------------------------------------------------------------------- /docs/49.2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/49.2.gif -------------------------------------------------------------------------------- /docs/49.3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/49.3.gif -------------------------------------------------------------------------------- /docs/dqs.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/dqs.bmp -------------------------------------------------------------------------------- /docs/dqs.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/dqs.jpg -------------------------------------------------------------------------------- /docs/dqs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/dqs.png -------------------------------------------------------------------------------- /docs/inn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/inn.png -------------------------------------------------------------------------------- /.vs/slnx.sqlite: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/.vs/slnx.sqlite -------------------------------------------------------------------------------- /docs/Copy Marketing List Members.md: -------------------------------------------------------------------------------- 1 | Documentation 2 | ![](Copy%20Marketing%20List%20Members_wf2.gif) 3 | -------------------------------------------------------------------------------- /docs/Home_w1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Home_w1.gif -------------------------------------------------------------------------------- /docs/inogic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/inogic.png -------------------------------------------------------------------------------- /docs/Home_err1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Home_err1.png -------------------------------------------------------------------------------- /docs/Home_err2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Home_err2.png -------------------------------------------------------------------------------- /docs/Home_err3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Home_err3.png -------------------------------------------------------------------------------- /docs/Home_err4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Home_err4.png -------------------------------------------------------------------------------- /docs/Home_err5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Home_err5.png -------------------------------------------------------------------------------- /docs/Home_err6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Home_err6.png -------------------------------------------------------------------------------- /docs/Home_wf1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Home_wf1.gif -------------------------------------------------------------------------------- /docs/Home_wf1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Home_wf1.png -------------------------------------------------------------------------------- /.vs/VSWorkspaceState.json: -------------------------------------------------------------------------------- 1 | { 2 | "ExpandedNodes": [ 3 | "" 4 | ], 5 | "PreviewInSolutionExplorer": false 6 | } -------------------------------------------------------------------------------- /docs/CreateTeam1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/CreateTeam1.png -------------------------------------------------------------------------------- /docs/CreateTeam2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/CreateTeam2.png -------------------------------------------------------------------------------- /docs/EncryptText1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/EncryptText1.png -------------------------------------------------------------------------------- /docs/EncryptText2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/EncryptText2.png -------------------------------------------------------------------------------- /docs/EntityEmail1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/EntityEmail1.gif -------------------------------------------------------------------------------- /docs/GetRecordID1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/GetRecordID1.gif -------------------------------------------------------------------------------- /docs/GetRecordID2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/GetRecordID2.gif -------------------------------------------------------------------------------- /docs/GetRecordID3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/GetRecordID3.gif -------------------------------------------------------------------------------- /docs/Home_wf1_40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Home_wf1_40.png -------------------------------------------------------------------------------- /docs/Home_wf1_42.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Home_wf1_42.png -------------------------------------------------------------------------------- /docs/Home_wf1_43.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Home_wf1_43.png -------------------------------------------------------------------------------- /docs/Home_wf1_44.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Home_wf1_44.png -------------------------------------------------------------------------------- /docs/Home_wf1_45.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Home_wf1_45.png -------------------------------------------------------------------------------- /docs/Home_wf1_46.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Home_wf1_46.png -------------------------------------------------------------------------------- /docs/Home_wf1_47.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Home_wf1_47.png -------------------------------------------------------------------------------- /docs/Home_wf1_48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Home_wf1_48.png -------------------------------------------------------------------------------- /docs/Home_wf1_49.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Home_wf1_49.gif -------------------------------------------------------------------------------- /docs/Home_wf1_50.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Home_wf1_50.gif -------------------------------------------------------------------------------- /docs/Home_wf1_51.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Home_wf1_51.gif -------------------------------------------------------------------------------- /docs/Home_wf1_52.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Home_wf1_52.gif -------------------------------------------------------------------------------- /docs/Home_wf1_53.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Home_wf1_53.gif -------------------------------------------------------------------------------- /docs/Home_wf1_54.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Home_wf1_54.gif -------------------------------------------------------------------------------- /docs/Home_wf1_61.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Home_wf1_61.gif -------------------------------------------------------------------------------- /docs/JSONParser1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/JSONParser1.png -------------------------------------------------------------------------------- /docs/JSONParser2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/JSONParser2.png -------------------------------------------------------------------------------- /docs/JSONParser3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/JSONParser3.png -------------------------------------------------------------------------------- /docs/JSONParser4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/JSONParser4.png -------------------------------------------------------------------------------- /docs/QualifyLead1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/QualifyLead1.gif -------------------------------------------------------------------------------- /docs/updatechild.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/updatechild.gif -------------------------------------------------------------------------------- /docs/Add Marketing List To Campaign.md: -------------------------------------------------------------------------------- 1 | Documentation: 2 | 3 | ![](Add%20Marketing%20List%20To%20Campaign_wf2.gif) 4 | -------------------------------------------------------------------------------- /docs/CloneRecord44_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/CloneRecord44_1.png -------------------------------------------------------------------------------- /docs/CloneRecord44_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/CloneRecord44_2.png -------------------------------------------------------------------------------- /docs/DateFunctions1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/DateFunctions1.png -------------------------------------------------------------------------------- /docs/DateFunctions2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/DateFunctions2.png -------------------------------------------------------------------------------- /docs/DateFunctions3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/DateFunctions3.png -------------------------------------------------------------------------------- /docs/GetAppModuleID1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/GetAppModuleID1.gif -------------------------------------------------------------------------------- /docs/GetAppModuleID2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/GetAppModuleID2.gif -------------------------------------------------------------------------------- /docs/GetAppModuleID3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/GetAppModuleID3.gif -------------------------------------------------------------------------------- /docs/GetAppModuleID4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/GetAppModuleID4.gif -------------------------------------------------------------------------------- /docs/Home_wf1_48_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Home_wf1_48_1.png -------------------------------------------------------------------------------- /docs/IsMemberOfTeam1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/IsMemberOfTeam1.gif -------------------------------------------------------------------------------- /docs/IsMemberOfTeam2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/IsMemberOfTeam2.gif -------------------------------------------------------------------------------- /docs/IsMemberOfTeam3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/IsMemberOfTeam3.gif -------------------------------------------------------------------------------- /docs/Send Email_wf1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Send Email_wf1.gif -------------------------------------------------------------------------------- /docs/Send Email_wf2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Send Email_wf2.gif -------------------------------------------------------------------------------- /docs/Send Email_wf3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Send Email_wf3.gif -------------------------------------------------------------------------------- /docs/Set Process_wf1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Set Process_wf1.gif -------------------------------------------------------------------------------- /docs/Set Process_wf2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Set Process_wf2.gif -------------------------------------------------------------------------------- /docs/Set State_wf1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Set State_wf1.png -------------------------------------------------------------------------------- /docs/Set State_wf2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Set State_wf2.png -------------------------------------------------------------------------------- /docs/calculateprice1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/calculateprice1.png -------------------------------------------------------------------------------- /docs/calculateprice2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/calculateprice2.png -------------------------------------------------------------------------------- /docs/goalrecalculate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/goalrecalculate.png -------------------------------------------------------------------------------- /docs/Clone Children_1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Clone Children_1.gif -------------------------------------------------------------------------------- /docs/Clone Children_2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Clone Children_2.gif -------------------------------------------------------------------------------- /docs/CurrencyConvert1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/CurrencyConvert1.gif -------------------------------------------------------------------------------- /docs/CurrencyConvert2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/CurrencyConvert2.gif -------------------------------------------------------------------------------- /docs/CurrencyConvert3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/CurrencyConvert3.gif -------------------------------------------------------------------------------- /docs/Delete Record_wf1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Delete Record_wf1.gif -------------------------------------------------------------------------------- /docs/Delete Record_wf2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Delete Record_wf2.gif -------------------------------------------------------------------------------- /docs/Delete Record_wf3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Delete Record_wf3.gif -------------------------------------------------------------------------------- /docs/Email To Team_wf1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Email To Team_wf1.gif -------------------------------------------------------------------------------- /docs/Email To Team_wf2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Email To Team_wf2.gif -------------------------------------------------------------------------------- /docs/Email To Team_wf3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Email To Team_wf3.gif -------------------------------------------------------------------------------- /docs/Encrypt Text_wf1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Encrypt Text_wf1.gif -------------------------------------------------------------------------------- /docs/Encrypt Text_wf3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Encrypt Text_wf3.gif -------------------------------------------------------------------------------- /docs/Encrypt Text_wf4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Encrypt Text_wf4.gif -------------------------------------------------------------------------------- /docs/Encrypt Text_wf5.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Encrypt Text_wf5.gif -------------------------------------------------------------------------------- /docs/GetAppRecordUrl1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/GetAppRecordUrl1.gif -------------------------------------------------------------------------------- /docs/GetAppRecordUrl3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/GetAppRecordUrl3.gif -------------------------------------------------------------------------------- /docs/GetAppRecordUrl4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/GetAppRecordUrl4.gif -------------------------------------------------------------------------------- /docs/Qualify Lead_wf1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Qualify Lead_wf1.gif -------------------------------------------------------------------------------- /docs/Qualify Lead_wf2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Qualify Lead_wf2.gif -------------------------------------------------------------------------------- /docs/Add Role To Team_wf2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Add Role To Team_wf2.gif -------------------------------------------------------------------------------- /docs/Add Role To User_wf2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Add Role To User_wf2.gif -------------------------------------------------------------------------------- /docs/Add User To Team_wf1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Add User To Team_wf1.gif -------------------------------------------------------------------------------- /docs/Add User To Team_wf2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Add User To Team_wf2.gif -------------------------------------------------------------------------------- /docs/Associate Entity_wf1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Associate Entity_wf1.gif -------------------------------------------------------------------------------- /docs/Associate Entity_wf2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Associate Entity_wf2.gif -------------------------------------------------------------------------------- /docs/Associate Entity_wf3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Associate Entity_wf3.png -------------------------------------------------------------------------------- /docs/Clone Record_wfclone.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Clone Record_wfclone.gif -------------------------------------------------------------------------------- /docs/Documentation_err1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Documentation_err1.png -------------------------------------------------------------------------------- /docs/Documentation_err2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Documentation_err2.png -------------------------------------------------------------------------------- /docs/Documentation_err3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Documentation_err3.png -------------------------------------------------------------------------------- /docs/Documentation_img1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Documentation_img1.gif -------------------------------------------------------------------------------- /docs/ExecuteWorkflowById1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/ExecuteWorkflowById1.png -------------------------------------------------------------------------------- /docs/ExecuteWorkflowById2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/ExecuteWorkflowById2.png -------------------------------------------------------------------------------- /docs/Geocode Address_wf1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Geocode Address_wf1.gif -------------------------------------------------------------------------------- /docs/Geocode Address_wf2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Geocode Address_wf2.gif -------------------------------------------------------------------------------- /docs/Geocode Address_wf3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Geocode Address_wf3.gif -------------------------------------------------------------------------------- /docs/GetOptionSetValue1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/GetOptionSetValue1.png -------------------------------------------------------------------------------- /docs/GetOptionSetValue2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/GetOptionSetValue2.png -------------------------------------------------------------------------------- /docs/Goal Recalculate_wf1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Goal Recalculate_wf1.gif -------------------------------------------------------------------------------- /docs/Goal Recalculate_wf2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Goal Recalculate_wf2.gif -------------------------------------------------------------------------------- /docs/Logo completo negro.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Logo completo negro.jpg -------------------------------------------------------------------------------- /docs/OrgDBSettingsUpdate1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/OrgDBSettingsUpdate1.png -------------------------------------------------------------------------------- /docs/OrgDBSettingsUpdate2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/OrgDBSettingsUpdate2.png -------------------------------------------------------------------------------- /docs/Pick From Queue_wf1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Pick From Queue_wf1.gif -------------------------------------------------------------------------------- /docs/Pick From Queue_wf2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Pick From Queue_wf2.gif -------------------------------------------------------------------------------- /docs/Queue Item Count_wf1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Queue Item Count_wf1.gif -------------------------------------------------------------------------------- /docs/Queue Item Count_wf2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Queue Item Count_wf2.gif -------------------------------------------------------------------------------- /docs/Queue Item Count_wf4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Queue Item Count_wf4.gif -------------------------------------------------------------------------------- /docs/Rollup Functions_wf1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Rollup Functions_wf1.gif -------------------------------------------------------------------------------- /docs/Rollup Functions_wf2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Rollup Functions_wf2.gif -------------------------------------------------------------------------------- /docs/Rollup Functions_wf3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Rollup Functions_wf3.gif -------------------------------------------------------------------------------- /docs/Rollup Functions_wf4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Rollup Functions_wf4.gif -------------------------------------------------------------------------------- /docs/SalesLiterature_wf1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/SalesLiterature_wf1.gif -------------------------------------------------------------------------------- /docs/SalesLiterature_wf2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/SalesLiterature_wf2.gif -------------------------------------------------------------------------------- /docs/ShareRecordWithTeam1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/ShareRecordWithTeam1.gif -------------------------------------------------------------------------------- /docs/String Functions_wf1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/String Functions_wf1.gif -------------------------------------------------------------------------------- /docs/String Functions_wf2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/String Functions_wf2.gif -------------------------------------------------------------------------------- /docs/string functions_33.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/string functions_33.png -------------------------------------------------------------------------------- /docs/CalculateAgregateDate1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/CalculateAgregateDate1.png -------------------------------------------------------------------------------- /docs/CalculateAgregateDate2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/CalculateAgregateDate2.png -------------------------------------------------------------------------------- /docs/CalculateAgregateDate3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/CalculateAgregateDate3.png -------------------------------------------------------------------------------- /docs/CalculateAgregateDate4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/CalculateAgregateDate4.png -------------------------------------------------------------------------------- /docs/Clone Record_wfclone2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Clone Record_wfclone2.gif -------------------------------------------------------------------------------- /docs/ConcatenateFromQuery_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/ConcatenateFromQuery_1.png -------------------------------------------------------------------------------- /docs/ConcatenateFromQuery_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/ConcatenateFromQuery_2.png -------------------------------------------------------------------------------- /docs/ConcatenateFromQuery_4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/ConcatenateFromQuery_4.gif -------------------------------------------------------------------------------- /docs/GetSharepointLocation1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/GetSharepointLocation1.png -------------------------------------------------------------------------------- /docs/GetSharepointLocation2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/GetSharepointLocation2.png -------------------------------------------------------------------------------- /docs/GetSharepointLocation3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/GetSharepointLocation3.png -------------------------------------------------------------------------------- /docs/Home_workflowActivity1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Home_workflowActivity1.gif -------------------------------------------------------------------------------- /docs/Home_workflowActivity4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Home_workflowActivity4.gif -------------------------------------------------------------------------------- /docs/Numeric Functions_wf1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Numeric Functions_wf1.gif -------------------------------------------------------------------------------- /docs/Numeric Functions_wf2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Numeric Functions_wf2.gif -------------------------------------------------------------------------------- /docs/Numeric Functions_wf3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Numeric Functions_wf3.gif -------------------------------------------------------------------------------- /docs/OrgDBSettingsExample1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/OrgDBSettingsExample1.png -------------------------------------------------------------------------------- /docs/OrgDBSettingsExample2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/OrgDBSettingsExample2.png -------------------------------------------------------------------------------- /docs/OrgDBSettingsExample3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/OrgDBSettingsExample3.png -------------------------------------------------------------------------------- /docs/OrgDBSettingsRetrieve.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/OrgDBSettingsRetrieve.png -------------------------------------------------------------------------------- /docs/OrgDBSettingsRetrieve1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/OrgDBSettingsRetrieve1.png -------------------------------------------------------------------------------- /docs/OrgDBSettingsRetrieve2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/OrgDBSettingsRetrieve2.png -------------------------------------------------------------------------------- /docs/ResolveCaseParameters.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/ResolveCaseParameters.png -------------------------------------------------------------------------------- /docs/Set Process Stage_wf1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Set Process Stage_wf1.gif -------------------------------------------------------------------------------- /docs/Set Process Stage_wf2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Set Process Stage_wf2.gif -------------------------------------------------------------------------------- /docs/Set User Settings_wf1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Set User Settings_wf1.gif -------------------------------------------------------------------------------- /docs/Set User Settings_wf2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Set User Settings_wf2.gif -------------------------------------------------------------------------------- /docs/Set User Settings_wf2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Set User Settings_wf2.png -------------------------------------------------------------------------------- /docs/Share Record With User.md: -------------------------------------------------------------------------------- 1 | Here is the details for sharing a record to user: 2 | 3 | ![](Share%20Record%20With%20User_wf1.gif) 4 | -------------------------------------------------------------------------------- /docs/UnshareRecordWithTeam1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/UnshareRecordWithTeam1.gif -------------------------------------------------------------------------------- /docs/UnshareRecordWithUser1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/UnshareRecordWithUser1.gif -------------------------------------------------------------------------------- /docs/Add To Marketing List_w2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Add To Marketing List_w2.gif -------------------------------------------------------------------------------- /docs/Add To Marketing List_w3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Add To Marketing List_w3.gif -------------------------------------------------------------------------------- /docs/Add To Marketing List_wf3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Add To Marketing List_wf3.gif -------------------------------------------------------------------------------- /docs/Copy To Static List_wf2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Copy To Static List_wf2.gif -------------------------------------------------------------------------------- /docs/CountChildEntityRecord1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/CountChildEntityRecord1.gif -------------------------------------------------------------------------------- /docs/CountChildEntityRecord3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/CountChildEntityRecord3.gif -------------------------------------------------------------------------------- /docs/CountChildEntityRecord4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/CountChildEntityRecord4.gif -------------------------------------------------------------------------------- /docs/Delete Option Value_wf1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Delete Option Value_wf1.png -------------------------------------------------------------------------------- /docs/Delete Option Value_wf2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Delete Option Value_wf2.png -------------------------------------------------------------------------------- /docs/DeleteRecordAuditHistory1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/DeleteRecordAuditHistory1.gif -------------------------------------------------------------------------------- /docs/DeleteRecordAuditHistory2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/DeleteRecordAuditHistory2.gif -------------------------------------------------------------------------------- /docs/DeleteRecordAuditHistory3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/DeleteRecordAuditHistory3.gif -------------------------------------------------------------------------------- /docs/DeleteRecordAuditHistory4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/DeleteRecordAuditHistory4.gif -------------------------------------------------------------------------------- /docs/Disassociate Entity_wf1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Disassociate Entity_wf1.png -------------------------------------------------------------------------------- /docs/Disassociate Entity_wf2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Disassociate Entity_wf2.png -------------------------------------------------------------------------------- /docs/EntityAttachmentToEmail2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/EntityAttachmentToEmail2.gif -------------------------------------------------------------------------------- /docs/Get Initiating User_wf1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Get Initiating User_wf1.gif -------------------------------------------------------------------------------- /docs/Get Initiating User_wf2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Get Initiating User_wf2.gif -------------------------------------------------------------------------------- /docs/GetMultiSelectOptionSet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/GetMultiSelectOptionSet.png -------------------------------------------------------------------------------- /docs/Insert Option Value_wf1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Insert Option Value_wf1.png -------------------------------------------------------------------------------- /docs/Insert Option Value_wf2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Insert Option Value_wf2.png -------------------------------------------------------------------------------- /docs/MapMultiSelectOptionSet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/MapMultiSelectOptionSet.png -------------------------------------------------------------------------------- /docs/Remove Role From Team_wf2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Remove Role From Team_wf2.gif -------------------------------------------------------------------------------- /docs/Remove Role From User_wf3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Remove Role From User_wf3.gif -------------------------------------------------------------------------------- /docs/Remove User From Team_wf1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Remove User From Team_wf1.gif -------------------------------------------------------------------------------- /docs/Remove User From Team_wf3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Remove User From Team_wf3.gif -------------------------------------------------------------------------------- /docs/SendEmailToUsersInRole1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/SendEmailToUsersInRole1.png -------------------------------------------------------------------------------- /docs/SendEmailToUsersInRole2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/SendEmailToUsersInRole2.png -------------------------------------------------------------------------------- /docs/SetMultiSelectOptionSet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/SetMultiSelectOptionSet.png -------------------------------------------------------------------------------- /docs/Update Child Records_wf1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Update Child Records_wf1.png -------------------------------------------------------------------------------- /docs/Update Child Records_wf2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Update Child Records_wf2.png -------------------------------------------------------------------------------- /docs/Check Associate Entity_wf1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Check Associate Entity_wf1.png -------------------------------------------------------------------------------- /docs/Check Associate Entity_wf2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Check Associate Entity_wf2.png -------------------------------------------------------------------------------- /docs/Check Associate Entity_wf3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Check Associate Entity_wf3.png -------------------------------------------------------------------------------- /docs/Entity Json Serializer_wf1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Entity Json Serializer_wf1.gif -------------------------------------------------------------------------------- /docs/Entity Json Serializer_wf2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Entity Json Serializer_wf2.gif -------------------------------------------------------------------------------- /docs/Entity Json Serializer_wf3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Entity Json Serializer_wf3.gif -------------------------------------------------------------------------------- /docs/Entity Json Serializer_wf4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Entity Json Serializer_wf4.gif -------------------------------------------------------------------------------- /docs/Entity Mobile Deep Link_wf1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Entity Mobile Deep Link_wf1.gif -------------------------------------------------------------------------------- /docs/Entity Mobile Deep Link_wf2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Entity Mobile Deep Link_wf2.gif -------------------------------------------------------------------------------- /docs/Entity Mobile Deep Link_wf3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Entity Mobile Deep Link_wf3.gif -------------------------------------------------------------------------------- /docs/Entity Mobile Deep Link_wf4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Entity Mobile Deep Link_wf4.gif -------------------------------------------------------------------------------- /docs/Entity Mobile Deep Link_wf5.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Entity Mobile Deep Link_wf5.gif -------------------------------------------------------------------------------- /docs/Entity Mobile Deep Link_wf6.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Entity Mobile Deep Link_wf6.gif -------------------------------------------------------------------------------- /docs/Entity Mobile Deep Link_wf7.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Entity Mobile Deep Link_wf7.gif -------------------------------------------------------------------------------- /docs/Entity Mobile Deep Link_wf8.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Entity Mobile Deep Link_wf8.gif -------------------------------------------------------------------------------- /docs/Entity Mobile Deep Link_wf9.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Entity Mobile Deep Link_wf9.gif -------------------------------------------------------------------------------- /docs/Home_workflowactivity5 (2).gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Home_workflowactivity5 (2).gif -------------------------------------------------------------------------------- /docs/Remove Role From a Team_wf2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Remove Role From a Team_wf2.gif -------------------------------------------------------------------------------- /docs/RetrieveUserBUDefaultTeam1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/RetrieveUserBUDefaultTeam1.gif -------------------------------------------------------------------------------- /docs/RetrieveUserBUDefaultTeam2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/RetrieveUserBUDefaultTeam2.gif -------------------------------------------------------------------------------- /docs/RetrieveUserBUDefaultTeam3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/RetrieveUserBUDefaultTeam3.gif -------------------------------------------------------------------------------- /docs/Share Record With User_wf1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Share Record With User_wf1.gif -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/UpgradeLog.htm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/msdyncrmWorkflowTools/UpgradeLog.htm -------------------------------------------------------------------------------- /docs/Apply Routing Rules_workflow6.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Apply Routing Rules_workflow6.gif -------------------------------------------------------------------------------- /docs/Apply Routing Rules_workflow7.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Apply Routing Rules_workflow7.gif -------------------------------------------------------------------------------- /docs/Apply Routing Rules_workflow8.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Apply Routing Rules_workflow8.gif -------------------------------------------------------------------------------- /docs/Check If User is in Team_wf2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Check If User is in Team_wf2.gif -------------------------------------------------------------------------------- /docs/Check If User is in Team_wf3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Check If User is in Team_wf3.gif -------------------------------------------------------------------------------- /docs/Check If User is in Team_wf4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Check If User is in Team_wf4.gif -------------------------------------------------------------------------------- /docs/Entity Attachment To Email_wf1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Entity Attachment To Email_wf1.gif -------------------------------------------------------------------------------- /docs/Entity Attachment To Email_wf2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Entity Attachment To Email_wf2.gif -------------------------------------------------------------------------------- /docs/Remove From Marketing List_wf2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Remove From Marketing List_wf2.gif -------------------------------------------------------------------------------- /.vs/Dynamics-365-Workflow-Tools/v15/.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/.vs/Dynamics-365-Workflow-Tools/v15/.suo -------------------------------------------------------------------------------- /docs/Copy Marketing List Members_wf2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Copy Marketing List Members_wf2.gif -------------------------------------------------------------------------------- /docs/Is Member Of Marketing List_wf2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Is Member Of Marketing List_wf2.gif -------------------------------------------------------------------------------- /docs/Is Member Of Marketing List_wf3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Is Member Of Marketing List_wf3.gif -------------------------------------------------------------------------------- /docs/Add Marketing List To Campaign_wf2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Add Marketing List To Campaign_wf2.gif -------------------------------------------------------------------------------- /docs/Query Values Step_workflowActivity5.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Query Values Step_workflowActivity5.gif -------------------------------------------------------------------------------- /docs/Query Values Step_workflowActivity6.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Query Values Step_workflowActivity6.gif -------------------------------------------------------------------------------- /docs/Query Values Step_workflowActivity7.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Query Values Step_workflowActivity7.gif -------------------------------------------------------------------------------- /docs/SendEmailFromTemplateToUsersInRole1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/SendEmailFromTemplateToUsersInRole1.png -------------------------------------------------------------------------------- /docs/SendEmailFromTemplateToUsersInRole2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/SendEmailFromTemplateToUsersInRole2.png -------------------------------------------------------------------------------- /docs/Unshare Record With Team.md: -------------------------------------------------------------------------------- 1 | Unshare Record With Team: Removes all privileges shared for a record with a Team. 2 | 3 | ![](UnshareRecordWithTeam1.gif) 4 | -------------------------------------------------------------------------------- /docs/Add User To Team.md: -------------------------------------------------------------------------------- 1 | This action is for adding users to Teams. 2 | 3 | ![](Add%20User%20To%20Team_wf1.gif) 4 | 5 | ![](Add%20User%20To%20Team_wf2.gif) 6 | -------------------------------------------------------------------------------- /docs/Check If User is in Role_userinrole1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Check If User is in Role_userinrole1.gif -------------------------------------------------------------------------------- /docs/Check If User is in Role_userinrole2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Check If User is in Role_userinrole2.gif -------------------------------------------------------------------------------- /docs/Check If User is in Role_userinrole3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Check If User is in Role_userinrole3.gif -------------------------------------------------------------------------------- /docs/Remove From All Marketing Lists_wf33.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Remove From All Marketing Lists_wf33.gif -------------------------------------------------------------------------------- /docs/Sharing Record Step_workflowActivity2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Sharing Record Step_workflowActivity2.gif -------------------------------------------------------------------------------- /docs/Sharing Record Step_workflowActivity3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Sharing Record Step_workflowActivity3.gif -------------------------------------------------------------------------------- /docs/Unshare Record With User.md: -------------------------------------------------------------------------------- 1 | Unshare Record With User: Temoves all the privileges in one record for a Specific User 2 | 3 | ![](UnshareRecordWithUser1.gif) 4 | -------------------------------------------------------------------------------- /docs/Force Calculate Rollup Field_workflow4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Force Calculate Rollup Field_workflow4.gif -------------------------------------------------------------------------------- /docs/Force Calculate Rollup Field_workflow5.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/Force Calculate Rollup Field_workflow5.gif -------------------------------------------------------------------------------- /docs/GetMultiSelectOptionSetInputParameters.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/GetMultiSelectOptionSetInputParameters.png -------------------------------------------------------------------------------- /docs/MapMultiSelectOptionSetInputProperties.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/MapMultiSelectOptionSetInputProperties.png -------------------------------------------------------------------------------- /docs/SetMultiSelectOptionSetInputParameters.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/SetMultiSelectOptionSetInputParameters.png -------------------------------------------------------------------------------- /docs/GetMultiSelectOptionSet_with_options_names.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/docs/GetMultiSelectOptionSet_with_options_names.jpg -------------------------------------------------------------------------------- /docs/Is Member Of Marketing List.md: -------------------------------------------------------------------------------- 1 | Documentation 2 | 3 | ![](Is%20Member%20Of%20Marketing%20List_wf2.gif) 4 | 5 | ![](Is%20Member%20Of%20Marketing%20List_wf3.gif) 6 | -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/msdyncrmWorkflowTools/codes.snk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/msdyncrmWorkflowTools/msdyncrmWorkflowTools/codes.snk -------------------------------------------------------------------------------- /docs/Remove User From Team.md: -------------------------------------------------------------------------------- 1 | This action is for removing user from a team, 2 | 3 | ![](Remove%20User%20From%20Team_wf1.gif) 4 | 5 | ![](Remove%20User%20From%20Team_wf3.gif) 6 | -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/.vs/msdyncrmWorkflowTools/v15/.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/msdyncrmWorkflowTools/.vs/msdyncrmWorkflowTools/v15/.suo -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/powerplatformWorkflowTools/codes.snk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/msdyncrmWorkflowTools/powerplatformWorkflowTools/codes.snk -------------------------------------------------------------------------------- /ISSUE_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | ### Expected behavior and actual behavior. 2 | 3 | ### Steps to reproduce the problem (screenshots are really usefull) 4 | 5 | ### CRM Version - online/onpremise - WorkflowTools version 6 | 7 | -------------------------------------------------------------------------------- /docs/Associate Entity.md: -------------------------------------------------------------------------------- 1 | This action is for N-N creation with the Associate Method. 2 | 3 | ![](Associate%20Entity_wf1.gif) 4 | 5 | ![](Associate%20Entity_wf2.gif) 6 | 7 | ![](Associate%20Entity_wf3.png) 8 | -------------------------------------------------------------------------------- /docs/Set State.md: -------------------------------------------------------------------------------- 1 | Thiss action is for changing the state and statuscode of the main entity. 2 | First, select the action from the list: 3 | ![](Set%20State_wf1.png) 4 | 5 | and then, fill the params: 6 | ![](Set%20State_wf2.png) 7 | -------------------------------------------------------------------------------- /docs/Set Process Stage.md: -------------------------------------------------------------------------------- 1 | This action is for changing the current stage of the active process of the record. 2 | 3 | For use this feature, select the action: 4 | ![](Set%20Process%20Stage_wf1.gif) 5 | 6 | Then select the parameters: 7 | 8 | ![](Set%20Process%20Stage_wf2.gif) 9 | -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/packages/Microsoft.IdentityModel.6.1.7600.16394/lib/net35/Microsoft.IdentityModel.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/msdyncrmWorkflowTools/packages/Microsoft.IdentityModel.6.1.7600.16394/lib/net35/Microsoft.IdentityModel.dll -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/packages/Microsoft.IdentityModel.6.1.7600.16394/Microsoft.IdentityModel.6.1.7600.16394.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/demianrasko/Dynamics-365-Workflow-Tools/HEAD/msdyncrmWorkflowTools/packages/Microsoft.IdentityModel.6.1.7600.16394/Microsoft.IdentityModel.6.1.7600.16394.nupkg -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/msdyncrmWorkflowTools/msdyncrmWorkflowTools.csproj.user: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ShowAllFiles 5 | 6 | -------------------------------------------------------------------------------- /docs/Goal Recalculate.md: -------------------------------------------------------------------------------- 1 | The Goal Recalculate function, forces the sync recalculation of the Goal that occours async in the server. 2 | For using this step, first select the action: 3 | 4 | ![](Goal%20Recalculate_wf1.gif) 5 | 6 | and then, fill the parameter with the Goal you want to recalculate: 7 | 8 | ![](goalrecalculate.png) 9 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | This is a Community Solution, so please share your ideas, code, issues, etc. 2 | If you have any new thing to be included, please open an issue to track it. 3 | If you have developed some new features, please create a pull request, and I'll check it to merge in the main branch. 4 | 5 | Thanks for your contribution!! 6 | 7 | Demian. 8 | -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/msdyncrmWorkflowTools.vssscc: -------------------------------------------------------------------------------- 1 | "" 2 | { 3 | "FILE_VERSION" = "9237" 4 | "ENLISTMENT_CHOICE" = "NEVER" 5 | "PROJECT_FILE_RELATIVE_PATH" = "" 6 | "NUMBER_OF_EXCLUDED_FILES" = "0" 7 | "ORIGINAL_PROJECT_FILE_PATH" = "" 8 | "NUMBER_OF_NESTED_PROJECTS" = "0" 9 | "SOURCE_CONTROL_SETTINGS_PROVIDER" = "PROJECT" 10 | } 11 | -------------------------------------------------------------------------------- /docs/Check Associate Entity.md: -------------------------------------------------------------------------------- 1 | This action is for checking an associate relationship. 2 | First, select the action: 3 | ![](Check%20Associate%20Entity_wf1.png) 4 | 5 | Then, select the parameters: 6 | ![](Check%20Associate%20Entity_wf2.png) 7 | 8 | Finnaly you can use the "Result" parameter as a Bool field: 9 | ![](Check%20Associate%20Entity_wf3.png) 10 | -------------------------------------------------------------------------------- /docs/GetRecordID.md: -------------------------------------------------------------------------------- 1 | This Action allows you to get a string with thew GUID of any record, from a record URL. 2 | 3 | For using this action, just select it from the list: 4 | 5 | ![](GetRecordID1.gif) 6 | 7 | And then, set the parameters: 8 | 9 | ![](GetRecordID2.gif) 10 | 11 | Finally, ypu can use the GUID as a text field: 12 | 13 | ![](GetRecordID3.gif) 14 | -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/msdyncrmWorkflowTools/msdyncrmWorkflowTools.csproj.vspscc: -------------------------------------------------------------------------------- 1 | "" 2 | { 3 | "FILE_VERSION" = "9237" 4 | "ENLISTMENT_CHOICE" = "NEVER" 5 | "PROJECT_FILE_RELATIVE_PATH" = "" 6 | "NUMBER_OF_EXCLUDED_FILES" = "0" 7 | "ORIGINAL_PROJECT_FILE_PATH" = "" 8 | "NUMBER_OF_NESTED_PROJECTS" = "0" 9 | "SOURCE_CONTROL_SETTINGS_PROVIDER" = "PROVIDER" 10 | } 11 | -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/msdyncrmWorkflowTools_Class/msdyncrmWorkflowTools_Class.csproj.vspscc: -------------------------------------------------------------------------------- 1 | "" 2 | { 3 | "FILE_VERSION" = "9237" 4 | "ENLISTMENT_CHOICE" = "NEVER" 5 | "PROJECT_FILE_RELATIVE_PATH" = "" 6 | "NUMBER_OF_EXCLUDED_FILES" = "0" 7 | "ORIGINAL_PROJECT_FILE_PATH" = "" 8 | "NUMBER_OF_NESTED_PROJECTS" = "0" 9 | "SOURCE_CONTROL_SETTINGS_PROVIDER" = "PROVIDER" 10 | } 11 | -------------------------------------------------------------------------------- /docs/IsMemberOfTeam.md: -------------------------------------------------------------------------------- 1 | This step is for asking if a defined user is member of a team or not. 2 | 3 | For using this activity you must access here and select the action: 4 | 5 | ![](IsMemberOfTeam1.gif) 6 | 7 | An fill the parameters (User and Team): 8 | 9 | ![](IsMemberOfTeam2.gif) 10 | 11 | Finally, you can use the result as you need (boolean): 12 | 13 | ![](IsMemberOfTeam3.gif) 14 | -------------------------------------------------------------------------------- /docs/RetrieveUserBUDefaultTeam.md: -------------------------------------------------------------------------------- 1 | This Action allows you to get the Default Team of the User's Business Unit. 2 | 3 | For using this action, just select it from the list: 4 | 5 | ![](RetrieveUserBUDefaultTeam1.gif) 6 | 7 | Then, fill the parameter: 8 | 9 | ![](RetrieveUserBUDefaultTeam2.gif) 10 | 11 | And you can use the Team in other actions: 12 | ![](RetrieveUserBUDefaultTeam3.gif) 13 | -------------------------------------------------------------------------------- /docs/SendEmailToUsersInRole.md: -------------------------------------------------------------------------------- 1 | This step allows you to add users that have assigned specied security role as recipients to a previous created email. 2 | 3 | For using this activity you must access here and select Send Email To Users In Role: 4 | 5 | ![](SendEmailToUsersInRole1.png) 6 | 7 | Then in the activity you can fill all the parameters: 8 | 9 | ![](SendEmailToUsersInRole2.png) 10 | -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/msdyncrmWorkflowTools_ConsoleTest/msdyncrmWorkflowTools_ConsoleTest.csproj.vspscc: -------------------------------------------------------------------------------- 1 | "" 2 | { 3 | "FILE_VERSION" = "9237" 4 | "ENLISTMENT_CHOICE" = "NEVER" 5 | "PROJECT_FILE_RELATIVE_PATH" = "" 6 | "NUMBER_OF_EXCLUDED_FILES" = "0" 7 | "ORIGINAL_PROJECT_FILE_PATH" = "" 8 | "NUMBER_OF_NESTED_PROJECTS" = "0" 9 | "SOURCE_CONTROL_SETTINGS_PROVIDER" = "PROVIDER" 10 | } 11 | -------------------------------------------------------------------------------- /docs/Add Role To Team.md: -------------------------------------------------------------------------------- 1 | This step allows you to Add security role to a Team. 2 | 3 | 4 | For using this activity you must access here and select Add Role To Team. 5 | Then in the activity you can fill all the parameters: 6 | 7 | ![](Add%20Role%20To%20Team_wf2.gif) 8 | 9 | The Parameters are: 10 | * Role: Select the Root Security Role (the parent one). 11 | * Team: Select the team 12 | -------------------------------------------------------------------------------- /docs/CountChildEntityRecord.md: -------------------------------------------------------------------------------- 1 | This step is for getting the total number of child records. 2 | 3 | For using this activity you must access here and select the action: 4 | 5 | ![](CountChildEntityRecord1.gif) 6 | 7 | An fill the parameters: 8 | 9 | ![](CountChildEntityRecord4.gif) 10 | 11 | Finally, you can use the int Result of the app as you need: 12 | 13 | ![](CountChildEntityRecord3.gif) 14 | -------------------------------------------------------------------------------- /docs/Remove Role From Team.md: -------------------------------------------------------------------------------- 1 | This step allows you to Remove Role From a Team. 2 | 3 | For using this activity you must access here and select Remove Role From Team. 4 | Then in the activity you can fill all the parameters: 5 | 6 | ![](Remove%20Role%20From%20Team_wf2.gif) 7 | 8 | The Parameters are: 9 | * Role: Select the Root Security Role (the parent one). 10 | * Team: Select the team 11 | -------------------------------------------------------------------------------- /docs/Remove Role From User.md: -------------------------------------------------------------------------------- 1 | This step allows you to Remove Role From a User. 2 | 3 | For using this activity you must access here and select Remove Role From User. 4 | Then in the activity you can fill all the parameters: 5 | 6 | ![](Remove%20Role%20From%20User_wf3.gif) 7 | 8 | The Parameters are: 9 | * Role: Select the Root Security Role (the parent one). 10 | * User: Select the user 11 | -------------------------------------------------------------------------------- /docs/Remove Role From a Team.md: -------------------------------------------------------------------------------- 1 | This step allows you to Remove Role From a Team. 2 | 3 | For using this activity you must access here and select Remove Role From Team. 4 | Then in the activity you can fill all the parameters: 5 | 6 | ![](Remove Role From a Team_wf2.gif) 7 | 8 | The Parameters are: 9 | * Role: Select the Root Security Role (the parent one). 10 | * Team: Select the user 11 | -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/msdyncrmWorkflowTools/packages.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /docs/Add Role To User.md: -------------------------------------------------------------------------------- 1 | This step allows you to Add security role to a User. 2 | 3 | 4 | For using this activity you must access here and select Add Role To User. 5 | Then in the activity you can fill all the parameters: 6 | 7 | ![](Add%20Role%20To%20User_wf2.gif) 8 | 9 | The Parameters are: 10 | * Role: Select the Root Security Role (the parent one). 11 | * User: Select the user 12 | 13 | -------------------------------------------------------------------------------- /docs/Get Initiating User.md: -------------------------------------------------------------------------------- 1 | Get Initiating User Action, returns the user that originally started the Workflow execution. 2 | For using this action, select from the list: 3 | 4 | ![](Get%20Initiating%20User_wf1.gif) 5 | 6 | This action, doesn't have any input parameter, and only one output param with the User Lookup and you can use it like the following example: 7 | 8 | ![](Get%20Initiating%20User_wf2.gif) 9 | -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/powerplatformWorkflowTools/packages.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /docs/CurrencyConvert.md: -------------------------------------------------------------------------------- 1 | This Action allows you to convert an amount to any currency. 2 | Convertion is based on Google: http://finance.google.com/finance/converter 3 | 4 | For using this action, just select it from the list: 5 | 6 | ![](CurrencyConvert1.gif) 7 | 8 | And then, set the parameters: 9 | 10 | ![](CurrencyConvert2.gif) 11 | 12 | Finnaly you can use the result: 13 | 14 | ![](CurrencyConvert3.gif) 15 | -------------------------------------------------------------------------------- /docs/OrgDBSettingsExample.md: -------------------------------------------------------------------------------- 1 | For using the OrgDbSettings Update&Retrieve actions, you can create a customized entity linke this one: 2 | 3 | ![](OrgDBSettingsExample1.png) 4 | 5 | Customize a retrieve and Update workflows to fill and update the values so you can run the workflow to retrieve the values, and then, on update, change the values: 6 | 7 | ![](OrgDBSettingsExample2.png) 8 | 9 | ![](OrgDBSettingsExample3.png) 10 | -------------------------------------------------------------------------------- /docs/Sales Literature To Email.md: -------------------------------------------------------------------------------- 1 | This step allows you to retrieve Documents from Sales Literature, and attach them to a created Email record. 2 | You can also filter the attached Files by FileName. 3 | 4 | For using this activity you must access here and select Sales Literature To Email: 5 | 6 | ![](SalesLiterature_wf1.gif) 7 | 8 | Then in the activity you can fill all the parameters: 9 | 10 | ![](SalesLiterature_wf2.gif) 11 | -------------------------------------------------------------------------------- /docs/DeleteRecordAuditHistory.md: -------------------------------------------------------------------------------- 1 | This Action deletes the Audit History of one record. 2 | 3 | 4 | For use this in Workflows here are the steps: 5 | 6 | ![](DeleteRecordAuditHistory1.gif) 7 | 8 | ![](DeleteRecordAuditHistory2.gif) 9 | 10 | Then if you have an Audit history like this one: 11 | ![](DeleteRecordAuditHistory3.gif) 12 | 13 | After the action execution it will lilke this: 14 | ![](DeleteRecordAuditHistory4.gif) 15 | 16 | -------------------------------------------------------------------------------- /docs/Email To Team.md: -------------------------------------------------------------------------------- 1 | This step allows you to add all the users from a Team on the "To" field of the email record. 2 | 3 | 4 | For using this activity you must access here and select Email To Team: 5 | 6 | ![](Email%20To%20Team_wf1.gif) 7 | 8 | And then you can fill the Parameters: 9 | 10 | ![](Email%20To%20Team_wf2.gif) 11 | 12 | Then you can see all the users added on the email: 13 | 14 | ![](Email%20To%20Team_wf3.gif) 15 | -------------------------------------------------------------------------------- /docs/GetSharepointLocationURL.md: -------------------------------------------------------------------------------- 1 | This step will receive the record url from dynamics and return the Absolute URL of the sharepoint location. 2 | 3 | For using this activity you select the GetSharepointLocationURL step: 4 | ![](GetSharepointLocation1.png) 5 | 6 | Then pass the record URL as the input parameter: 7 | ![](GetSharepointLocation2.png) 8 | 9 | And to use you look for the Get Location URL and use the SharepointLocationURL property: 10 | ![](GetSharepointLocation3.png) 11 | -------------------------------------------------------------------------------- /docs/GetAppModuleID.md: -------------------------------------------------------------------------------- 1 | This step is for getting the App ID from the App Name (not the dysplay name). 2 | 3 | For using this activity you must access here and select the action: 4 | 5 | ![](GetAppModuleID1.gif) 6 | 7 | Then, the the input parameter with the App Name, you can get the name from here: 8 | 9 | ![](GetAppModuleID2.gif) 10 | 11 | An fill the parameter: 12 | 13 | ![](GetAppModuleID3.gif) 14 | 15 | Finally, you can use the GUID of the app as you need: 16 | 17 | ![](GetAppModuleID4.gif) 18 | -------------------------------------------------------------------------------- /docs/Disassociate Entity.md: -------------------------------------------------------------------------------- 1 | Disassociate Entity is an action for removing N-N relationships. 2 | 3 | For using this action, just select the action: 4 | 5 | ![](Disassociate%20Entity_wf1.png) 6 | 7 | Then, fill the 2 parameters, and that's all: 8 | 9 | ![](Disassociate%20Entity_wf2.png) 10 | 11 | The paramaters are: 12 | * Relationship Name: with the schame name of the N-N relationship 13 | * Record URL: URL of the record to associate to the context entity of the workflow execution 14 | 15 | -------------------------------------------------------------------------------- /docs/Send Email.md: -------------------------------------------------------------------------------- 1 | This action is for Email Sending. 2 | Now you can send all the previous created emails, and with this action, just execute the SendEmailRequest Method for these emails. 3 | 4 | For using this action, please select "Send Email": 5 | ![](Send%20Email_wf1.gif) 6 | 7 | Then, you must pass the Email reference to be send: 8 | 9 | ![](Send%20Email_wf2.gif) 10 | 11 | Finnaly, as an output parameters you can get the final subjet with the CRM token: 12 | 13 | ![](Send%20Email_wf3.gif) 14 | -------------------------------------------------------------------------------- /docs/SendEmailFromTemplateToUsersInRole.md: -------------------------------------------------------------------------------- 1 | This step allows you to create and send an email based on template to all users that have assigned a defined security role. 2 | In this case, it will create one individual email for each users identified. 3 | 4 | For using this activity you must access here and select Send Email From Template To Users In Role: 5 | 6 | ![](SendEmailFromTemplateToUsersInRole1.png) 7 | 8 | Then in the activity you can fill all the parameters: 9 | 10 | ![](SendEmailFromTemplateToUsersInRole2.png) 11 | -------------------------------------------------------------------------------- /docs/ExecuteWorkflowByID.md: -------------------------------------------------------------------------------- 1 | This step allows you to execute any Workflow, just passing as a parameter the GUID in string of the context record. 2 | It'srequired to pass a GUID of an Entity Type supported by the Workflow. 3 | 4 | For using this activity you must access here and select Calculate Price action: 5 | 6 | ![](ExecuteWorkflowById1.png) 7 | 8 | Then in the activity you can fill the parameters with the URL of the record: 9 | 10 | ![](ExecuteWorkflowById2.png) 11 | 12 | NOTE: Be carefull to not create infinite Loops. 13 | -------------------------------------------------------------------------------- /docs/Encrypt Text.md: -------------------------------------------------------------------------------- 1 | Encrypt Text action allow to retrieve the MD5 hash image of a text. Really use for Password fields. 2 | 3 | For using this action, we can select the action: 4 | 5 | ![](Encrypt%20Text_wf1.gif) 6 | 7 | Pass the parameter with the string to be Encrypt: 8 | 9 | ![](Encrypt%20Text_wf3.gif) 10 | 11 | and then we can use the output parameter with the Hash: 12 | 13 | ![](EncryptText1.png) 14 | 15 | 16 | If we use this action, the result of the MD5 is like this: 17 | 18 | ![](EncryptText2.png) 19 | -------------------------------------------------------------------------------- /docs/GetOptionSetValue.md: -------------------------------------------------------------------------------- 1 | This step allows you to retrieve the int value of the selected value of the optionset in the record. 2 | 3 | For using this activity you must access here and select Get Option Set Value action: 4 | 5 | ![](GetOptionSetValue1.png) 6 | 7 | Then in the activity you can fill the parameters with the URL of the record: 8 | 9 | ![](GetOptionSetValue2.png) 10 | 11 | The parameters are: 12 | * Source Record URL: complete URL to the record 13 | * Attribute Name: schema name of the field to be retrieved the value 14 | -------------------------------------------------------------------------------- /docs/CreateTeam.md: -------------------------------------------------------------------------------- 1 | This step allows you to create a new Team on the fly. 2 | 3 | 4 | 5 | For using this activity you must access here and select Create Team action: 6 | 7 | ![](CreateTeam1.png) 8 | 9 | Then in the activity you can fill the parameters with the URL of the record: 10 | 11 | ![](CreateTeam2.png) 12 | 13 | Parameters: 14 | * Team Name: name os the new team 15 | * Team Type: 0 for Owner team / 1 for access team 16 | * Administrator: user to be administrator of the team 17 | * Business Unit: set the business unit of the team 18 | -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/msdyncrmWorkflowTools_Class/packages.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /docs/Entity Json Serializer.md: -------------------------------------------------------------------------------- 1 | This step allows you to Serialize an entity data to Json format. 2 | 3 | For using this activity you must access here and select Entity Json Serializer: 4 | ![](Entity%20Json%20Serializer_wf1.gif) 5 | 6 | 7 | Then in the activity you can fill the parameter with the Record URL to be serialized: 8 | ![](Entity%20Json%20Serializer_wf2.gif) 9 | 10 | Finnaly, you can use the jSon string of the result: 11 | ![](Entity%20Json%20Serializer_wf3.gif) 12 | 13 | An example of an account serialized to jSon: 14 | ![](Entity%20Json%20Serializer_wf4.gif) 15 | -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/msdyncrmWorkflowTools_Class/app.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /docs/Geocode Address.md: -------------------------------------------------------------------------------- 1 | The Geocode Address action allows you to retrieve the Latitude & Longitude from an address in a string. 2 | This solution is based on BingMaps. 3 | 4 | For using this activity, first you need to select the this action: 5 | 6 | ![](Geocode%20Address_wf1.gif) 7 | 8 | Then you must set the two input parameters: 9 | 10 | ![](Geocode%20Address_wf2.gif) 11 | 12 | NOTE: You must provide a Big Maps valid Key. 13 | 14 | And Finnaly you can use the Latitude and Longitude output parameters: 15 | 16 | ![](Geocode%20Address_wf3.gif) 17 | 18 | NOTE: the latitude and Longitude output parameters are numbers (Decimal) 19 | -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/msdyncrmWorkflowTools/Newtonsoft/Linq/MergeNullValueHandling.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Newtonsoft.Json.Linq 4 | { 5 | /// 6 | /// Specifies how null value properties are merged. 7 | /// 8 | [Flags] 9 | public enum MergeNullValueHandling 10 | { 11 | /// 12 | /// The content's null value properties will be ignored during merging. 13 | /// 14 | Ignore = 0, 15 | 16 | /// 17 | /// The content's null value properties will be merged. 18 | /// 19 | Merge = 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/msdyncrmWorkflowTools_Class/Newtonsoft/Linq/MergeNullValueHandling.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Newtonsoft.Json.Linq 4 | { 5 | /// 6 | /// Specifies how null value properties are merged. 7 | /// 8 | [Flags] 9 | public enum MergeNullValueHandling 10 | { 11 | /// 12 | /// The content's null value properties will be ignored during merging. 13 | /// 14 | Ignore = 0, 15 | 16 | /// 17 | /// The content's null value properties will be merged. 18 | /// 19 | Merge = 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /docs/CalculatePrice.md: -------------------------------------------------------------------------------- 1 | This step allows you to execute the custom CalculatePrice to entities like Opportunity, Quote, Order and Invoice. 2 | First, you need to disable the OOBPriceCalculationEnabled parameter on System setting (System pricing calculation to No). 3 | Second, you cand develop your own Plugin to make your pricing calculations, as explained in the SDK: https://msdn.microsoft.com/en-us/library/dn817877.aspx 4 | 5 | For using this activity you must access here and select Calculate Price action: 6 | 7 | ![](calculateprice1.png) 8 | 9 | Then in the activity you can fill the parameters with the URL of the record: 10 | 11 | ![](calculateprice2.png) 12 | -------------------------------------------------------------------------------- /docs/Check If User is in Team.md: -------------------------------------------------------------------------------- 1 | This step is very usefull to check if the user that initialized the Workflow execution, is a mamber of a specified Team. 2 | 3 | For using this activity you must access here and select CheckUserInTeam: 4 | 5 | ![](Check%20If%20User%20is%20in%20Team_wf2.gif) 6 | 7 | Then, you must select the Team you want to check: 8 | 9 | ![](Check%20If%20User%20is%20in%20Team_wf3.gif) 10 | The full params description is: 11 | * **Team (required)** : the Team to be searched 12 | * **IsUserInRole** : boolean with the result 13 | 14 | After that you can use the result on your fields: 15 | ![](Check%20If%20User%20is%20in%20Team_wf4.gif) 16 | -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/msdyncrmWorkflowTools/Newtonsoft/Linq/MergeArrayHandling.cs: -------------------------------------------------------------------------------- 1 | namespace Newtonsoft.Json.Linq 2 | { 3 | /// 4 | /// Specifies how JSON arrays are merged together. 5 | /// 6 | public enum MergeArrayHandling 7 | { 8 | /// Concatenate arrays. 9 | Concat = 0, 10 | 11 | /// Union arrays, skipping items that already exist. 12 | Union = 1, 13 | 14 | /// Replace all array items. 15 | Replace = 2, 16 | 17 | /// Merge array items together, matched by index. 18 | Merge = 3 19 | } 20 | } -------------------------------------------------------------------------------- /docs/Delete Option Value.md: -------------------------------------------------------------------------------- 1 | Delete Option Value is an action to Remove existing values from global and local OptionSets. 2 | For using this action, first select the action: 3 | 4 | ![](Delete%20Option%20Value_wf1.png) 5 | 6 | Then fill all the paramaters: 7 | 8 | ![](Delete%20Option%20Value_wf2.png) 9 | 10 | The parameters are: 11 | * **Global Option Set**: set if the OptionSet is Global or not 12 | * **Attribute Name**: name of the local or global OptionSet 13 | * **Entity Name**: (optional) with the name of the entity. Only required for local optionsets 14 | * **Option Value**: Value of the new option to be added 15 | 16 | NOTE: It could requires to publish customizations. 17 | -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/msdyncrmWorkflowTools_Class/Newtonsoft/Linq/MergeArrayHandling.cs: -------------------------------------------------------------------------------- 1 | namespace Newtonsoft.Json.Linq 2 | { 3 | /// 4 | /// Specifies how JSON arrays are merged together. 5 | /// 6 | public enum MergeArrayHandling 7 | { 8 | /// Concatenate arrays. 9 | Concat = 0, 10 | 11 | /// Union arrays, skipping items that already exist. 12 | Union = 1, 13 | 14 | /// Replace all array items. 15 | Replace = 2, 16 | 17 | /// Merge array items together, matched by index. 18 | Merge = 3 19 | } 20 | } -------------------------------------------------------------------------------- /docs/Numeric Functions.md: -------------------------------------------------------------------------------- 1 | This step allows you execute some basic numeric funcions with two decimal numbers. 2 | 3 | 4 | For using this activity you must access here and select Numeric Functions. 5 | Then in the activity you can fill all the parameters: 6 | 7 | ![](Numeric%20Functions_wf1.gif) 8 | 9 | The parameters are two decimal numbers: 10 | 11 | ![](Numeric%20Functions_wf2.gif) 12 | 13 | The Output Parameters are: 14 | * Add: sum of the numbers. 15 | * Subtract: subtraction of the numbers 16 | * Multiply: multiplication of the numbers 17 | * Divide: divide of the numbers 18 | 19 | Then you can use the output numbers in other steps: 20 | ![](Numeric%20Functions_wf3.gif) 21 | 22 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Is your feature request related to a problem? Please describe.** 11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 12 | 13 | **Describe the solution you'd like** 14 | A clear and concise description of what you want to happen. 15 | 16 | **Describe alternatives you've considered** 17 | A clear and concise description of any alternative solutions or features you've considered. 18 | 19 | **Additional context** 20 | Add any other context or screenshots about the feature request here. 21 | -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/msdyncrmWorkflowTools/Newtonsoft/Serialization/DefaultNamingStrategy.cs: -------------------------------------------------------------------------------- 1 | namespace Newtonsoft.Json.Serialization 2 | { 3 | /// 4 | /// The default naming strategy. Property names and dictionary keys are unchanged. 5 | /// 6 | public class DefaultNamingStrategy : NamingStrategy 7 | { 8 | /// 9 | /// Resolves the specified property name. 10 | /// 11 | /// The property name to resolve. 12 | /// The resolved property name. 13 | protected override string ResolvePropertyName(string name) 14 | { 15 | return name; 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/msdyncrmWorkflowTools_Class/Newtonsoft/Serialization/DefaultNamingStrategy.cs: -------------------------------------------------------------------------------- 1 | namespace Newtonsoft.Json.Serialization 2 | { 3 | /// 4 | /// The default naming strategy. Property names and dictionary keys are unchanged. 5 | /// 6 | public class DefaultNamingStrategy : NamingStrategy 7 | { 8 | /// 9 | /// Resolves the specified property name. 10 | /// 11 | /// The property name to resolve. 12 | /// The resolved property name. 13 | protected override string ResolvePropertyName(string name) 14 | { 15 | return name; 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /docs/CalculateAgregateDate.md: -------------------------------------------------------------------------------- 1 | This Action allows you to execute a dynamic FetchXML with date agregation and return the result date. 2 | Very usefull for example to retrieve the max/min date from child records from a customer. 3 | 4 | First, you need to select the action: 5 | 6 | ![](CalculateAgregateDate1.png 7 | 8 | Then, you complete the FetchXML: 9 | 10 | ![](CalculateAgregateDate2.png) 11 | 12 | And finnaly you can use the response on the workflow like this: 13 | 14 | ![](CalculateAgregateDate3.png) 15 | 16 | An example of the fetchXML to retrieve the max date of the related activities of the account: 17 | ![](CalculateAgregateDate4.png) 18 | 19 | Note that the {PARENT_GUID} text will be replaced dynamically with the entity context Guid. 20 | -------------------------------------------------------------------------------- /docs/GetAppRecordUrl.md: -------------------------------------------------------------------------------- 1 | This step is for getting the Record URL for a defined App from the App Name (not the dysplay name). 2 | 3 | For using this activity you must access here and select the action: 4 | 5 | ![](GetAppRecordUrl1.gif) 6 | 7 | Then, the the input parameter with the App Name, you can get the name from here: 8 | 9 | ![](GetAppModuleID2.gif) 10 | 11 | An fill the parameter: 12 | 13 | ![](GetAppRecordUrl3.gif) 14 | 15 | Finally, you can use the GUID of the app as you need: 16 | 17 | ![](GetAppRecordUrl4.gif) 18 | 19 | The result is a string like this one: https://orgname.crm4.dynamics.com:443/main.aspx?etc=1&id=aaa19cdd-88df-e311-b8e5-6c3be5a8b200&histKey=612873746&newWindow=true&pagetype=entityrecord&appid=054cec0e-8dfb-e811-a95a-000d3a45d5aa 20 | -------------------------------------------------------------------------------- /docs/SetLookupFieldFromRecordUrl.md: -------------------------------------------------------------------------------- 1 | ## Set Lookup Field from Record URL 2 | 3 | This action lets you set a lookup field on the current entity using a Record URL. This is useful if you need to set a lookup value but are unable to get an actual entity reference. 4 | For example, you cannot set a lookup field with the Update Child Records workflow, but you could set a field on the child records to the record URL and then run a workflow on the child to set the lookup field from that record URL with this action. 5 | 6 | ### Parameters 7 | **Record URL:** The record URL of the record that you want to put into the lookup field. 8 | 9 | **Lookup Field Name:** The name of the lookup field that you want to set on the entity your workflow is running against. Eg. "pub_userlookup" 10 | -------------------------------------------------------------------------------- /docs/JSONParser.md: -------------------------------------------------------------------------------- 1 | This step allows you to get any string value from a JSON. this method uses JSON.NET library (https://www.newtonsoft.com) and this method: 2 | https://www.newtonsoft.com/json/help/html/SelectToken.htm 3 | 4 | For using this activity you must access here and select JSON Parser action: 5 | 6 | ![](JSONParser1.png) 7 | 8 | Then in the activity you can fill the parameters with the full JSON text and then the Path to get the value: 9 | 10 | ![](JSONParser2.png) 11 | 12 | Finnaly you can retrieve the value from the result, and use it in any method: 13 | 14 | ![](JSONParser3.png) 15 | 16 | An example on this if a JSON returned by Azure IoT: 17 | 18 | ![](JSONParser4.png) 19 | 20 | using this path "parameters.DiagnosticCode" returns a velue of "107". 21 | 22 | Thanks! 23 | -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/msdyncrmWorkflowTools/Newtonsoft/Linq/JsonPath/QueryFilter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | 4 | namespace Newtonsoft.Json.Linq.JsonPath 5 | { 6 | internal class QueryFilter : PathFilter 7 | { 8 | public QueryExpression Expression { get; set; } 9 | 10 | public override IEnumerable ExecuteFilter(IEnumerable current, bool errorWhenNoMatch) 11 | { 12 | foreach (JToken t in current) 13 | { 14 | foreach (JToken v in t) 15 | { 16 | if (Expression.IsMatch(v)) 17 | { 18 | yield return v; 19 | } 20 | } 21 | } 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/msdyncrmWorkflowTools_Class/Newtonsoft/Linq/JsonPath/QueryFilter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | 4 | namespace Newtonsoft.Json.Linq.JsonPath 5 | { 6 | internal class QueryFilter : PathFilter 7 | { 8 | public QueryExpression Expression { get; set; } 9 | 10 | public override IEnumerable ExecuteFilter(IEnumerable current, bool errorWhenNoMatch) 11 | { 12 | foreach (JToken t in current) 13 | { 14 | foreach (JToken v in t) 15 | { 16 | if (Expression.IsMatch(v)) 17 | { 18 | yield return v; 19 | } 20 | } 21 | } 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /docs/ResolveCase.md: -------------------------------------------------------------------------------- 1 | 2 | **Resolve Case** 3 | 4 | This step allows you to specify the Resolution (subject) and Remarks (description) fields on the Case Resolution entity, when resolving an Case via workflow. 5 | 6 | Normally, when resolving an Case with a workflow, you are unable to specify these fields and they will created with blank values. 7 | 8 | This is especially useful when importing Case records and wanting to resolve them immediately. 9 | 10 | **Parameters** 11 | 12 | **Case:** The Case to resolve 13 | 14 | **Case Resolution (optional):** This populates the resolution (subject) field on the Case Resolution activity 15 | 16 | **Resolution Description (optional):** This populates the remarks (description) field on the Case Resolution activity 17 | 18 | ![](ResolveCaseParameters.png) -------------------------------------------------------------------------------- /docs/Check If User is in Role.md: -------------------------------------------------------------------------------- 1 | This step is very usefull to check if the user that initialized the Workflow execution, has one specified security role 2 | 3 | For using this activity you must access here and select CheckUserInRole: 4 | 5 | ![](Check%20If%20User%20is%20in%20Role_userinrole1.gif) 6 | 7 | Then, you must select the Security Role you want to check: 8 | 9 | ![](Check%20If%20User%20is%20in%20Role_userinrole2.gif) 10 | The full params description is: 11 | * **Role (required)** : the Security Role to be searched. you must select the Security role from the "parent" BU. This will check the role in all BUs. 12 | * **IsUserInRole** : boolean with the result 13 | 14 | After that you can use the result on your fields: 15 | ![](Check%20If%20User%20is%20in%20Role_userinrole3.gif) 16 | -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/msdyncrmWorkflowTools_Tests/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | [assembly: AssemblyTitle("msdyncrmWorkflowTools_Tests")] 6 | [assembly: AssemblyDescription("")] 7 | [assembly: AssemblyConfiguration("")] 8 | [assembly: AssemblyCompany("")] 9 | [assembly: AssemblyProduct("msdyncrmWorkflowTools_Tests")] 10 | [assembly: AssemblyCopyright("Copyright © 2018")] 11 | [assembly: AssemblyTrademark("")] 12 | [assembly: AssemblyCulture("")] 13 | 14 | [assembly: ComVisible(false)] 15 | 16 | [assembly: Guid("26d3954c-576f-4c3e-91c5-5baacf2fd029")] 17 | 18 | // [assembly: AssemblyVersion("1.0.*")] 19 | [assembly: AssemblyVersion("1.0.0.0")] 20 | [assembly: AssemblyFileVersion("1.0.0.0")] 21 | -------------------------------------------------------------------------------- /docs/Add To Marketing List.md: -------------------------------------------------------------------------------- 1 | This step is very usefull to add members to a Marketing Lists (accounts, contacts and leads) 2 | 3 | For using this activity you must access here and select AddToMarketingList: 4 | 5 | ![](Add%20To%20Marketing%20List_w2.gif) 6 | 7 | Then, you must select the Marketing List, an the record you want to add to the list. You must select only one of account, contact or lead: 8 | 9 | ![](Add%20To%20Marketing%20List_wf3.gif) 10 | 11 | The full params description is: 12 | * **Marketing List (required)** : the marketing List 13 | * **Account** : Account reference to be added 14 | * **Contact** : Contact reference to be added 15 | * **Lead** : Lead reference to be added 16 | 17 | Note that you must select a record type to be added, on the same type of the MArketing List 18 | -------------------------------------------------------------------------------- /docs/Delete Record.md: -------------------------------------------------------------------------------- 1 | This step allows you to Delete Records. 2 | 3 | For using this activity you must access here and select Delete Record: 4 | ![](Delete%20Record_wf1.gif) 5 | 6 | 7 | Then in the activity you can fill all the parameters if you want to delete from the Record URL: 8 | ![](Delete%20Record_wf2.gif) 9 | 10 | Or if you want to delete using the Entity GUID: 11 | ![](Delete%20Record_wf3.gif) 12 | 13 | The Input Parameters are: 14 | * Delete Using Record URL: to select the Deletion mode 15 | * Record URL: Required if "Delete Using Record URL" is true 16 | * Entity Type Name: entity schema name (in lowercase) of the entity type to be deleted. Required if "Delete Using Record URL" is false 17 | * Entity Guid: Entity guid to be deleted. Required if "Delete Using Record URL" is false 18 | -------------------------------------------------------------------------------- /docs/Insert Option Value.md: -------------------------------------------------------------------------------- 1 | Insert Option Value is an action to Add new values to global and local OptionSets. 2 | For using this action, first select the action: 3 | 4 | ![](Insert%20Option%20Value_wf1.png) 5 | 6 | Then fill all the paramaters: 7 | 8 | ![](Insert%20Option%20Value_wf2.png) 9 | 10 | The parameters are: 11 | * **Global Option Set**: set if the OptionSet is Global or not 12 | * **Attribute Name**: name of the local or global OptionSet 13 | * **Entity Name**: (optional) with the name of the entity. Only required for local optionsets 14 | * **Option Text**: Text of the new option to be added (label) 15 | * **Option Value**: Value of the new option to be added 16 | * **Language Code**: Language Code of the label 17 | 18 | 19 | NOTE: This action only works for Async Workflows. 20 | -------------------------------------------------------------------------------- /docs/Qualify Lead.md: -------------------------------------------------------------------------------- 1 | This step allows you to Qualify a Lead. 2 | 3 | For using this activity you must access here and select Qualify Lead: 4 | ![](Qualify%20Lead_wf1.gif) 5 | 6 | 7 | Then in the activity you can fill the following parameters: 8 | ![](QualifyLead1.gif) 9 | 10 | The Parameters are: 11 | * Lead: Lead to be Qualified 12 | * Create Account: true/false to set if we want to create a new account 13 | * Create Contact: true/false to set if we want to create a new contact 14 | * Create Opportunity: true/false to set if we want to create a new Opportunity 15 | * Existing Account: to set an existing account to be set on new created Opportunity 16 | * Existing Contact: to set an existing contact to be set on new created Opportunity 17 | * LeadStatus: "3" for example for Qualify Status 18 | -------------------------------------------------------------------------------- /docs/TranslateText.md: -------------------------------------------------------------------------------- 1 | This Action allows you to translate a text to any language. 2 | Supported Languages are listed here: https://docs.microsoft.com/en-us/azure/cognitive-services/translator/languages 3 | For this, I'm using the Translator Text API described here: https://docs.microsoft.com/en-us/azure/cognitive-services/translator/quickstarts/csharp 4 | 5 | For using this action, just select it from the list: 6 | 7 | ![](49.gif) 8 | 9 | And then, introduce the parameters: 10 | 11 | ![](49.2.gif) 12 | 13 | Finally you have three output parameter, with the text: 14 | 15 | ![](49.3.gif) 16 | 17 | For getting the Autorization key, you need to create in your Azure Environment, a Cognitive service with API Type "Translator Text API" like this one: 18 | ![](49.1.gif) 19 | 20 | and retrieve the key from here: 21 | ![](49.0.gif) 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /docs/Remove From Marketing List.md: -------------------------------------------------------------------------------- 1 | This step is very usefull to remove members from a Marketing Lists (accounts, contacts and leads) 2 | 3 | For using this activity you must access here and select RemoveFromMarketingList: 4 | 5 | ![](Remove%20From%20Marketing%20List_wf2.gif) 6 | 7 | Then, you must select the Marketing List, an the record you want to remove from the list. You must select only one of account, contact or lead: 8 | 9 | ![](Remove%20From%20Marketing%20List_w33.gif) 10 | 11 | The full params description is: 12 | * **Marketing List (required)** : the marketing List 13 | * **Account** : Account reference to be removed 14 | * **Contact** : Contact reference to be removed 15 | * **Lead** : Lead reference to be removed 16 | 17 | Note that you must select a record type to be added, on the same type of the Marketing List 18 | -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/msdyncrmWorkflowTools/Newtonsoft/Linq/JsonPath/ArrayMultipleIndexFilter.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace Newtonsoft.Json.Linq.JsonPath 4 | { 5 | internal class ArrayMultipleIndexFilter : PathFilter 6 | { 7 | public List Indexes { get; set; } 8 | 9 | public override IEnumerable ExecuteFilter(IEnumerable current, bool errorWhenNoMatch) 10 | { 11 | foreach (JToken t in current) 12 | { 13 | foreach (int i in Indexes) 14 | { 15 | JToken v = GetTokenIndex(t, errorWhenNoMatch, i); 16 | 17 | if (v != null) 18 | { 19 | yield return v; 20 | } 21 | } 22 | } 23 | } 24 | } 25 | } -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/msdyncrmWorkflowTools_Class/Newtonsoft/Linq/JsonPath/ArrayMultipleIndexFilter.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace Newtonsoft.Json.Linq.JsonPath 4 | { 5 | internal class ArrayMultipleIndexFilter : PathFilter 6 | { 7 | public List Indexes { get; set; } 8 | 9 | public override IEnumerable ExecuteFilter(IEnumerable current, bool errorWhenNoMatch) 10 | { 11 | foreach (JToken t in current) 12 | { 13 | foreach (int i in Indexes) 14 | { 15 | JToken v = GetTokenIndex(t, errorWhenNoMatch, i); 16 | 17 | if (v != null) 18 | { 19 | yield return v; 20 | } 21 | } 22 | } 23 | } 24 | } 25 | } -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/msdyncrmWorkflowTools_ConsoleTest/packages.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /docs/Pick From Queue.md: -------------------------------------------------------------------------------- 1 | This step allows you to pick a defined number of items from a Queue, and also to set of you want to remove from the source. 2 | With this solution you can automate the Queue Picking with workflows just by dates, avoiding the "Cherry Picking" issue. 3 | 4 | For using this activity you must access here and select Pick From Queue: 5 | 6 | ![](Pick%20From%20Queue_wf1.gif) 7 | 8 | Then in the activity you can fill all the parameters: 9 | 10 | ![](Pick%20From%20Queue_wf2.gif) 11 | 12 | The Parameters are: 13 | * Source Queue: Select the source Queue where the items to be picked come from. 14 | * Remove Items From Source Queue: (yes/no) set if you want to remove the picked items from the source Queue 15 | * Quantity Items: quantity of records to be picked from the source Queue. 16 | 17 | Note: The Picking order is defined by the field "enteredon" on descending order. 18 | -------------------------------------------------------------------------------- /docs/Sharing Record Step.md: -------------------------------------------------------------------------------- 1 | This Workflow Action, could be used to Share a record to a User or Team. 2 | Firs of all, you have to select the Action Step: 3 | ![](Sharing Record Step_workflowActivity2.gif) 4 | 5 | And then, fill all the Parameters: 6 | ![](Sharing Record Step_workflowActivity3.gif) 7 | 8 | The Overide Permissions, removes all the previous privilege shared. 9 | You can select a user or Team (or both). 10 | Then you can select each of the privileges to be shared. 11 | 12 | 13 | Note: The Record URL, is a standard feature of Dynamics CRM, taht contains the full URL of a record. In this URL you have the entity type, and the record GUID. Right now this is the only way we have to pass a "Dynamic" EntityReference (with not hard coding an entity type) to Workflows Activities. If you pass this string URL as a parameter, in the Workflow Activity you can retrieve this entity Reference. 14 | -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/msdyncrmWorkflowTools_Tests/packages.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/msdyncrmWorkflowTools/Newtonsoft/IArrayPool.cs: -------------------------------------------------------------------------------- 1 | namespace Newtonsoft.Json 2 | { 3 | /// 4 | /// Provides an interface for using pooled arrays. 5 | /// 6 | /// The array type content. 7 | public interface IArrayPool 8 | { 9 | /// 10 | /// Rent a array from the pool. This array must be returned when it is no longer needed. 11 | /// 12 | /// The minimum required length of the array. The returned array may be longer. 13 | /// The rented array from the pool. This array must be returned when it is no longer needed. 14 | T[] Rent(int minimumLength); 15 | 16 | /// 17 | /// Return an array to the pool. 18 | /// 19 | /// The array that is being returned. 20 | void Return(T[] array); 21 | } 22 | } -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/msdyncrmWorkflowTools_Class/Newtonsoft/IArrayPool.cs: -------------------------------------------------------------------------------- 1 | namespace Newtonsoft.Json 2 | { 3 | /// 4 | /// Provides an interface for using pooled arrays. 5 | /// 6 | /// The array type content. 7 | public interface IArrayPool 8 | { 9 | /// 10 | /// Rent a array from the pool. This array must be returned when it is no longer needed. 11 | /// 12 | /// The minimum required length of the array. The returned array may be longer. 13 | /// The rented array from the pool. This array must be returned when it is no longer needed. 14 | T[] Rent(int minimumLength); 15 | 16 | /// 17 | /// Return an array to the pool. 18 | /// 19 | /// The array that is being returned. 20 | void Return(T[] array); 21 | } 22 | } -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/msdyncrmWorkflowTools/Newtonsoft/Linq/CommentHandling.cs: -------------------------------------------------------------------------------- 1 | namespace Newtonsoft.Json.Linq 2 | { 3 | /// 4 | /// Specifies how JSON comments are handled when loading JSON. 5 | /// 6 | public enum CommentHandling 7 | { 8 | /// 9 | /// Ignore comments. 10 | /// 11 | Ignore = 0, 12 | 13 | /// 14 | /// Load comments as a with type . 15 | /// 16 | Load = 1 17 | } 18 | 19 | /// 20 | /// Specifies how line information is handled when loading JSON. 21 | /// 22 | public enum LineInfoHandling 23 | { 24 | /// 25 | /// Ignore line information. 26 | /// 27 | Ignore = 0, 28 | 29 | /// 30 | /// Load line information. 31 | /// 32 | Load = 1 33 | } 34 | } -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/msdyncrmWorkflowTools_Class/Newtonsoft/Linq/CommentHandling.cs: -------------------------------------------------------------------------------- 1 | namespace Newtonsoft.Json.Linq 2 | { 3 | /// 4 | /// Specifies how JSON comments are handled when loading JSON. 5 | /// 6 | public enum CommentHandling 7 | { 8 | /// 9 | /// Ignore comments. 10 | /// 11 | Ignore = 0, 12 | 13 | /// 14 | /// Load comments as a with type . 15 | /// 16 | Load = 1 17 | } 18 | 19 | /// 20 | /// Specifies how line information is handled when loading JSON. 21 | /// 22 | public enum LineInfoHandling 23 | { 24 | /// 25 | /// Ignore line information. 26 | /// 27 | Ignore = 0, 28 | 29 | /// 30 | /// Load line information. 31 | /// 32 | Load = 1 33 | } 34 | } -------------------------------------------------------------------------------- /docs/Queue Item Count.md: -------------------------------------------------------------------------------- 1 | This step allows you to get the "count" of Items on one Queue, and filter them to retrieve them all, or only the unassigned ones. 2 | 3 | 4 | For using this activity you must access here and select Queue Item Count: 5 | 6 | ![](Queue%20Item%20Count_wf1.gif) 7 | 8 | Then in the activity you can fill all the parameters: 9 | 10 | ![](Queue%20Item%20Count_wf2.gif) 11 | 12 | The Parameters are: 13 | * Source Queue: Select the source Queue where the items to be count come from. 14 | * Count Only Unassigned Items: (yes/no) set if you want to count only the Unassigned work (Worked by field is Empty). 15 | * ItemsCount: (Output Parameter - int) quantity of records from the source Queue. 16 | 17 | 18 | You can use this step, in combination of the "Pick From Queue", here is an example: 19 | ![](Queue%20Item%20Count_wf4.gif) 20 | 21 | In this example, you can ask for the available work in the Queue "Test1", and if there are available (more than zero), pick some work. 22 | -------------------------------------------------------------------------------- /docs/OrgDBSettingsRetrieve.md: -------------------------------------------------------------------------------- 1 | This Action allows you to retrieve the Organization settings. 2 | All the organization settings available to be updated are here: https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/organization under "Writable attributes". 3 | Example settings are: 4 | - KbPrefix 5 | - LanguageCode 6 | - LocaleId 7 | - MaxAppointmentDurationDays 8 | - MaxProductsInBundle 9 | - MaxUploadFileSize 10 | - QuotePrefix 11 | - SessionTimeoutEnabled 12 | - and many more... 13 | 14 | For using this action, just select it from the list: 15 | 16 | ![](OrgDBSettingsRetrieve.png) 17 | 18 | And then, select the values: 19 | 20 | ![](OrgDBSettingsRetrieve1.png) 21 | 22 | Finally you have three output parameters, depending on the value type (String, Number or Bool) and you can use them: 23 | 24 | ![](OrgDBSettingsRetrieve2.png) 25 | 26 | A really good example for using OrgDBSettings Update&Retrieve is here: [OrgDBSettings Example](OrgDBSettingsExample.md) 27 | 28 | 29 | Regards! 30 | -------------------------------------------------------------------------------- /docs/OrgDBSettingsUpdate.md: -------------------------------------------------------------------------------- 1 | This Action allows you to modify the Organization settings. 2 | All the organization settings available to be updated are here: https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/entities/organization under "Writable attributes". 3 | Example settings are: 4 | - KbPrefix 5 | - LanguageCode 6 | - LocaleId 7 | - MaxAppointmentDurationDays 8 | - MaxProductsInBundle 9 | - MaxUploadFileSize 10 | - QuotePrefix 11 | - SessionTimeoutEnabled 12 | - and many more... 13 | 14 | For using this action, just select it from the list: 15 | 16 | ![](OrgDBSettingsUpdate1.png) 17 | 18 | And then, select the values: 19 | 20 | ![](OrgDBSettingsUpdate2.png) 21 | 22 | This is a great tool to be used in a Dialog (deprecated), or maybe to create a new entity with all the OrgDBSettings, and fire a workflow to upload them in background. 23 | 24 | A really good example for using OrgDBSettings Update&Retrieve is here: [OrgDBSettings Example](OrgDBSettingsExample.md) 25 | 26 | 27 | Regards! 28 | -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/msdyncrmWorkflowTools/Newtonsoft/FormatterAssemblyStyle.cs: -------------------------------------------------------------------------------- 1 | 2 | #if DOTNET || PORTABLE40 || PORTABLE 3 | 4 | namespace System.Runtime.Serialization.Formatters 5 | { 6 | /// 7 | /// Indicates the method that will be used during deserialization for locating and loading assemblies. 8 | /// 9 | public enum FormatterAssemblyStyle 10 | { 11 | /// 12 | /// In simple mode, the assembly used during deserialization need not match exactly the assembly used during serialization. Specifically, the version numbers need not match as the LoadWithPartialName method is used to load the assembly. 13 | /// 14 | Simple = 0, 15 | 16 | /// 17 | /// In full mode, the assembly used during deserialization must match exactly the assembly used during serialization. The Load method of the Assembly class is used to load the assembly. 18 | /// 19 | Full = 1 20 | } 21 | } 22 | 23 | #endif -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/msdyncrmWorkflowTools_Class/Newtonsoft/FormatterAssemblyStyle.cs: -------------------------------------------------------------------------------- 1 | 2 | #if DOTNET || PORTABLE40 || PORTABLE 3 | 4 | namespace System.Runtime.Serialization.Formatters 5 | { 6 | /// 7 | /// Indicates the method that will be used during deserialization for locating and loading assemblies. 8 | /// 9 | public enum FormatterAssemblyStyle 10 | { 11 | /// 12 | /// In simple mode, the assembly used during deserialization need not match exactly the assembly used during serialization. Specifically, the version numbers need not match as the LoadWithPartialName method is used to load the assembly. 13 | /// 14 | Simple = 0, 15 | 16 | /// 17 | /// In full mode, the assembly used during deserialization must match exactly the assembly used during serialization. The Load method of the Assembly class is used to load the assembly. 18 | /// 19 | Full = 1 20 | } 21 | } 22 | 23 | #endif -------------------------------------------------------------------------------- /azure-pipelines.yml: -------------------------------------------------------------------------------- 1 | # ASP.NET 2 | # Build and test ASP.NET projects. 3 | # Add steps that publish symbols, save build artifacts, deploy, and more: 4 | # https://docs.microsoft.com/azure/devops/pipelines/apps/aspnet/build-aspnet-4 5 | 6 | trigger: 7 | - master 8 | 9 | pool: 10 | vmImage: 'windows-latest' 11 | 12 | variables: 13 | solution: '**/*.sln' 14 | buildPlatform: 'Any CPU' 15 | buildConfiguration: 'Release' 16 | 17 | steps: 18 | - task: NuGetToolInstaller@0 19 | 20 | - task: NuGetCommand@2 21 | inputs: 22 | restoreSolution: '$(solution)' 23 | 24 | - task: VSBuild@1 25 | inputs: 26 | solution: '$(solution)' 27 | msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactStagingDirectory)"' 28 | platform: '$(buildPlatform)' 29 | configuration: '$(buildConfiguration)' 30 | 31 | - task: VSTest@2 32 | inputs: 33 | platform: '$(buildPlatform)' 34 | configuration: '$(buildConfiguration)' 35 | -------------------------------------------------------------------------------- /docs/DateFunctions.md: -------------------------------------------------------------------------------- 1 | This step allows you to execute operations for DateTime valus. 2 | 3 | For using this activity you must access here and select Date Function action: 4 | 5 | ![](DateFunctions1.png) 6 | 7 | Then in the activity you can fill the parameters for Date 1 and Date 2: 8 | 9 | ![](DateFunctions2.png) 10 | 11 | As an Output Parameters you can get all of these values: 12 | 13 | ![](DateFunctions3.png) 14 | 15 | * TotalDays: Days between the two dates 16 | * TotalHours: Hours between the two dates 17 | * TotalMilliseconds: Milliseconds between the two dates 18 | * TotalMinutes: Minutes between the two dates 19 | * TotalSeconds: Seconds between the two dates 20 | * DayOfWeek: Day of week (sunday:0 to saturday:6) (Of the Date 1 parameter) 21 | * DayOfYear: Day number Of the Year (Of the Date 1 parameter) 22 | * Day: Day of the month (Of the Date 1 parameter) 23 | * Month: Month (Of the Date 1 parameter) 24 | * Year: Year (Of the Date 1 parameter) 25 | * WeekOfYear: Week Of the current Year (Of the Date 1 parameter) 26 | 27 | -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/msdyncrmWorkflowTools/Newtonsoft/TraceLevel.cs: -------------------------------------------------------------------------------- 1 | 2 | #if (DOTNET || PORTABLE40 || PORTABLE) 3 | using Newtonsoft.Json.Serialization; 4 | 5 | namespace Newtonsoft.Json 6 | { 7 | /// 8 | /// Specifies what messages to output for the class. 9 | /// 10 | public enum TraceLevel 11 | { 12 | /// 13 | /// Output no tracing and debugging messages. 14 | /// 15 | Off = 0, 16 | 17 | /// 18 | /// Output error-handling messages. 19 | /// 20 | Error = 1, 21 | 22 | /// 23 | /// Output warnings and error-handling messages. 24 | /// 25 | Warning = 2, 26 | 27 | /// 28 | /// Output informational messages, warnings, and error-handling messages. 29 | /// 30 | Info = 3, 31 | 32 | /// 33 | /// Output all debugging and tracing messages. 34 | /// 35 | Verbose = 4 36 | } 37 | } 38 | 39 | #endif -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/msdyncrmWorkflowTools_Tests/GetRecordID_Tests.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Microsoft.VisualStudio.TestTools.UnitTesting; 3 | using msdyncrmWorkflowTools; 4 | 5 | namespace msdyncrmWorkflowTools_Tests 6 | { 7 | [TestClass] 8 | public class GetRecordID_Tests 9 | { 10 | CrmService objService = new CrmService(); 11 | [TestMethod] 12 | public void GetRecordID1() 13 | { 14 | var classObj = new msdyncrmWorkflowTools_Class(objService.service); 15 | string objectID = classObj.GetRecordID("https://demianrasko.crm4.dynamics.com:443/main.aspx?etc=4207&id=d3c3b3b2-ae19-e811-811f-5065f38a3a01&histKey=885118818&newWindow=true&pagetype=entityrecord"); 16 | Assert.AreEqual(objectID, "d3c3b3b2-ae19-e811-811f-5065f38a3a01"); 17 | } 18 | [TestMethod] 19 | public void GetRecordID2() 20 | { 21 | var classObj = new msdyncrmWorkflowTools_Class(objService.service); 22 | string objectID = classObj.GetRecordID(""); 23 | Assert.AreEqual(objectID, ""); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/msdyncrmWorkflowTools_Tests/app.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/msdyncrmWorkflowTools_Class/Newtonsoft/TraceLevel.cs: -------------------------------------------------------------------------------- 1 | 2 | #if (DOTNET || PORTABLE40 || PORTABLE) 3 | using Newtonsoft.Json.Serialization; 4 | 5 | namespace Newtonsoft.Json 6 | { 7 | /// 8 | /// Specifies what messages to output for the class. 9 | /// 10 | public enum TraceLevel 11 | { 12 | /// 13 | /// Output no tracing and debugging messages. 14 | /// 15 | Off = 0, 16 | 17 | /// 18 | /// Output error-handling messages. 19 | /// 20 | Error = 1, 21 | 22 | /// 23 | /// Output warnings and error-handling messages. 24 | /// 25 | Warning = 2, 26 | 27 | /// 28 | /// Output informational messages, warnings, and error-handling messages. 29 | /// 30 | Info = 3, 31 | 32 | /// 33 | /// Output all debugging and tracing messages. 34 | /// 35 | Verbose = 4 36 | } 37 | } 38 | 39 | #endif -------------------------------------------------------------------------------- /docs/Apply Routing Rules.md: -------------------------------------------------------------------------------- 1 | This Solution helps to execute the Routing Rule Sets for Cases. 2 | These Rules only executes right now when: 3 | # On Email to Case Creation rules 4 | # On Case views/forms, from the Command bar manually 5 | 6 | With this Workflow Activity, you can execute the active Routing Rule for one record, on Workflows. 7 | 8 | **NOTE**: Right now there is an issue with the ApplyRoutingRuleRequest message used in some versions. It was solved in the CRM 2013 SP1 UR2. 9 | 10 | For use this in Workflows here are the steps: 11 | 12 | ![](Apply%20Routing%20Rules_workflow6.gif) 13 | 14 | ![](Apply%20Routing%20Rules_workflow7.gif) 15 | 16 | ![](Apply%20Routing%20Rules_workflow8.gif) 17 | 18 | Note: The Record URL, is a standard feature of Dynamics CRM, taht contains the full URL of a record. In this URL you have the entity type, and the record GUID. Right now this is the only way we have to pass a "Dynamic" EntityReference (with not hard coding an entity type) to Workflows Activities. If you pass this string URL as a parameter, in the Workflow Activity you can retrieve this entity Reference. 19 | -------------------------------------------------------------------------------- /docs/Set User Settings.md: -------------------------------------------------------------------------------- 1 | This step allows you to modify the user settings. 2 | 3 | For using this activity you must access here and select Set User Settings: 4 | ![](Set%20User%20Settings_wf1.gif) 5 | 6 | 7 | Then in the activity you can fill all the parameters: 8 | 9 | ![](Set%20User%20Settings_wf2.png) 10 | 11 | The Parameters are: 12 | * User: Select the User to be updated 13 | * PagingLimit: Specify how many records per view. Value can be 25,50,75,100,250 14 | * AdvancedFindStartupMode: Specify AdvancedFind mode. 1:simple, 2:detail. 15 | * TimeZoneCode: Specify TimeZoneCode for users. Use Get-CrmTimeZones to see all options 0 for ignore the value. example of all values are here: http://www.powerobjects.com/2014/07/25/importing-values-time-zone-fields-dynamics-crm/ 16 | * HelpLanguageId: Specify Unique identifier of the Help language. 0 for ignore 17 | * UILanguageId: Specify Unique identifier of the language in which to view the user interface (UI). 0 for ignore 18 | * DefaultCalendarView: specify the default calendar view values: 0 to Show the day by default. 2 to Show the month by default. 1 to Show the week by default 19 | * IsSendAsAllowed 20 | -------------------------------------------------------------------------------- /docs/Set Process.md: -------------------------------------------------------------------------------- 1 | This step is very usefull to set the active Business Process Flow on a specified record. 2 | You can also restart the process (setting the same process), or remove the process execution (blank value). 3 | For using this activity you must access here and select Set Process: 4 | 5 | ![](Set%20Process_wf1.gif) 6 | 7 | Then, you must select the record URL(dynamic) field from the entity you want to set the process, and select the Process: 8 | 9 | ![](Set%20Process_wf2.gif) 10 | 11 | The full params description is: 12 | * **Record URL (required)** : the URL of the record you want to change the process 13 | * **Process**: you must select a business process flow. Note that you must change the filter on the view, to select the business process flow. 14 | 15 | 16 | Note: The Parent Record URL, is a standard feature of Dynamics CRM, taht contains the full URL of a record. In this URL you have the entity type, and the record GUID. Right now this is the only way we have to pass a "Dynamic" EntityReference (with not hard coding an entity type) to Workflows Activities. If you pass this string URL as a parameter, in the Workflow Activity you can retrieve this entity Reference. 17 | -------------------------------------------------------------------------------- /docs/Force Calculate Rollup Field.md: -------------------------------------------------------------------------------- 1 | Dynamics CRM 2015 Calculate Rollup Field (Workflow Activity) will help you to force the Rollup field calculation in any time in your Workflows. 2 | 3 | The steps to install it is really simple: 4 | 5 | Download the full Solution 6 | Import Solution in your Dynamics CRM 2015 environment 7 | The to use it, you will have a new Workflow Activity Action: 8 | ![](Force%20Calculate%20Rollup%20Field_workflow4.gif) 9 | 10 | Then you have to pass two parameters: 11 | ![](Force%20Calculate%20Rollup%20Field_workflow5.gif) 12 | 13 | * FieldName: The Rollup field Name of the parent entity. 14 | * Parent RecordURL: You must to select the Parent field called Record URL 15 | 16 | Note: The Parent Record URL, is a standard feature of Dynamics CRM, taht contains the full URL of a record. In this URL you have the entity type, and the record GUID. Right now this is the only way we have to pass a "Dynamic" EntityReference (with not hard coding an entity type) to Workflows Activities. If you pass this string URL as a parameter, in the Workflow Activity you can retrieve this entity Reference. 17 | 18 | Done! you can execute or launch your Workflows with this new feature! 19 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Describe the bug** 11 | A clear and concise description of what the bug is. 12 | 13 | **To Reproduce** 14 | Steps to reproduce the behavior: 15 | 1. Go to '...' 16 | 2. Click on '....' 17 | 3. Scroll down to '....' 18 | 4. See error 19 | 20 | **Expected behavior** 21 | A clear and concise description of what you expected to happen. 22 | 23 | **Screenshots** 24 | If applicable, add screenshots to help explain your problem. 25 | 26 | **Desktop (please complete the following information):** 27 | - OS: [e.g. iOS] 28 | - Browser [e.g. chrome, safari] 29 | - Version [e.g. 22] 30 | 31 | **Smartphone (please complete the following information):** 32 | - Device: [e.g. iPhone6] 33 | - OS: [e.g. iOS8.1] 34 | - Browser [e.g. stock browser, safari] 35 | - Version [e.g. 22] 36 | 37 | **Additional context** 38 | Add any other context about the problem here. 39 | 40 | 41 | ### Expected behavior and actual behavior. 42 | 43 | ### Steps to reproduce the problem (screenshots are really usefull) 44 | 45 | ### CRM Version - online/onpremise - WorkflowTools version 46 | -------------------------------------------------------------------------------- /docs/Rollup Functions.md: -------------------------------------------------------------------------------- 1 | This step is helps you retrieve Rollups results (Count, Sum, Average, Max and Min) on the fly on output parameters of the Workflow Activity. 2 | It's based on one input Parameter with a Fetch XML, where you can set a Dynamic Value (for the parent filter), or just create an open FetchXML. 3 | 4 | For using this activity you must access here and select Rollup Functions: 5 | 6 | ![](Rollup%20Functions_wf1.gif) 7 | 8 | Then, you must set the FetchXML parameter: 9 | 10 | ![](Rollup%20Functions_wf2.gif) 11 | 12 | The full params description is: 13 | * **FetchXML (required)** : The FetchXML Query 14 | 15 | Output Parameters: 16 | * **Count** 17 | * **Sum** 18 | * **Average** 19 | * **Max** 20 | * **Min** 21 | 22 | 23 | **Dynamic Query from Parent record**: In the FetchXML, you can set a dynamic value for the parent record using the TAG "{PARENT_GUID}" like I show in the following image: 24 | ![](Rollup%20Functions_wf3.gif) 25 | 26 | **Value for Calculations**: For calculations, I use only the first Attribute on the FetchXML query. This attribute must to be a number or money Attribute. 27 | 28 | Finally you can use all the output values like this: 29 | ![](Rollup%20Functions_wf4.gif) 30 | -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/msdyncrmWorkflowTools_Tests/CrmService.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Xrm.Sdk; 2 | using Microsoft.Xrm.Tooling.Connector; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Linq; 6 | using System.Text; 7 | using System.Threading.Tasks; 8 | 9 | namespace msdyncrmWorkflowTools_Tests 10 | { 11 | public class CrmService 12 | { 13 | 14 | public CrmService() { 15 | const string crmServerUrl = "https://demianraskosandbox.crm4.dynamics.com"; 16 | const string userName = "demianrasko@demianrasko.onmicrosoft.com"; 17 | const string password = "xxxx"; 18 | 19 | var connectionStringCrmOnline = string.Format("Url={0}; Username={1}; Password={2};authtype=Office365;", crmServerUrl, userName, password); 20 | 21 | CrmServiceClient conn = new Microsoft.Xrm.Tooling.Connector.CrmServiceClient(connectionStringCrmOnline); 22 | 23 | IOrganizationService _service = (IOrganizationService)conn.OrganizationWebProxyClient != null ? (IOrganizationService)conn.OrganizationWebProxyClient : (IOrganizationService)conn.OrganizationServiceProxy; 24 | 25 | } 26 | 27 | public IOrganizationService service; 28 | 29 | 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /docs/Update Child Records.md: -------------------------------------------------------------------------------- 1 | The Update Child Records allows you to update multiple child records from a parent record. You can update one field of the Childs based on a dynamic value or a parent field, or based on string value. 2 | 3 | For using this action you need to select the action: 4 | 5 | ![](Update%20Child%20Records_wf1.png) 6 | 7 | Then fill all the parameters: 8 | 9 | ![](updatechild.gif) 10 | 11 | The parameters are: 12 | * **Parent Record URL**: the URL of the parent record (recover dynamic on the workflow) 13 | * **Relationship Name**: The name of the relationship between the parent and child entity 14 | * **Parent Field Name**: (optional) the schema name of the field in the parent entity 15 | * **Value to Set**: (optional) the string value to be set (if the previuos one is empty) 16 | * **Child Field Name to Update**: The destination field name on the child entity 17 | * **Update Only Active**: True: updates only active records, False: update all records 18 | 19 | NOTES: 20 | 1) The relationship Name must existe on CRM 21 | 2) The parent and child field types must to be the same 22 | 3) for Boolean fields please include "1" for true and "0" for false 23 | 4) for Picklists, please include the optionset values (in number). 24 | -------------------------------------------------------------------------------- /docs/Clone Record.md: -------------------------------------------------------------------------------- 1 | This step is very usefull to Clone some record. You pass the URL of one record, and it will create a new record, with the same values. 2 | 3 | For using this activity you must access here and select Clone Record: 4 | 5 | ![](Clone%20Record_wfclone.gif) 6 | 7 | Then, you must select the record URL(dynamic) field from the entity you want to clone as follows: 8 | 9 | ![](CloneRecord44_1.png) 10 | 11 | The full params description is: 12 | * **Clonning Record URL (required)** : the URL of the record you want to clone 13 | * **Prefix (optional)** : the prefix will be addedd at the name attribute of the clonned record 14 | * **Fields to Ignore (optional)** : the list of attributes you want to ignore in cloning, separate by ";" (in lowercase) 15 | 16 | * **Output parameter: Cloned Guid** : the string with the GUID of the new record, you can use it like this: 17 | ![](CloneRecord44_2.png) 18 | 19 | Note: The Parent Record URL, is a standard feature of Dynamics CRM, that contains the full URL of a record. In this URL you have the entity type, and the record GUID. Right now this is the only way we have to pass a "Dynamic" EntityReference (with not hard coding an entity type) to Workflows Activities. If you pass this string URL as a parameter, in the Workflow Activity you can retrieve this entity Reference. 20 | -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/msdyncrmWorkflowTools/Newtonsoft/Serialization/ITraceWriter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Diagnostics; 4 | 5 | namespace Newtonsoft.Json.Serialization 6 | { 7 | /// 8 | /// Represents a trace writer. 9 | /// 10 | public interface ITraceWriter 11 | { 12 | /// 13 | /// Gets the that will be used to filter the trace messages passed to the writer. 14 | /// For example a filter level of Info will exclude Verbose messages and include Info, 15 | /// Warning and Error messages. 16 | /// 17 | /// The that will be used to filter the trace messages passed to the writer. 18 | TraceLevel LevelFilter { get; } 19 | 20 | /// 21 | /// Writes the specified trace level, message and optional exception. 22 | /// 23 | /// The at which to write this trace. 24 | /// The trace message. 25 | /// The trace exception. This parameter is optional. 26 | void Trace(TraceLevel level, string message, Exception ex); 27 | } 28 | } -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/msdyncrmWorkflowTools_Class/Newtonsoft/Serialization/ITraceWriter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Diagnostics; 4 | 5 | namespace Newtonsoft.Json.Serialization 6 | { 7 | /// 8 | /// Represents a trace writer. 9 | /// 10 | public interface ITraceWriter 11 | { 12 | /// 13 | /// Gets the that will be used to filter the trace messages passed to the writer. 14 | /// For example a filter level of Info will exclude Verbose messages and include Info, 15 | /// Warning and Error messages. 16 | /// 17 | /// The that will be used to filter the trace messages passed to the writer. 18 | TraceLevel LevelFilter { get; } 19 | 20 | /// 21 | /// Writes the specified trace level, message and optional exception. 22 | /// 23 | /// The at which to write this trace. 24 | /// The trace message. 25 | /// The trace exception. This parameter is optional. 26 | void Trace(TraceLevel level, string message, Exception ex); 27 | } 28 | } -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/msdyncrmWorkflowTools/Class/GetInitiatingUser.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Crm.Sdk.Messages; 2 | using Microsoft.Xrm.Sdk; 3 | using Microsoft.Xrm.Sdk.Query; 4 | using Microsoft.Xrm.Sdk.Workflow; 5 | using System; 6 | using System.Activities; 7 | using System.Collections.Generic; 8 | using System.Linq; 9 | using System.ServiceModel; 10 | using System.Text; 11 | using System.Threading.Tasks; 12 | namespace msdyncrmWorkflowTools.Class 13 | { 14 | public class GetInitiatingUser : CodeActivity 15 | { 16 | 17 | 18 | [Output("Initiating User")] 19 | [ReferenceTarget("systemuser")] 20 | public OutArgument InitiatingUser 21 | { 22 | get; 23 | set; 24 | } 25 | 26 | 27 | 28 | protected override void Execute(CodeActivityContext executionContext) 29 | { 30 | #region "Load CRM Service from context" 31 | 32 | Common objCommon = new Common(executionContext); 33 | var context = executionContext.GetExtension(); 34 | objCommon.tracingService.Trace("Load CRM Service from context --- OK"); 35 | #endregion 36 | 37 | InitiatingUser.Set(executionContext, new EntityReference("systemuser", context.InitiatingUserId)); 38 | 39 | } 40 | 41 | 42 | 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/msdyncrmWorkflowTools_Tests/TranslateText_Tests.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Microsoft.VisualStudio.TestTools.UnitTesting; 3 | using msdyncrmWorkflowTools; 4 | 5 | namespace msdyncrmWorkflowTools_Tests 6 | { 7 | [TestClass] 8 | public class TranslateText_Tests 9 | { 10 | CrmService objService = new CrmService(); 11 | 12 | [TestMethod] 13 | public void TranslateText1() 14 | { 15 | var classObj = new msdyncrmWorkflowTools_Class(objService.service); 16 | string traslated = classObj.TranslateText("Hola", "pt", "a60244d696fc421f85e2adcd386bdf9e"); 17 | 18 | Assert.AreEqual(traslated, "Olá"); 19 | } 20 | 21 | [TestMethod] 22 | public void TranslateText2() 23 | { 24 | var classObj = new msdyncrmWorkflowTools_Class(objService.service); 25 | string traslated = classObj.TranslateText("Hola", "en", "a60244d696fc421f85e2adcd386bdf9e"); 26 | 27 | Assert.AreEqual(traslated, "Hello"); 28 | } 29 | 30 | [TestMethod] 31 | public void TranslateText3() 32 | { 33 | var classObj = new msdyncrmWorkflowTools_Class(objService.service); 34 | string traslated = classObj.TranslateText("Hello", "es", "a60244d696fc421f85e2adcd386bdf9e"); 35 | 36 | Assert.AreEqual(traslated, "Hola"); 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/msdyncrmWorkflowTools/Newtonsoft/Utilities/MethodCall.cs: -------------------------------------------------------------------------------- 1 | #region License 2 | // Copyright (c) 2007 James Newton-King 3 | // 4 | // Permission is hereby granted, free of charge, to any person 5 | // obtaining a copy of this software and associated documentation 6 | // files (the "Software"), to deal in the Software without 7 | // restriction, including without limitation the rights to use, 8 | // copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the 10 | // Software is furnished to do so, subject to the following 11 | // conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be 14 | // included in all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 17 | // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 18 | // OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 19 | // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 20 | // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 21 | // WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 22 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 23 | // OTHER DEALINGS IN THE SOFTWARE. 24 | #endregion 25 | 26 | namespace Newtonsoft.Json.Utilities 27 | { 28 | internal delegate TResult MethodCall(T target, params object[] args); 29 | } -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/msdyncrmWorkflowTools_Class/Newtonsoft/Utilities/MethodCall.cs: -------------------------------------------------------------------------------- 1 | #region License 2 | // Copyright (c) 2007 James Newton-King 3 | // 4 | // Permission is hereby granted, free of charge, to any person 5 | // obtaining a copy of this software and associated documentation 6 | // files (the "Software"), to deal in the Software without 7 | // restriction, including without limitation the rights to use, 8 | // copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the 10 | // Software is furnished to do so, subject to the following 11 | // conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be 14 | // included in all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 17 | // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 18 | // OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 19 | // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 20 | // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 21 | // WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 22 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 23 | // OTHER DEALINGS IN THE SOFTWARE. 24 | #endregion 25 | 26 | namespace Newtonsoft.Json.Utilities 27 | { 28 | internal delegate TResult MethodCall(T target, params object[] args); 29 | } -------------------------------------------------------------------------------- /docs/Entity Attachment To Email.md: -------------------------------------------------------------------------------- 1 | This step allows you to retrieve attachments from one Entity, and attach them to a created Email record. 2 | You can also filter the attached Files by FileName. 3 | 4 | For using this activity you must access here and select Entity Attachment To Email: 5 | 6 | ![](Entity%20Attachment%20To%20Email_wf1.gif) 7 | 8 | Then in the activity you can fill all the parameters: 9 | 10 | ![](EntityEmail1.gif) 11 | 12 | The Parameters are: 13 | * Main Record URL: The URL of the Record that contains the source Attachments 14 | * File Name: Name of the file you want to find (multiple). You can use "*" to search other files. All the finded files will be added to the Email 15 | * Email: Email record to add all the Attachments. 16 | * Retrieve ActivityMimeAttachment: false=retrieve attachments from related notes. true=retrieve attachments from ActivityMimeAttachment (for appointments and emails) 17 | * Select Most Recent Disctinc Files: Added option to only select the Most Recent file by distinct file name. 18 | 19 | 20 | Note: The Main Record URL, is a standard feature of Dynamics CRM, taht contains the full URL of a record. In this URL you have the entity type, and the record GUID. Right now this is the only way we have to pass a "Dynamic" EntityReference (with not hard coding an entity type) to Workflows Activities. If you pass this string URL as a parameter, in the Workflow Activity you can retrieve this entity Reference. 21 | -------------------------------------------------------------------------------- /docs/Query Values Step.md: -------------------------------------------------------------------------------- 1 | This step is very usefull to query an entity, filtering with one or two field conditions, and get one or two fields. 2 | Could be very usefull to retrieve some parameters located in another entities such as parameters entities. 3 | 4 | For use this in Workflows here are the steps: 5 | 6 | First select the step: 7 | ![](Query%20Values%20Step_workflowActivity5.gif) 8 | 9 | Then, fill all the required fields: 10 | ![](Query%20Values%20Step_workflowActivity6.gif) 11 | 12 | The full fields description are: 13 | * **EntityName (required)** : the schema name of the entity to be searched 14 | * **Attribute1 (required)** : first attribute to be retrieved 15 | * **Attribute2** : second attribute to be retrieved 16 | * **FilterAttibute1 (required)** : first filter attribute name 17 | * **ValueAttribute1 (required)** : first filter attribute value 18 | * **FilterAttibute2** : second filter attribute name 19 | * **ValueAttribute2** : second filter attribute value 20 | * **ResultValue1** : retrieved value for the first attibute 21 | * **ResultValue2** : retrieved value for the second attibute 22 | 23 | IMPORTANT NOTE: since version 1.0.36.0 the Attribute2 Parameter is required. for previous versions, please remember to fill something on it. 24 | 25 | Then you can use the retrieved values in following steps of the Workflow: 26 | ![](Query%20Values%20Step_workflowActivity7.gif) 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /docs/String Functions.md: -------------------------------------------------------------------------------- 1 | This step allows you to execute some String Functions. 2 | 3 | For using this activity you must access here and select String Functions: 4 | ![](String%20Functions_wf1.gif) 5 | 6 | 7 | Then in the activity you can fill all the parameters: 8 | 9 | ![](String%20Functions_wf2.gif) 10 | 11 | The Input Parameters are: 12 | * Input Text: text to be transformed by the String Functions 13 | * Capitalize All Words: Specify if you want to capitalize only the first letter or of each word 14 | * Padding: Pad Character: DEfine the pad character 15 | * Padding: Pad on the Left: Set if you want to Pad from the left 16 | * Padding: Final Length: Final length of the text after padding 17 | * Replace: Old Value: text to be replaced from source text 18 | * Replace: New Value: new text 19 | * Replace: Case Sensitive: to set if will be case sensitive or not the replacing 20 | * Substring: From Left to Right: to set if the substring will start from left 21 | * Substring: Start Index: start index char 22 | * Substring: Length: substring legth 23 | * Regular Expression: String with the regultar expression tu be executed 24 | 25 | The Output Parameters are: 26 | * CapitalizedText 27 | * TextLength 28 | * PaddedText 29 | * ReplacedText 30 | * SubstringText 31 | * TrimmedText 32 | * RegexSuccess 33 | * RegexText 34 | * Uppercase Text 35 | * Lowercase Text 36 | * Without Spaces 37 | 38 | 39 | ![](string%20functions_33.png) 40 | -------------------------------------------------------------------------------- /docs/SetMultiSelectOptionSet.md: -------------------------------------------------------------------------------- 1 | This step allows you to update the value of a multi-select option set attribute for a particular record. 2 | 3 | To use this activity, you just need to select the **SetMultiSelectOptionSet** option: 4 | 5 | ![](SetMultiSelectOptionSet.png) 6 | 7 | Then, you need to specify the following input parameters: 8 | 9 | ![](SetMultiSelectOptionSetInputParameters.png) 10 | 11 | * **Target Record URL (required)** : URL of the record to be updated. 12 | * **Attribute Name: (required)** : logical name of the attribute to be updated. 13 | * **Attribute Values: (required)** : option set values to be set. They should be **separated by comma**. In case you want to **clear the values**, just use an **empty string like “”**. See an example below. 14 | * **Keep Existing Values (optional)**: indicate if the existing selected values in the target multi-select optionset attribute will be maintained. By default, it will remove the existing values and assign the new ones given by the argument "Attributes Values". 15 | * **Fail on Exception (optional)** : this is a secondary attribute which allows you to indicate if the activity will throw an exception if something goes wrong or it will just return the error in an output parameter. 16 | 17 | You can also find an example in this article: 18 | 19 | [https://ramontebar.net/2018/12/12/updating-multi-select-option-set-attributes-in-workflows/](https://ramontebar.net/2018/12/12/updating-multi-select-option-set-attributes-in-workflows/) 20 | -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/msdyncrmWorkflowTools/Class/CopyToStaticList.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Crm.Sdk.Messages; 2 | using Microsoft.Xrm.Sdk; 3 | using Microsoft.Xrm.Sdk.Query; 4 | using Microsoft.Xrm.Sdk.Workflow; 5 | using System; 6 | using System.Activities; 7 | using System.Collections.Generic; 8 | using System.Linq; 9 | using System.ServiceModel; 10 | using System.Text; 11 | using System.Threading.Tasks; 12 | namespace msdyncrmWorkflowTools.Class 13 | { 14 | public class CopyToStaticList : CodeActivity 15 | { 16 | [RequiredArgument] 17 | [Input("Marketing List")] 18 | [ReferenceTarget("list")] 19 | public InArgument MarketingList { get; set; } 20 | 21 | 22 | 23 | 24 | 25 | protected override void Execute(CodeActivityContext executionContext) 26 | { 27 | #region "Load CRM Service from context" 28 | 29 | Common objCommon = new Common(executionContext); 30 | objCommon.tracingService.Trace("Load CRM Service from context --- OK"); 31 | #endregion 32 | 33 | #region "Read Parameters" 34 | EntityReference marketingList = this.MarketingList.Get(executionContext); 35 | objCommon.tracingService.Trace(String.Format("marketingList: {0} ", marketingList.Id.ToString())); 36 | 37 | 38 | 39 | #endregion 40 | 41 | 42 | objCommon.service.Execute(new CopyDynamicListToStaticRequest { ListId = marketingList.Id }); 43 | 44 | 45 | } 46 | 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/msdyncrmWorkflowTools/Newtonsoft/Linq/JsonPath/ArrayIndexFilter.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Globalization; 3 | using Newtonsoft.Json.Utilities; 4 | 5 | namespace Newtonsoft.Json.Linq.JsonPath 6 | { 7 | internal class ArrayIndexFilter : PathFilter 8 | { 9 | public int? Index { get; set; } 10 | 11 | public override IEnumerable ExecuteFilter(IEnumerable current, bool errorWhenNoMatch) 12 | { 13 | foreach (JToken t in current) 14 | { 15 | if (Index != null) 16 | { 17 | JToken v = GetTokenIndex(t, errorWhenNoMatch, Index.GetValueOrDefault()); 18 | 19 | if (v != null) 20 | { 21 | yield return v; 22 | } 23 | } 24 | else 25 | { 26 | if (t is JArray || t is JConstructor) 27 | { 28 | foreach (JToken v in t) 29 | { 30 | yield return v; 31 | } 32 | } 33 | else 34 | { 35 | if (errorWhenNoMatch) 36 | { 37 | throw new JsonException("Index * not valid on {0}.".FormatWith(CultureInfo.InvariantCulture, t.GetType().Name)); 38 | } 39 | } 40 | } 41 | } 42 | } 43 | } 44 | } -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/msdyncrmWorkflowTools_Tests/CurrencyConvert_Tests.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Microsoft.VisualStudio.TestTools.UnitTesting; 3 | using msdyncrmWorkflowTools; 4 | 5 | namespace msdyncrmWorkflowTools_Tests 6 | { 7 | [TestClass] 8 | public class CurrencyConvert_Tests 9 | { 10 | CrmService objService = new CrmService(); 11 | [TestMethod] 12 | public void CurrencyConvert1() 13 | { 14 | var classObj = new msdyncrmWorkflowTools_Class(objService.service); 15 | decimal rate=classObj.CurrencyConvert(1, "EUR", "USD"); 16 | Assert.IsTrue(rate != 0); 17 | } 18 | [TestMethod] 19 | public void CurrencyConvert2() 20 | { 21 | var classObj = new msdyncrmWorkflowTools_Class(objService.service); 22 | decimal rate = classObj.CurrencyConvert(1, "USD", "EUR"); 23 | Assert.IsTrue(rate != 0); 24 | } 25 | 26 | [TestMethod] 27 | public void CurrencyConvert3() 28 | { 29 | var classObj = new msdyncrmWorkflowTools_Class(objService.service); 30 | decimal rate = classObj.CurrencyConvert((decimal)100.35, "EUR", "ARS"); 31 | Assert.IsTrue(rate != 0); 32 | } 33 | [TestMethod] 34 | public void CurrencyConvert4() 35 | { 36 | var classObj = new msdyncrmWorkflowTools_Class(objService.service); 37 | decimal rate = classObj.CurrencyConvert((decimal)11231300.30055, "CLP", "EUR"); 38 | Assert.IsTrue(rate != 0); 39 | } 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/msdyncrmWorkflowTools_Class/Newtonsoft/Linq/JsonPath/ArrayIndexFilter.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Globalization; 3 | using Newtonsoft.Json.Utilities; 4 | 5 | namespace Newtonsoft.Json.Linq.JsonPath 6 | { 7 | internal class ArrayIndexFilter : PathFilter 8 | { 9 | public int? Index { get; set; } 10 | 11 | public override IEnumerable ExecuteFilter(IEnumerable current, bool errorWhenNoMatch) 12 | { 13 | foreach (JToken t in current) 14 | { 15 | if (Index != null) 16 | { 17 | JToken v = GetTokenIndex(t, errorWhenNoMatch, Index.GetValueOrDefault()); 18 | 19 | if (v != null) 20 | { 21 | yield return v; 22 | } 23 | } 24 | else 25 | { 26 | if (t is JArray || t is JConstructor) 27 | { 28 | foreach (JToken v in t) 29 | { 30 | yield return v; 31 | } 32 | } 33 | else 34 | { 35 | if (errorWhenNoMatch) 36 | { 37 | throw new JsonException("Index * not valid on {0}.".FormatWith(CultureInfo.InvariantCulture, t.GetType().Name)); 38 | } 39 | } 40 | } 41 | } 42 | } 43 | } 44 | } -------------------------------------------------------------------------------- /docs/Entity Mobile Deep Link.md: -------------------------------------------------------------------------------- 1 | This action retrieves the Mobile Deep Links strings to be used on the workflows, for example to send them on an Email. 2 | 3 | For using this feature, first select the Entity Mobile Deep Link action: 4 | 5 | ![](Entity%20Mobile%20Deep%20Link_wf1.gif) 6 | 7 | Then, on the input Parameters, select the record URL of the entity you want to retrieve the mobile deep link: 8 | 9 | ![](Entity%20Mobile%20Deep%20Link_wf2.gif) 10 | 11 | Then, you can use the Output parameters on the Workflow. The Output Paramaters are: 12 | 13 | * **Mobile Deep Link Edit**: the link to go to the record form 14 | * **Mobile Deep Link New**: the link to go to record creation form 15 | * **Mobile Deep Link Default View**: the link to go to the default view of the entity type 16 | 17 | This is an example of using this params in a Email: 18 | 19 | ![](Entity%20Mobile%20Deep%20Link_wf3.gif) 20 | 21 | You can retrieve and Send these Deep Links in a workflow like this: 22 | 23 | ![](Entity%20Mobile%20Deep%20Link_wf4.gif) 24 | 25 | Then, you can receive this email on a mobile app: 26 | 27 | ![](Entity%20Mobile%20Deep%20Link_wf5.gif) 28 | 29 | If you click on any link you must confirm to change the app: 30 | 31 | ![](Entity%20Mobile%20Deep%20Link_wf6.gif) 32 | 33 | The first link goes directly to the record form: 34 | 35 | ![](Entity%20Mobile%20Deep%20Link_wf7.gif) 36 | 37 | The creation form goes to here: 38 | 39 | ![](Entity%20Mobile%20Deep%20Link_wf8.gif) 40 | 41 | And the default view jumps to here: 42 | 43 | ![](Entity%20Mobile%20Deep%20Link_wf9.gif) 44 | 45 | -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/msdyncrmWorkflowTools/Newtonsoft/Serialization/ObjectConstructor.cs: -------------------------------------------------------------------------------- 1 | #region License 2 | // Copyright (c) 2007 James Newton-King 3 | // 4 | // Permission is hereby granted, free of charge, to any person 5 | // obtaining a copy of this software and associated documentation 6 | // files (the "Software"), to deal in the Software without 7 | // restriction, including without limitation the rights to use, 8 | // copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the 10 | // Software is furnished to do so, subject to the following 11 | // conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be 14 | // included in all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 17 | // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 18 | // OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 19 | // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 20 | // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 21 | // WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 22 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 23 | // OTHER DEALINGS IN THE SOFTWARE. 24 | #endregion 25 | 26 | namespace Newtonsoft.Json.Serialization 27 | { 28 | /// 29 | /// Represents a method that constructs an object. 30 | /// 31 | /// The object type to create. 32 | public delegate object ObjectConstructor(params object[] args); 33 | } -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/msdyncrmWorkflowTools_Class/Newtonsoft/Serialization/ObjectConstructor.cs: -------------------------------------------------------------------------------- 1 | #region License 2 | // Copyright (c) 2007 James Newton-King 3 | // 4 | // Permission is hereby granted, free of charge, to any person 5 | // obtaining a copy of this software and associated documentation 6 | // files (the "Software"), to deal in the Software without 7 | // restriction, including without limitation the rights to use, 8 | // copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the 10 | // Software is furnished to do so, subject to the following 11 | // conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be 14 | // included in all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 17 | // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 18 | // OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 19 | // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 20 | // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 21 | // WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 22 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 23 | // OTHER DEALINGS IN THE SOFTWARE. 24 | #endregion 25 | 26 | namespace Newtonsoft.Json.Serialization 27 | { 28 | /// 29 | /// Represents a method that constructs an object. 30 | /// 31 | /// The object type to create. 32 | public delegate object ObjectConstructor(params object[] args); 33 | } -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/msdyncrmWorkflowTools/Newtonsoft/JsonExtensionDataAttribute.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Newtonsoft.Json 4 | { 5 | /// 6 | /// Instructs the to deserialize properties with no matching class member into the specified collection 7 | /// and write values during serialization. 8 | /// 9 | [AttributeUsage(AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = false)] 10 | public class JsonExtensionDataAttribute : Attribute 11 | { 12 | /// 13 | /// Gets or sets a value that indicates whether to write extension data when serializing the object. 14 | /// 15 | /// 16 | /// true to write extension data when serializing the object; otherwise, false. The default is true. 17 | /// 18 | public bool WriteData { get; set; } 19 | 20 | /// 21 | /// Gets or sets a value that indicates whether to read extension data when deserializing the object. 22 | /// 23 | /// 24 | /// true to read extension data when deserializing the object; otherwise, false. The default is true. 25 | /// 26 | public bool ReadData { get; set; } 27 | 28 | /// 29 | /// Initializes a new instance of the class. 30 | /// 31 | public JsonExtensionDataAttribute() 32 | { 33 | WriteData = true; 34 | ReadData = true; 35 | } 36 | } 37 | } -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/msdyncrmWorkflowTools_Class/Newtonsoft/JsonExtensionDataAttribute.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Newtonsoft.Json 4 | { 5 | /// 6 | /// Instructs the to deserialize properties with no matching class member into the specified collection 7 | /// and write values during serialization. 8 | /// 9 | [AttributeUsage(AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = false)] 10 | public class JsonExtensionDataAttribute : Attribute 11 | { 12 | /// 13 | /// Gets or sets a value that indicates whether to write extension data when serializing the object. 14 | /// 15 | /// 16 | /// true to write extension data when serializing the object; otherwise, false. The default is true. 17 | /// 18 | public bool WriteData { get; set; } 19 | 20 | /// 21 | /// Gets or sets a value that indicates whether to read extension data when deserializing the object. 22 | /// 23 | /// 24 | /// true to read extension data when deserializing the object; otherwise, false. The default is true. 25 | /// 26 | public bool ReadData { get; set; } 27 | 28 | /// 29 | /// Initializes a new instance of the class. 30 | /// 31 | public JsonExtensionDataAttribute() 32 | { 33 | WriteData = true; 34 | ReadData = true; 35 | } 36 | } 37 | } -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/msdyncrmWorkflowTools_Class/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("msdyncrmWorkflowTools_Class")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("msdyncrmWorkflowTools_Class")] 13 | [assembly: AssemblyCopyright("Copyright © 2016")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("55dedf5e-4ba2-498c-ab7a-b7ef2e41f79a")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/msdyncrmWorkflowTools_ConsoleTest/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("msdyncrmWorkflowTools_ConsoleTest")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("msdyncrmWorkflowTools_ConsoleTest")] 13 | [assembly: AssemblyCopyright("Copyright © 2016")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("2f103372-b287-4057-9e83-667c29492f61")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/msdyncrmWorkflowTools/Newtonsoft/JsonConverterCollection.cs: -------------------------------------------------------------------------------- 1 | #region License 2 | // Copyright (c) 2007 James Newton-King 3 | // 4 | // Permission is hereby granted, free of charge, to any person 5 | // obtaining a copy of this software and associated documentation 6 | // files (the "Software"), to deal in the Software without 7 | // restriction, including without limitation the rights to use, 8 | // copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the 10 | // Software is furnished to do so, subject to the following 11 | // conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be 14 | // included in all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 17 | // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 18 | // OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 19 | // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 20 | // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 21 | // WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 22 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 23 | // OTHER DEALINGS IN THE SOFTWARE. 24 | #endregion 25 | 26 | using System; 27 | using System.Collections.Generic; 28 | using System.Text; 29 | using System.Collections.ObjectModel; 30 | 31 | namespace Newtonsoft.Json 32 | { 33 | /// 34 | /// Represents a collection of . 35 | /// 36 | public class JsonConverterCollection : Collection 37 | { 38 | } 39 | } -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/msdyncrmWorkflowTools_Class/Newtonsoft/JsonConverterCollection.cs: -------------------------------------------------------------------------------- 1 | #region License 2 | // Copyright (c) 2007 James Newton-King 3 | // 4 | // Permission is hereby granted, free of charge, to any person 5 | // obtaining a copy of this software and associated documentation 6 | // files (the "Software"), to deal in the Software without 7 | // restriction, including without limitation the rights to use, 8 | // copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the 10 | // Software is furnished to do so, subject to the following 11 | // conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be 14 | // included in all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 17 | // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 18 | // OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 19 | // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 20 | // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 21 | // WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 22 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 23 | // OTHER DEALINGS IN THE SOFTWARE. 24 | #endregion 25 | 26 | using System; 27 | using System.Collections.Generic; 28 | using System.Text; 29 | using System.Collections.ObjectModel; 30 | 31 | namespace Newtonsoft.Json 32 | { 33 | /// 34 | /// Represents a collection of . 35 | /// 36 | public class JsonConverterCollection : Collection 37 | { 38 | } 39 | } -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/msdyncrmWorkflowTools/Newtonsoft/Linq/JsonLoadSettings.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Newtonsoft.Json.Linq 4 | { 5 | /// 6 | /// Specifies the settings used when loading JSON. 7 | /// 8 | public class JsonLoadSettings 9 | { 10 | private CommentHandling _commentHandling; 11 | private LineInfoHandling _lineInfoHandling; 12 | 13 | /// 14 | /// Gets or sets how JSON comments are handled when loading JSON. 15 | /// 16 | /// The JSON comment handling. 17 | public CommentHandling CommentHandling 18 | { 19 | get { return _commentHandling; } 20 | set 21 | { 22 | if (value < CommentHandling.Ignore || value > CommentHandling.Load) 23 | { 24 | throw new ArgumentOutOfRangeException(nameof(value)); 25 | } 26 | 27 | _commentHandling = value; 28 | } 29 | } 30 | 31 | /// 32 | /// Gets or sets how JSON line info is handled when loading JSON. 33 | /// 34 | /// The JSON line info handling. 35 | public LineInfoHandling LineInfoHandling 36 | { 37 | get { return _lineInfoHandling; } 38 | set 39 | { 40 | if (value < LineInfoHandling.Ignore || value > LineInfoHandling.Load) 41 | { 42 | throw new ArgumentOutOfRangeException(nameof(value)); 43 | } 44 | 45 | _lineInfoHandling = value; 46 | } 47 | } 48 | } 49 | } -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/msdyncrmWorkflowTools_Class/Newtonsoft/Linq/JsonLoadSettings.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Newtonsoft.Json.Linq 4 | { 5 | /// 6 | /// Specifies the settings used when loading JSON. 7 | /// 8 | public class JsonLoadSettings 9 | { 10 | private CommentHandling _commentHandling; 11 | private LineInfoHandling _lineInfoHandling; 12 | 13 | /// 14 | /// Gets or sets how JSON comments are handled when loading JSON. 15 | /// 16 | /// The JSON comment handling. 17 | public CommentHandling CommentHandling 18 | { 19 | get { return _commentHandling; } 20 | set 21 | { 22 | if (value < CommentHandling.Ignore || value > CommentHandling.Load) 23 | { 24 | throw new ArgumentOutOfRangeException(nameof(value)); 25 | } 26 | 27 | _commentHandling = value; 28 | } 29 | } 30 | 31 | /// 32 | /// Gets or sets how JSON line info is handled when loading JSON. 33 | /// 34 | /// The JSON line info handling. 35 | public LineInfoHandling LineInfoHandling 36 | { 37 | get { return _lineInfoHandling; } 38 | set 39 | { 40 | if (value < LineInfoHandling.Ignore || value > LineInfoHandling.Load) 41 | { 42 | throw new ArgumentOutOfRangeException(nameof(value)); 43 | } 44 | 45 | _lineInfoHandling = value; 46 | } 47 | } 48 | } 49 | } -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/msdyncrmWorkflowTools/Newtonsoft/JsonConstructorAttribute.cs: -------------------------------------------------------------------------------- 1 | #region License 2 | // Copyright (c) 2007 James Newton-King 3 | // 4 | // Permission is hereby granted, free of charge, to any person 5 | // obtaining a copy of this software and associated documentation 6 | // files (the "Software"), to deal in the Software without 7 | // restriction, including without limitation the rights to use, 8 | // copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the 10 | // Software is furnished to do so, subject to the following 11 | // conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be 14 | // included in all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 17 | // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 18 | // OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 19 | // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 20 | // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 21 | // WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 22 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 23 | // OTHER DEALINGS IN THE SOFTWARE. 24 | #endregion 25 | 26 | using System; 27 | 28 | namespace Newtonsoft.Json 29 | { 30 | /// 31 | /// Instructs the to use the specified constructor when deserializing that object. 32 | /// 33 | [AttributeUsage(AttributeTargets.Constructor, AllowMultiple = false)] 34 | public sealed class JsonConstructorAttribute : Attribute 35 | { 36 | } 37 | } -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/msdyncrmWorkflowTools/Newtonsoft/Serialization/OnErrorAttribute.cs: -------------------------------------------------------------------------------- 1 | #region License 2 | // Copyright (c) 2007 James Newton-King 3 | // 4 | // Permission is hereby granted, free of charge, to any person 5 | // obtaining a copy of this software and associated documentation 6 | // files (the "Software"), to deal in the Software without 7 | // restriction, including without limitation the rights to use, 8 | // copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the 10 | // Software is furnished to do so, subject to the following 11 | // conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be 14 | // included in all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 17 | // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 18 | // OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 19 | // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 20 | // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 21 | // WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 22 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 23 | // OTHER DEALINGS IN THE SOFTWARE. 24 | #endregion 25 | 26 | using System; 27 | 28 | namespace Newtonsoft.Json.Serialization 29 | { 30 | /// 31 | /// When applied to a method, specifies that the method is called when an error occurs serializing an object. 32 | /// 33 | [AttributeUsage(AttributeTargets.Method, Inherited = false)] 34 | public sealed class OnErrorAttribute : Attribute 35 | { 36 | } 37 | } -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/msdyncrmWorkflowTools/Newtonsoft/Utilities/ValidationUtils.cs: -------------------------------------------------------------------------------- 1 | #region License 2 | // Copyright (c) 2007 James Newton-King 3 | // 4 | // Permission is hereby granted, free of charge, to any person 5 | // obtaining a copy of this software and associated documentation 6 | // files (the "Software"), to deal in the Software without 7 | // restriction, including without limitation the rights to use, 8 | // copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the 10 | // Software is furnished to do so, subject to the following 11 | // conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be 14 | // included in all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 17 | // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 18 | // OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 19 | // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 20 | // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 21 | // WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 22 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 23 | // OTHER DEALINGS IN THE SOFTWARE. 24 | #endregion 25 | 26 | using System; 27 | 28 | namespace Newtonsoft.Json.Utilities 29 | { 30 | internal static class ValidationUtils 31 | { 32 | public static void ArgumentNotNull(object value, string parameterName) 33 | { 34 | if (value == null) 35 | { 36 | throw new ArgumentNullException(parameterName); 37 | } 38 | } 39 | } 40 | } -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/msdyncrmWorkflowTools/Class/GetRecordID.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Crm.Sdk.Messages; 2 | using Microsoft.Xrm.Sdk; 3 | using Microsoft.Xrm.Sdk.Query; 4 | using Microsoft.Xrm.Sdk.Workflow; 5 | using System; 6 | using System.Activities; 7 | using System.Collections.Generic; 8 | using System.Linq; 9 | using System.Text; 10 | using System.Text.RegularExpressions; 11 | using System.Threading.Tasks; 12 | 13 | namespace msdyncrmWorkflowTools 14 | { 15 | public class GetRecordID : CodeActivity 16 | { 17 | #region "Parameter Definition" 18 | [RequiredArgument] 19 | [Input("Record URL")] 20 | [Default("")] 21 | public InArgument RecordURL { get; set; } 22 | 23 | 24 | [Output("Record ID")] 25 | public OutArgument RecordID { get; set; } 26 | 27 | #endregion 28 | 29 | protected override void Execute(CodeActivityContext executionContext) 30 | { 31 | 32 | #region "Load CRM Service from context" 33 | 34 | Common objCommon = new Common(executionContext); 35 | objCommon.tracingService.Trace("Load CRM Service from context --- OK"); 36 | #endregion 37 | 38 | #region "Read Parameters" 39 | String recordURL = this.RecordURL.Get(executionContext); 40 | 41 | 42 | #endregion 43 | 44 | msdyncrmWorkflowTools_Class commonClass = new msdyncrmWorkflowTools_Class(objCommon.service, objCommon.tracingService); 45 | string recordID=commonClass.GetRecordID(recordURL); 46 | 47 | 48 | this.RecordID.Set(executionContext, recordID); 49 | 50 | } 51 | 52 | 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/msdyncrmWorkflowTools/Newtonsoft/SerializationBinder.cs: -------------------------------------------------------------------------------- 1 | 2 | #if (DOTNET || PORTABLE40 || PORTABLE) 3 | using System; 4 | using System.Reflection; 5 | 6 | namespace Newtonsoft.Json 7 | { 8 | /// 9 | /// Allows users to control class loading and mandate what class to load. 10 | /// 11 | public abstract class SerializationBinder 12 | { 13 | /// 14 | /// When overridden in a derived class, controls the binding of a serialized object to a type. 15 | /// 16 | /// Specifies the name of the serialized object. 17 | /// Specifies the name of the serialized object 18 | /// The type of the object the formatter creates a new instance of. 19 | public abstract Type BindToType(string assemblyName, string typeName); 20 | 21 | /// 22 | /// When overridden in a derived class, controls the binding of a serialized object to a type. 23 | /// 24 | /// The type of the object the formatter creates a new instance of. 25 | /// Specifies the name of the serialized object. 26 | /// Specifies the name of the serialized object. 27 | public virtual void BindToName(Type serializedType, out string assemblyName, out string typeName) 28 | { 29 | assemblyName = null; 30 | typeName = null; 31 | } 32 | } 33 | } 34 | 35 | #endif -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/msdyncrmWorkflowTools_Class/Newtonsoft/JsonConstructorAttribute.cs: -------------------------------------------------------------------------------- 1 | #region License 2 | // Copyright (c) 2007 James Newton-King 3 | // 4 | // Permission is hereby granted, free of charge, to any person 5 | // obtaining a copy of this software and associated documentation 6 | // files (the "Software"), to deal in the Software without 7 | // restriction, including without limitation the rights to use, 8 | // copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the 10 | // Software is furnished to do so, subject to the following 11 | // conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be 14 | // included in all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 17 | // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 18 | // OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 19 | // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 20 | // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 21 | // WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 22 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 23 | // OTHER DEALINGS IN THE SOFTWARE. 24 | #endregion 25 | 26 | using System; 27 | 28 | namespace Newtonsoft.Json 29 | { 30 | /// 31 | /// Instructs the to use the specified constructor when deserializing that object. 32 | /// 33 | [AttributeUsage(AttributeTargets.Constructor, AllowMultiple = false)] 34 | public sealed class JsonConstructorAttribute : Attribute 35 | { 36 | } 37 | } -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/msdyncrmWorkflowTools_Class/Newtonsoft/Serialization/OnErrorAttribute.cs: -------------------------------------------------------------------------------- 1 | #region License 2 | // Copyright (c) 2007 James Newton-King 3 | // 4 | // Permission is hereby granted, free of charge, to any person 5 | // obtaining a copy of this software and associated documentation 6 | // files (the "Software"), to deal in the Software without 7 | // restriction, including without limitation the rights to use, 8 | // copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the 10 | // Software is furnished to do so, subject to the following 11 | // conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be 14 | // included in all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 17 | // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 18 | // OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 19 | // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 20 | // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 21 | // WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 22 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 23 | // OTHER DEALINGS IN THE SOFTWARE. 24 | #endregion 25 | 26 | using System; 27 | 28 | namespace Newtonsoft.Json.Serialization 29 | { 30 | /// 31 | /// When applied to a method, specifies that the method is called when an error occurs serializing an object. 32 | /// 33 | [AttributeUsage(AttributeTargets.Method, Inherited = false)] 34 | public sealed class OnErrorAttribute : Attribute 35 | { 36 | } 37 | } -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/msdyncrmWorkflowTools_Class/Newtonsoft/Utilities/ValidationUtils.cs: -------------------------------------------------------------------------------- 1 | #region License 2 | // Copyright (c) 2007 James Newton-King 3 | // 4 | // Permission is hereby granted, free of charge, to any person 5 | // obtaining a copy of this software and associated documentation 6 | // files (the "Software"), to deal in the Software without 7 | // restriction, including without limitation the rights to use, 8 | // copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the 10 | // Software is furnished to do so, subject to the following 11 | // conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be 14 | // included in all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 17 | // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 18 | // OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 19 | // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 20 | // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 21 | // WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 22 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 23 | // OTHER DEALINGS IN THE SOFTWARE. 24 | #endregion 25 | 26 | using System; 27 | 28 | namespace Newtonsoft.Json.Utilities 29 | { 30 | internal static class ValidationUtils 31 | { 32 | public static void ArgumentNotNull(object value, string parameterName) 33 | { 34 | if (value == null) 35 | { 36 | throw new ArgumentNullException(parameterName); 37 | } 38 | } 39 | } 40 | } -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/msdyncrmWorkflowTools_Class/Newtonsoft/SerializationBinder.cs: -------------------------------------------------------------------------------- 1 | 2 | #if (DOTNET || PORTABLE40 || PORTABLE) 3 | using System; 4 | using System.Reflection; 5 | 6 | namespace Newtonsoft.Json 7 | { 8 | /// 9 | /// Allows users to control class loading and mandate what class to load. 10 | /// 11 | public abstract class SerializationBinder 12 | { 13 | /// 14 | /// When overridden in a derived class, controls the binding of a serialized object to a type. 15 | /// 16 | /// Specifies the name of the serialized object. 17 | /// Specifies the name of the serialized object 18 | /// The type of the object the formatter creates a new instance of. 19 | public abstract Type BindToType(string assemblyName, string typeName); 20 | 21 | /// 22 | /// When overridden in a derived class, controls the binding of a serialized object to a type. 23 | /// 24 | /// The type of the object the formatter creates a new instance of. 25 | /// Specifies the name of the serialized object. 26 | /// Specifies the name of the serialized object. 27 | public virtual void BindToName(Type serializedType, out string assemblyName, out string typeName) 28 | { 29 | assemblyName = null; 30 | typeName = null; 31 | } 32 | } 33 | } 34 | 35 | #endif -------------------------------------------------------------------------------- /docs/MapMultiSelectOptionSet.md: -------------------------------------------------------------------------------- 1 | This step allows you to copy multi-select option set attributes between two records. 2 | 3 | To use this activity, you just need to select the **MapMultiSelectOptionSet** option: 4 | 5 | ![](MapMultiSelectOptionSet.png) 6 | 7 | Then, you need to specify the following parameters: 8 | 9 | ![](SetMultiSelectOptionSetInputParameters.png) 10 | 11 | * **Source Record URL (required)** : Dynamics URL of the record whose multi-select option set attributes will be copied from. Notice the Dynamics workflow designer allows you to create this URL easily for the accessible entities in the workflow context. 12 | * **Source Attributes: (required)** : list of attributes separated by comma to be copied. 13 | * **Target Record URL (required)** : Dynamics URL of the record where the attributes will be copied to. 14 | * **Target Attributes: (required)** : list of attributes separated by comma where the original values are copied to. For the mapping to be correct, **the order needs to be the same as the Source Attributes**. 15 | * **Keep Existing Values (optional)**: indicate if the existing selected values in the target multi-select optionset attribute will be maintained. By default, it will remove the existing values and assign the new ones given by the argument "Attributes Values". 16 | * **Fail on Exception (optional)** : this is a secondary attribute which allows you to indicate if the activity will throw an exception if something goes wrong or it will just return the error in an output parameter. 17 | 18 | You can also find an example in this article: 19 | 20 | [https://ramontebar.net/2018/12/08/copying-multi-select-option-sets-in-workflows/](https://ramontebar.net/2018/12/08/copying-multi-select-option-sets-in-workflows/) 21 | -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/msdyncrmWorkflowTools/Class/GetAppModuleID.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Crm.Sdk.Messages; 2 | using Microsoft.Xrm.Sdk; 3 | using Microsoft.Xrm.Sdk.Query; 4 | using Microsoft.Xrm.Sdk.Workflow; 5 | using System; 6 | using System.Activities; 7 | using System.Collections.Generic; 8 | using System.Linq; 9 | using System.Text; 10 | using System.Text.RegularExpressions; 11 | using System.Threading.Tasks; 12 | 13 | namespace msdyncrmWorkflowTools 14 | { 15 | public class GetAppModuleID : CodeActivity 16 | { 17 | #region "Parameter Definition" 18 | [RequiredArgument] 19 | [Input("Application Unique Name")] 20 | [Default("")] 21 | public InArgument AppModuleUniqueName { get; set; } 22 | 23 | [Output("App Module ID")] 24 | public OutArgument AppModuleId { get; set; } 25 | 26 | #endregion 27 | 28 | protected override void Execute(CodeActivityContext executionContext) 29 | { 30 | 31 | #region "Load CRM Service from context" 32 | Common objCommon = new Common(executionContext); 33 | objCommon.tracingService.Trace("Load CRM Service from context --- OK"); 34 | #endregion 35 | 36 | #region "Read Parameters" 37 | String appModuleUniqueName = this.AppModuleUniqueName.Get(executionContext); 38 | #endregion 39 | 40 | msdyncrmWorkflowTools_Class commonClass = new msdyncrmWorkflowTools_Class(objCommon.service, objCommon.tracingService); 41 | 42 | string appModuleId = commonClass.GetAppModuleId(appModuleUniqueName); 43 | 44 | this.AppModuleId.Set(executionContext, appModuleId); 45 | 46 | } 47 | 48 | 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /docs/GetMultiSelectOptionSet.md: -------------------------------------------------------------------------------- 1 | This step allows you to get the values of a multi-select option set attribute from a particular record. 2 | 3 | To use this activity, you just need to select the **GetMultiSelectOptionSet** option: 4 | 5 | ![](GetMultiSelectOptionSet.png) 6 | 7 | Then you specify the following input parameters: 8 | 9 | ![](GetMultiSelectOptionSet_with_options_names.jpg) 10 | 11 | * **Source Record URL (required)**: the URL of the record where the corresponding attribute is located. 12 | * **Attribute Name (required)**: logical name of the attribute whose values are going to be retrieved. 13 | * **Retrieve Options Names (optional)**: flag to indicate if choices (multi-select optionset) labels should be retrieved as well. This will enforce the population of the output parameter **Selected Names**. 14 | * **Fail on Exception (optional)**: this is a secondary attribute which allows you to indicate if the activity will throw an exception if something goes wrong or it will just return the error in an output parameter. 15 | 16 | Once they activity has been executed, there will be two output parameters: 17 | 18 | * **Selected Values**: returns a string with the corresponding numberic option values **separated by comma**. Example: 957340000,957340001,957340002 19 | * **Selected Names**: returns a string with the corresponding option names **separated by comma**. Example: Red,Black,White 20 | 21 | You can also find two examples in these articles: 22 | 23 | * [https://ramontebar.net/2018/12/12/getting-multi-select-option-set-values-in-workflows/](https://ramontebar.net/2018/12/12/getting-multi-select-option-set-values-in-workflows/) 24 | * [https://ramontebar.net/2020/12/22/get-choices-names-in-workflows/](https://ramontebar.net/2020/12/22/get-choices-names-in-workflows/) 25 | -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/msdyncrmWorkflowTools/Newtonsoft/Linq/JsonMergeSettings.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Newtonsoft.Json.Linq 4 | { 5 | /// 6 | /// Specifies the settings used when merging JSON. 7 | /// 8 | public class JsonMergeSettings 9 | { 10 | private MergeArrayHandling _mergeArrayHandling; 11 | private MergeNullValueHandling _mergeNullValueHandling; 12 | 13 | /// 14 | /// Gets or sets the method used when merging JSON arrays. 15 | /// 16 | /// The method used when merging JSON arrays. 17 | public MergeArrayHandling MergeArrayHandling 18 | { 19 | get { return _mergeArrayHandling; } 20 | set 21 | { 22 | if (value < MergeArrayHandling.Concat || value > MergeArrayHandling.Merge) 23 | { 24 | throw new ArgumentOutOfRangeException(nameof(value)); 25 | } 26 | 27 | _mergeArrayHandling = value; 28 | } 29 | } 30 | 31 | /// 32 | /// Gets or sets how how null value properties are merged. 33 | /// 34 | /// How null value properties are merged. 35 | public MergeNullValueHandling MergeNullValueHandling 36 | { 37 | get { return _mergeNullValueHandling; } 38 | set 39 | { 40 | if (value < MergeNullValueHandling.Ignore || value > MergeNullValueHandling.Merge) 41 | { 42 | throw new ArgumentOutOfRangeException(nameof(value)); 43 | } 44 | 45 | _mergeNullValueHandling = value; 46 | } 47 | } 48 | } 49 | } -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/msdyncrmWorkflowTools/Newtonsoft/JsonIgnoreAttribute.cs: -------------------------------------------------------------------------------- 1 | #region License 2 | // Copyright (c) 2007 James Newton-King 3 | // 4 | // Permission is hereby granted, free of charge, to any person 5 | // obtaining a copy of this software and associated documentation 6 | // files (the "Software"), to deal in the Software without 7 | // restriction, including without limitation the rights to use, 8 | // copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the 10 | // Software is furnished to do so, subject to the following 11 | // conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be 14 | // included in all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 17 | // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 18 | // OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 19 | // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 20 | // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 21 | // WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 22 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 23 | // OTHER DEALINGS IN THE SOFTWARE. 24 | #endregion 25 | 26 | using System; 27 | using System.Collections.Generic; 28 | using System.Text; 29 | 30 | namespace Newtonsoft.Json 31 | { 32 | /// 33 | /// Instructs the not to serialize the public field or public read/write property value. 34 | /// 35 | [AttributeUsage(AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = false)] 36 | public sealed class JsonIgnoreAttribute : Attribute 37 | { 38 | } 39 | } -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/msdyncrmWorkflowTools/Newtonsoft/JsonRequiredAttribute.cs: -------------------------------------------------------------------------------- 1 | #region License 2 | // Copyright (c) 2007 James Newton-King 3 | // 4 | // Permission is hereby granted, free of charge, to any person 5 | // obtaining a copy of this software and associated documentation 6 | // files (the "Software"), to deal in the Software without 7 | // restriction, including without limitation the rights to use, 8 | // copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the 10 | // Software is furnished to do so, subject to the following 11 | // conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be 14 | // included in all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 17 | // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 18 | // OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 19 | // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 20 | // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 21 | // WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 22 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 23 | // OTHER DEALINGS IN THE SOFTWARE. 24 | #endregion 25 | 26 | using System; 27 | using System.Collections.Generic; 28 | using System.Text; 29 | 30 | namespace Newtonsoft.Json 31 | { 32 | /// 33 | /// Instructs the to always serialize the member, and require the member has a value. 34 | /// 35 | [AttributeUsage(AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = false)] 36 | public sealed class JsonRequiredAttribute : Attribute 37 | { 38 | } 39 | } -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/msdyncrmWorkflowTools/Newtonsoft/Linq/JsonPath/FieldMultipleFilter.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Globalization; 3 | #if NET20 4 | using Newtonsoft.Json.Utilities.LinqBridge; 5 | #else 6 | using System.Linq; 7 | #endif 8 | using Newtonsoft.Json.Utilities; 9 | 10 | namespace Newtonsoft.Json.Linq.JsonPath 11 | { 12 | internal class FieldMultipleFilter : PathFilter 13 | { 14 | public List Names { get; set; } 15 | 16 | public override IEnumerable ExecuteFilter(IEnumerable current, bool errorWhenNoMatch) 17 | { 18 | foreach (JToken t in current) 19 | { 20 | JObject o = t as JObject; 21 | if (o != null) 22 | { 23 | foreach (string name in Names) 24 | { 25 | JToken v = o[name]; 26 | 27 | if (v != null) 28 | { 29 | yield return v; 30 | } 31 | 32 | if (errorWhenNoMatch) 33 | { 34 | throw new JsonException("Property '{0}' does not exist on JObject.".FormatWith(CultureInfo.InvariantCulture, name)); 35 | } 36 | } 37 | } 38 | else 39 | { 40 | if (errorWhenNoMatch) 41 | { 42 | throw new JsonException("Properties {0} not valid on {1}.".FormatWith(CultureInfo.InvariantCulture, string.Join(", ", Names.Select(n => "'" + n + "'").ToArray()), t.GetType().Name)); 43 | } 44 | } 45 | } 46 | } 47 | } 48 | } -------------------------------------------------------------------------------- /msdyncrmWorkflowTools/msdyncrmWorkflowTools_Class/Newtonsoft/Linq/JsonMergeSettings.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Newtonsoft.Json.Linq 4 | { 5 | /// 6 | /// Specifies the settings used when merging JSON. 7 | /// 8 | public class JsonMergeSettings 9 | { 10 | private MergeArrayHandling _mergeArrayHandling; 11 | private MergeNullValueHandling _mergeNullValueHandling; 12 | 13 | /// 14 | /// Gets or sets the method used when merging JSON arrays. 15 | /// 16 | /// The method used when merging JSON arrays. 17 | public MergeArrayHandling MergeArrayHandling 18 | { 19 | get { return _mergeArrayHandling; } 20 | set 21 | { 22 | if (value < MergeArrayHandling.Concat || value > MergeArrayHandling.Merge) 23 | { 24 | throw new ArgumentOutOfRangeException(nameof(value)); 25 | } 26 | 27 | _mergeArrayHandling = value; 28 | } 29 | } 30 | 31 | /// 32 | /// Gets or sets how how null value properties are merged. 33 | /// 34 | /// How null value properties are merged. 35 | public MergeNullValueHandling MergeNullValueHandling 36 | { 37 | get { return _mergeNullValueHandling; } 38 | set 39 | { 40 | if (value < MergeNullValueHandling.Ignore || value > MergeNullValueHandling.Merge) 41 | { 42 | throw new ArgumentOutOfRangeException(nameof(value)); 43 | } 44 | 45 | _mergeNullValueHandling = value; 46 | } 47 | } 48 | } 49 | } --------------------------------------------------------------------------------