diff --git a/src/api/Elsa.Api/Endpoints/Events/Trigger.cs b/src/api/Elsa.Api/Endpoints/Events/Trigger.cs
index a9e1bab45..8d6c1e326 100644
--- a/src/api/Elsa.Api/Endpoints/Events/Trigger.cs
+++ b/src/api/Elsa.Api/Endpoints/Events/Trigger.cs
@@ -1,6 +1,6 @@
-using Elsa.Activities.Primitives;
using Elsa.Api.ApiResults;
using Elsa.Contracts;
+using Elsa.Modules.Activities.Activities.Primitives;
using Elsa.Runtime.Models;
using Microsoft.AspNetCore.Http;
diff --git a/src/core/Elsa.Core/Activities/Container.cs b/src/core/Elsa.Core/Activities/Container.cs
index 9816c4a35..629b9ef90 100644
--- a/src/core/Elsa.Core/Activities/Container.cs
+++ b/src/core/Elsa.Core/Activities/Container.cs
@@ -5,6 +5,9 @@ using Elsa.Models;
namespace Elsa.Activities;
+///
+/// A base class for activities that control a collection of activities.
+///
public abstract class Container : Activity, IContainer
{
protected Container()
diff --git a/src/core/Elsa.Core/Activities/For.cs b/src/core/Elsa.Core/Activities/For.cs
index 0374c87de..0f6c22709 100644
--- a/src/core/Elsa.Core/Activities/For.cs
+++ b/src/core/Elsa.Core/Activities/For.cs
@@ -12,6 +12,7 @@ public enum ForOperator
GreaterThanOrEqual
}
+[Activity("Elsa", "Control Flow", "Iterate over a sequence of steps between a start and an end number.")]
public class For : Activity
{
public For()
diff --git a/src/core/Elsa.Core/Activities/ForEach.cs b/src/core/Elsa.Core/Activities/ForEach.cs
index b5b3c31fb..8a5d807fc 100644
--- a/src/core/Elsa.Core/Activities/ForEach.cs
+++ b/src/core/Elsa.Core/Activities/ForEach.cs
@@ -4,12 +4,25 @@ using Elsa.Models;
namespace Elsa.Activities;
+[Activity("Elsa", "Control Flow", "Iterate over a set of values.")]
public class ForEach : Activity
{
- [Input] public Input> Items { get; set; } = new(Array.Empty());
- [Outbound] public IActivity? Body { get; set; }
- public Variable CurrentValue { get; set; } = new();
private const string CurrentIndexProperty = "CurrentIndex";
+
+ ///
+ /// The set of values to iterate.
+ ///
+ [Input] public Input> Items { get; set; } = new(Array.Empty());
+
+ ///
+ /// The activity to execute for each iteration.
+ ///
+ [Outbound] public IActivity? Body { get; set; }
+
+ ///
+ /// The current value being iterated.
+ ///
+ public Variable CurrentValue { get; set; } = new();
protected override void Execute(ActivityExecutionContext context)
{
diff --git a/src/core/Elsa.Core/Activities/Fork.cs b/src/core/Elsa.Core/Activities/Fork.cs
index 17f65fd5e..f5fbf42fe 100644
--- a/src/core/Elsa.Core/Activities/Fork.cs
+++ b/src/core/Elsa.Core/Activities/Fork.cs
@@ -5,9 +5,17 @@ using Elsa.Models;
namespace Elsa.Activities;
+[Activity("Elsa", "Control Flow", "Branch execution into multiple branches.")]
public class Fork : Activity
{
+ ///
+ /// Controls when this activity yields control back to its parent activity.
+ ///
[Input] public JoinMode JoinMode { get; set; } = JoinMode.WaitAny;
+
+ ///
+ /// The branches to schedule.
+ ///
[Outbound] public ICollection Branches { get; set; } = new List();
protected override void Execute(ActivityExecutionContext context) => context.PostActivities(Branches.Reverse(), CompleteChildAsync);
diff --git a/src/core/Elsa.Core/Activities/If.cs b/src/core/Elsa.Core/Activities/If.cs
index 6b79afd8d..8107360be 100644
--- a/src/core/Elsa.Core/Activities/If.cs
+++ b/src/core/Elsa.Core/Activities/If.cs
@@ -1,11 +1,14 @@
+using System.Text.Json.Serialization;
using Elsa.Attributes;
using Elsa.Contracts;
using Elsa.Models;
namespace Elsa.Activities;
+[Activity("Elsa", "Control Flow", "Evaluate a Boolean condition to determine which path to execute next.")]
public class If : Activity
{
+ [JsonConstructor]
public If()
{
}
@@ -14,8 +17,19 @@ public class If : Activity
public If(Func condition) => Condition = new Input(condition);
public If(Func condition) => Condition = new Input(condition);
+ ///
+ /// The condition to evaluate.
+ ///
[Input] public Input Condition { get; set; } = new(new Literal(false));
+
+ ///
+ /// The activity to execute when the condition evaluates to true.
+ ///
[Outbound] public IActivity? Then { get; set; }
+
+ ///
+ /// The activity to execute when the condition evaluates to false.
+ ///
[Outbound] public IActivity? Else { get; set; }
protected override void Execute(ActivityExecutionContext context)
@@ -27,8 +41,5 @@ public class If : Activity
context.PostActivity(nextNode, OnChildCompletedAsync);
}
- private ValueTask OnChildCompletedAsync(ActivityExecutionContext context, ActivityExecutionContext childContext)
- {
- return ValueTask.CompletedTask;
- }
+ private ValueTask OnChildCompletedAsync(ActivityExecutionContext context, ActivityExecutionContext childContext) => ValueTask.CompletedTask;
}
\ No newline at end of file
diff --git a/src/core/Elsa.Core/Activities/Inline.cs b/src/core/Elsa.Core/Activities/Inline.cs
index 66662bef7..1572b5124 100644
--- a/src/core/Elsa.Core/Activities/Inline.cs
+++ b/src/core/Elsa.Core/Activities/Inline.cs
@@ -1,3 +1,4 @@
+using Elsa.Attributes;
using Elsa.Models;
namespace Elsa.Activities;
@@ -5,6 +6,7 @@ namespace Elsa.Activities;
///
/// Represents an inline code activity that can be used to execute arbitrary .NET code from a workflow.
///
+[Activity("Elsa", "Primitives", "Evaluate a Boolean condition to determine which path to execute next.")]
public class Inline : Activity
{
private readonly Func _activity;
diff --git a/src/core/Elsa.Core/Activities/ParallelForEach.cs b/src/core/Elsa.Core/Activities/ParallelForEach.cs
index b2f36c2f8..30a76d735 100644
--- a/src/core/Elsa.Core/Activities/ParallelForEach.cs
+++ b/src/core/Elsa.Core/Activities/ParallelForEach.cs
@@ -4,6 +4,7 @@ using Elsa.Models;
namespace Elsa.Activities;
+[Activity("Elsa", "Control Flow", "Schedule an activity for each item in parallel.")]
public class ParallelForEach : Activity
{
private const string CollectedCountProperty = nameof(CollectedCountProperty);
diff --git a/src/core/Elsa.Core/Activities/Sequence.cs b/src/core/Elsa.Core/Activities/Sequence.cs
index c6793ffb0..d38621c44 100644
--- a/src/core/Elsa.Core/Activities/Sequence.cs
+++ b/src/core/Elsa.Core/Activities/Sequence.cs
@@ -6,7 +6,7 @@ using Elsa.Models;
namespace Elsa.Activities;
[Category("Workflows")]
-[Activity("Elsa", "Workflows", "Execute a set of activities in sequence")]
+[Activity("Elsa", "Workflows", "Execute a set of activities in sequence.")]
public class Sequence : Container
{
private const string CurrentIndexProperty = "CurrentIndex";
diff --git a/src/core/Elsa.Core/Activities/SetVariable.cs b/src/core/Elsa.Core/Activities/SetVariable.cs
index 60b924147..23514a7e5 100644
--- a/src/core/Elsa.Core/Activities/SetVariable.cs
+++ b/src/core/Elsa.Core/Activities/SetVariable.cs
@@ -1,8 +1,11 @@
+using System.ComponentModel;
using Elsa.Attributes;
using Elsa.Models;
namespace Elsa.Activities;
+[Browsable(false)]
+[Activity("Elsa", "Primitives", "Set a workflow variable to a given value.")]
public class SetVariable : Activity
{
public SetVariable()
@@ -37,6 +40,7 @@ public class SetVariable : Activity
}
}
+[Activity("Elsa", "Primitives", "Set a workflow variable to a given value.")]
public class SetVariable : Activity
{
[Input] public Input Value { get; set; } = new(default(object));
diff --git a/src/core/Elsa.Core/Activities/Switch.cs b/src/core/Elsa.Core/Activities/Switch.cs
index e67dd68d4..7cc73f76e 100644
--- a/src/core/Elsa.Core/Activities/Switch.cs
+++ b/src/core/Elsa.Core/Activities/Switch.cs
@@ -9,6 +9,7 @@ namespace Elsa.Activities;
/// The Switch activity is an approximation of the `switch` construct in C#.
/// When a case evaluates to true, the associated activity is then scheduled for execution.
///
+[Activity("Elsa", "Control Flow", "Evaluate a set of case conditions and schedule the activity for a matching case.")]
public class Switch : Activity
{
[Input(UIHint = "switch-editor")] public ICollection Cases { get; set; } = new List();
diff --git a/src/core/Elsa.Core/Activities/While.cs b/src/core/Elsa.Core/Activities/While.cs
index 44ae83cdd..d46e8b5f8 100644
--- a/src/core/Elsa.Core/Activities/While.cs
+++ b/src/core/Elsa.Core/Activities/While.cs
@@ -1,11 +1,14 @@
+using System.Text.Json.Serialization;
using Elsa.Attributes;
using Elsa.Contracts;
using Elsa.Models;
namespace Elsa.Activities;
+[Activity("Elsa", "Primitives", "Execute an activity while a given condition evaluates to true.")]
public class While : Activity
{
+ [JsonConstructor]
public While(IActivity? body = default)
{
Body = body!;
diff --git a/src/core/Elsa.Core/Contracts/IActivityNodeResolver.cs b/src/core/Elsa.Core/Contracts/IActivityNodeResolver.cs
index 2a87ae9cd..7acd8329c 100644
--- a/src/core/Elsa.Core/Contracts/IActivityNodeResolver.cs
+++ b/src/core/Elsa.Core/Contracts/IActivityNodeResolver.cs
@@ -1,5 +1,9 @@
namespace Elsa.Contracts;
+///
+/// A node resolver inspects a given activity and returns its outbound "ports". A port is an activity that this activity connects to.
+/// Node resolvers are used to inspect a workflow structure and build a graph of nodes from it for easy node traversal.
+///
public interface IActivityNodeResolver
{
int Priority { get; }
diff --git a/src/core/Elsa.Core/Helpers/TypeNameHelper.cs b/src/core/Elsa.Core/Helpers/TypeNameHelper.cs
index 8eaff76ff..4daaa7052 100644
--- a/src/core/Elsa.Core/Helpers/TypeNameHelper.cs
+++ b/src/core/Elsa.Core/Helpers/TypeNameHelper.cs
@@ -2,9 +2,7 @@ namespace Elsa.Helpers;
public static class TypeNameHelper
{
- private static readonly string[] WellknownNamespaces = { "Elsa.Activities", "Elsa.Triggers" };
-
- public static string? GenerateNamespace(Type activityType) => GenerateTypeNamespace(activityType);
+ public static string? GenerateNamespace(Type activityType) => activityType.Namespace;
public static string GenerateTypeName(Type type, string? ns)
{
@@ -29,16 +27,4 @@ public static class TypeNameHelper
return index < 0 ? ns : ns[(index + 1)..];
}
-
- private static string? GenerateTypeNamespace(Type type)
- {
- if (type.Namespace == null)
- return null;
-
- foreach (var wellknownNamespace in WellknownNamespaces)
- if (type.Namespace.StartsWith(wellknownNamespace))
- return type.Namespace[(wellknownNamespace.Length + 1)..];
-
- return type.Namespace;
- }
}
\ No newline at end of file
diff --git a/src/core/Elsa/Extensions/ServiceCollectionExtensions.cs b/src/core/Elsa/Extensions/ServiceCollectionExtensions.cs
index 615978cb8..e102030fb 100644
--- a/src/core/Elsa/Extensions/ServiceCollectionExtensions.cs
+++ b/src/core/Elsa/Extensions/ServiceCollectionExtensions.cs
@@ -1,7 +1,7 @@
-using Elsa.Activities.Extensions;
using Elsa.ActivityNodeResolvers;
using Elsa.Contracts;
using Elsa.Expressions;
+using Elsa.Modules.Activities.Extensions;
using Elsa.Options;
using Elsa.Persistence.Extensions;
using Elsa.Pipelines.ActivityExecution;
diff --git a/src/designer/elsa-workflows-designer/src/components/activities/flowchart/flowchart.tsx b/src/designer/elsa-workflows-designer/src/components/activities/flowchart/flowchart.tsx
index c0ae35d98..f1a5d5e96 100644
--- a/src/designer/elsa-workflows-designer/src/components/activities/flowchart/flowchart.tsx
+++ b/src/designer/elsa-workflows-designer/src/components/activities/flowchart/flowchart.tsx
@@ -175,7 +175,7 @@ export class FlowchartComponent implements ContainerActivityComponent {
}
return {
- typeName: 'Workflows.Flowchart',
+ typeName: 'Elsa.Flowchart',
activities: remainingActivities,
connections: remainingConnections,
id: this.rootId,
diff --git a/src/modules/Elsa.Modules.Activities/Activities/Console/ReadLine.cs b/src/modules/Elsa.Modules.Activities/Activities/Console/ReadLine.cs
index 1c98eafe1..76b07c71b 100644
--- a/src/modules/Elsa.Modules.Activities/Activities/Console/ReadLine.cs
+++ b/src/modules/Elsa.Modules.Activities/Activities/Console/ReadLine.cs
@@ -1,7 +1,9 @@
+using Elsa.Attributes;
using Elsa.Models;
-namespace Elsa.Activities.Console;
+namespace Elsa.Modules.Activities.Activities.Console;
+[Activity("Elsa", "Console", "Read a line of text from the console.")]
public class ReadLine : Activity
{
public ReadLine()
diff --git a/src/modules/Elsa.Modules.Activities/Activities/Console/WriteLine.cs b/src/modules/Elsa.Modules.Activities/Activities/Console/WriteLine.cs
index d41206188..de2249606 100644
--- a/src/modules/Elsa.Modules.Activities/Activities/Console/WriteLine.cs
+++ b/src/modules/Elsa.Modules.Activities/Activities/Console/WriteLine.cs
@@ -1,8 +1,10 @@
using System.ComponentModel;
+using Elsa.Attributes;
using Elsa.Models;
-namespace Elsa.Activities.Console;
+namespace Elsa.Modules.Activities.Activities.Console;
+[Activity("Elsa", "Console", "Write a line of text to the console.")]
public class WriteLine : Activity
{
public WriteLine()
diff --git a/src/modules/Elsa.Modules.Activities/Activities/Primitives/Event.cs b/src/modules/Elsa.Modules.Activities/Activities/Primitives/Event.cs
index 37ccad172..d045d188f 100644
--- a/src/modules/Elsa.Modules.Activities/Activities/Primitives/Event.cs
+++ b/src/modules/Elsa.Modules.Activities/Activities/Primitives/Event.cs
@@ -2,8 +2,9 @@ using Elsa.Attributes;
using Elsa.Contracts;
using Elsa.Models;
-namespace Elsa.Activities.Primitives;
+namespace Elsa.Modules.Activities.Activities.Primitives;
+[Activity("Elsa", "Primitives", "Wait for an event to be triggered.")]
public class Event : Activity
{
public Event()
diff --git a/src/modules/Elsa.Modules.Activities/Activities/Workflows/Connection.cs b/src/modules/Elsa.Modules.Activities/Activities/Workflows/Connection.cs
deleted file mode 100644
index 57beae273..000000000
--- a/src/modules/Elsa.Modules.Activities/Activities/Workflows/Connection.cs
+++ /dev/null
@@ -1 +0,0 @@
-namespace Elsa.Activities.Workflows;
\ No newline at end of file
diff --git a/src/modules/Elsa.Modules.Activities/Activities/Workflows/DispatchWorkflow.cs b/src/modules/Elsa.Modules.Activities/Activities/Workflows/DispatchWorkflow.cs
index 22a21812f..4163daca6 100644
--- a/src/modules/Elsa.Modules.Activities/Activities/Workflows/DispatchWorkflow.cs
+++ b/src/modules/Elsa.Modules.Activities/Activities/Workflows/DispatchWorkflow.cs
@@ -4,12 +4,12 @@ using Elsa.Persistence.Models;
using Elsa.Runtime.Contracts;
using Microsoft.Extensions.Logging;
-namespace Elsa.Activities.Workflows;
+namespace Elsa.Modules.Activities.Activities.Workflows;
///
/// Creates a new workflow instance of the specified workflow and dispatches it for execution.
///
-[Activity("Elsa", "Create a new workflow instance of the specified workflow and dispatches it for execution.")]
+[Activity("Elsa", "Workflows","Create a new workflow instance of the specified workflow and dispatches it for execution.")]
public class DispatchWorkflow : Activity
{
public Input WorkflowDefinitionId { get; set; } = new("");
diff --git a/src/modules/Elsa.Modules.Activities/Activities/Workflows/Flowchart.cs b/src/modules/Elsa.Modules.Activities/Activities/Workflows/Flowchart.cs
index 527f4af7c..5240deaa7 100644
--- a/src/modules/Elsa.Modules.Activities/Activities/Workflows/Flowchart.cs
+++ b/src/modules/Elsa.Modules.Activities/Activities/Workflows/Flowchart.cs
@@ -1,13 +1,13 @@
-using System.ComponentModel;
using Elsa.Attributes;
using Elsa.Contracts;
using Elsa.Models;
+using Container = Elsa.Activities.Container;
-namespace Elsa.Activities.Workflows;
+namespace Elsa.Modules.Activities.Activities.Workflows;
public record Connection(IActivity Source, IActivity Target, string? SourcePort, string TargetPort);
-[Category("Workflows")]
+[Activity("Elsa", "Workflows", "A flowchart is a collection of activities and connections between them.")]
public class Flowchart : Container
{
[Node] public IActivity? Start { get; set; } = default!;
diff --git a/src/modules/Elsa.Modules.Activities/Activities/Workflows/SetName.cs b/src/modules/Elsa.Modules.Activities/Activities/Workflows/SetName.cs
index 29d276236..7c0a975b0 100644
--- a/src/modules/Elsa.Modules.Activities/Activities/Workflows/SetName.cs
+++ b/src/modules/Elsa.Modules.Activities/Activities/Workflows/SetName.cs
@@ -3,13 +3,13 @@ using Elsa.Attributes;
using Elsa.Models;
using Elsa.Runtime.Middleware;
-namespace Elsa.Activities.Workflows;
+namespace Elsa.Modules.Activities.Activities.Workflows;
///
/// Sets a transient property on the workflow execution context the specified name value.
/// This value is used by the component to update the name of the workflow instance.
///
-[Activity("Elsa", "Set the name of the workflow instance to a specified value.")]
+[Activity("Elsa", "Workflows", "Set the name of the workflow instance to a specified value.")]
public class SetName : Activity
{
internal static readonly object WorkflowInstanceNameKey = new();
diff --git a/src/modules/Elsa.Modules.Activities/Configurators/CustomSerializationOptionConfigurator.cs b/src/modules/Elsa.Modules.Activities/Configurators/CustomSerializationOptionConfigurator.cs
index 79d676976..bb5921200 100644
--- a/src/modules/Elsa.Modules.Activities/Configurators/CustomSerializationOptionConfigurator.cs
+++ b/src/modules/Elsa.Modules.Activities/Configurators/CustomSerializationOptionConfigurator.cs
@@ -1,10 +1,10 @@
using System.Text.Json;
using System.Text.Json.Serialization;
-using Elsa.Activities.Converters;
using Elsa.Management.Contracts;
+using Elsa.Modules.Activities.Converters;
using Microsoft.Extensions.DependencyInjection;
-namespace Elsa.Activities.Configurators;
+namespace Elsa.Modules.Activities.Configurators;
///
/// Add additional objects.
diff --git a/src/modules/Elsa.Modules.Activities/Converters/ConnectionJsonConverter.cs b/src/modules/Elsa.Modules.Activities/Converters/ConnectionJsonConverter.cs
index c8f436310..081d87b8f 100644
--- a/src/modules/Elsa.Modules.Activities/Converters/ConnectionJsonConverter.cs
+++ b/src/modules/Elsa.Modules.Activities/Converters/ConnectionJsonConverter.cs
@@ -1,9 +1,9 @@
using System.Text.Json;
using System.Text.Json.Serialization;
-using Elsa.Activities.Workflows;
using Elsa.Contracts;
+using Elsa.Modules.Activities.Activities.Workflows;
-namespace Elsa.Activities.Converters;
+namespace Elsa.Modules.Activities.Converters;
public class ConnectionJsonConverter : JsonConverter
{
diff --git a/src/modules/Elsa.Modules.Activities/Converters/FlowchartJsonConverter.cs b/src/modules/Elsa.Modules.Activities/Converters/FlowchartJsonConverter.cs
index f612c78a0..dc84186c0 100644
--- a/src/modules/Elsa.Modules.Activities/Converters/FlowchartJsonConverter.cs
+++ b/src/modules/Elsa.Modules.Activities/Converters/FlowchartJsonConverter.cs
@@ -1,9 +1,9 @@
using System.Text.Json;
using System.Text.Json.Serialization;
-using Elsa.Activities.Workflows;
using Elsa.Contracts;
+using Elsa.Modules.Activities.Activities.Workflows;
-namespace Elsa.Activities.Converters;
+namespace Elsa.Modules.Activities.Converters;
public class FlowchartJsonConverter : JsonConverter
{
diff --git a/src/modules/Elsa.Modules.Activities/Elsa.Modules.Activities.csproj b/src/modules/Elsa.Modules.Activities/Elsa.Modules.Activities.csproj
index 225e51869..afddfe6dc 100644
--- a/src/modules/Elsa.Modules.Activities/Elsa.Modules.Activities.csproj
+++ b/src/modules/Elsa.Modules.Activities/Elsa.Modules.Activities.csproj
@@ -10,8 +10,4 @@
-
-
-
-
diff --git a/src/modules/Elsa.Modules.Activities/Extensions/ServiceCollectionExtensions.cs b/src/modules/Elsa.Modules.Activities/Extensions/ServiceCollectionExtensions.cs
index 62dc70692..c1161d8b6 100644
--- a/src/modules/Elsa.Modules.Activities/Extensions/ServiceCollectionExtensions.cs
+++ b/src/modules/Elsa.Modules.Activities/Extensions/ServiceCollectionExtensions.cs
@@ -1,10 +1,10 @@
-using Elsa.Activities.Configurators;
-using Elsa.Activities.Resolvers;
using Elsa.Contracts;
using Elsa.Management.Contracts;
+using Elsa.Modules.Activities.Configurators;
+using Elsa.Modules.Activities.Resolvers;
using Microsoft.Extensions.DependencyInjection;
-namespace Elsa.Activities.Extensions;
+namespace Elsa.Modules.Activities.Extensions;
public static class ServiceCollectionExtensions
{
diff --git a/src/modules/Elsa.Modules.Activities/Resolvers/SwitchActivityNodeResolver.cs b/src/modules/Elsa.Modules.Activities/Resolvers/SwitchActivityNodeResolver.cs
index 0a48379b5..d61840b3f 100644
--- a/src/modules/Elsa.Modules.Activities/Resolvers/SwitchActivityNodeResolver.cs
+++ b/src/modules/Elsa.Modules.Activities/Resolvers/SwitchActivityNodeResolver.cs
@@ -1,6 +1,7 @@
+using Elsa.Activities;
using Elsa.Contracts;
-namespace Elsa.Activities.Resolvers;
+namespace Elsa.Modules.Activities.Resolvers;
///
/// Returns a list of outbound activities for a given activity's branches.
diff --git a/src/samples/aspnet/Elsa.Samples.Web1/Activities/MyGreeterComposite.cs b/src/samples/aspnet/Elsa.Samples.Web1/Activities/MyGreeterComposite.cs
index d1080c4b8..69433e827 100644
--- a/src/samples/aspnet/Elsa.Samples.Web1/Activities/MyGreeterComposite.cs
+++ b/src/samples/aspnet/Elsa.Samples.Web1/Activities/MyGreeterComposite.cs
@@ -1,8 +1,8 @@
using System.Threading.Tasks;
using Elsa.Activities;
-using Elsa.Activities.Console;
using Elsa.Attributes;
using Elsa.Models;
+using Elsa.Modules.Activities.Activities.Console;
namespace Elsa.Samples.Web1.Activities;
diff --git a/src/samples/aspnet/Elsa.Samples.Web1/Program.cs b/src/samples/aspnet/Elsa.Samples.Web1/Program.cs
index 5bdaeb824..9d6be7610 100644
--- a/src/samples/aspnet/Elsa.Samples.Web1/Program.cs
+++ b/src/samples/aspnet/Elsa.Samples.Web1/Program.cs
@@ -1,12 +1,12 @@
using Elsa.Activities;
-using Elsa.Activities.Console;
-using Elsa.Activities.Workflows;
using Elsa.Api.Extensions;
using Elsa.Extensions;
using Elsa.Jobs.Extensions;
using Elsa.Management.Contracts;
using Elsa.Management.Extensions;
using Elsa.Mediator.Extensions;
+using Elsa.Modules.Activities.Activities.Console;
+using Elsa.Modules.Activities.Activities.Workflows;
using Elsa.Modules.AzureServiceBus.Activities;
using Elsa.Modules.AzureServiceBus.Extensions;
using Elsa.Modules.Hangfire.Services;
diff --git a/src/samples/aspnet/Elsa.Samples.Web1/Workflows/CompositeActivitiesWorkflow.cs b/src/samples/aspnet/Elsa.Samples.Web1/Workflows/CompositeActivitiesWorkflow.cs
index 3df308998..842296ddd 100644
--- a/src/samples/aspnet/Elsa.Samples.Web1/Workflows/CompositeActivitiesWorkflow.cs
+++ b/src/samples/aspnet/Elsa.Samples.Web1/Workflows/CompositeActivitiesWorkflow.cs
@@ -1,7 +1,7 @@
using Elsa.Activities;
-using Elsa.Activities.Console;
using Elsa.Contracts;
using Elsa.Models;
+using Elsa.Modules.Activities.Activities.Console;
using Elsa.Runtime.Contracts;
using Elsa.Samples.Web1.Activities;
diff --git a/src/samples/aspnet/Elsa.Samples.Web1/Workflows/ForkedHttpWorkflow.cs b/src/samples/aspnet/Elsa.Samples.Web1/Workflows/ForkedHttpWorkflow.cs
index e8a3bc746..343a2e47f 100644
--- a/src/samples/aspnet/Elsa.Samples.Web1/Workflows/ForkedHttpWorkflow.cs
+++ b/src/samples/aspnet/Elsa.Samples.Web1/Workflows/ForkedHttpWorkflow.cs
@@ -1,9 +1,9 @@
using System.Collections.Generic;
using System.Net;
using Elsa.Activities;
-using Elsa.Activities.Console;
using Elsa.Contracts;
using Elsa.Models;
+using Elsa.Modules.Activities.Activities.Console;
using Elsa.Modules.Http;
using Elsa.Runtime.Contracts;
using Microsoft.AspNetCore.Http;
diff --git a/src/samples/aspnet/Elsa.Samples.Web1/Workflows/HeartbeatWorkflow.cs b/src/samples/aspnet/Elsa.Samples.Web1/Workflows/HeartbeatWorkflow.cs
index 6e5f59ab9..55008193a 100644
--- a/src/samples/aspnet/Elsa.Samples.Web1/Workflows/HeartbeatWorkflow.cs
+++ b/src/samples/aspnet/Elsa.Samples.Web1/Workflows/HeartbeatWorkflow.cs
@@ -1,7 +1,7 @@
using System;
using Elsa.Activities;
-using Elsa.Activities.Console;
using Elsa.Contracts;
+using Elsa.Modules.Activities.Activities.Console;
using Elsa.Modules.Scheduling.Triggers;
using Elsa.Runtime.Contracts;
diff --git a/src/samples/aspnet/Elsa.Samples.Web1/Workflows/HelloWorldWorkflow.cs b/src/samples/aspnet/Elsa.Samples.Web1/Workflows/HelloWorldWorkflow.cs
index 531919491..9068ccd2d 100644
--- a/src/samples/aspnet/Elsa.Samples.Web1/Workflows/HelloWorldWorkflow.cs
+++ b/src/samples/aspnet/Elsa.Samples.Web1/Workflows/HelloWorldWorkflow.cs
@@ -1,5 +1,5 @@
-using Elsa.Activities.Console;
using Elsa.Contracts;
+using Elsa.Modules.Activities.Activities.Console;
using Elsa.Runtime.Contracts;
namespace Elsa.Samples.Web1.Workflows;
diff --git a/src/samples/aspnet/Elsa.Samples.Web1/Workflows/HttpWorkflow.cs b/src/samples/aspnet/Elsa.Samples.Web1/Workflows/HttpWorkflow.cs
index 39535e0fe..ba74beeeb 100644
--- a/src/samples/aspnet/Elsa.Samples.Web1/Workflows/HttpWorkflow.cs
+++ b/src/samples/aspnet/Elsa.Samples.Web1/Workflows/HttpWorkflow.cs
@@ -1,9 +1,9 @@
using System.Collections.Generic;
using System.Net;
using Elsa.Activities;
-using Elsa.Activities.Console;
using Elsa.Contracts;
using Elsa.Models;
+using Elsa.Modules.Activities.Activities.Console;
using Elsa.Modules.Http;
using Elsa.Runtime.Contracts;
diff --git a/src/samples/aspnet/Elsa.Samples.Web1/Workflows/ReceiveMessageWorkflow.cs b/src/samples/aspnet/Elsa.Samples.Web1/Workflows/ReceiveMessageWorkflow.cs
index b3d9ead4c..32fb1e090 100644
--- a/src/samples/aspnet/Elsa.Samples.Web1/Workflows/ReceiveMessageWorkflow.cs
+++ b/src/samples/aspnet/Elsa.Samples.Web1/Workflows/ReceiveMessageWorkflow.cs
@@ -1,7 +1,7 @@
using Elsa.Activities;
-using Elsa.Activities.Console;
using Elsa.Contracts;
using Elsa.Models;
+using Elsa.Modules.Activities.Activities.Console;
using Elsa.Modules.AzureServiceBus.Activities;
using Elsa.Runtime.Contracts;
diff --git a/src/samples/aspnet/Elsa.Samples.Web1/Workflows/RunJavaScriptWorkflow.cs b/src/samples/aspnet/Elsa.Samples.Web1/Workflows/RunJavaScriptWorkflow.cs
index 236881659..76852236c 100644
--- a/src/samples/aspnet/Elsa.Samples.Web1/Workflows/RunJavaScriptWorkflow.cs
+++ b/src/samples/aspnet/Elsa.Samples.Web1/Workflows/RunJavaScriptWorkflow.cs
@@ -1,7 +1,7 @@
using Elsa.Activities;
-using Elsa.Activities.Console;
using Elsa.Contracts;
using Elsa.Models;
+using Elsa.Modules.Activities.Activities.Console;
using Elsa.Modules.JavaScript.Activities;
using Elsa.Runtime.Contracts;
diff --git a/src/samples/aspnet/Elsa.Samples.Web1/Workflows/WorkflowContextsWorkflow.cs b/src/samples/aspnet/Elsa.Samples.Web1/Workflows/WorkflowContextsWorkflow.cs
index 9b36726ce..fa3a237fb 100644
--- a/src/samples/aspnet/Elsa.Samples.Web1/Workflows/WorkflowContextsWorkflow.cs
+++ b/src/samples/aspnet/Elsa.Samples.Web1/Workflows/WorkflowContextsWorkflow.cs
@@ -1,7 +1,7 @@
using Elsa.Activities;
-using Elsa.Activities.Console;
using Elsa.Contracts;
using Elsa.Models;
+using Elsa.Modules.Activities.Activities.Console;
using Elsa.Modules.WorkflowContexts.Abstractions;
using Elsa.Modules.WorkflowContexts.Extensions;
using Elsa.Runtime.Contracts;
diff --git a/src/samples/aspnet/Elsa.Samples.Web2/Workflows/HelloWorldWorkflow.cs b/src/samples/aspnet/Elsa.Samples.Web2/Workflows/HelloWorldWorkflow.cs
index 93d3383d5..9a83aaf80 100644
--- a/src/samples/aspnet/Elsa.Samples.Web2/Workflows/HelloWorldWorkflow.cs
+++ b/src/samples/aspnet/Elsa.Samples.Web2/Workflows/HelloWorldWorkflow.cs
@@ -1,5 +1,5 @@
-using Elsa.Activities.Console;
using Elsa.Contracts;
+using Elsa.Modules.Activities.Activities.Console;
using Elsa.Runtime.Contracts;
namespace Elsa.Samples.Web2.Workflows;
diff --git a/src/samples/console/Elsa.Samples.Console1/Workflows/BlockingParallelForEachWorkflow.cs b/src/samples/console/Elsa.Samples.Console1/Workflows/BlockingParallelForEachWorkflow.cs
index 7df88bb95..7f9f8ddee 100644
--- a/src/samples/console/Elsa.Samples.Console1/Workflows/BlockingParallelForEachWorkflow.cs
+++ b/src/samples/console/Elsa.Samples.Console1/Workflows/BlockingParallelForEachWorkflow.cs
@@ -1,9 +1,9 @@
using System.Collections.Generic;
using Elsa.Activities;
-using Elsa.Activities.Console;
-using Elsa.Activities.Primitives;
using Elsa.Contracts;
using Elsa.Models;
+using Elsa.Modules.Activities.Activities.Console;
+using Elsa.Modules.Activities.Activities.Primitives;
namespace Elsa.Samples.Console1.Workflows;
diff --git a/src/samples/console/Elsa.Samples.Console1/Workflows/BlockingWorkflow.cs b/src/samples/console/Elsa.Samples.Console1/Workflows/BlockingWorkflow.cs
index ae6273d7f..d30fba534 100644
--- a/src/samples/console/Elsa.Samples.Console1/Workflows/BlockingWorkflow.cs
+++ b/src/samples/console/Elsa.Samples.Console1/Workflows/BlockingWorkflow.cs
@@ -1,7 +1,7 @@
using Elsa.Activities;
-using Elsa.Activities.Console;
-using Elsa.Activities.Primitives;
using Elsa.Contracts;
+using Elsa.Modules.Activities.Activities.Console;
+using Elsa.Modules.Activities.Activities.Primitives;
namespace Elsa.Samples.Console1.Workflows;
diff --git a/src/samples/console/Elsa.Samples.Console1/Workflows/ConditionalWorkflow.cs b/src/samples/console/Elsa.Samples.Console1/Workflows/ConditionalWorkflow.cs
index 3e425c690..64578ed1f 100644
--- a/src/samples/console/Elsa.Samples.Console1/Workflows/ConditionalWorkflow.cs
+++ b/src/samples/console/Elsa.Samples.Console1/Workflows/ConditionalWorkflow.cs
@@ -1,7 +1,7 @@
using Elsa.Activities;
-using Elsa.Activities.Console;
using Elsa.Contracts;
using Elsa.Models;
+using Elsa.Modules.Activities.Activities.Console;
namespace Elsa.Samples.Console1.Workflows;
diff --git a/src/samples/console/Elsa.Samples.Console1/Workflows/CustomizedActivityWorkflow.cs b/src/samples/console/Elsa.Samples.Console1/Workflows/CustomizedActivityWorkflow.cs
index 6ffce2c94..19c21641c 100644
--- a/src/samples/console/Elsa.Samples.Console1/Workflows/CustomizedActivityWorkflow.cs
+++ b/src/samples/console/Elsa.Samples.Console1/Workflows/CustomizedActivityWorkflow.cs
@@ -1,5 +1,5 @@
-using Elsa.Activities.Console;
using Elsa.Contracts;
+using Elsa.Modules.Activities.Activities.Console;
namespace Elsa.Samples.Console1.Workflows;
diff --git a/src/samples/console/Elsa.Samples.Console1/Workflows/FlowchartWorkflow.cs b/src/samples/console/Elsa.Samples.Console1/Workflows/FlowchartWorkflow.cs
index e13b36ddc..a2133ed19 100644
--- a/src/samples/console/Elsa.Samples.Console1/Workflows/FlowchartWorkflow.cs
+++ b/src/samples/console/Elsa.Samples.Console1/Workflows/FlowchartWorkflow.cs
@@ -1,8 +1,8 @@
using Elsa.Activities;
-using Elsa.Activities.Console;
-using Elsa.Activities.Workflows;
using Elsa.Contracts;
using Elsa.Models;
+using Elsa.Modules.Activities.Activities.Console;
+using Elsa.Modules.Activities.Activities.Workflows;
namespace Elsa.Samples.Console1.Workflows;
diff --git a/src/samples/console/Elsa.Samples.Console1/Workflows/ForEachWorkflow.cs b/src/samples/console/Elsa.Samples.Console1/Workflows/ForEachWorkflow.cs
index dad60fb01..33eaa7c6d 100644
--- a/src/samples/console/Elsa.Samples.Console1/Workflows/ForEachWorkflow.cs
+++ b/src/samples/console/Elsa.Samples.Console1/Workflows/ForEachWorkflow.cs
@@ -1,8 +1,8 @@
using System.Collections.Generic;
using Elsa.Activities;
-using Elsa.Activities.Console;
using Elsa.Contracts;
using Elsa.Models;
+using Elsa.Modules.Activities.Activities.Console;
namespace Elsa.Samples.Console1.Workflows;
diff --git a/src/samples/console/Elsa.Samples.Console1/Workflows/ForWorkflow.cs b/src/samples/console/Elsa.Samples.Console1/Workflows/ForWorkflow.cs
index d94d12a70..0a2b4691a 100644
--- a/src/samples/console/Elsa.Samples.Console1/Workflows/ForWorkflow.cs
+++ b/src/samples/console/Elsa.Samples.Console1/Workflows/ForWorkflow.cs
@@ -1,7 +1,7 @@
using Elsa.Activities;
-using Elsa.Activities.Console;
using Elsa.Contracts;
using Elsa.Models;
+using Elsa.Modules.Activities.Activities.Console;
namespace Elsa.Samples.Console1.Workflows;
diff --git a/src/samples/console/Elsa.Samples.Console1/Workflows/ForkedWorkflow.cs b/src/samples/console/Elsa.Samples.Console1/Workflows/ForkedWorkflow.cs
index d31c9ac03..d24c09ded 100644
--- a/src/samples/console/Elsa.Samples.Console1/Workflows/ForkedWorkflow.cs
+++ b/src/samples/console/Elsa.Samples.Console1/Workflows/ForkedWorkflow.cs
@@ -1,7 +1,7 @@
using Elsa.Activities;
-using Elsa.Activities.Console;
-using Elsa.Activities.Primitives;
using Elsa.Contracts;
+using Elsa.Modules.Activities.Activities.Console;
+using Elsa.Modules.Activities.Activities.Primitives;
namespace Elsa.Samples.Console1.Workflows;
diff --git a/src/samples/console/Elsa.Samples.Console1/Workflows/GreetingWorkflow.cs b/src/samples/console/Elsa.Samples.Console1/Workflows/GreetingWorkflow.cs
index b2ea6009e..739544e7d 100644
--- a/src/samples/console/Elsa.Samples.Console1/Workflows/GreetingWorkflow.cs
+++ b/src/samples/console/Elsa.Samples.Console1/Workflows/GreetingWorkflow.cs
@@ -1,7 +1,7 @@
using Elsa.Activities;
-using Elsa.Activities.Console;
using Elsa.Contracts;
using Elsa.Models;
+using Elsa.Modules.Activities.Activities.Console;
namespace Elsa.Samples.Console1.Workflows;
diff --git a/src/samples/console/Elsa.Samples.Console1/Workflows/HelloGoodbyeWorkflow.cs b/src/samples/console/Elsa.Samples.Console1/Workflows/HelloGoodbyeWorkflow.cs
index 9f71af92d..b3c79b11d 100644
--- a/src/samples/console/Elsa.Samples.Console1/Workflows/HelloGoodbyeWorkflow.cs
+++ b/src/samples/console/Elsa.Samples.Console1/Workflows/HelloGoodbyeWorkflow.cs
@@ -1,6 +1,6 @@
using Elsa.Activities;
-using Elsa.Activities.Console;
using Elsa.Contracts;
+using Elsa.Modules.Activities.Activities.Console;
namespace Elsa.Samples.Console1.Workflows;
diff --git a/src/samples/console/Elsa.Samples.Console1/Workflows/HelloWorldWorkflow.cs b/src/samples/console/Elsa.Samples.Console1/Workflows/HelloWorldWorkflow.cs
index d4131b915..5dd01841a 100644
--- a/src/samples/console/Elsa.Samples.Console1/Workflows/HelloWorldWorkflow.cs
+++ b/src/samples/console/Elsa.Samples.Console1/Workflows/HelloWorldWorkflow.cs
@@ -1,5 +1,5 @@
-using Elsa.Activities.Console;
using Elsa.Contracts;
+using Elsa.Modules.Activities.Activities.Console;
namespace Elsa.Samples.Console1.Workflows;
diff --git a/src/samples/console/Elsa.Samples.Console1/Workflows/ParallelForEachWorkflow.cs b/src/samples/console/Elsa.Samples.Console1/Workflows/ParallelForEachWorkflow.cs
index 75cac2a8f..fbafe4ba6 100644
--- a/src/samples/console/Elsa.Samples.Console1/Workflows/ParallelForEachWorkflow.cs
+++ b/src/samples/console/Elsa.Samples.Console1/Workflows/ParallelForEachWorkflow.cs
@@ -1,8 +1,8 @@
using System.Collections.Generic;
using Elsa.Activities;
-using Elsa.Activities.Console;
using Elsa.Contracts;
using Elsa.Models;
+using Elsa.Modules.Activities.Activities.Console;
namespace Elsa.Samples.Console1.Workflows;
diff --git a/src/samples/console/Elsa.Samples.Console1/Workflows/VariablesWorkflow.cs b/src/samples/console/Elsa.Samples.Console1/Workflows/VariablesWorkflow.cs
index c0ba303d4..1ba499726 100644
--- a/src/samples/console/Elsa.Samples.Console1/Workflows/VariablesWorkflow.cs
+++ b/src/samples/console/Elsa.Samples.Console1/Workflows/VariablesWorkflow.cs
@@ -1,7 +1,7 @@
using Elsa.Activities;
-using Elsa.Activities.Console;
using Elsa.Contracts;
using Elsa.Models;
+using Elsa.Modules.Activities.Activities.Console;
namespace Elsa.Samples.Console1.Workflows;
diff --git a/src/samples/console/Elsa.Samples.Console1/Workflows/WhileWorkflow.cs b/src/samples/console/Elsa.Samples.Console1/Workflows/WhileWorkflow.cs
index 864f3e2fc..a31449294 100644
--- a/src/samples/console/Elsa.Samples.Console1/Workflows/WhileWorkflow.cs
+++ b/src/samples/console/Elsa.Samples.Console1/Workflows/WhileWorkflow.cs
@@ -1,8 +1,8 @@
using Elsa.Activities;
-using Elsa.Activities.Console;
-using Elsa.Activities.Primitives;
using Elsa.Contracts;
using Elsa.Models;
+using Elsa.Modules.Activities.Activities.Console;
+using Elsa.Modules.Activities.Activities.Primitives;
namespace Elsa.Samples.Console1.Workflows;
diff --git a/src/samples/console/Elsa.Samples.Console2/Program.cs b/src/samples/console/Elsa.Samples.Console2/Program.cs
index 525cd5aba..7578578e2 100644
--- a/src/samples/console/Elsa.Samples.Console2/Program.cs
+++ b/src/samples/console/Elsa.Samples.Console2/Program.cs
@@ -2,13 +2,13 @@
using System.IO;
using System.Reflection;
using Elsa.Activities;
-using Elsa.Activities.Console;
using Elsa.Contracts;
using Elsa.Dsl.Abstractions;
using Elsa.Dsl.Contracts;
using Elsa.Dsl.Extensions;
using Elsa.Extensions;
using Elsa.Models;
+using Elsa.Modules.Activities.Activities.Console;
using Elsa.Modules.Http;
using Elsa.Modules.Scheduling.Triggers;
using Elsa.Persistence.InMemory.Extensions;