FrameworX 10.1 introduces comprehensive Git integration capabilities, enabling version control, collaboration, and DevOps workflows while maintaining the security and performance of a centralized database architecture. This hybrid approach allows teams to leverage modern development practices without compromising industrial-grade reliability.

Access: Solution → Export (Git Export settings)

Parent Page: DevOps & Version Control (Reference)



Git Integration & Export (Reference)

FrameworX 10.1 introduces comprehensive Git integration capabilities, enabling version control, collaboration, and DevOps workflows while maintaining the security and performance of a centralized database architecture. This hybrid approach allows teams to leverage modern development practices without compromising industrial-grade reliability.

Access: Solution → Export (Git Export settings)

Parent Page: DevOps & Version Control (Reference)


Git Export Architecture

Hybrid Configuration Management

ComponentFunctionLocation
Centralized DatabaseSingle source of truth.dbsln file
Automatic ExportsVersion control trackingGit folder
Selective ExportConfiguration elementsJSON files
Sensitive DataProtected via placeholdersDatabase only
Bidirectional SyncDatabase ↔ Git repositoryAutomated

Git-Friendly JSON Format

FeaturePurposeBenefit
Consistent FormattingClean diffsEasy review
Sorted KeysMinimize conflictsBetter merging
Array-based TablesEfficient storageSmaller files
Metadata PreservationVersion trackingAudit trail
Binary Asset HandlingSeparate files with checksumsIntegrity

Configuration

Enabling Git Export

Navigate to Solution → Settings → Version Control:

SettingOptionsDefault
Enable Git ExportOn/OffOff
Export ModeAutomatic/ManualManual
Export TriggerOn Version Change-
Export Delay5-60 seconds5
Target DirectoryPathSolution-Data\Git

Export Modes

Automatic Export:

  • Monitors configuration changes
  • Exports on version increment
  • Batches rapid changes
  • Background operation

Manual Export:

  • Export All - Complete solution
  • Export Module - Selected module
  • Export Current - Active object

Directory Structure

Standard Layout

solution-root/
??? Solution/
?   ??? SolutionCategories.json
?   ??? SolutionSettings.json
??? Displays/
?   ??? Layouts/
?   ?   ??? MainPage.json
?   ?   ??? Overview.json
?   ??? Images/
?       ??? Logo.json
?       ??? Logo.png
??? Scripts/
?   ??? Tasks/
?   ?   ??? ServerStartup.json
?   ??? Classes/
?   ?   ??? DataProcessor.json
?   ??? ScriptsExpressions.json
??? UNS/
?   ??? UnsTags.json
?   ??? UserTypes/
?       ??? CustomTemplate.json
??? Alarms/
?   ??? AlarmsGlobalSettings.json
?   ??? AlarmsItems.json
??? .gitignore

JSON File Format

Standard Structure

json

{
  "ExportInfo": {
    "ObjectType": "ScriptsTasks",
    "TableVersionID": 6,
    "SolutionVersionID": 245,
    "ExportDate": "2025-08-23T10:30:00Z",
    "ExportUser": "john.doe"
  },
  "Header": {
    // Object metadata from table columns
  },
  "Body": {
    // Object content or table rows
  }
}

Export Categories

Individual Object Files:

  • Script Tasks and Classes
  • Display Layouts
  • SQL Queries
  • Report Definitions
  • Symbol Definitions

Table Export Files:

  • Tags (UNS)
  • Alarm Items
  • Device Points
  • Security Settings
  • Expressions

Security & Sensitive Data

Data Protection

Data TypeHandlingStorage
PasswordsNever exportedDatabase only
Connection StringsEnvironment placeholders${DB_CONNECTION}
API KeysVault referencesSecure storage
Encrypted ValuesNot exportedDatabase only

Environment Variables

json

{
  "DatabaseConnection": "${DB_CONNECTION}",
  "EmailServer": "${SMTP_SERVER}",
  "HistorianPath": "${HISTORIAN_PATH}"
}

Variables resolved at runtime for environment-specific deployment.


Git Workflow

Recommended Process

  1. Initialize Repository

    bash

    cd /path/to/solution
    git init
    git remote add origin https://github.com/company/scada-config.git
  2. Development Branch

    bash

    git checkout -b feature/new-alarm-logic
    # Make changes in FrameworX
    git add .
    git commit -m "Add temperature monitoring for Reactor-3"
    git push origin feature/new-alarm-logic
  3. Code Review
    • Create pull request
    • Team reviews changes
    • Merge to main branch

Branching Strategy

main
??? develop
?   ??? feature/new-screens
?   ??? feature/alarm-updates
?   ??? feature/script-optimization
??? hotfix/critical-alarm-fix
??? release/v2.1

Best Practices

What to Export

? Export to Git:

  • Application configuration
  • Display definitions
  • Script code
  • Alarm rules
  • Report templates
  • Static settings

? Keep in Database Only:

  • Runtime tag values
  • Historical data
  • User passwords
  • Session information
  • Temporary data
  • High-frequency updates

Commit Guidelines

GoodBad
"Add temperature monitoring for Reactor-3""Updated stuff"
"Fix alarm delay calculation in Tank-Level""Changes"
"Implement new batch report template""Friday work"

Performance

Export Performance

Configuration SizeExport TimeFile CountTotal Size
Small (<100 objects)<1 sec50-100<1 MB
Medium (1,000 objects)3-5 sec200-5005-10 MB
Large (10,000 objects)15-20 sec1,000+50-100 MB
Enterprise (50,000+)60-90 sec5,000+500+ MB

Optimization Tips

  • Use selective export for large systems
  • Enable compression for repository
  • Implement .gitignore for generated files
  • Schedule exports during low activity
  • Use shallow clones for CI/CD

CI/CD Integration

Example GitHub Actions

yaml

name: Validate FrameworX Configuration

on:
  pull_request:
    branches: [ main, develop ]

jobs:
  validate:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    
    - name: Validate JSON Schema
      run: |
        for file in $(find . -name "*.json"); do
          python validate_schema.py $file
        done
    
    - name: Check Tag Naming Convention
      run: python check_naming.py ./UNS/UnsTags.json
    
    - name: Verify No Credentials
      run: |
        ! grep -r "password\|credential\|secret" --include="*.json"

Advanced Features

Custom Export Filters

csharp

// ExportFilter.cs
public bool ShouldExport(ConfigObject obj)
{
    // Skip temporary objects
    if (obj.Name.StartsWith("_temp")) return false;
    
    // Skip test configs in production
    if (Environment == "Production" && 
        obj.Name.Contains("test")) return false;
    
    return true;
}

Post-Export Hooks

batch

# post-export.bat
cd %EXPORT_DIR%
git add .
git commit -m "Auto-export: %DATE% %TIME%"
git push origin develop

Troubleshooting

IssueCauseSolution
Export not triggeringAutomatic export disabledEnable in settings
Large file sizesMany objectsUse selective export
Merge conflictsConcurrent editsUse branches
Missing exportsPermission issuesCheck directory access
Sensitive data exposedWrong configurationReview export filters

Migration Guide

From Database Systems

  1. Enable Git export in FrameworX
  2. Export complete configuration
  3. Initialize Git repository
  4. Establish branching strategy
  5. Train team on Git workflows

From File-Based Systems

  1. Import existing files to FrameworX
  2. Verify data integrity
  3. Enable selective Git export
  4. Maintain file organization
  5. Implement security improvements

See Also