Available for senior engineering roles · Casablanca / Remote

Souna El Hassan

Full-Stack .NET Engineer — Enterprise Business Systems

I design, modernize and scale critical business information systems — ERP and CRM applications running production workloads daily. Five years of hands-on engineering on a live ASP.NET environment, currently leading a progressive migration from .NET Framework 4.5 to .NET 8 / Razor Pages — three modules already delivered with modern authentication and a fully responsive design.

Current role
FMICE — Casablanca
Focus
.NET · ERP/CRM · SQL Server
Production experience
5+ years shipping
Engagement
Full-time · Remote-friendly
About

Engineering business systems that the company depends on.

Five years building, fixing and modernizing a critical ERP / CRM in production — the kind of system where a regression costs the business a full day of operations. I optimize for things that ship, scale and don't break.

// since 2017

My day-to-day is the unglamorous, high-stakes work that keeps a business running: SQL performance, defensive backend services, third-party integrations, and a quiet front-end modernization done page by page so production never blinks.

I'm currently leading the migration of a long-running .NET Framework 4.5 / WebForms stack to .NET 8 / Razor Pages — three modules already in production with modern authentication, responsive design and a clean architecture. The legacy and modern stacks live side by side, with zero disruption to the operations team.

I think in terms of business impact: how much time a slow report wastes every week, how a single deadlock blocks invoicing, how a fragile API integration costs the support team. Then I fix it — properly, with tests, audit trail and rollback paths.

Architecture-first

Every module I ship has a clear layering, defensive boundaries and an audit trail. No hidden globals, no surprise side effects.

Performance under real load

Query plans, indexes, isolation levels, transactions — I optimize where it matters, measured in milliseconds saved per production run.

Modernize without regression

Legacy doesn't mean rewrite. I migrate by additive layers — old and new in parallel, page by page, never a broken production morning.

Experience

Five years on a single critical SI, plus consulting on multi-sector ERP/CRM.

// 2017 — present

.NET Full-Stack Engineer · Business Information Systems

2021 — Present
FMICE · Casablanca · Medical distribution PME
  • Maintain and modernize a critical ERP / CRM spanning commercial, logistics, financial and decisional processes — 165+ screens, ~180,000 lines of C# / T-SQL, 15 backend services in continuous operation.
  • Lead a progressive migration from .NET Framework 4.5 / WebForms to .NET 8 / Razor Pages — three production modules delivered with ASP.NET Core authentication, responsive design and a clean folder structure that the team can extend.
  • Architect and ship new business modules (parameterized customer balances, returns workflow, multi-level analytical dashboards) on a layered architecture Pages → Services → Data.
  • Integrate the Anthropic Claude API for automated business document generation — custom HTTP client, Markdown parsing, full usage traceability (audit trail, retry, error contracts).
  • Cut a critical stored procedure from 60–90s down to ~500ms (covering indexes, sargable predicates, query-plan refactor) without touching the database schema.
  • Migrate a legacy ASP.NET front-end to a centralized design system (CSS tokens, automatic dark mode) — 305 hardcoded colors converted, zero production regression.
C# 7.xASP.NET WebForms.NET 8Razor PagesSQL ServerT-SQLLINQ to SQLADO.NETAnthropic ClaudeIISPower BI

ERP / CRM Consultant Developer · .NET

2018 — 2019
Inovteam · Casablanca · ESN multi-sector clients
  • Custom .NET module development and ERP / CRM feature work for multi-sector clients — functional analysis directly with business leads, then end-to-end delivery.
  • Design of Power BI dashboards for activity monitoring and decision support: automated reports, business indicators, drill-through analytics.
  • Expert technical support and onboarding of client teams on the delivered solutions.
C#.NETSQL ServerPower BICrystal ReportsSSRS

.NET Consultant Developer

2017
Inovteam · Casablanca
  • Initial engagement: advanced .NET customizations on ERP / CRM client projects.
  • Business reports and edition templates via Crystal Reports and SSRS, matching strict functional and compliance requirements.
C#.NETCrystal ReportsSSRSSQL Server
Selected work

Things I've shipped to production.

Most of this work lives inside a private ERP at FMICE — the entries below describe scope, approach and impact. Each one is real, in production, used by the business team every day.

// 6 projects
.NET Framework 4.5legacy
WebForms · ADO.NETlegacy
.NET 8 · Razor Pagesmigrated
ASP.NET Core Identitynew
Responsive UInew
01 / FMICEIn progress

.NET 8 / Razor Pages migration — legacy modernization

Progressive migration from .NET Framework 4.5 / WebForms to .NET 8 / Razor Pages. Three production modules already delivered with ASP.NET Core authentication, responsive design and a clean folder layout. Legacy and modern stacks coexist with zero disruption.

.NET 8Razor PagesASP.NET Core IdentityEF CoreResponsive
before~baseline
+ indexes−38%
+ rewrite−72%
final−88%
02 / FMICEPerformance

SQL performance — rewrite of critical stored procedures

Audit then rewrite of critical stored procedures: execution-plan analysis, covering and filtered indexes, query refactor — without touching the schema. Measured gains on operations that previously blocked daily activity (−88% on COGS_Detail: from 60–90s to ~500ms).

SQL ServerT-SQLQuery plansIndexingTx isolation
ClaudeClient.cs
// generate business doc
var req = new ClaudeRequest {
model: "claude-sonnet",
messages: prompt,
stream: true
};
await http.PostAsync(req);
03 / FMICEAI integration

Anthropic Claude API — document automation

Architecture of a .NET HTTP client for the Anthropic Claude API: automated generation of business documents, Markdown parsing, persistence and full usage traceability (audit trail, network error handling, retry with backoff, secure secrets handling).

C#HttpClientRESTMarkdownAnthropic API
04 / FMICEDesign system

Design system & dark mode — zero-regression migration

Centralized CSS tokens, automatic dark mode, harmonization of existing components through additive layers. Migration of a legacy ASP.NET front-end to a coherent system — 305 hardcoded colors converted — without breaking a single production page.

CSS tokensDark modeBootstrapVanilla JSLegacy migration
PDF
DOCX
XLSX
05 / FMICETooling

Reporting engine — PDF / Word / Excel

Multi-format document generation pipeline for business needs: invoices, reports, BI exports. Mixed stack — legacy Crystal Reports, iTextSharp, PdfSharp + MigraDoc, OpenXML SDK, Excel export via HtmlTextWriter.

Crystal ReportsiTextSharpPdfSharpOpenXMLSSRS
REV
1.2M
MARGIN
24%
VS M-1
↑ 12%
06 / InovteamConsulting

Power BI dashboards — business activity pilot

Power BI dashboards designed for multi-sector clients: automated reports, business indicators, decision support. Functional analysis directly with business leads, then operational delivery and onboarding.

Power BIDAXSQL ServerReportingBI
Case studies

Three production stories — problem, decisions, impact.

The case studies below are from real work at FMICE. Each one frames the business problem, the constraints, the technical decisions taken, and the measurable outcome.

// 3 deep dives
Case study · Legacy modernization

Migrating a 10-year-old WebForms ERP to .NET 8 / Razor Pages — without downtime.

3 / N
Modules in prod
Problem

A decade-old ASP.NET WebForms ERP on .NET Framework 4.5: brittle to extend, no responsive UI, no modern authentication, no tooling. The team avoided changes — every release was a risk.

Constraints
  • Zero downtime tolerated — daily ops depend on it
  • Same SQL Server, same schema, same data
  • Legacy and modern must coexist in production
  • One engineer, incremental delivery
Decisions
  • Strangler-fig pattern: replace module by module
  • Razor Pages over MVC (simpler for forms-heavy ERP)
  • ASP.NET Core Identity for modern auth
  • Responsive design system from day one
Impact
  • 3 modules in production, no rollback
  • Modern auth, responsive UI on new pages
  • Foundation laid for future migrations
  • Team confidence to extend further
Case study · Performance

Cutting a critical stored procedure from 60–90s down to ~500ms.

−88%
Response time
Problem

A stored procedure (COGS_Detail) ran 60–90s on every business day, blocking the accounting team's daily close. Pure read-only logic, but heavy joins and unbounded scans.

Constraints
  • No schema change allowed
  • Production — no maintenance window
  • Same results, byte-for-byte
  • Must survive future data growth
Decisions
  • Execution plan analysis (live + estimated)
  • Covering + filtered indexes on hot columns
  • Sargable predicates, ORDER BY rewritten
  • UPDATE STATISTICS in deployment script
Impact
  • 60–90s → ~500ms (−88%)
  • Daily close unblocked for the team
  • Pattern reused on 4 similar procedures
  • Audit log with before/after plans archived
Case study · UI modernization

Migrating 305 hardcoded colors to a design system — without a single regression.

0
Regressions
Problem

Legacy front-end with 305 hardcoded color values scattered across 160+ pages. No dark mode, no consistency, every visual change required hunting through CSS. UI debt was blocking faster iteration.

Constraints
  • Zero visual regression on production pages
  • No HTML restructure — additive only
  • Existing WebForms markup preserved
  • Migration in parallel with feature work
Decisions
  • CSS custom properties as design tokens
  • Token-first replacement, page by page
  • Automatic dark mode from token semantics
  • Visual diff review on every replacement
Impact
  • 305 / 305 colors migrated
  • Zero production regression reported
  • Dark mode shipped for free
  • Future visual changes ~10× faster
System architecture

How the ERP I work on is structured.

Simplified view of the live business system at FMICE — legacy and modern stacks running side by side, shared SQL Server, audit-grade integrations. The migration to .NET 8 is happening one module at a time.

// hybrid stack
CLIENTSBrowser · WebFormsLegacy admin · 160+ screensASP.NET WebForms · jQueryBrowser · Razor PagesModern UI · responsive.NET 8 · ASP.NET Core IdentityPower BIDashboards · analyticsDAX · reportsOperations teamDocuments · exportsPDF · Word · ExcelAPPLICATION LAYER · IIS.NET Framework 4.5 (legacy)ASP.NET WebForms · C# 7.xADO.NET · LINQ to SQLServices · TransactionScope · retry.NET 8 (modern)Razor Pages · ASP.NET Core IdentityEF Core · dependency injectionLayered architecture · clean foldersExternal APIsAnthropic Claude APIHttpClient · retry · audit trailReportingCrystal Reports · iTextSharpPdfSharp · OpenXML · SSRSBI / AnalyticsPower BI · DAXT-SQL views · stored proceduresCross-cuttingAuth · audit trail · loggingDefensive programming · retryDATA LAYERSQL Server 2008 R2+ · shared between legacy and modernStored procedures · indexes · transactions · isolation levels
Modern stack — .NET 8 / Razor PagesLegacy stack — .NET Framework 4.5 / WebFormsShared data layer — SQL Server
Skills

A pragmatic .NET stack, sharpened on production systems.

What I actually use, every day. Listed by domain — backend, data, frontend, integration, reporting, devops, architecture.

// hands-on

Backend & languages

C# 7.x+.NET 8.NET FrameworkASP.NET WebFormsRazor PagesADO.NETLINQ to SQLEF Coreasync/awaitTransactionScopeT-SQLPHP

Databases & performance

SQL Server 2008 R2+Stored proceduresIndexationQuery plansTx isolationDeadlock resolutionUPDATE STATISTICSSargable predicates

Frontend & UX

JavaScript (ES6+)jQueryChart.jsBootstrapHTML5 · CSS3CSS Grid · FlexDesign tokensDark modeResponsive design

API & integration

RESTHttpClientAnthropic Claude APIJSONMarkdownRetry / backoffAudit trail

Reporting & documents

Crystal ReportsiTextSharpPdfSharp + MigraDocOpenXML SDKSSRSHtmlTextWriterPower BI · DAX

DevOps & tooling

IIS · AppPoolWeb DeployWindows ServerVisual StudioSSMSGitWeb.config · machineKey

Architecture & methods

Layered architecturePages → Services → DataAuthentication / AuthorizationDefensive programmingLegacy refactorStrangler-fig migrationMERISE · UML

BI & infrastructure

Power BIDAXDashboard designGrandstream IPVidéosurveillanceN3 support

Languages

Arabic · NativeFrench · C2English · B2
Business impact

Measurable outcomes, not adjectives.

A snapshot of concrete results from production work. Every number below is real, audited, and reproducible from the deployment history.

0%
SQL response time cut on COGS_Detail
0
Colors migrated · zero regression
0+
ERP screens maintained in production
0+
Years on a critical SI
Unblocked a daily accounting close — rewrote a stored procedure from 60–90s to ~500ms, pattern then reused on 4 similar procedures.
Shipped 3 production modules on .NET 8 — modern auth, responsive UI, clean architecture, while the legacy ERP kept serving 165+ screens.
Resolved a recurring deadlock (SQL 1205) in production via isolation-level tuning, retry with backoff and DataContext consolidation.
Automated business document generation with the Anthropic Claude API — full audit trail, retry, secure secrets.

Let's build something that ships.

Available for senior engineering roles, contract or consulting work on .NET / SQL / business-critical systems. Based in Casablanca, open to remote.