elsa-workflows / elsa-workflows/elsa-extensions

Feature: Output Converter Extension Module

Open
#164 0 comments 0 reactions 0 assignees View on GitHub
enhancement triaged
Dominant language
C#
Stars
49
Forks
48
Avg merge
21h 35m
Merged PRs (30d)
20

Description

## Depends On

Requires support for the proposed **[Extensible Activity Output Converters](https://github.com/elsa-workflows/elsa-core/issues/7770)** capability within Elsa Core.

---

## Summary

Provide an optional extension module that registers reusable output converters and related integration components.

The goal is to make output conversion available without forcing all Elsa users to depend on or enable the feature.

---

## Proposed Module

Example:

```csharp
Elsa.OutputConverters
```

(or similar naming)

---

## Responsibilities

The module would:

- Register built-in output converters.
- Provide dependency injection extensions.
- Provide discovery mechanisms for converter implementations.
- Remain entirely opt-in.

---

## Potential Built-In Converters

### DataSet → Record Collection

Convert:

```csharp
DataSet
```

to:

```csharp
Dictionary[]
```

Useful for SQL query outputs and scripting activities.

---

### XML → JSON

Convert XML content into JSON structures.

---

### JSON → XML

Convert JSON content into XML documents.

---

### CSV → Object Collection

Convert CSV content into strongly structured collections.

---

### String → Enum

Convert string values into enum types.

---

### Binary Content Converters

Convert binary content into supported domain-specific representations.

---

## Extensibility

Application developers should be able to register their own custom converters through dependency injection.

Example:

```csharp
services.AddOutputConverter();
```

This would allow organisation-specific conversion logic to participate in the same conversion pipeline as built-in converters.

---

## Potential Future Integrations

Examples of modules that could benefit from output converters:

- Elsa.Sql (`DataSet` → Record Collection)
- File processing activities
- XML activities
- JSON activities
- Custom enterprise activities

The aim is to provide a reusable conversion mechanism that can be adopted incrementally by any module without changing its existing output contracts.

Contributor guide

Open the contributing guide

Research direction

Start by reading the proposed Extensible Activity Output Converters capability in Elsa Core issue 7770, then review how Elsa extensions currently register services and integrations. Define the opt-in module boundary, built-in converter scope, discovery mechanism, and dependency-injection registration before implementation. Done means the module can be adopted independently and supports the agreed converter and custom-registration scenarios.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp
Domain
backend-api-design
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.