---
title: "How to Manage User Lifecycle with .NET and SCIM"
description: "Managing users across multiple systems can be slow, error-prone, difficult to synchronize, and a security risk, so the tutorial uses SCIM to standardize lifecycle operations. It builds a .NET 8 SCIM server with RESTful CRUD endpoints for the User resource, backed by Entity Framework Core and SQLite, and seeds sample users and emails for testing. Swagger UI is used to inspect and exercise the API, while Okta acts as the SCIM client and identity provider after OAuth-protected endpoints and provisioning are configured. The walkthrough tests importing users, syncing assignments, deprovisioning by setting active to false, reprovisioning by setting it to true, and propagating profile changes; however, the original Okta CLI instructions no longer work exactly as written after the May 2025 plan and tooling changes."
---

# How to Manage User Lifecycle with .NET and SCIM

[Okta](https://yomu.fyi/company/okta) · Ram Gandhi · Feb 29, 2024

**Type:** Tutorial

## Summary

Managing users across multiple systems can be slow, error-prone, difficult to synchronize, and a security risk, so the tutorial uses SCIM to standardize lifecycle operations. It builds a .NET 8 SCIM server with RESTful CRUD endpoints for the User resource, backed by Entity Framework Core and SQLite, and seeds sample users and emails for testing. Swagger UI is used to inspect and exercise the API, while Okta acts as the SCIM client and identity provider after OAuth-protected endpoints and provisioning are configured. The walkthrough tests importing users, syncing assignments, deprovisioning by setting active to false, reprovisioning by setting it to true, and propagating profile changes; however, the original Okta CLI instructions no longer work exactly as written after the May 2025 plan and tooling changes.

## Context

SCIM is an HTTP-based protocol that defines standard endpoints and schemas for exchanging user profile information across systems. The integration has a SCIM server, which implements resources such as Users and Groups, and a SCIM client, which makes compliant HTTP calls; in this example, Okta is the client and the .NET application is the server.

## Approach / What changed

Create a .NET Web API, add Entity Framework Core with SQLite, define User and Email models plus seed data, and implement SCIM User endpoints for retrieval, listing, creation, updating, and deletion. Secure the endpoints, expose them through Swagger UI, configure Okta provisioning, and test import, synchronization, deprovisioning, reprovisioning, and profile updates.

## Takeaways

- The sample models SCIM users with Entity Framework Core and stores them in SQLite, including a User entity, related Email records, a unique UserName index, and seed data.
- Okta provisioning calls the .NET SCIM server to synchronize assigned users, while the server exposes User resource endpoints under the SCIM API.
- Unassigning a user sends a PATCH that sets active to false; assigning the user again sends a PATCH that sets active to true, and profile edits are propagated to the server.

## FAQ

### How does Okta deprovision and reprovision a user through SCIM?

When a user is unassigned from the Okta SCIM application, Okta sends a PATCH request setting the user’s active attribute to false. Assigning the user again sends a PATCH setting active to true.

### Which data store and models does the sample use?

The sample uses Entity Framework Core with SQLite. It defines User and Email models, links emails to users, enforces a unique UserName index, and seeds sample users and email records.

### Do the original Okta CLI setup steps still work?

No. The post states that the Okta Integrator Free Plan replaced Okta Developer Edition Accounts in May 2025 and the Okta CLI was deprecated, so Okta must be configured manually using the Developer Documentation.

**Tags:** [Entity Framework](https://yomu.fyi/topic/entity-framework), [.NET](https://yomu.fyi/topic/dotnet), [SCIM](https://yomu.fyi/topic/scim)

- Source: [Okta](https://developer.okta.com/blog/2024/02/29/net-scim)
- Source URL: https://developer.okta.com/blog/2024/02/29/net-scim
- Ingested by Yomu: 2026-09-17T14:12:50.314Z

[Read original post](https://developer.okta.com/blog/2024/02/29/net-scim)
