Description
Below is a comprehensive Advanced Development Training TOC for Progress 4GL (OpenEdge ABL), designed for developers who already have working knowledge of ABL and want to move into advanced application development, database programming, performance engineering, integration, security, DevOps, and production support.
Prerequisites
Participants should ideally have:
- Progress 4GL / OpenEdge ABL experience – preferably 1–3 years.
- Working knowledge of:
- ABL syntax and programming constructs
- Procedures and functions
- Database tables and indexes
FOR EACH,FIND,DO,REPEAT, and transaction blocks- Temp-tables
- Basic error handling
- Basic understanding of relational database concepts and SQL.
- Familiarity with application development and debugging.
- Basic understanding of HTTP, REST and JSON is recommended.
- Basic Git knowledge is beneficial but not mandatory.
- Experience working on an existing OpenEdge/Progress application is strongly recommended.
TABLE OF CONTENTS
1. Introduction
1.1 Course Overview
1.1.1 Introduction to Progress OpenEdge and OpenEdge ABL
1.1.2 Evolution of Progress 4GL to OpenEdge ABL
1.1.3 OpenEdge application architecture
1.1.4 Role of ABL in enterprise application development
1.1.5 Advanced developer responsibilities and development practices
1.2 Training Objectives
1.2.1 Develop complex ABL applications
1.2.2 Design efficient database-driven applications
1.2.3 Build reusable and maintainable ABL components
1.2.4 Develop integrations using APIs and web services
1.2.5 Implement advanced error handling and transaction management
1.2.6 Optimize OpenEdge application performance
1.2.7 Apply modern source control and DevOps practices
2. OpenEdge Architecture and Advanced ABL Concepts
2.1 OpenEdge Platform Architecture
2.1.1 OpenEdge components
2.1.2 Application server architecture
2.1.3 OpenEdge database architecture
2.1.4 Client-server architecture
2.1.5 Multi-tier application architecture
2.2 ABL Execution Model
2.2.1 Compile-time and runtime processing
2.2.2 Procedures and persistent procedures
2.2.3 Sessions and execution contexts
2.2.4 Runtime parameters
2.2.5 Include files and preprocessing
2.3 Advanced Language Features
2.3.1 Strongly typed programming
2.3.2 Dynamic data types
2.3.3 Handles and object references
2.3.4 Namespaces
2.3.5 Classes and interfaces
3. Advanced ABL Programming
3.1 Advanced Data Types
3.1.1 Arrays and extent variables
3.1.2 Temp-tables
3.1.3 ProDataSets
3.1.4 Objects and object references
3.1.5 LONGCHAR and CLOB data
3.2 Advanced Control Structures
3.2.1 Dynamic loops
3.2.2 Dynamic queries
3.2.3 Conditional compilation
3.2.4 Recursive programming
3.2.5 Runtime program execution
3.3 Dynamic Programming
3.3.1 Dynamic variables
3.3.2 Dynamic buffers
3.3.3 Dynamic queries
3.3.4 Dynamic invocation
3.3.5 Dynamic properties and methods
4. Object-Oriented Programming with ABL
4.1 Object-Oriented ABL Fundamentals
4.1.1 Classes and objects
4.1.2 Properties
4.1.3 Methods
4.1.4 Constructors and destructors
4.1.5 Access modifiers
4.2 Inheritance and Polymorphism
4.2.1 Class inheritance
4.2.2 Method overriding
4.2.3 Polymorphism
4.2.4 Abstract classes
4.2.5 Sealed classes
4.3 Interfaces
4.3.1 Interface definition
4.3.2 Interface implementation
4.3.3 Multiple interface implementation
4.3.4 Interface-based architecture
4.4 Object-Oriented Design Patterns
4.4.1 Factory pattern
4.4.2 Singleton pattern
4.4.3 Strategy pattern
4.4.4 Repository pattern
4.4.5 Service-oriented design
5. Advanced Database Programming
5.1 OpenEdge Database Architecture
5.1.1 Database structures
5.1.2 Tables and fields
5.1.3 Indexes
5.1.4 Storage areas
5.1.5 Database schema management
5.2 Advanced Record Processing
5.2.1 FOR EACH optimization
5.2.2 FIND and FIND FIRST/LAST
5.2.3 Record locking
5.2.4 NO-LOCK and EXCLUSIVE-LOCK
5.2.5 SHARE-LOCK
5.3 Database Transactions
5.3.1 Transaction scope
5.3.2 Transaction blocks
5.3.3 COMMIT and UNDO
5.3.4 Nested transactions
5.3.5 Transaction integrity
5.4 Advanced Query Processing
5.4.1 Query objects
5.4.2 Dynamic queries
5.4.3 Query preparation
5.4.4 Query optimization
5.4.5 Query performance analysis
6. Temp-Tables and ProDataSets
6.1 Advanced Temp-Table Programming
6.1.1 Temp-table design
6.1.2 Temp-table indexes
6.1.3 Before-table and after-table concepts
6.1.4 Temp-table validation
6.1.5 Passing temp-tables between procedures
6.2 ProDataSets
6.2.1 ProDataSet architecture
6.2.2 Dataset relations
6.2.3 Dataset handles
6.2.4 Data synchronization
6.2.5 Dataset serialization
6.3 Data Transfer
6.3.1 Dataset-based data exchange
6.3.2 XML serialization
6.3.3 JSON serialization
6.3.4 Data validation
6.3.5 Data transformation
7. Advanced Error Handling and Debugging
7.1 Error Handling
7.1.1 ABL error model
7.1.2 ERROR-STATUS
7.1.3 NO-ERROR
7.1.4 RETURN ERROR
7.1.5 Error objects
7.2 Structured Error Handling
7.2.1 CATCH blocks
7.2.2 FINALLY blocks
7.2.3 Progress.Lang.Error
7.2.4 Custom error classes
7.2.5 Exception propagation
7.3 Debugging Techniques
7.3.1 Debugger configuration
7.3.2 Breakpoints
7.3.3 Watch expressions
7.3.4 Call stack analysis
7.3.5 Runtime troubleshooting
8. Advanced Transaction Management and Concurrency
8.1 Transaction Design
8.1.1 Transaction boundaries
8.1.2 Transaction nesting
8.1.3 Business transaction design
8.1.4 Rollback strategies
8.2 Concurrency Management
8.2.1 Lock management
8.2.2 Lock conflicts
8.2.3 Deadlock scenarios
8.2.4 Optimistic and pessimistic approaches
8.2.5 Concurrency troubleshooting
9. Advanced UI and Application Development
9.1 OpenEdge GUI Programming
9.1.1 Windows and frames
9.1.2 Widgets and controls
9.1.3 Event-driven programming
9.1.4 Dynamic widgets
9.1.5 UI validation
9.2 Advanced Event Handling
9.2.1 Triggers
9.2.2 Event procedures
9.2.3 User-defined events
9.2.4 Event publishing and subscription
9.3 UI Architecture
9.3.1 Separation of UI and business logic
9.3.2 Reusable UI components
9.3.3 UI service layers
9.3.4 Application maintainability
10. Business Logic and Service Layer Architecture
10.1 Business Logic Design
10.1.1 Business rules
10.1.2 Validation services
10.1.3 Business objects
10.1.4 Service classes
10.2 Layered Architecture
10.2.1 Presentation layer
10.2.2 Business layer
10.2.3 Data access layer
10.2.4 Integration layer
10.2.5 Cross-cutting services
10.3 Reusable Components
10.3.1 Shared procedures
10.3.2 Service classes
10.3.3 Utility libraries
10.3.4 Common frameworks
11. OpenEdge Web Services and REST API Development
11.1 Web Service Fundamentals
11.1.1 SOAP architecture
11.1.2 REST architecture
11.1.3 HTTP fundamentals
11.1.4 Request and response processing
11.2 REST Development
11.2.1 REST service architecture
11.2.2 REST resources
11.2.3 HTTP methods
11.2.4 HTTP status codes
11.2.5 REST service implementation
11.3 JSON Processing
11.3.1 JSON objects
11.3.2 JSON arrays
11.3.3 JSON serialization
11.3.4 JSON deserialization
11.3.5 JSON validation
11.4 SOAP Services
11.4.1 SOAP service architecture
11.4.2 WSDL
11.4.3 SOAP requests and responses
11.4.4 Consuming external SOAP services
12. OpenEdge Application Server and Service Architecture
12.1 Application Server
12.1.1 OpenEdge Application Server architecture
12.1.2 AppServer agents
12.1.3 Stateless and state-aware services
12.1.4 Session management
12.2 Service-Oriented Applications
12.2.1 Service contracts
12.2.2 Service interfaces
12.2.3 Service invocation
12.2.4 Service error handling
12.2.5 Service monitoring
13. Integration with External Systems
13.1 Enterprise Integration
13.1.1 Integration architecture
13.1.2 File-based integration
13.1.3 Database integration
13.1.4 API integration
13.1.5 Message-based integration
13.2 External Database Connectivity
13.2.1 SQL integration concepts
13.2.2 ODBC connectivity
13.2.3 JDBC integration concepts
13.2.4 Data synchronization
13.3 Enterprise Messaging
13.3.1 Messaging architecture
13.3.2 Asynchronous processing
13.3.3 Message queues
13.3.4 Event-driven integration
14. JSON, XML and Data Interchange
14.1 XML Processing
14.1.1 XML fundamentals
14.1.2 XML documents
14.1.3 XML parsing
14.1.4 XML serialization
14.2 JSON Processing
14.2.1 JSON data structures
14.2.2 JSON objects and arrays
14.2.3 JSON parsing
14.2.4 JSON generation
14.3 Data Transformation
14.3.1 XML-to-JSON transformation
14.3.2 JSON-to-XML transformation
14.3.3 Schema validation
14.3.4 Data mapping
15. OpenEdge Security
15.1 Application Security
15.1.1 Authentication
15.1.2 Authorization
15.1.3 Role-based access control
15.1.4 Application permissions
15.2 API Security
15.2.1 API authentication
15.2.2 Token-based authentication
15.2.3 Secure HTTP communication
15.2.4 Input validation
15.2.5 API security best practices
15.3 Data Security
15.3.1 Database security
15.3.2 Sensitive data protection
15.3.3 Encryption concepts
15.3.4 Audit logging
16. Performance Tuning and Optimization
16.1 ABL Performance
16.1.1 Efficient ABL coding practices
16.1.2 Record retrieval optimization
16.1.3 Query optimization
16.1.4 Memory management
16.1.5 CPU utilization
16.2 Database Performance
16.2.1 Index selection
16.2.2 Index utilization
16.2.3 Query plans
16.2.4 Database I/O
16.2.5 Buffer management
16.3 Application Performance Analysis
16.3.1 Performance profiling
16.3.2 Bottleneck identification
16.3.3 Logging and diagnostics
16.3.4 Performance benchmarking
16.3.5 Production performance troubleshooting
17. Source Code Management and DevOps
17.1 Version Control
17.1.1 Git fundamentals
17.1.2 Git repositories and branching
17.1.3 Feature branches
17.1.4 Pull requests and code reviews
17.1.5 Merge conflict resolution
17.2 OpenEdge Source Management
17.2.1 ABL source organization
17.2.2 Compile management
17.2.3 Build artifacts
17.2.4 Environment-specific configuration
17.3 Continuous Integration
17.3.1 CI fundamentals
17.3.2 Automated builds
17.3.3 Automated testing
17.3.4 Build validation
17.4 Continuous Delivery
17.4.1 Deployment pipelines
17.4.2 Development environments
17.4.3 Test environments
17.4.4 Production deployment
17.4.5 Rollback strategies
18. Automated Testing and Quality Engineering
18.1 Testing Fundamentals
18.1.1 Unit testing
18.1.2 Integration testing
18.1.3 Regression testing
18.1.4 System testing
18.2 ABL Testing
18.2.1 Testable ABL architecture
18.2.2 Unit test design
18.2.3 Mocking dependencies
18.2.4 Test data management
18.3 Quality Practices
18.3.1 Static code analysis
18.3.2 Coding standards
18.3.3 Code reviews
18.3.4 Technical debt management
19. Logging, Monitoring and Production Support
19.1 Application Logging
19.1.1 Logging architecture
19.1.2 Log levels
19.1.3 Structured logging
19.1.4 Application diagnostics
19.2 OpenEdge Monitoring
19.2.1 Session monitoring
19.2.2 Database monitoring
19.2.3 Application server monitoring
19.2.4 Resource utilization
19.3 Production Troubleshooting
19.3.1 Incident analysis
19.3.2 Performance incidents
19.3.3 Database locking issues
19.3.4 Application failures
19.3.5 Root-cause analysis
20. Advanced OpenEdge Development Tools
20.1 Development Environment
20.1.1 Progress Developer Studio
20.1.2 OpenEdge Architect concepts
20.1.3 Workspace management
20.1.4 Project configuration
20.2 Build and Deployment Tools
20.2.1 Compilation automation
20.2.2 Build scripts
20.2.3 Deployment packaging
20.2.4 Environment configuration
21. Modernizing Legacy Progress 4GL Applications
21.1 Legacy Application Assessment
21.1.1 Legacy code analysis
21.1.2 Technical debt identification
21.1.3 Dependency analysis
21.1.4 Modernization roadmap
21.2 Procedural to Object-Oriented Migration
21.2.1 Identifying business logic
21.2.2 Extracting reusable components
21.2.3 Introducing classes
21.2.4 Refactoring procedural code
21.3 Legacy Integration Modernization
21.3.1 Exposing legacy functionality as services
21.3.2 REST enablement
21.3.3 JSON integration
21.3.4 Cloud integration considerations
22. Advanced Architecture and Design
22.1 Enterprise Application Architecture
22.1.1 Monolithic architecture
22.1.2 Layered architecture
22.1.3 Service-oriented architecture
22.1.4 Microservice integration concepts
22.2 Design Principles
22.2.1 SOLID principles
22.2.2 Separation of concerns
22.2.3 Dependency inversion
22.2.4 Loose coupling
22.2.5 Reusability and maintainability
22.3 Application Scalability
22.3.1 Horizontal scaling
22.3.2 Stateless application design
22.3.3 Connection management
22.3.4 Concurrent processing
23. Cloud and Modern OpenEdge Deployment
23.1 Cloud Concepts
23.1.1 Cloud deployment models
23.1.2 Infrastructure considerations
23.1.3 Networking considerations
23.1.4 Storage considerations
23.2 Containerization
23.2.1 Container fundamentals
23.2.2 Docker concepts
23.2.3 OpenEdge application containers
23.2.4 Container configuration
23.3 Cloud-Native Integration
23.3.1 REST APIs
23.3.2 Cloud services integration
23.3.3 Monitoring and logging
23.3.4 Scalability considerations
24. Capstone Project – Enterprise OpenEdge Application
24.1 Project Planning
24.1.1 Business requirements
24.1.2 Application architecture
24.1.3 Database design
24.1.4 API design
24.2 Application Development
24.2.1 ABL business logic
24.2.2 Object-oriented components
24.2.3 Temp-table and ProDataSet implementation
24.2.4 REST API development
24.2.5 Error handling and logging
24.3 Quality and Deployment
24.3.1 Unit testing
24.3.2 Integration testing
24.3.3 Performance testing
24.3.4 Git-based source management
24.3.5 CI/CD pipeline
24.3.6 Production deployment
24.4 Project Presentation
24.4.1 Architecture walkthrough
24.4.2 Code review
24.4.3 Performance analysis
24.4.4 Deployment demonstration
25. Final Assessment and Advanced Developer Certification
25.1 Knowledge Assessment
25.1.1 Advanced ABL programming assessment
25.1.2 Database programming assessment
25.1.3 Integration assessment
25.1.4 Performance optimization assessment
25.2 Practical Assessment
25.2.1 Application development assignment
25.2.2 Debugging assignment
25.2.3 Performance tuning assignment
25.2.4 REST API implementation assignment
25.3 Certification
25.3.1 Capstone project evaluation
25.3.2 Technical interview
25.3.3 Advanced OpenEdge Developer completion certificate
Training Lab Specifications
The course should be delivered using a dedicated OpenEdge development environment for every participant.
Development Environment
| Component | Recommended Specification |
|---|---|
| Operating System | Windows 10/11 64-bit or supported Linux distribution |
| CPU | 4-core processor or better |
| RAM | Minimum 8 GB; 16 GB recommended |
| Storage | Minimum 40 GB free space |
| Network | Stable broadband connection |
| IDE | Progress Developer Studio / supported OpenEdge development environment |
| OpenEdge | OpenEdge 12.x or organization-approved supported version |
| Database | Dedicated OpenEdge development database |
| Source Control | Git |
| API Testing | Postman or equivalent REST client |
| Browser | Latest Chrome / Edge / Firefox |
| Terminal | PowerShell / Bash |
| Optional | Docker for containerization exercises |
OpenEdge Lab Environment
Each participant should have access to:
- OpenEdge development server
- Dedicated development database
- Database administration tools
- ABL compiler/runtime
- Progress Developer Studio
- Sample enterprise database schema
- Sample legacy Progress 4GL application
- Sample REST services
- Git repository
- Build/deployment scripts
- API testing environment
- Application logs and diagnostic data
- Performance-testing dataset
Recommended Lab Exercises
The practical component should progressively build an enterprise application:
Lab 1: Advanced ABL programming
Lab 2: Dynamic queries and buffers
Lab 3: Temp-tables and ProDataSets
Lab 4: Transaction and locking management
Lab 5: Object-oriented ABL application
Lab 6: Error handling and debugging
Lab 7: Database performance optimization
Lab 8: REST API development
Lab 9: JSON/XML integration
Lab 10: Authentication and API security
Lab 11: Git-based source control
Lab 12: Automated build and deployment
Lab 13: Application monitoring and troubleshooting
Lab 14: Legacy Progress 4GL modernization
Lab 15: Enterprise capstone project
Suggested Training Duration
For the complete advanced curriculum, I would recommend 60–80 hours, depending on how much legacy modernization, REST integration, DevOps and hands-on project work is required.
A practical structure would be:
- Theory & demonstrations: 30–35%
- Instructor-led coding: 20–25%
- Hands-on labs: 30–35%
- Capstone/project: 10–15%
For experienced Progress 4GL/OpenEdge developers, the most valuable emphasis should be on advanced ABL + database performance + OOABL + ProDataSets + REST/API integration + debugging + DevOps + legacy modernization, rather than spending too much time on basic syntax.







Reviews
There are no reviews yet.