universal-export-engine
Service icon

Universal Export Engine

Stable version 1.0.0 (Compatible with OutSystems 11)
Uploaded
 on 31 December 2025
 by 
5.0
 (1 rating)
universal-export-engine

Universal Export Engine

Details
Universal Export Engine provides comprehensive data export functionality for OutSystems applications. Supports Excel (.xlsx), PDF, and CSV formats with advanced customization options including column configuration, layout settings, localization (RTL support), security features, and performance optimization for large datasets.
Read more
?? Universal Export Engine

Detailed Technical Documentation


?? Overview

Universal Export Engine is a .NET Extension Service designed for the OutSystems Platform.
It enables exporting any data type to Excel (.xlsx), PDF, or CSV formats with extensive customization, safety features, and full localization support.

Core Principle

Export once – use everywhere – handle everything


?? Architecture & Components

Class Structure

public class CssUniversal_Export_Engine : IssUniversal_Export_Engine
  • Implements: IssUniversal_Export_Engine

  • Namespace: OutSystems.NssUniversal_Export_Engine

  • Type: .NET Class Library (DLL)

  • Framework: .NET Framework 4.8

  • Integration: OutSystems Extension


?? Constants & Enum Values

Export Formats

  • EXPORT_FORMAT_EXCEL = 1 ? Excel (.xlsx)

  • EXPORT_FORMAT_PDF   = 2 ? PDF

  • EXPORT_FORMAT_CSV   = 3 ? CSV


Delivery Types

  • DELIVERY_TYPE_DOWNLOAD = 1 ? Return file to caller

  • DELIVERY_TYPE_EMAIL    = 2 ? Send via Email

  • DELIVERY_TYPE_STORAGE = 3 ? Save to server storage


Page Configuration

  • Orientation

    • PAGE_ORIENTATION_PORTRAIT  = 1

    • PAGE_ORIENTATION_LANDSCAPE = 2

  • Page Size

    • PAGE_SIZE_A4     = 1

    • PAGE_SIZE_LETTER = 2


Text Alignment

  • TEXT_ALIGNMENT_LEFT   = 1

  • TEXT_ALIGNMENT_CENTER = 2

  • TEXT_ALIGNMENT_RIGHT  = 3


Column Data Types

  • COLUMN_DATA_TYPE_TEXT     = 1

  • COLUMN_DATA_TYPE_NUMBER   = 2

  • COLUMN_DATA_TYPE_DATE     = 3

  • COLUMN_DATA_TYPE_CURRENCY = 4

  • COLUMN_DATA_TYPE_BOOLEAN  = 5


??? Helper Methods – Data Conversion

ConvertRLStringListToList(...)

Purpose
Converts OutSystems RLStringListRecordList to .NET List<string>

Process

  • Iterate through records

  • Extract ssValue

  • Return List<string>

Usage

  • Email recipients extraction


?? Default Configuration Methods

Used when configuration objects are null.

  • GetDefaultExportOptions()

  • GetDefaultLayoutConfig()

  • GetDefaultLocalizationConfig()

  • GetDefaultSecurityConfig()

  • GetDefaultPerformanceConfig()

  • GetDefaultOutputConfig()

Default values are defined in Structures.cs


?? Data Processing

ProcessData(...)

Purpose
Converts any OutSystems data into a unified structure.

Input

  • Any object (Entity, Structure, JSON, Aggregate result, etc.)

  • Export options

Process Flow

  1. Serialize to JSON

  2. Parse as JArray / JObject

  3. Reflection fallback

  4. Optional flattening

  5. Graceful null handling

Output

List<Dictionary<string, object>>

Handled Edge Cases

  • Empty data

  • Mixed types

  • Nested objects

  • Arrays

  • Null values


ProcessJsonObject(...)

  • Recursive JSON traversal

  • Optional flattening

  • Array ? comma-separated string

  • Maintains hierarchy via prefixes


ConvertObjectToDictionary(...)

  • Reflection-based conversion

  • Flattens complex types (optional)

  • Skips unreadable properties safely


IsSimpleType(...)

Checks if a type is:

  • Primitive

  • string

  • DateTime

  • decimal

  • Guid

  • Nullable<T>


?? Column Processing

CleanColumnName(...)

Removes OutSystems prefixes and normalizes names.

Examples

  • ssENEmployee._ssName ? Name

  • Customer.Address.Street ? Street

  • _Status ? Status


ShouldExcludeColumn(...)

Automatically excludes system attributes:

  • ChangedAttributes

  • OptimizedAttributes


ProcessColumns(...)

Modes

  1. Auto-detect

  2. Manual configuration

Features

  • Column ordering

  • Data type detection

  • Display name cleanup

  • Width & alignment defaults


DetectDataType(...)

Samples first non-null values and detects:

  • Number

  • Date

  • Boolean

  • Text (default)


FormatValue(...)

Applies formatting based on:

  • Data type

  • Culture

  • Time zone

  • Column overrides

Defaults

  • Date: yyyy-MM-dd HH:mm:ss

  • Boolean: Yes / No

  • Null: Empty string


? Validation

MssValidateExportDefinition(...)

Performs full pre-execution validation.

Validates

  • Data existence

  • Export format

  • Column config

  • Layout config

  • Security rules

  • Performance limits

  • Output delivery requirements

Returns

  • Errors (blocking)

  • Warnings (non-blocking)


?? Export Implementations

?? Excel Export

Library: ClosedXML
Features

  • Multi-sheet ready

  • Auto-fit columns

  • Custom widths

  • Alignment & wrap

  • Type-aware formatting


?? CSV Export

Features

  • UTF-8 encoding

  • Culture-aware formatting

  • Full CSV escaping

  • Header support


?? PDF Export

Library: iTextSharp

Features

  • A4 / Letter

  • Portrait / Landscape

  • RTL support

  • Headers & footers

  • Page numbers

  • Watermark (opacity)

  • Print / Copy restrictions

  • Font fallback handling


?? Main Public APIs

MssExportData(...)

Primary export entry point

  • Applies defaults

  • Processes data

  • Applies limits

  • Routes to exporter

  • Generates filename

  • Returns ExportResult


MssPreviewExport(...)

  • Limited rows

  • Prefixed filename

  • Ideal for testing & UAT


MssValidateExportDefinition(...)

  • Validation-only execution

  • No file generation


?? Internal Helper Class

ColumnInfo (Private)

Holds processed column metadata:

  • Key

  • Display name

  • Visibility

  • Order

  • Data type

  • Format

  • Width

  • Alignment

  • Wrap text

  • Default value


?? Dependencies

NuGet

  • ClosedXML (MIT)

  • DocumentFormat.OpenXml (MIT)

  • iTextSharp (AGPL)

  • Newtonsoft.Json (MIT)

OutSystems Runtime

  • RuntimePlatform

  • DatabaseAbstractionLayer

  • RuntimeCommon

  • REST / SOAP APIs


? Key Capabilities

? Dynamic Data

  • Any structure

  • No assumptions

  • Flattening support

? Smart Columns

  • Auto-detect

  • Clean names

  • System attribute exclusion

? Advanced Formatting

  • Culture-aware

  • Timezone-safe

  • Per-column overrides

? Localization

  • Arabic & English

  • RTL PDF

  • Custom fonts

? Security (PDF)

  • Watermark

  • Restrictions

  • Audit trail

  • Expiry date

? Performance

  • MaxRows

  • Chunking ready

  • Streaming ready

  • Large dataset safe


?? Important Notes

  • All configurations are optional

  • Defaults always applied

  • Designed for 1M+ rows

  • Fully extensible

  • Production-safe

  • Forge-ready documentation

Release notes (1.0.0)
License (1.0.0)

📋 Universal Export Engine – Detailed Technical Documentation

🎯 Overview

Universal Export Engine is a .NET Extension Service designed for the OutSystems Platform.It enables exporting any data type to Excel (.xlsx), PDF, or CSV with extensive customization, security, and localization support.

Core Principle:Export once – use everywhere – handle everything

📦 Architecture & Components

Class Structure

public class CssUniversal_Export_Engine : IssUniversal_Export_Engine

  • Implements: IssUniversal_Export_Engine

  • Namespace: OutSystems.NssUniversal_Export_Engine

  • Type: .NET Library (DLL)

  • Framework: .NET Framework 4.8

🔢 Constants & Enum Values

Export Formats

  • EXPORT_FORMAT_EXCEL = 1 → Excel (.xlsx)

  • EXPORT_FORMAT_PDF = 2 → PDF (RTL, Watermark, Security)

  • EXPORT_FORMAT_CSV = 3 → CSV (UTF-8, Culture-aware)

Delivery Types

  • DELIVERY_TYPE_DOWNLOAD = 1

  • DELIVERY_TYPE_EMAIL = 2

  • DELIVERY_TYPE_STORAGE = 3

Page Configuration

  • PAGE_ORIENTATION_PORTRAIT = 1

  • PAGE_ORIENTATION_LANDSCAPE = 2

  • PAGE_SIZE_A4 = 1

  • PAGE_SIZE_LETTER = 2

Text Alignment

  • TEXT_ALIGNMENT_LEFT = 1

  • TEXT_ALIGNMENT_CENTER = 2

  • TEXT_ALIGNMENT_RIGHT = 3

Column Data Types

  • COLUMN_DATA_TYPE_TEXT = 1

  • COLUMN_DATA_TYPE_NUMBER = 2

  • COLUMN_DATA_TYPE_DATE = 3

  • COLUMN_DATA_TYPE_CURRENCY = 4

  • COLUMN_DATA_TYPE_BOOLEAN = 5

🛠 Helper Methods – Data Conversion

ConvertRLStringListToList(...)

Purpose: Convert RLStringListRecordList to List

Process:

  • Iterate records

  • Extract ssValue

  • Return standard .NET list

Usage: Email recipients from OutputConfig.ssAttribute

Default Configuration Methods

  • GetDefaultExportOptions()

  • GetDefaultLayoutConfig()

  • GetDefaultLocalizationConfig()

  • GetDefaultSecurityConfig()

  • GetDefaultPerformanceConfig()

  • GetDefaultOutputConfig()

Purpose: Apply defaults when configs are nullDefaults Source: Structures.cs

🔄 Data Processing Methods

ProcessData(...)

Input: Any OutSystems dataOutput: List>

Flow:

  1. Serialize to JSON

  2. Parse JSON (JArray / JObject)

  3. Reflection fallback

  4. Optional flattening

  5. Null-safe handling

Handles: empty, null, nested, mixed types, arrays

ProcessJsonObject(...)

  • Recursive JSON processing

  • Flattens nested objects

  • Arrays → comma-separated values

  • Preserves key hierarchy

ConvertObjectToDictionary(...)

  • Reflection-based conversion

  • Recursive flattening (optional)

  • Skips unreadable properties

IsSimpleType(...)

Simple types:

  • Primitives, string, DateTime, decimal, Guid, Nullable

GetValue(...)

  • Extracts value from JValue

  • Returns raw object otherwise

📊 Column Processing Methods

CleanColumnName(...)

Removes OutSystems prefixes and formats names.

Examples:

  • ssENEmployee._ssName → Name

  • Customer.Address.Street → Street

  • _Status → Status

ShouldExcludeColumn(...)

Hardcoded exclusions:

  • ChangedAttributes

  • OptimizedAttributes

ProcessColumns(...)

Modes:

  • Auto-Detect: Extract from data

  • Manual: Use provided config

Applies:

  • Exclusions

  • Clean names

  • Data type detection

  • Sorting by order

DetectDataType(...)

Samples first 10 non-null values:

  • Number

  • Date

  • Boolean

  • Default → Text

FormatValue(...)

Formats based on column data type:

  • Boolean → Custom text

  • Date → TimeZone + format

  • Number → Culture-aware

  • Currency → Culture-aware

  • Null → NullValueText

✅ Validation Methods

MssValidateExportDefinition(...)

Validates:

  1. Data existence

  2. Export format

  3. Column config

  4. Layout config

  5. Security config

  6. Performance config

  7. Output config

Returns: RCValidationResultRecord

  • Errors (blocking)

  • Warnings (non-blocking)

📄 Export Methods

ExportToExcel(...)

  • Library: ClosedXML

  • Headers, widths, alignment

  • Data formatting

  • Auto-fit columns

Returns: byte[]

ExportToCSV(...)

  • UTF-8 encoding

  • Culture-aware formatting

  • Proper CSV escaping

Returns: byte[]

ExportToPDF(...)

  • Library: iTextSharp

  • Page size & orientation

  • Headers / Footers

  • Watermark & security

  • RTL & font fallback

Returns: byte[]

🚀 Main Public Functions

MssExportData(...)

Main entry point

Flow:

  1. Apply defaults

  2. Process data

  3. Limit rows

  4. Process columns

  5. Export by format

  6. Generate filename

  7. Populate result

MssPreviewExport(...)

  • Exports first N rows

  • Prefixes filename with Preview_

  • Used for testing & validation

MssValidateExportDefinition(...)

  • Pre-execution validation only

🔧 Helper Class – ColumnInfo

Internal structure holding:

  • ColumnKey

  • DisplayName

  • Visibility

  • Order

  • DataType

  • Format

  • Width

  • Alignment

  • WrapText

  • DefaultValue

📚 Dependencies & Libraries

NuGet:

  • ClosedXML (MIT)

  • DocumentFormat.OpenXml (MIT)

  • iTextSharp (AGPL)

  • Newtonsoft.Json (MIT)

OutSystems Runtime:

  • RuntimePlatform

  • DatabaseAbstractionLayer

  • RuntimeCommon

  • REST & SOAP APIs

✨ Key Features & Capabilities

  • Dynamic data handling

  • Smart column detection

  • Advanced formatting

  • Full localization & RTL

  • PDF security

  • Performance optimization

  • Large dataset support (1M+ rows)

  • Robust edge-case handling

📌 Important Notes

  • All configurations are optional

  • No assumptions about data shape

  • Full error & exception handling

  • Optimized for scale

  • Easily extensible

Reviews (0)
Team
Other assets in this category