Magnus Mårtensson
Microsoft Regional Director, Azure MVP, CEO Loftysoft
Avirag Jain
Director & CTO R Systems
Mahesh Chand
Founder C# Corner, CEO Mindcracker
Chris Gali
CEO & Co-Founder Graphite
Subinder Khurana
Chief Architect StoryProcess, Founder NASSCOM DeepTech Club
Bryan Rishforth
Investor, Chairman Graphite
Bryn Everson
Director Biz Dev Graphite
Raj Tiwari
Digital Transformation Leader, Futurist and Visionary
Joseph Guadagno
Microsoft MVP, Lead Quicken Loans
Nikita Sachdev
Entrepreneur, Blockchain Enthusiast & Advisor, Social Media Influencer
Doug Wagner
COO & Founder Adapt Technical Group
Ritesh Modi
Architect, Senior Evangelist, Cloud Architect
Crystal Wenrick
Director Communications Mindcracker
Allen O’Neill
Microsoft MVP, Consulting Engineer/Architect
Praveen Kumar
CEO MCN Solutions
Chris Love
Founder Love2Dev, Microsoft MVP, Author
Sanjay Vyas
Microsoft Regional Director, Microsoft MVP, Founder & CEO SkillLabs Technologies
Veena Sarda
Deep Learning Consultant, Author
Sekhar Srinivasan
C# Corner MVP, Microsoft Certified Trainer, Pluralsight Author
Lalit Bansal
Founder & CEO - EIY SYS
Navdeep Garg
CEO Revinfotech
Prakash Tripathi
Tech Manager/Leader, Microsoft MVP, Blogger
Bhavna Jain
Breakthrough Consultant
Naveen Sharma
Enterprise Architect, Leadership Coach, Author
Vidya Vrat Agarwal
Principal Architect, Microsoft MVP, Author
Sheetal Agarwal
Founder Clownselors, Medical Clown, Trainer
Abhishek Kant
Founder GTM Catalyst
Vishnu Saran
Founder & CEO VoiceQube
Sandeep Soni
Founder & CEO Deccansoft, Microsoft Certified Trainer
Parveen Malik
AVP InfoSec & Vulnerability Management, Information Security Expert
Nitin Pandit
Microsoft MVP, Developer Evangelist, Author
Niloshima Srivastava
C# Corner MVP, Tech Architect, Trainer, Blogger
Bala Chirtsabesan
Senior Software Engineer at Microsoft, Author
Manoj Mittal
Sr. Technical Architect, C# Corner MVP, Author
Chandni Di
Co-Founder Voice of Slum
Vithal Wadje
Technical Lead, Microsoft MVP, Author
Shivam Ahuja
Founder SkillCircle, Business Mentor
Chervine Bhiwoo
Solution Architect, Microsoft MVP, Author
Saurabh Jain
Vice President Paytm, Founder Fun2Do Labs, Author
Vinay Solanki
Head IoT at Lenovo, Founder IoT-NCR
Anshu kumari
Founder Blockchainkids, Inventor, Trainer
Amit Singal
CEO Startup Buddy
Dev Pratap
Co-Founder & CEO Voice of Slum
Amey Vartak
Technology Consultant, Full Stack Developer, C# Corner MVP, Author
Viswanatha Swamy
Principal Software Engineer, C# Corner MVP, Author
Sanket Verma
Research Engineer @ Ballistics (Forensics) and Chair, PyData Delhi
Sourabh Somani
Lead Developer, Microsoft MVP, Author
Abhishek Mishra
Software Architect, C# Corner MVP, Author
Siddharth Vaghasia
Technical Consultant, C# Corner MVP, Blogger
Bassam Alugili
Senior Software Specialist, Database Expert
S Ravi Kumar
Solution Architect, C# Corner MVP, Author
Sundaram Subramanian
Full Stack Developer, C# Corner MVP, Speaker
Deepesh Somani
Solution Architect, Microsoft MVP, Author
Debasis Saha
Technical Project Manager, C# Corner MVP, Blogger, Author
Vipul Jain
Software Architect, C# Corner MVP, Author
Akshay Patel
Technical Architect, Microsoft Certified Trainer, C# Corner MVP, Author
Stephen Simon
RPA Developer, Evangelist, Author
Vivek Sharma
Founder Kingster636, AR/VR Specialist
Jeetendra Gund
Technical Lead, C# Corner MVP, Author
Sujal Beniwal
AI Enthusiast, Student
M Viknaraj
Microsoft MVP, Azure Architect, Author
Prasham Sabadra
Software Architect, C# Corner MVP, Trainer, Author
Aakash Maurya
Senior Developer, C# Corner MVP, Speaker
Ankit Sharma
Senior Software Engineer, C# Corner MVP, Author
Mangesh Gaherwar
Team Lead, C# Corner MVP, Author
Viral Jain
Technical Consultant, C# Corner MVP, Author
Bhasker Das
Solution Architect, Evangelist
Manish Dwivedi
Associate Project Manager
Ck Nitin
Programmer, Author
Rohit Gupta
Technical Trainer, Author
Manish Tewatia
Full-stack Marketer, UX Designer
Bhavya Gaur
Technical Illustrator
Rohit Tomar
SEO/SMO Expert
Web Track
Cloud & Data Track
Dev Track
Registration & Breakfast
Future of Desktop Apps with JS (ElectronJs)
Nitin Pandit
Building Serverless Microservices Using Microsoft Azure
Vithal Wadje
Innovating RPA: A Robot for Every Person
Stephen Simon
Managing Cloud Storage Accounts using Logic Apps
Viknaraj Manogararajah
Data visualization using Python
Sekhar Srinivasan
Going Cross platform with AR Foundation
Vivek Sharma
Keynote
Managing your Azure dependencies in ASP.NET Core apps using VS
Bala Chirtsabesan
Securing Applications on Intelligent Azure
Abhishek Mishra
Getting started with Blazor the Framework of Future
S Ravi Kumar
Lunch
Build Progressive Web Apps using Angular 9
Debasis Saha
Build and deploy to any platform using Azure DevOps
Chervine Bhiwoo
Deep Dive in Azure Service Bus
Akshay Patel
Build a Native Mobile Application using React Native and JavaScript
Joseph Guadagno
Making sense of Web Job, Web Job SDK and Functions in Azure
Prakash Tripathi
CloudFront Distribution in AWS
Viral Jain
Tea Break
Introduction to PowerBI
Aakash Maurya
Build Advanced SPFx solutions with React and Graph API
Siddharth Vaghasia
Build Business Intelligence Analyst (BIA) Skills
Sundaram Subramanian
Deep dive of Power Platform – AI BUILDER
Prasham Sabadra
Panel 1
What's new in SharePoint development
Vipul Jain
Build a SSO (Single Sign On) based Native JavaScript application with Microsoft Identity within 10 minutes
Manoj Mittal
Panel 2
Applications and working of AI
Veena Sarda
Deploying serverless API's with .Net core 3.0 on AWS & Azure
Amey Vartak
Panel 3
Blockchain with .NET Core (Ark)
Anshu Kumari
Closing Note & Prize Distribution
Dev Track
Cloud Track
Architecture Track
Emerging Tech Track
Registration & Breakfast
Creating Full-Stack Web Apps Using Server-Side Blazor
Ankit Sharma
Real time face recognition with MS Cognitive Services
Niloshima Srivastava
Building Scalable APIs with GraphQL
Jeetendra Gund
Future of development with AI and Blockchain
Navdeep Garg
Debugging Tips and Tricks with Visual Studio 2019
Joseph Guadagno
Azure Containers
Abhishek Kant
Enterprise Architecture
Naveen Sharma
Bot Framework - learn it fast and look like a boss!
Allen O’Neill
Keynote
.Net Core & C# 8 Performance
David McCarter
Working with Azure kubernetes services
Ritesh Modi
Becoming an Architect
Vidyavrat Agarwal
Why Techies Need to Learn Product Management
Saurabh Jain
Lunch
Build a rules engine in .Net Core
Sanjay Vyas
Building CI and CD Pipeline using Azure DevOps
Sandeep Soni
Entity Framework Core - Tips and Tricks, Performance Optimization, and Tuning
Bassam Alugili
Hacking your way into Data Science
Sanket Verma
Speed up your .Net Core Website
Sourabh Somani
Azure
Magnus Mårtensson
Demystifying Open Distro for Elasticsearch
Suman Debnath
Future of Data
Shivam Ahuja
Tea Break
gRPC with C# and .Net Core
Mangesh Gaherwar
Panel 1
Essentials of Cloud security
Parveen Malik
Power platform and Dynamics 365
Deepesh Somani
Microservices - the gRPC Way
Viswanatha Swamy
Panel 2
Reserved
Reserved
Closing Note & Prize Distribution
Using Azure Data Factory for ETL with .NET Activities
Modern data platforms rarely receive clean, uniform information from a single source. Customer systems, SaaS applications, operational databases, file shares, and event streams all produce data in different formats and at different speeds. An effective ETL process must collect those inputs, apply consistent business rules, and publish reliable datasets for analytics and applications.
Azure Data Factory provides a managed environment for building these workflows. It combines data integration, scheduling, dependency management, monitoring, and connections to a broad range of Azure and external services. When standard connectors and built-in transformations are not enough, a .NET activity allows development teams to bring custom C# logic into the pipeline.
This approach is especially useful for software professionals who already work with the Microsoft ecosystem. Existing libraries, validation rules, encryption routines, and domain-specific code can be incorporated into an Azure-based data workflow without forcing every transformation into SQL or a visual designer.
What Azure Data Factory Brings To ETL
Azure Data Factory, often abbreviated as ADF, organizes data integration around pipelines. A pipeline is a logical group of activities that performs a complete process, such as extracting files from storage, transforming records, loading a database, and notifying an operations team. Activities can run sequentially, in parallel, or conditionally according to the workflow design.
Datasets describe the structure or location of data used by activities, while linked services define connection information for systems such as Azure Blob Storage, Azure SQL Database, SQL Server, Amazon S3, or REST endpoints. Parameters and expressions make these objects reusable across environments and processing dates.
The platform supports both scheduled and event-driven execution. A tumbling-window trigger can process regular time intervals, while a storage event trigger can start a pipeline when a file arrives. Integration Runtime provides the compute and network bridge required to move or process data, including managed Azure infrastructure and self-hosted agents for private networks.
For conventional ETL, ADF can copy data, invoke stored procedures, execute data flows, run notebooks, call Azure Functions, and coordinate external services. Its value comes from orchestration: each operation becomes visible, configurable, retryable, and measurable within a single data pipeline.
How .NET Activities Fit The Pipeline
A custom .NET activity is appropriate when a pipeline needs code that is difficult to express through standard ADF activities. Examples include parsing a proprietary file format, applying a specialized scoring algorithm, validating records against a complex rule set, or using an established C# library that the organization already trusts.
In a typical implementation, the custom activity runs code through Azure Batch. The activity references an executable or package, supplies input and output locations, and uses a linked service to access the Batch account and related storage. ADF remains responsible for orchestration, while the .NET process performs the specialized computation.
The custom program should be designed as a clear data-processing unit rather than as a long-running application. It needs a predictable entry point, explicit input and output arguments, structured logging, and a meaningful exit code. A successful exit code allows the pipeline to continue; a failure should provide enough information for operators to identify the affected file, partition, or business date.
A useful pattern is to keep the .NET application independent from ADF-specific assumptions. Pass configuration through arguments, environment settings, or pipeline parameters, and store large data volumes in Azure Storage rather than attempting to send them directly through activity metadata. This makes the code easier to test locally and easier to reuse in batch, scheduled, or event-based workflows.
Designing Extraction And Transformation Stages
A reliable ETL pipeline separates extraction, transformation, and loading responsibilities. The extraction stage should land source data in a durable location before intensive processing begins. Azure Data Lake Storage Gen2 or Blob Storage can provide a raw zone where the original files remain available for auditing and replay.
The .NET activity can then read from the raw zone, validate the structure, normalize fields, and write transformed output to a curated zone. For example, a C# process might convert multiple vendor-specific JSON formats into a common schema, standardize dates and currencies, reject malformed records, and produce a separate error file for review.
Large data workloads require attention to partitioning. A single activity that processes millions of records in one operation can become slow and difficult to recover. Partitioning by date, customer group, file, or hash range allows ADF to execute multiple activity instances in parallel. The custom application must be safe for concurrent execution and must avoid writing to the same temporary or output path without coordination.
Idempotency is equally important. If a pipeline retries after a network interruption, the second attempt should not duplicate records or corrupt the destination. A .NET activity can write to a staging path, validate the result, and perform a controlled move or merge after successful processing. Destination tables can use business keys, batch identifiers, or merge logic to protect against repeated delivery.
Selecting The Right Execution Pattern
A custom .NET activity is powerful, but it should be chosen for a clear reason. Native ADF activities generally require less operational management, while custom code offers greater flexibility at the cost of packaging, runtime management, and application support.
| Execution option | Best suited for | Main strengths | Important considerations |
|---|---|---|---|
| Copy activity | Moving data between supported systems | Fast setup, many connectors, scalable transfer | Limited transformation logic |
| Mapping Data Flow | Visual transformations over structured data | Managed Spark-based processing, low-code design | Cost and startup time can matter |
| Stored procedure activity | Database-side transformations | Uses existing SQL logic and transactions | Tied to database capacity and dialect |
| Azure Function activity | Short, event-oriented operations | Simple deployment and serverless execution | Execution duration and resource limits |
| Custom .NET activity | Specialized C# processing or proprietary rules | Reuses libraries and full programming control | Requires packaging, testing, and Azure Batch management |
| Databricks or notebook activity | Large-scale analytical processing | Strong support for distributed data engineering | Adds workspace and cluster administration |
The best design often combines several options. ADF Copy Activity can land source data, a .NET activity can handle proprietary parsing, Mapping Data Flow can apply broad relational transformations, and a stored procedure can perform a final database merge. This division keeps each stage aligned with the technology best suited to it.
Teams should also consider whether custom logic belongs in the pipeline at all. If a transformation is simple filtering, projection, joining, or aggregation, a built-in activity may be easier to operate. Custom C# becomes more compelling when the business rules are complex, the input is unusual, or an existing .NET component substantially reduces development time.
Managing Configuration, Security, And Reliability
Configuration should be separated from code. Pipeline parameters can carry source paths, processing dates, and environment-specific values, while Azure Key Vault can protect connection secrets. Linked services should use managed identities where supported, reducing the need to embed usernames, passwords, or storage keys in JSON definitions.
The custom application needs the same security discipline as any other cloud service. Grant the Batch pool, Data Factory managed identity, and storage accounts only the permissions required for their tasks. Avoid broad contributor roles when a narrowly scoped data reader or writer role is sufficient. Network rules, private endpoints, and self-hosted Integration Runtime may be necessary when data sources are not publicly reachable.
Retry policies should distinguish transient failures from permanent data errors. A temporary storage timeout may justify several retries with increasing intervals. A schema violation should usually stop the relevant branch and preserve the rejected input for investigation. Treating every error as retryable can waste compute and delay detection of bad source data.
Operational reliability also improves when pipeline runs carry a correlation ID or batch ID. The identifier can be passed into the .NET activity, included in log messages, written to output metadata, and stored with load records. Operators can then trace one business batch across ADF monitoring, Azure Batch logs, storage files, and destination tables.
Observability And Testing Across Environments
ADF monitoring shows activity status, duration, queue time, retry count, and failure details. That information is valuable, but custom applications should produce their own structured logs. Include the processing unit, source path, record counts, rejected-record count, elapsed time, and output location. Avoid logging sensitive data or complete payloads.
Testing should cover both the C# application and the orchestration layer. Unit tests can verify parsing, validation, mapping, and error-handling rules with representative data. Integration tests can run against disposable storage containers or test databases. Pipeline tests should confirm parameter passing, dependency behavior, retry settings, branching, and failure notifications.
Separate development, test, and production resources. Infrastructure-as-code or automated deployment tools can promote linked services, datasets, pipelines, and activity packages while applying environment-specific configuration. Version the .NET executable with the pipeline definition so that a historical run can be reproduced using the same processing logic.
Performance testing should use realistic file sizes and concurrency levels. Measure cold-start delays, Batch pool provisioning, memory consumption, throughput, and destination write speed. A solution that works for a small developer sample may require partitioning, pre-warmed pools, or a different execution pattern at production scale.
Practical Guidance For A Production-Ready Design
A maintainable implementation treats the pipeline and the .NET application as one coordinated product. The orchestration layer should explain when and why code runs, while the application should explain what happens to each input and how failures are represented.
Use the following practices when preparing an Azure Data Factory ETL workflow:
- Define raw, rejected, staged, and curated storage locations with clear naming conventions.
- Pass parameters instead of hard-coding dates, paths, account names, or environment settings.
- Make each processing unit idempotent so retries do not create duplicate output.
- Record row counts, validation results, batch identifiers, and processing duration.
- Use managed identities, Key Vault, private networking, and least-privilege permissions.
- Package and version the .NET activity together with its dependencies and deployment metadata.
A strong design also establishes data quality expectations before implementation. Decide which fields are mandatory, how invalid records are handled, what thresholds should fail a batch, and how corrections are replayed. These rules should be visible in both the C# validation code and the pipeline monitoring process.
For teams attending a technology conference focused on Azure, .NET, DevOps, and data engineering, this pattern offers a practical bridge between application development and cloud integration. Developers can retain familiar C# engineering practices while gaining managed scheduling, centralized monitoring, and scalable execution from Data Factory.
Azure Data Factory is most effective when it coordinates specialized components rather than attempting to perform every task itself. Use native connectors for movement, managed transformations for common shaping, databases for set-based operations, and custom .NET activities for logic that genuinely benefits from application code.
Build a small end-to-end pipeline with representative source data, package the C# processor, secure its connections, and monitor a complete run from ingestion through delivery. Then expand through parameterization, partitioning, automated tests, and deployment pipelines. This progression turns a custom ETL experiment into a dependable Azure data service.
1, CBD, Maharaj Surajmal Road, Near Yamuna Sports Complex, Delhi, 110032
GENERAL QUERIES
Manish Tewatia
manish@csharpcon.com
+91-9718-431-042
TICKET QUERIES
Atul Gupta
conference@csharpcon.com
+91-9910-125-804