← Home

Glossary

Every name and work word the cards use, in one line. Tap a dotted word on any card to see the same line.

C# keywords

abstract
On a class: it cannot be built with new, only inherited. On a method: no body, every child must override it. Full page →
base
The parent part of the current object: : base(...) calls the parent's constructor, base.Describe() the parent's method. Full page →
delegate
Declares a delegate type: the shape of a method (what it takes, what it returns). A variable of that type can hold any method with that shape.
event
Wraps a delegate so outside code can only add (+=) or remove (-=) a method; only the class that owns it can raise it.
foreach
Loops over a collection, giving one item per turn. Full page →
get
The read half of a property. Full page →
internal
Visible only inside the same assembly (the .dll one project builds). Full page →
new
Two jobs: before a type, builds an object (new Loan(...)); on a method, hides the parent's method instead of replacing it. Full page →
override
Replaces a parent's virtual or abstract method; the object's real type decides which version runs. Full page →
private
Visible only inside the class that declares it. The default for class members. Full page →
private set
A property anyone can read but only the class's own code can write. Full page →
protected
Visible inside the class and in classes that inherit from it; hidden from other code. Full page →
public
Visible to any code. Full page →
readonly
A field that is set once (when declared or in the constructor) and never reassigned.
sealed
On a class: nothing may inherit from it. On an override: no further child may override it. Full page →
set
The write half of a property. Full page →
static
Belongs to the class itself, not to one object: one shared copy. A static constructor runs once, before the class is first used. Full page →
this
The object the code is running on right now. Full page →
var
Lets C# work out a variable's type from the value on the right.
virtual
Marks a method that child classes may replace with override. Full page →
with
Makes a copy of a record with some values changed: quote with { TermMonths = 48 }. The original is untouched.

.NET APIs

AbstractValidator
FluentValidation's base class for a validator: you extend it, name the request class in angle brackets, and put the rules in the constructor.
Action
A built-in delegate type for a method with no return value; Action<string> takes one string. Full page →
Action<T>
A delegate for a method that takes one T and returns nothing; Parallel.ForEach expects one.
ActionFilterAttribute
A base class for an action filter you can put on a controller or action as an attribute. Docs ↗
ActionResult
A controller return type that can be either data or an HTTP status like 404.
ActionResult<T>
A controller return type that can contain either a response value of T or an HTTP result such as 404.
Activator.CreateInstance
Builds an object from a Type known only while the app runs, as a plugin host does with a class from a loaded DLL. Docs ↗
Activity
The .NET object for the current unit of work in a trace; it carries the W3C trace id that ties logs across services. Full page →
Add
On a DbContext: starts tracking a new row. Nothing is written until SaveChanges.
AddAuthentication
Registers the services that read a request's credential, such as a bearer token, and turn it into a user.
AddAuthorization
Registers authorization: policies and the fallback policy.
AddAzureKeyVault
Adds Azure as a configuration source: its secrets become settings at start-up.
AddControllers
Turns on MVC controllers in Program.cs. Controllers are then built per request. Full page →
AddControllersAsServices
Makes the container build controllers, so their registration and lifetime are checked like other services.
AddCors
Registers CORS policies in Program.cs: which origins, methods and headers may call the API from a browser. Full page →
AddDbContext
Registers an EF Core DbContext, scoped by default.
AddDbContextPool
Registers a DbContext whose objects are reused across requests and reset in between, to save the cost of building one each time. Docs ↗
AddHostedService
Registers a BackgroundService to run with the app; it is registered as a singleton. Docs ↗
AddHttpClient
Registers a typed HttpClient (transient) whose connections are pooled by IHttpClientFactory.
AddJsonOptions
Configures System.Text.Json for controllers: naming, unknown fields, converters.
AddJwtBearer
Adds the JWT bearer handler: reads Authorization: Bearer, validates the token and builds the user. Docs ↗
AddOrUpdate
ConcurrentDictionary method: add a key or update it, safely. Full page →
AddPolicy
Adds a named policy (authorization, CORS or rate limiting) that endpoints refer to by name.
AddProblemDetails
Turns errors into a standard JSON error body (RFC 7807 problem details).
AddRateLimiter
Registers rate limiting policies (since .NET 7): how many calls each caller may make in a time window.
AddScoped
Registers a service as scoped: one object per scope (per HTTP request). Full page →
AddSingleton
Registers a service as singleton: one object for the whole app. Full page →
AddTransient
Registers a service as transient: a new object on every resolve. Full page →
AddWithValue
ADO.NET: adds a parameter and guesses its SQL type from the C# value; a wrong guess can force a type conversion and an index scan.
AggregateException
One exception that holds a list of exceptions from parallel work; InnerExceptions has them all.
AllowAnonymous
An attribute (or .AllowAnonymous() on a route) that lets a request through with no signed-in user; it wins over [Authorize]. Docs ↗
AllowAnyOrigin
A CORS setting that lets pages from any website read the API's answers. .NET refuses it together with credentials. Full page →
AllowCredentials
A CORS setting that lets the browser send cookies with cross-site calls; needs exact origins. Full page →
analyzer
A build-time code checker that reports or rejects patterns such as blocking waits in API code.
Any
LINQ: true if at least one item matches; stops at the first.
AppContext.BaseDirectory
The folder the running app was started from.
AppDomain
An isolated execution environment within a .NET process; static constructors execute once per AppDomain.
ArgumentException
Thrown when a method is given a bad argument.
ArgumentNullException
Thrown when a method or constructor is passed null for an argument that requires a valid value.
ArgumentOutOfRangeException
Thrown when an argument is outside the allowed range.
Array
A fixed-length block of , numbered from zero. Its Length never changes.
ArrayList
An old, non-generic list that stores everything as object, so value types get boxed. Use List<T> instead.
ArrayPool
A shared pool of arrays. Rent a buffer and Return it so large allocations are reused instead of landing in the LOH each time.
AsEnumerable
Switches a query from IQueryable to IEnumerable: every LINQ step after it runs in memory, on rows already loaded.
AsNoTracking
EF Core: load rows without adding them to the change tracker. Faster and lighter for read-only queries; SaveChanges won't see edits to them.
Asp.Versioning.Mvc
The NuGet package for API versioning in ASP.NET Core controllers (v1, v2 in the path or a header).
AsReadOnly
wraps a List in a ReadOnlyCollection: callers can read it, never add or remove.
Assert
The xUnit class whose methods check a test's expectation; a failing assert fails the test. Full page →
Assert.Equal
xUnit: passes if two values are equal (uses Equals).
Assert.False
Checks that a condition is false, and fails the test with a message if it is not. Full page →
Assert.Same
xUnit: passes only if both are the same object. Full page →
Assert.Single
xUnit check: passes only if the list holds exactly one item.
Assert.Throws
xUnit: passes if the code throws the given exception.
Assert.True
Checks that a condition is true, and fails the test with a message if it is not. Full page →
async
Marks a method that can wait without blocking; the compiler turns it into a state machine that returns a Task. Full page →
async void
An asynchronous method returning void; unhandled exceptions bypass try/catch and terminate the process. Full page →
AsyncLocal
A value that follows one async flow (one request) across awaits and threads. IHttpContextAccessor uses it. Full page → Docs ↗
AsyncTaskMethodBuilder
The helper struct that connects an async method state machine to the Task it returns. Full page → Docs ↗
AsyncUsageAnalyzers
Roslyn analyzer package that flags sync-over-async and missing await in C# code. Docs ↗
Attribute
The base class of every C# attribute (a label in square brackets). Its name ending can be left off when you use the attribute.
Authority
JwtBearer option: the token issuer's address; the handler downloads its public signing keys from there. Full page →
AuthorizationHandler
Base class for a handler that checks one requirement, and optionally one resource such as a loan. Full page →
AuthorizationHandler<ApprovalLimitRequirement>
The base class for a handler of one requirement type; you override HandleRequirementAsync. Docs ↗
AuthorizationHandler<TRequirement, TResource>
Base class for a handler that checks one requirement against one record, like a Loan. Full page →
AuthorizeAsync
IAuthorizationService method: asks whether this user may use this record under a named policy; returns a result you check.
await
Waits for a Task's result without holding a thread; the method resumes when the work finishes. Full page →
AwayFromZero
Rounding mode: .5 goes away from zero.
BackgroundService
Base class for a hosted service: a loop that runs for the app's whole life. It is a singleton.
BadRequest
A ControllerBase helper that answers 400 Bad Request.
BeginScope
ILogger.BeginScope: attaches values (like a correlation id) to every log line written inside it.
BenchmarkDotNet
A standard .NET benchmarking library for accurately measuring execution time and allocations. Docs ↗
Bitmap
System.Drawing types for an image in memory and for drawing on it; Windows only on .NET 6+.
bounded queue
A queue with a fixed maximum number of pending items, which limits memory and forces a policy when full.
Break
ParallelLoopState.Break: finish iterations with lower indexes, then stop; it keeps the lowest break index.
CancellationToken
A signal passed into async calls so they can stop early, e.g. when the client disconnects. Full page → Docs ↗
Capacity
The size of a List's hidden array; it grows in steps as items are added, and can be larger than Count.
ChangePaymentDateRequest
The small request class in the example: it holds one number, NewDay.
Claim
One fact about a user: a type (name) and a value, like role = CreditOfficer.
ClaimsIdentity
The claims from one source (one token or cookie) plus how they were proven, like "Bearer". Full page →
ClaimsPrincipal
The signed-in user object ASP.NET Core builds from the token's claims; a controller reads it as User.
ClaimTypes.NameIdentifier
The standard claim name for the signed-in user's id.
Clear
Removes every item from a list. Full page →
ClockSkew
TokenValidationParameters: leeway for clock differences when checking expiry; default 5 minutes. Docs ↗
Close
Closes a connection; for SqlConnection, Dispose calls it too. Full page →
ConcurrentBag
A thread-safe, unordered bag: many threads can add at once without losing items.
ConcurrentDictionary
A thread-safe Dictionary: many threads can read and write at once. Full page →
ConfigurationManager
.NET Framework's way to read app.config or web.config settings; ASP.NET Core does not load web.config into it.
ConfigureApiBehaviorOptions
Settings for [ApiController] behaviour, like the automatic 400.
ConfigureAwait
Configures how an await continuation is marshaled; ConfigureAwait(false) skips capturing the current synchronization context. Full page → Docs ↗
ConfigureTestServices
In an integration test, changes the app's registrations after Program.cs ran: remove the real service, add a fake. Docs ↗
Conflict
Controller helper: returns 409 Conflict, the request clashes with the resource's state.
Console
Standard input and output for console programs; Console.WriteLine prints a line of text.
Contains
Asks a list whether it holds a value: true or false. Full page →
ContainsKey
Checks whether a dictionary has a key.
continuation
The remaining part of an async method saved at an incomplete await; it runs after the awaited operation completes.
Controller
The ASP.NET Core MVC base class for controllers with views; adds View() on top of ControllerBase. Docs ↗
ControllerBase
Base class for ASP.NET Core API controllers: gives Ok(), NotFound() and the request's data.
Count
How many items a list holds. Full page →
CountAsync
EF Core: counts matching rows in the database without loading them.
CPU-bound
Work that spends its time using the processor, such as a large calculation.
Create
The usual name for a factory method: a static method that builds an object for you, often behind a private constructor.
CreateAsync
A common pattern name: a static method that does async setup, then calls new. Used because constructors cannot be async. Full page →
CreateAsyncScope
Like CreateScope, but disposes async-disposable services properly with await using. Full page →
CreatedAtAction
Returns 201 Created with a Location header pointing at the new resource.
CreateScope
Opens a new scope from the root provider or IServiceScopeFactory. Wrap it in using so it is disposed. Full page →
CurrentValue
IOptionsMonitor's property with the settings as they are right now, after any reload.
CustomizeProblemDetails
An AddProblemDetails option: code that runs on every ProblemDetails before it's written, to add fields like a correlation id. Full page →
DataAdapter
ADO.NET: fills a DataSet from the database (and can write changes back), opening and closing the connection itself.
DataReader
The general name for ADO.NET's forward-only, read-only row stream (SqlDataReader for SQL Server).
DataSet
ADO.NET: a disconnected in-memory copy of one or more DataTable objects and the relations between them.
DataTable
ADO.NET: one in-memory table of rows and columns, usually inside a DataSet.
DateOnly
A date with no time of day (.NET 6+). DayNumber counts days, so subtracting two gives days between.
DateTime
A date and time value.
DateTime.UtcNow
The current time in UTC. Hard to test; prefer TimeProvider.
DbContext
EF Core's object for one unit of work: runs queries, keeps a change tracker (list of loaded rows), and SaveChanges writes changes. Not thread-safe.
DbSet
EF Core: one table you can query with LINQ (an IQueryable) and add to.
DbUpdateException
EF Core's exception when SaveChanges fails in the database, e.g. a unique-index violation.
DefaultAzureCredential
Azure.Identity class that signs in with the app's in Azure, or your own sign-in on a laptop.
DefaultHttpContext
A plain HttpContext you can create with new in a unit test.
DefaultIfEmpty
LINQ: turns an empty sequence into one default item; used with join ... into for a left join.
DependencyResolver
The old ASP.NET MVC 5 hook for plugging in a container like Autofac. ASP.NET Core does not need it.
Detail
ProblemDetails.Detail: the free-text explanation for this error. Only text you wrote; never the exception message.
Dictionary
Key-value store. Not thread-safe: two threads writing at once can corrupt it.
DisableForUnsafeHttpMethods
Turns off automatic retries for POST, PATCH, PUT, DELETE and CONNECT in the .NET HTTP resilience handler. Docs ↗
DisplayName
ActionDescriptor property: the action's readable name, like ContractsController.Get.
Dispose
Frees what an object holds (connections, file handles) right away. Full page →
DisposeAsync
Async version of Dispose; called by await using. Full page →
DivideByZeroException
Thrown on integer division by zero.
dotnet-counters
A command-line tool that shows live .NET counters such as heap size, gen 2 size, allocation rate and time in GC.
dotnet-gcdump
A command-line tool that takes a heap dump of a running .NET process, for finding which objects are alive and what keeps them.
dotnet-trace
A command-line tool that records .NET events, including GC pauses, for a trace you can open in a viewer.
EnableBuffering
Request.EnableBuffering(): lets the request body be read more than once (e.g. by logging, then by the controller).
Environment.ProcessId
The id the operating system gave the running process.
Environment.ProcessorCount
How many logical CPUs this machine has; a cap for parallel work, not a target.
epoll
The Linux kernel event notification facility used by .NET for scalable asynchronous socket I/O. Full page →
EqualityComparer
The object a collection uses for Equals and GetHashCode; EqualityComparer<T>.Default is reference equality for a plain class and value equality for a record.
Equals
Compares two objects; a class can override it to compare values instead of addresses. Full page →
EventArgs
The base class for the data an event sends to its subscribers. EventArgs.Empty means no data.
EventHandler
The built-in delegate shape for events: (object? sender, TEventArgs e), returns nothing. EventHandler<T> carries data of type T.
ExecuteAsync
The one method a BackgroundService overrides: its long-running loop, started by the host at start-up.
ExecuteNonQuery
ADO.NET: runs a command that returns no rows; returns rows affected for INSERT, UPDATE, DELETE, otherwise -1.
ExecuteReader
ADO.NET: runs a query and returns a data reader for its rows.
ExecuteReaderAsync
The async version of ExecuteReader.
ExecuteScalar
ADO.NET: runs a query and returns the first column of the first row, for example a COUNT.
Extensions
The dictionary of extra fields on a ProblemDetails, beyond the standard ones. Full page →
FakeTimeProvider
Test version of TimeProvider: you set and move the time yourself.
FallbackPolicy
AuthorizationOptions setting: the policy for every endpoint that has no [Authorize] or [AllowAnonymous] of its own.
FileNotFoundException
Thrown when a file path does not exist.
Find
EF Core: looks up an entity by primary key, checking the change tracker before the database.
FindFirst
Returns the user's first claim with a given name, or null if there is none. Full page →
First
LINQ: the first item that matches; throws if none.
FirstOrDefault
LINQ: the first item that matches, or null (the default) if none.
FirstOrDefaultAsync
EF Core: runs the query and returns a Task with the first matching row, or null. Full page →
FormatException
Thrown when the format of an argument is invalid, e.g. parsing a malformed number or boolean string.
FromSql
EF Core: runs SQL written as an interpolated string, turning each {value} into a SQL parameter.
FromSqlRaw
EF Core: runs your own SQL text. Pasting input into that text is SQL injection; pass values as parameters.
Func
A built-in delegate type for a method that returns a value; the last type is the return type, so Func<decimal, decimal> takes a decimal and returns one.
GC
Garbage collector: .NET's automatic memory cleaner. It frees managed objects that nothing can reach. Full page →
GC.Collect
Forces a collection now; called with no argument it does a full blocking gen 2 collection. Avoid it in app code.
GC.CollectionCount
How many collections of that generation have run since the process started; good for spotting a full GC storm.
GC.GetGCMemoryInfo
A snapshot of the heap: total bytes, fragmented bytes, generation sizes and the last collection's pause.
GC.GetGeneration
Tells you which generation an object is in: 0, 1 or 2 (the LOH reports 2).
GC.GetTotalMemory
Bytes the managed heap is using now; pass true to force a collection first.
GCSettings
Reads and changes collector settings at run time: server or workstation mode, latency mode, LOH compaction.
GetAwaiter
Returns an awaiter object for a Task or awaitable that provides IsCompleted, OnCompleted, and GetResult. Full page → Docs ↗
GetCurrentProcessId
Windows' native function (in kernel32) returning the process id.
GetHashCode
Returns the number a hash-based collection uses to pick a bucket. Equal objects must return the same number.
GetInvocationList
Returns the methods a multicast delegate holds, one delegate each, so you can call them one by one and collect every result.
GetOrAdd
ConcurrentDictionary method: return the value for a key, or add it if missing, safely. Full page →
GetOrdinal
ADO.NET: finds a column's position in the reader by its name; throws if no column has that name.
GetRequiredService
Asks the container for a service; throws if it is not registered. Full page →
GetService
Asks the container for a service; returns null if it is not registered. Full page →
GroupBy
LINQ: puts items with the same key into groups, each with a Key and its items.
GroupJoin
LINQ: gives each item on the left the list of matching items on the right (empty if none): a left join.
Guid
A 128-bit value used as an id; Guid.NewGuid() makes a new one that is unique in practice.
HashSet
A set of unique items. Add returns false for a duplicate; Contains is a fast hash lookup.
HasValue
True when a nullable value type holds a value, false when it holds none.
HostingHostBuilderExtensions
The .NET source that turns ValidateScopes and ValidateOnBuild on only in Development. Docs ↗
HttpClient
Sends HTTP requests. Reuse its connections through IHttpClientFactory; do not new one up per call.
HttpContext
Everything about the current HTTP request and its response: path, headers, the user, the request's services. Full page → Docs ↗
HttpContext.RequestServices
The scope's service provider for this request. ASP.NET Core sets it up and disposes it when the response ends. Full page →
HttpOnly
A cookie flag: page scripts can't read the cookie, only the browser sends it.
HttpStatusCode.NotFound
The enum value for status code 404, used in tests to check what the API answered.
HybridCache
.NET 9+ cache: in-memory plus an optional shared cache like Redis, and stops many requests rebuilding the same entry at once.
I/O-bound
Work that mostly waits for another system, such as SQL or an HTTP service, to respond.
IActionFilter
A filter with methods that run just before and just after an action.
IActionResult
Interface for any HTTP response a controller action returns.
IAsyncDisposable
Has DisposeAsync, for cleanup that must await (closing a network stream). Full page →
IAsyncStateMachine
The interface implemented by the compiler-generated struct that runs an async method as a state machine. Full page → Docs ↗
IAuthorizationHandler
The interface of a class that checks requirements; registered in DI so authorization finds it. Docs ↗
IAuthorizationRequirement
An empty marker interface for a class that describes one authorization rule. Docs ↗
IAuthorizationService
The service you call yourself to run a policy, often with the record as the resource. Docs ↗
IAuthorizationService.AuthorizeAsync
Runs a policy for a user (and optionally a resource) and returns whether it succeeded. Docs ↗
ICloneable
Old interface with a Clone method. It never says deep or shallow, so the design guidelines say not to use it in public APIs.
ICollection
The collection interface: Count, Add, Remove, Contains and Clear on top of IEnumerable.
IConfiguration
All app settings (appsettings.json, environment variables, secrets) as key-values. Singleton.
IDbContextFactory
Makes a new DbContext on demand. Used where there is no request scope, like Blazor or background work.
Identity.IsAuthenticated
True when the user's identity was proven by some sign-in method; false for an anonymous caller. Full page →
Identity.Name
The signed-in user's name, read from the name claim. Full page →
IDisposable
Has a Dispose method that frees things like connections now, not when the garbage collector runs. Full page →
IEndpointFilter
A filter for minimal API routes (.NET 7+), added with AddEndpointFilter. Docs ↗
IEnumerable
Anything you can loop over with foreach.
IExceptionFilter
A filter MVC calls when the action or an action filter throws. Docs ↗
IExceptionHandler
.NET 8 interface for your error-handling logic, called by UseExceptionHandler.
IFeatureManager
Microsoft.FeatureManagement: asks whether a is on, e.g. from . Docs ↗
IFilterFactory.IsReusable
Tells MVC whether one filter instance may be reused across requests. Docs ↗
IGrouping
One group from GroupBy: its Key plus the items that share it.
IHttpClientFactory
Singleton that hands out HttpClients and recycles their connection pools, so you avoid socket exhaustion and stale DNS.
IHttpContextAccessor
A singleton that gives you the current request's HttpContext from code that is not a controller. Only valid during that request. Docs ↗
IHttpModule
.NET Framework (System.Web): a class IIS runs at fixed request events; the old way to do what middleware does.
IList
The list interface: index access plus Insert and RemoveAt on top of ICollection.
ILogger
Writes logs for a class; ILogger<T> tags them with the class name. Singleton-safe.
IMemoryCache
An in-process cache shared by all requests. Singleton, thread-safe.
IMiddleware
Interface for middleware the container builds per request, so it can take scoped services in its constructor. Full page →
IndexOf
Finds the position of an item in a list, or -1 when it is not there.
InlineData
xUnit: one row of arguments for a [Theory]; the test runs once per row.
InnerException
A property on an exception that holds the error that caused it; with TypeInitializationException it holds the real error.
InnerExceptions
AggregateException's list of the failures it collected; loop over it to log every one.
Insert
Adds an item at a position in a list, shifting the items after it.
Interlocked
Atomic operations on a number (increment, swap) that are safe across threads without a lock. Full page →
Interlocked.Increment
Adds 1 to a number as one indivisible step, safe across threads. Full page →
IntPtr
A number the size of a memory address; often a raw native handle that .NET will not free for you.
INumber
A generic maths interface (.NET 7+): one method can add ints, decimals or doubles because each provides the operators as static abstract members.
InvalidModelStateResponseFactory
ApiBehaviorOptions setting: the code that builds the automatic 400 response, if you want a different shape.
InvalidOperationException
Thrown when a call is not valid in the object's current state, e.g. two queries at once on one DbContext.
Invoke
Calls a delegate, which runs every method in its invocation list in order. event?.Invoke(...) skips the call when nobody subscribed.
InvokeAsync
The method a middleware runs for each request. Scoped services go in its parameters, not its constructor. Full page →
IOCP
I/O Completion Ports: the Windows OS mechanism for non-blocking asynchronous socket and disk I/O. Full page →
IOptions
Settings bound from configuration, read once. Singleton.
IOptionsMonitor
A singleton view of settings that always has the latest value (CurrentValue) and tells you when they change (OnChange). The one a singleton should take. Docs ↗
IOptionsSnapshot
Settings re-read per request, so changes show up without restart. Scoped.
IOrderedFilter
A filter with an Order number; lower runs first on the way in. Docs ↗
IProblemDetailsService
The .NET service that writes a ProblemDetails response; AddProblemDetails registers it. Full page →
IQueryable
A query kept as an expression tree, so a provider like EF Core can translate it to SQL and run it in the database.
IReadOnlyCollection
A collection interface that promises a count and a read-only loop, but no add or remove.
IReadOnlyList
a list you can read and index but not change through this reference. Full page →
IsAlive
A property on WeakReference: true while the target object has not been collected. The standard way to test that a leak is gone. Full page →
IsBackground
A Thread setting: a background thread does not keep the app alive when Main returns; the default is false.
IsConfigured
True when the DbContext already got its options (for example from AddDbContext), so OnConfiguring should do nothing.
IServiceCollection
The list of registrations you fill in Program.cs (builder.Services) before the app is built. Full page →
IServiceProvider
The built container. You ask it for a service and it builds or hands back the object. Full page →
IServiceScope
One short-lived group of objects. Scoped services live inside it and are disposed with it. Full page →
IServiceScopeFactory
A singleton that makes new scopes. A singleton or background job uses it to open a scope, get scoped services, then dispose the scope. Full page → Docs ↗
IsReusable
A flag on a filter factory saying MVC may reuse the filter it built for later requests. Full page →
IssuerSigningKey
TokenValidationParameters: the key a token's signature must match.
Items
HttpContext.Items: a small dictionary that lives for one request, for passing data between middleware and code. Full page →
IValidatableObject
Built-in interface with one Validate method, for rules across several fields; MVC calls it after the attributes pass.
IValidator
FluentValidation's interface: one class that checks one request type.
JitInfo
System.Runtime.JitInfo: counts of methods the JIT compiled and time spent in it, for this process.
Join
A Thread method that blocks the caller until that thread ends.
JsonSerializer
System.Text.Json's class that turns JSON text into C# objects and back.
Kestrel
The high-performance cross-platform HTTP web server built into ASP.NET Core. Full page → Docs ↗
Key
The value a GroupBy group was made from.
Lazy
Builds a value only the first time it is used, thread-safe by default.
LazyThreadSafetyMode
Specifies how a Lazy instance synchronizes access among multiple threads.
Length
How many an array has. Fixed when the array is created.
List
A growable list. Not thread-safe. Full page →
Location
The HTTP response header that gives the address of a newly created resource, sent with 201 Created.
lock
C# keyword that lets one thread at a time run a block, so two threads cannot change shared state at once. Full page →
LogWarning
ILogger method that writes a Warning line: unexpected but handled.
Main
The method a console app starts in.
Map
app.Map branches the pipeline by request path. Full page →
MapControllers
Adds an endpoint for every controller action; the last stop of the pipeline. Full page →
MapGet
Adds one endpoint for GET requests to a path, run by a small function (minimal API).
MapWhen
Branches the pipeline when a condition is true; the branch never rejoins the main line.
Math.Pow
Raises a number to a power.
Math.Round
Rounds a number; pass MidpointRounding to choose how .5 rounds.
MaxDegreeOfParallelism
How many iterations a Parallel loop may run at the same time.
MemberwiseClone
Built-in shallow copy of an object. Protected: only the class or a child can call it. Lists inside are shared, not copied.
MetadataName.RetryAfter
Lets a rejected rate-limit lease say how long until the caller may try again.
Microsoft.Data.SqlClient
The NuGet package with SqlConnection, SqlCommand and SqlDataReader for SQL Server.
Microsoft.Extensions.DependencyInjection
The namespace and NuGet package of the built-in .NET DI container. Full page →
Microsoft.Extensions.Http.Resilience
The NuGet package that adds retries, timeouts and circuit breakers to HttpClient (AddStandardResilienceHandler).
Microsoft.VisualStudio.Threading.Analyzers
Roslyn analyzer package that detects threading violations like synchronous waits on tasks. Docs ↗
MidpointRounding.AwayFromZero
Rounds .5 up (away from zero), the way people expect for money. The default rounds to even.
Model
In a Razor view, the object the controller passed in; its type is set by @model.
ModelState
The results of model binding and validation for this request; ModelState.IsValid is false if any check failed.
MoveNext
The method of the compiler-built state machine that runs an async method up to its next await, then resumes it later.
NewDay
The day of the month a customer wants for their payment; the filter checks it is 1 to 28.
NoContent
Controller helper: returns 204 No Content, success with no body.
NotFound
Controller helper: returns 404 Not Found (with ProblemDetails under [ApiController]).
NotFoundException
A custom exception some teams throw for a missing record; returning NotFound() is usually better.
NotImplementedException
The exception for "this method has no code yet". Finding it in a finished class usually means an interface asks for more than the class can do. Docs ↗
NotNull
xUnit's Assert.NotNull: passes if the value isn't null. Proves almost nothing on its own.
NotSupportedException
thrown when a method exists but this type can't do it; in a child class it usually breaks callers (LSP).
Nullable
A struct that holds a value type or "no value"; int? is short for Nullable<int>. Docs ↗
NullReferenceException
Thrown when code uses a variable that points to nothing (null). Full page →
ObjectDisposedException
Thrown when code uses an object after it was disposed, e.g. a DbContext from a finished request. Full page →
Ok
Controller helper: returns 200 OK, with a body if you pass one.
OnActionExecuted
IActionFilter's method that runs just after the action, with its result or exception. Docs ↗
OnActionExecuting
IActionFilter's method that runs just before the action, after model binding. Docs ↗
OnActionExecutionAsync
The one method of IAsyncActionFilter: it wraps the action, and await next() runs the action itself.
OnChange
IOptionsMonitor's method to run your code whenever the settings are reloaded.
OnConfiguring
A DbContext method where the context sets its own connection, used only when nobody passed options in. Older code; with DI the options come from AddDbContext.
OnModelCreatingPartial
A partial method EF Core's scaffolded DbContext declares and calls at the end of OnModelCreating, so your own file can add model settings that survive a re-scaffold.
OnRejected
Rate limiter callback that runs for each rejected call, for example to add a Retry-After header.
OnStarting
HttpResponse.OnStarting: registers code to run just before the headers are sent; the safe place to add a header.
OpenAsync
Opens a database connection without blocking a thread.
OperationCanceledException
Thrown by an async call when its CancellationToken fires. Docs ↗
OPTIONS
The HTTP method a browser uses for a CORS preflight: asking the API what a page may send before sending it. Full page →
Order
IOrderedFilter.Order: changes when a filter runs relative to others of its kind. Docs ↗
OrderBy
LINQ: sorts by a key, smallest first. OrderByDescending sorts largest first; ThenBy adds a tie-breaker.
OrderByDescending
LINQ: sorts by a key, largest first.
OutOfMemoryException
Thrown when .NET can't get enough memory for a new object; usually the process then dies.
p95
The response-time value within which 95 percent of requests complete; a high p95 shows the slow tail.
Parallel
The TPL's static class with Parallel.For, Parallel.ForEach and Parallel.ForEachAsync.
Parallel.For
Runs loop iterations on many threads at once. Full page →
Parallel.ForEach
Runs a loop body over a collection on several thread-pool threads and waits for all of them.
Parallel.ForEachAsync
The async version: awaits an async body, with MaxDegreeOfParallelism limiting how many run at once.
ParallelLoopResult
What Parallel.ForEach returns: IsCompleted, and the lowest break position if it stopped early.
ParallelLoopState
The object a parallel body uses to stop early or record a break.
ParallelOptions
Settings for a Parallel loop: MaxDegreeOfParallelism, a CancellationToken and the scheduler.
Parse
Converts a string into a number or date; throws FormatException if the string is not valid.
PasswordHasher
ASP.NET Core Identity's class that hashes passwords and checks a password against a stored hash.
Path.Combine
Joins folder and file names with the right separator for the operating system (\ on Windows, / on Linux).
PeriodicTimer
A timer you await in a loop: WaitForNextTickAsync returns once per period. Docs ↗
PlatformNotSupportedException
The error .NET throws when you call something the current operating system can't do.
PooledConnectionLifetime
How long a pooled HTTP connection is kept before it is replaced, so DNS changes are picked up.
Predicate
An older built-in delegate type: takes one value and returns bool. LINQ uses Func<T, bool> instead.
ProblemDetails
The standard JSON shape for API errors: status, title, detail and a trace id (RFC 9457).
QueryAsync
Dapper: runs a SQL query and maps each row to an object of type T by matching column names to property names.
Queue
First in, first out: add at the back, take from the front.
QueueClient
The Azure Storage client class used to send, receive, and delete queue messages asynchronously. Docs ↗
RateLimitPartition.GetFixedWindowLimiter
Gives each key (user, IP, API key) its own fixed-window counter.
ReadAllBytes
File.ReadAllBytes reads a whole file into one byte array, which goes on the LOH if the file is large. Full page →
ReadAsync
Moves a data reader to the next row without blocking a thread; false when no rows are left.
ReadFromJsonAsync
Reads an HTTP response body and turns its JSON into a C# object; returns a Task.
ReadOnlyCollection
the read-only wrapper AsReadOnly returns; unlike a plain List, it can't be cast back and changed.
record
C# type for data: compares by value, and positional properties can only be set when it is built.
RedirectToAction
Returns a 302 redirect to another action, e.g. after a POST saves data.
ReferenceEquals
True only if two variables point to the same object. Full page →
RejectionStatusCode
Rate limiter option: the status code sent when a request is refused. Default 503; set it to 429 (Too Many Requests).
RemoteIpAddress
The IP address of whoever connected to the app: behind a proxy, the proxy, unless forwarded headers are set.
Remove
takes an item out of a list.
RemoveAll
A List method that removes every item matching a condition in one pass.
RemoveAt
Removes the item at a position; the items after it shift down.
RequestAborted
A CancellationToken on HttpContext that cancels when the client closes the connection. Docs ↗
RequestDelegate
The next step in the middleware pipeline. A middleware calls it to pass the request on. Full page →
RequireClaim
A policy requirement: the user must have this claim (optionally with one of these values). Docs ↗
RequireRateLimiting
Puts a named rate limiting policy on endpoints.
RequireRole
A policy requirement: the user must have one of these roles. Docs ↗
Response.OnStarting
Registers code that runs just before the response headers are sent, so it can still add a header. Full page →
Run
app.Run adds a last middleware that never calls a next one. Full page →
SafeHandle
A wrapper around an OS handle that is released even if Dispose is never called. Full page →
SameSite
Cookie flag that stops the browser sending the cookie on requests started by other sites (Lax or Strict).
SaveChanges
Writes every tracked change to the database in one transaction.
SaveChangesAsync
EF Core: writes all tracked changes to the database in one transaction; returns a Task.
Secure
A cookie flag: the browser sends the cookie only over HTTPS.
Select
A LINQ method that turns each item into something else, using the Func you pass it.
SemaphoreSlim
Limits how many callers run a piece of code at once; works with await. Full page →
ServiceFilter
[ServiceFilter(typeof(T))]: gets the filter from DI, so T must be registered. Docs ↗
Setup
Moq: tells a fake what to return when a method is called with given arguments.
Single
LINQ: the only item that matches; throws if none or more than one.
SingleOrDefault
LINQ: the only match, or null if none; still throws if more than one.
SingleOrDefaultAsync
EF Core: runs a query asynchronously and returns its one matching row, or null if none; it reports an error if more than one matches.
Skip
LINQ: skips the first n items; with EF Core it becomes OFFSET.
SqlBulkCopy
ADO.NET: copies many rows into a SQL Server table in one fast bulk operation.
SqlCommand
One SQL statement to run on a SqlConnection.
SqlConnection
An open connection to SQL Server. Dispose it to return it to the pool. Full page →
SqlDataReader
ADO.NET: reads query results forward-only, one row at a time, while the connection stays open.
SqlDbType
The list of SQL Server column types (Int, Decimal, NVarChar...) you give a parameter so nothing is guessed.
SqlException
The error SQL Server's client library throws: a failed login, a timeout, a broken query.
Stack
Last in, first out: add and take from the same end.
Start
A Thread method that asks the OS to begin running it.
Stop
ParallelLoopState.Stop: end the loop as soon as it can, without promising lower indexes finish.
Stopwatch
Measures elapsed time precisely; Stopwatch.StartNew() starts one.
Stream
A sequence of bytes you can write to or read from, such as a file, a network connection or the HTTP response body.
Strict
SameSite=Strict: the cookie is never sent on requests started by another site.
string.IsNullOrEmpty
Checks whether a string reference is null or contains zero characters ("").
Succeed
AuthorizationHandlerContext.Succeed(requirement): marks a requirement as met. Not calling it means not met. Docs ↗
Succeeded
True on an authorization result when a handler called Succeed; false otherwise. Full page →
Sum
LINQ: adds up a number from each item; 0 for an empty sequence.
sync-over-async
The anti-pattern of blocking a thread on an async Task using .Result, .Wait(), or .GetAwaiter().GetResult(). Full page →
SynchronizationContext
Decides which thread runs the code after an await. Desktop apps and old ASP.NET have one; ASP.NET Core has none. Docs ↗
System
The base .NET namespace that holds GC, DateTime, Stream and the other core types. Full page →
System.Collections.Generic
The namespace that holds List<T>, Dictionary<TKey,TValue>, HashSet<T> and the collection interfaces.
System.Drawing.Common
Drawing library (images, fonts) wrapping Windows' GDI+; supported only on Windows since .NET 6. Docs ↗
System.Int32
The .NET type behind C#'s int: a 32-bit whole number.
System.Reflection
Code that inspects and calls classes while the app runs, even private members.
System.Threading.Tasks
The namespace that holds Task, Task<T>, Parallel, CancellationToken and the other TPL types.
System.Web
The old ASP.NET's core library on .NET Framework; tied to IIS on Windows and not part of ASP.NET Core.
System.Web.Http
The namespace of old ASP.NET Web API 2 on .NET Framework; merged into ASP.NET Core.
System.Web.Mvc
The namespace of old ASP.NET MVC 5 on .NET Framework; replaced by ASP.NET Core MVC.
Take
LINQ: keeps only the first n items; with EF Core it becomes TOP or FETCH.
TargetFramework
Project-file setting naming the .NET a project is built for, as a short code like net8.0; the plural form lists several, built one by one. Docs ↗
Task
A piece of async work that finishes later; await it to get the result.
Task.CompletedTask
A Task that has already completed successfully with no return value. Full page → Docs ↗
Task.Delay
Returns a Task that finishes after a time, with no thread held while it waits. Full page →
Task.Factory.StartNew
Old way to start a Task; with an async delegate it returns a Task of a Task, so prefer Task.Run.
Task.FromResult
Creates a Task that is already completed successfully with the specified result. Full page → Docs ↗
Task.Run
Queues a delegate to the thread pool and returns a Task for it; used for CPU-bound work. Full page →
Task.WhenAll
Waits for several tasks running at the same time.
Task.WhenAny
Creates a Task that completes when any of the supplied tasks has completed. Full page → Docs ↗
TaskCanceledException
Thrown when an HttpClient call is cancelled or times out; a kind of OperationCanceledException.
Thread
One the OS schedules: it has its own stack, you start it yourself, and creating one is expensive. Full page →
thread-pool starvation
A shortage of available thread-pool because many are blocked or busy, so queued work waits.
Thread.Abort
Old way to kill a thread; .NET Core and .NET 5+ throw PlatformNotSupportedException.
ThreadPool
The set of reusable background threads .NET keeps; Task.Run and Parallel use it instead of creating new threads. Full page →
ThreadStatic
Attribute that gives each thread its own copy of a static field. Breaks with async, which can resume on another thread.
throughput
How much work a system completes in a given time, such as requests per second.
TimeoutException
Thrown when an operation times out, such as a remote configuration or network request.
TimeProvider
.NET 8+ abstraction for the current time, so tests can control the clock. Singleton.
TimeProvider.System
The real clock implementation of TimeProvider.
TimeSpan
A length of time, like 5 minutes.
ToArray
Copies a collection's items into a new array.
TokenValidationParameters
The rules an incoming token must pass: issuer, audience, signing key, lifetime, clock skew.
TokenValidationParameters.ClockSkew
Same as ClockSkew: the expiry leeway, default 5 minutes.
ToList
copies a sequence into a new List: a new list holding the same references, not copies of the objects. Full page →
ToListAsync
EF Core: runs the query and returns a Task with all matching rows as a List.
TPL
Task Parallel Library: the .NET classes built on Task, like Task.Run, Task.WhenAll, Parallel.For and Parallel.ForEach.
TraceIdentifier
HttpContext.TraceIdentifier: the id ASP.NET Core gives each request.
TryAdd
Adds a key only if it is not there; returns false instead of throwing.
TryGetValue
Looks up a Dictionary key and returns false instead of throwing when it is missing.
TryHandleAsync
IExceptionHandler's one method: handle the exception and return true, or return false to let the next handler try.
TryParse
Attempts to parse a string value without throwing an exception, returning true if successful.
TypeFilter
[TypeFilter(typeof(X))]: creates filter X for each use without a DI registration; DI fills its constructor. Full page →
TypeInitializationException
Thrown when a static constructor fails; the type stays unusable. Full page →
UnmappedMemberHandling
System.Text.Json setting for JSON fields the class doesn't have: Skip (default, ignore them) or Disallow (error).
Update
EF Core DbContext.Update: starts tracking an entity with every property marked changed, so SaveChanges writes every column.
Use
app.Use adds a middleware that can run code and then call the next one. Full page →
UseAuthentication
Middleware that reads the token or cookie and fills HttpContext.User with who is calling. Full page →
UseAuthorization
Middleware that checks HttpContext.User against the endpoint's [Authorize] policy; answers 401 or 403 itself. Full page →
UseCors
Middleware that applies a CORS policy: answers browser preflights and adds the allow headers. Goes before authentication. Full page →
UsedAt
The time a refresh token was used, or null if it never was; a value here on a second use means reuse.
UseExceptionHandler
Middleware that catches unhandled exceptions and returns an error response. Full page →
UseForwardedHeaders
Middleware that reads X-Forwarded-For and puts the real client IP into RemoteIpAddress, when the sender is a trusted proxy.
UseHsts
Middleware that adds the HSTS header: the browser must use HTTPS for this site for a set time.
UseHttpLogging
Built-in middleware that logs requests and responses, with an allow-list of fields and headers.
UseHttpsRedirection
Middleware that answers http:// requests with a redirect to https://.
UseMiddleware
Adds a middleware class to the pipeline; ASP.NET Core builds it once and passes it next. Full page →
User
The signed-in caller (ClaimsPrincipal) on a controller or HttpContext, read from the token.
UseRateLimiter
Middleware that applies the rate limiting policies; after UseAuthentication when limits are per user.
UseRouting
Middleware that matches the URL to an endpoint, so later middleware (CORS, auth) can see which one will run. Full page →
UseStatusCodePages
Middleware that gives empty error responses (like a 404 with no body) a body, ProblemDetails when it's set up. Full page →
UseWhen
Runs extra middleware when a condition is true, then rejoins the main pipeline.
Validate
IValidatableObject's method: returns a ValidationResult for each rule the object breaks.
ValidateOnBuild
A container check at start-up: it tries to build every registration once, so a missing one fails before the first request. Full page → Docs ↗
ValidateOnStart
Options builder method that runs options validation when the host starts instead of waiting for the first request.
ValidateScopes
A container check: it throws if a scoped service is taken from the root or injected into a singleton. On by default only in Development. Full page → Docs ↗
ValidationProblemDetails
ProblemDetails plus an errors object: each invalid field with its messages. Sent as a 400 for bad input. Full page →
ValidationResult
One validation failure: a message and the field names it belongs to.
ValidAudience
TokenValidationParameters: the audience (aud) a token must have.
ValidIssuer
TokenValidationParameters: the issuer (iss) a token must have.
ValueTask
A lighter kind of Task for methods that often finish without waiting. Full page →
WeakReference
A reference that does not keep its object alive. After a collection, IsAlive or TryGetTarget tells you whether it was freed; tests use it to prove a leak is gone.
WebApplication
The built app in Program.cs: holds the pipeline and the root service provider.
WebApplicationFactory
Starts your whole API in memory for integration tests.
Where
LINQ: keeps only the items (or rows) for which a test is true.

The lending API (reference project)

Accepted
A property on the FIS answer: true when the core accepted the application.
Account
Navistar example: one customer's truck finance account, with DaysOverdue, Balance and InBankruptcy.
Activated
The event on ContractActivator, raised once each time a contract goes live.
AddCharge
the one checked way to add a charge to a Lease.
AllowedTerms
Invented static list on Quote: the terms offered (12 to 72 months, in 12s), built once by the static constructor.
Amount
How much a loan is for. Set once, by the constructor.
AmountDue
what to bill this month. Abstract in Contract; Loan returns its monthly amount, Lease adds its service fee. Full page →
Annuity
the shared, protected payment formula every contract class calls.
ApiExceptionFilter
An exception filter that turned exceptions into ProblemDetails, but only for the action stage.
ApplicationsController
API controller that takes new finance applications.
ApplicationsV2Controller
A copied controller in the bug that missed the [ApiController] attribute.
ApplyPayment
the only way to lower a contract's Balance; refuses a negative amount or more than is owed.
ApprovalAuditFilter
The filter in the filters incident that writes an audit row for each approval.
ApprovalLimitRequirement
Our custom requirement: the approval_limit claim must be at least a minimum.
Approve
ApplicationsController.Approve: the action that approves a loan application.
ArrearsRule
UDC Finance rule in a shared library: more than 7 days late is arrears.
AuditFilter
Our action filter that logs which user called which action.
AuditWriter
Writes an audit row (who did what, when) through the request's DbContext.
AuthController
Our login and refresh endpoints.
Authorization
Here: the authorization middleware or the folder that holds our policies and handlers.
Balance
what is still owed on a contract: anyone can read it, only the class can change it (private set).
BankSigner
Our small C# wrapper (P/Invoke declarations) around the bank's native signing library at UDC Finance.
BaseContract
Base contract class demonstrating base constructor execution and static initialization order.
BasePlan
Parent class in the live-coding output task showing static and base constructor execution order.
Bill
one month's bill: a contract id and the amount due.
Billable
A rejected design on the abstract-vs-interface card: an abstract base class for anything billed, instead of the IBillable interface.
BillingRun
the monthly job that makes one bill per due contract by calling AmountDue on a mixed list of contracts. Full page →
BillTo
The customer name a bill goes to. A property every IBillable must have.
BuyoutService
Invented BMW FS service: asks FIS for a leased car's and adds the purchase option fee.
CalculateAsync
The test helper in this card: it waits 10 ms, then returns the term as a Task<int>.
CalculateEmi
the name interviewers often give the monthly-payment method; in our code it is MonthlyPayment.
CallerKey
Helper that picks the rate-limit counter: the user id if signed in, otherwise the IP address.
CanApproveLoan
The policy on this card: role CreditOfficer plus an approval_limit claim (and in the live task a minimum limit).
CanGoLive
DealActivation's method: true when every check returns an empty error list.
CarPolicy
Car insurance: a sealed child of Policy whose AmountDue() is the monthly premium.
ChangePaymentDay
UDC request class: the new monthly payment day and a reason.
ChangeRate
Loan's method to change its rate; it can refuse bad values.
ChangeTerm
Invented method on Quote: checks a new number of months, then changes the term on that one quote.
Channel
A sender's channel name ("Email", "Sms", "Letter"); the notice service matches it to each contract's channel.
Charge
one extra amount on a contract, like a late fee.
Charges
a Lease's list of extra charges; after the fix, a read-only view. Full page →
CheckProduct
In the deal-check examples: the protected abstract step each child check writes; the base class calls it.
CheckTerm
Invented private static helper on Quote: throws if a term is not in AllowedTerms.
CollectionsQueue
Navistar example: runs a list of Func rules on an account and says whether collections should call it.
CommercialTruckLoan
Vehicle loan class for commercial truck financing in BMW FS origination.
Common.Emi
the shared helper, called with its class name inside Loan.
Contract
the abstract base class for every : holds Balance and MonthlyAmount, has ApplyPayment and an abstract AmountDue. Full page →
ContractActivatedEventArgs
The data the Activated event sends: the ContractId that went live.
ContractActivator
Makes a contract live in the nightly and raises the Activated event; it doesn't know who listens.
ContractCache
The in-memory store of open contracts the BMW FS dealer portal reads, held once per API process.
ContractDto
A small class that holds the fields of a contract as they go in and out of the API as JSON.
ContractId
The id of a ; logged as a field so it can be searched.
ContractLockedException
Thrown while the FIS core's nightly batch holds a contract; mapped to a 409.
ContractNo
Invented property on Letter: the contract the letter is about, such as UDC-50213.
ContractNotFoundException
Thrown when a contract id doesn't exist; a filter maps it to 404.
ContractRow
one row of the Contracts table as a plain C# object: every kind's columns, before it becomes a Loan or Lease.
Contracts
the table with one row per contract; its Kind column tells EF Core which class to build.
ContractsController
the API controller for /contracts; hands each payment to PaymentService.
ContractService
Our service class that finds, creates and changes contracts. The controller calls it so it holds no business code itself.
CorrelationIdMiddleware
Lending API middleware: gives each request an id, puts it on every log line and in the X-Correlation-ID response header.
CreateApplicationRequest
Request DTO for a new : customer name, amount, term and down payment.
CreateLoanRequest
the JSON body for creating a loan.
CreatePlanRequest
Invented JSON request DTO holding the raw amount and months sent to the quote API.
CreateSubvented
Static factory method creating a subsidized vehicle loan with promotional rate rules.
CreditCheckService
Origination service that asks the for an applicant's score.
CreditLimit
How much BMW FS lets a dealer have financed at once; a Dealer property.
CreditLimitCheck
Invented check written by UDC's developers: implements IDealCheck directly, no base class of ours.
CreditOfficer
The role a Navistar credit officer has in the token.
CreditResult
What CreditCheckService returns: the score and the decision.
CurrentUser
the ICurrentUser implementation, built per request from the token's claims.
CustomerStatementsController
The statements controller's old name in the view-not-found bug.
DaysOverdue
How many days a contract's oldest unpaid bill is late.
DealActivation
Invented class that runs every IDealCheck on a deal and lets it go live only if none finds a problem.
DealApprover
Navistar dealer-portal class that runs every IApprovalRule on a truck deal and collects the problems.
DealCheck
Invented BMW FS abstract class: Run tests the shared term rule, then calls the child's CheckProduct.
DealCheckBase
Invented abstract class for our own deal checks: runs the shared term rule, then the child's CheckProduct.
Dealer
The EF Core entity for a car dealer: name, contacts, region and credit limit.
DealerAdmin
The dealer-portal role that may request .
DealerContactEdit
The that shows or hides the edit-contact page.
DealerContextMiddleware
Navistar API middleware that reads the dealer id from HttpContext.User for later code.
DealerCreditLine
Commercial credit line for auto dealerships; validates dealer identifier and limit via constructor chaining.
DealerCreditService
Commercial lending service that manages dealership and lines.
DealerDetailsModel
The small view model for the dealer details page: just the dealer name and region.
DealerId
The dealer a record belongs to, compared with the dealer_id claim of the caller. Full page →
DealerProposal
Invented UDC Finance equipment proposal class using constructor chaining.
DealerQueries
Navistar example: the class that runs the month-end dealer report SQL with Dapper.
DealerRateMatrix
Pricing matrix class calculating commercial interest tiers for vehicle dealer financing.
DealerRates
Service providing subsidized rate flags and tier calculation rules.
DealerRateService
Invented UDC Finance service whose static constructor in the incident caused an outage.
DealerRegions
Invented UDC Finance class mapping each dealer to a region; in the incident its static constructor read a file and failed.
DealerRow
Navistar example: one row of the month-end dealer report, filled by Dapper.
Dealers
The dealers controller's name in URLs (/Dealers/Details/42), or the Dealers table.
DealersController
The MVC controller for the dealer pages on the BMW FS dealer operations site.
DealerService
The service that loads and saves dealers; the controller calls it.
DealerStatusMiddleware
Answers 403 when the calling dealer is suspended; reads the dealer list from the database.
DealerTierRates
Dealer tier pricing configuration class in the BMW FS loan origination API.
DealQuote
Practice quotation class refactored to centralize validation with constructor chaining.
DealService
Invented service in the UDC dealer portal API that opens a new deal.
DefaultFee
Invented property on FeeSchedule holding the standard quote fee.
DefaultTerm
Invented static property on LeaseQuote holding the standard 36-month lease term.
Delete
The service method that deletes a resource; returns false when there was nothing to delete.
DelinquencyNoticeWorker
The hub's nightly : recomputes and sends past-due texts.
Describe
Contract's method that returns the text for a contract; each child overrides it. Full page →
Details
The action that shows one item, e.g. /Dealers/Details/42.
DisclosureGenerator
Generates loan disclosure documents from contract entities.
DownPayment
The part of the price the buyer pays up front, on a .
DueDateService
Invented UDC service: reads a contract's next due date and moves it past weekends and NZ holidays. Scoped.
DuplicateKeyException
Our data layer's exception for a unique-index violation (SQL Server errors 2627, 2601), wrapping EF Core's DbUpdateException.
Edit
The action that shows or saves an edit form.
EditDealerContactModel
The view model for the edit-contact form: only name, phone and email.
Email
A dealer's email address property.
EmailSender
Sends BMW FS overdue notices by email; implements INoticeSender and IDeliveryTracker.
Emi
the monthly instalment () calculation.
Emi.Monthly
computes the monthly instalment.
EquipmentContract
Invented BMW FS contract class used in the virtual constructor call bug.
Errors
DealCheck's read-only view of the problems it found.
Extras
Invented list of add-ons on a quote, such as a or tyre cover. Each quote must own its own list.
Fail
DealCheck's protected method: adds one problem to its private error list.
FakeFisPayoffClient
Test-only IFisPayoffClient: returns whatever Amount the test set, no network.
FakeLoanRepository
a test-only ILoanRepository that keeps loans in a list, so tests need no database.
Fee
The card's pure fee method: extra miles times the rate; no shared state.
FeeFor
LateFeeCalculator's method: the late fee for an instalment, given its due date and today's date.
FeeOptions
Invented options class bound from configuration for FeeSchedule.
FeeSchedule
Invented UDC Finance fee class whose static constructor threw FormatException in the incident.
FinanceContract
the abstract base class every loan and lease inherits: principal, rate, balance and an abstract MonthlyPayment. Full page →
FinanceLease
a lease where the customer pays the at the end to keep the vehicle; overrides MonthlyPayment.
FisClient
Our class that calls the FIS Asset Finance core over HTTP; needs the FIS base URL.
FisPayoffClient
The real IFisPayoffClient: calls FIS's API over HTTP.
ForPayoff
Invented method on LetterService: builds a letter for one contract.
From
A static method on a response class (LoanResponse, PayoffQuote, CreditResult) that copies fields from the domain objects.
Get
The action that reads one resource, e.g. GET /api/contracts/42.
GetAsync
LoansController's endpoint that returns one loan and its .
GetDueAsync
IContractRepository's method that loads every contract due on a day, as a mixed list of Contract.
GetStatus
Asks a delivery tracker whether the notice for one contract was delivered.
GlobalExceptionHandler
Our catch-all IExceptionHandler: logs the exception once and writes a safe 500 ProblemDetails.
GoLiveService
Invented class that picks the deal check for a product and runs it before a deal goes live.
GraceUsed
Optional flag on a refresh token row, set when its one grace-window reuse has been used.
Gst
UDC example: a static class with the NZ rate (15%) and an Add method that returns the amount with tax.
Hash
A one-way fingerprint of a token (SHA-256): the store keeps this, never the token itself. Full page →
HolidayCalendar
Invented singleton holding the NZ public holidays; IsWorkingDay only reads, so requests can share it.
HubDbContext
The integration hub's EF Core DbContext (); scoped.
HubFactory
The hub's test host: a WebApplicationFactory on a throwaway SQL database.
IApprovalRule
One check on a truck deal: Check returns a problem, or an empty string if the deal passes. Full page →
IAuditLine
Example interface in a live task: a Describe() method with a default body for audit text.
IBillable
the interface for anything that gets a monthly bill: an Id and AmountDue(). Full page →
IContractRepository
the interface that loads and saves contracts; its EF Core class reads . Full page →
ICountryRules
the contract for country-specific rules (rounding, limits). Full page →
ICreditBureauClient
Typed HttpClient for the 's API.
ICurrentUser
who is calling, read from the token; scoped.
Id
Invented property on Quote: the quote's id, such as Q-7, set once by the constructor.
IDealCheck
Invented UDC deal-check interface: one method, Check(deal), that returns the problems found.
IDealerRateMatrix
Interface for looking up commercial dealer interest rate tiers.
IDeliveryTracker
Our small interface for channels that can report delivery (email, SMS): a Channel name and GetStatus. Letters don't implement it. Full page →
IdempotencyKeys
The table that stores each Idempotency-Key with its stored response; a unique index on the key.
IdReporter
Live-coding service that asks for the three Operation registrations and returns their ids. Full page →
IFisPayoffClient
Invented interface for asking FIS what is still owed on a contract. Real class: FisPayoffClient; tests use a fake.
IFisQuoteClient
Typed HttpClient for FIS's quote API.
ILateFeeRule
the interface for a client's late-fee rule; Contract holds one and asks it (composition). Full page →
ILoanRepository
the contract for loading and saving loans.
ILoanService
the contract LoanService fulfils; controllers depend on this.
Index
The default action name: the list page of a controller.
IndiaRules
India's rules; fixed, so a singleton.
InMemoryLoanRepository
a repository that keeps loans in a dictionary, for early slices and tests.
INoticeSender
Our interface for sending a customer notice: the hub's SMS port, and in the overdue-notice job a Channel name plus a Send method (email, SMS or letter). Full page →
Instalment
one scheduled payment: due date, amount and the interest inside it.
IPaymentService
An example of an interface put on a service class that has only one version; often not needed.
IPayoffService
The interface the controller asks for; PayoffService implements it.
IScopedOp
Live-coding interface: Operation registered as scoped (ITransientOp and ISingletonOp are the other two). Full page →
IsInArrears
Contract's C# method: true when DaysOverdue is above 30. EF Core can't translate it to SQL.
ISmsGateway
Wrapper around the SMS provider's HTTP API.
IsOverdue
LoanService's check: is the loan's next due date before today?
IStatementLine
Example interface in a live task: a Describe() method with a default body for statement text.
ITaxRule
Payroll take-home interface: one tax regime, TaxFor(salary) returns the tax. Full page →
LastPaidDate
The column holding the date of a contract's last payment.
LastPaidOn
The date of a contract's last payment on a statement line; nullable, because a new contract has none.
LastQuote
A static field that held the last quote for logging; removed in review because every request shared it.
Lease
a contract where the customer pays monthly plus a service fee and returns the car; overrides AmountDue. Full page →
LeaseAgreement
Invented BMW FS class for one signed lease: a number and a term in months, checked by its constructor.
LeasePlan
Child class of BasePlan in the live-coding output task showing static, chained, and inherited constructor order.
LeaseQuote
Invented BMW FS child of Quote for lease quotes; it has a static constructor and two chained instance constructors.
LedgerPoster
Subscribes to Activated and posts the new contract to the ledger.
LendingDbContext
The lending API's EF Core DbContext: its DbSet properties (Contracts, Payments) are the tables.
LendingFactory
the lending API's test host: starts the real app in a test, with a test database.
Letter
Invented UDC Finance parent class for customer letters; its protected constructor checks the contract number.
LetterRenderer
Our class that draws a letter (logo, barcode) into a PDF.
LetterSender
Queues UDC Finance overdue notices as posted letters; implements INoticeSender only.
LetterServiceUrl
The setting telling the portal where the letter service lives.
Load
Invented static factory method on RateSheet: reads the rates file, checks it, and returns the finished object.
Loan
one loan (principal, rate, months) and its rules. Full page →
LoanApplication
The class for one loan application row loaded from , with fields like DealerId.
LoanContract
Represents an origination loan contract with principal amount, term, and rate tier.
LoanRepository
the EF Core repository for loans; scoped.
LoanResponse
the JSON shape returned for a loan.
LoansController
the HTTP endpoints for loans.
LoansController.GetAsync
the endpoint that returns one loan.
LoanService
the service with the loan rules; scoped, uses a repository.
Log.Write
Practice helper in the live task: prints a line and returns 0, so you can see when a field's starting value runs.
LoginRequest
Small class that carries the email and password from the login JSON into the controller.
LogOnly
RefreshReuseMode value: reuse is only logged.
LogOnlySender
A sender registered outside production: it writes a log line instead of contacting a customer.
MaintenanceWindowMiddleware
Answers 503 to payment writes while FIS's runs.
Matches
Our batch helper that checks whether one bank payment pays one instalment.
MaxMonths
Invented static property on PaymentPlan holding the 84-month ceiling, set once by its static constructor. Full page →
MileageFee
the per-month mileage charge a TruckLease adds.
MileageReading
A truck's reported miles at one moment; a small readonly struct in the value-vs-reference card.
Miles
The number of miles on a MileageReading, set once by its constructor.
Money
pure data, one amount rounded to paise. Same amount means equal Money.
MonthlyAmount
the fixed amount a contract agreed at signing; set once in the constructor.
MonthlyBillingJob
The timer job that runs on the 1st of each month and calls BillingRun.RunAsync.
MonthlyPayment
the abstract method each contract overrides to work out its own monthly payment.
MonthsLeft
QuoteMath method: contract term minus months paid.
Name
A dealer's or customer's name property.
NextDueDate
The date a contract's next bill is due.
NzLeaseCheck
Invented deal check (inherits DealCheckBase): a UDC lease must have return terms.
NzRateTable
Invented UDC Finance static class that loaded NZ rates in a static constructor; its failure is the incident.
OldCreditLimit
A column in the DealerAudit table: the dealer's credit limit before a change.
OnActivated
A subscriber's method that runs when a contract goes live; its parameters match EventHandler<ContractActivatedEventArgs>.
OperatingLease
a lease where the lender keeps the vehicle and its value risk; adds maintenance to the payment.
OperatingLeaseCheck
Invented DealCheck child: an Operating Lease must state its return conditions.
Operation
Live-coding class with one Guid Id, registered three ways to show which object each ask gets. Full page →
OriginationDbContext
the Origination module's DbContext; scoped.
OverdueNoticeService
The nightly job's service that finds overdue contracts and hands each one to the sender for its channel; after the SOLID split it only runs the steps. Full page →
OverdueRow
The small result object for the collections screen: contract number, days overdue, balance.
Paid
Whether an instalment has been paid.
PaidThrough
The date an account is paid up to; are counted from it.
PaiseRules
another ICountryRules that rounds to paise. Full page →
PayAsync
PaymentService's method for one payment.
PaymentCalculator
the old class with a switch on the product code that the refactor task replaces.
PaymentDraft
A small demo struct (amount and a Paid flag) in the value-vs-reference card, used only to show that a struct is copied on =.
PaymentPlan
Invented Navistar Financial class for one dealer payment plan (Amount and Months), guarded by its constructors. Full page →
PaymentPoster
The long-lived class that posts payments and raises its Posted event.
PaymentService
the service that loads one contract, calls ApplyPayment and saves it.
PaymentValidator
Checks a payment request (amount, contract, date) before PaymentService applies it. Holds no state, so transient.
PayoffController
API controller for .
PayoffLetter
Invented UDC Finance letter saying what it costs to pay a contract off early; two chained constructors.
PayoffQuote
ContractsController.PayoffQuote: the action only DealerAdmin may call.
PayoffQuoted
the event the API logs for every quote: contract, date and amount.
PayoffQuoteService
Builds a from the loan and FIS's amount.
PayoffService
Invented Navistar service: gets a truck loan's amount from FIS and adds the fee.
PendingCharges
excess-mileage or damage charges waiting to be billed with the next rental.
Phone
A dealer's phone number property.
PlanQuoteService
Invented application service that builds a standard PaymentPlan and clones a 48-month option with the copy constructor.
PlanService
Invented Navistar service that opens a standard 36-month PaymentPlan for a dealer.
Policy
The abstract base for insurance products sold with a car (car cover, tyre cover): a policy number, who to bill and a monthly premium. Signs IBillable. Full page →
Post
PaymentPoster's method that records a payment and raises Posted.
Price
The car's price on a quote, a decimal.
ProgressiveTax
Payroll take-home class: taxes each slab of the salary at its own rate (10% from 10,000, 20% above 40,000).
ProposalService
Invented UDC Finance service that creates equipment proposals.
Quote
Invented BMW FS parent class for a price quote; holds the Id and has its own constructor.
QuoteMath
Small lending-API class used to show what IL and the JIT do.
QuoteService
Invented BMW FS service that starts and revises finance quotes; the quotes controller calls it.
RateCache
example: a singleton cache of interest rates (the captive-dependency bug).
RateCard
Invented singleton holding the base rate: one object, built by the class itself through a private constructor.
RateCardCache
Thread-safe singleton cache holding vehicle pricing and rate rules in memory.
RateFeed
This card's invented rate import: a static event, RateImported, that every RateView subscribes to.
RateOptions
Options class holding regional dealer base rates bound from configuration.
Rates
Invented lab class with a static constructor that throws, used to see TypeInitializationException.
RatesController
The Navistar controller that was shipped without [Authorize].
RateSheet
Invented UDC Finance class holding the rate table for NZ quotes; built once at start-up by Load.
RateTable
Invented UDC Finance class with a private constructor and a static rate method, so no table object is created.
RateView
This card's invented request-scoped view that subscribes to RateFeed and, before the fix, never unsubscribed.
Reason
In the Navistar log line: the FIS core's reason code for a rejection, like _INVALID.
ReasonCode
A property on the FIS answer: the code for why it was rejected, like _INVALID.
ReceiptSender
Subscribes to PaymentPoster.Posted and sends a receipt; must unsubscribe in Dispose.
RefreshRequest
Small class that carries the refresh token from the refresh JSON into the controller.
RefreshReuseMode
The in the JWT incident: Revoke (treat reuse as theft) or LogOnly.
RefreshTokens
The DbSet (table) of refresh-token rows in AuthDbContext: hash, expiry, revoked time.
ReplaceQuote
Live-task method that points its Quote parameter at a new quote, to show what the caller sees.
RequestContext
bug example: holds the caller's id for one request, so it must be scoped (it was a singleton).
RequestCounter
middleware example: counts requests in a singleton, so the count must be thread-safe. Full page →
RequestLoggingMiddleware
middleware that logs each request. Full page →
RequestTimingMiddleware
Times each request, adds X-Response-Time, warns on slow ones (the middleware card's live task).
Residual
the vehicle's end-of-lease value, fixed when the lease is signed.
Result
A wrapper type returned by methods that can succeed or fail, avoiding thrown exceptions.
Revoke
RefreshReuseMode value: reuse of a revoked refresh token revokes all the user's tokens.
RevokeAllAsync
TokenService.RevokeAllAsync: marks every live refresh token of a user as revoked.
RevokedAt
RefreshToken.RevokedAt: when the token was revoked; null while it's still usable.
Round
Our MileageReading method that returns a new reading rounded down to whole hundreds of miles.
RoundEmi
rounds an by the country's rules.
RunAsync
BillingRun's method that loads everything due on a day and makes one bill line each.
RunOnceAsync
One delinquency run in its own scope; the timer calls it, tests call it directly.
SameDealer
Our resource-based policy: the dealer in the token must match the dealer on the record.
SameDealerRequirement
An empty marker class naming the rule "the caller's dealer owns this record". Full page →
Schedule
a contract's list of instalments.
ServiceFee
the monthly fee a Lease adds on top of its monthly amount.
ServicingDbContext
the Servicing module's DbContext; scoped.
ShouldCall
CollectionsQueue's method: true only if every rule says yes for the account.
SignerHandle
SafeHandle subclass that closes the bank signing library's native handle.
SmsGateway
example: sends SMS; transient and IDisposable, so resolving it from the root leaks.
SmsSender
Sends Navistar Financial overdue notices by SMS; shortens a notice over 160 characters itself.
SqlContractRepository
The class behind IContractRepository that reads overdue contracts from .
StatementLine
One contract's line on a customer statement: balance, last payment and so on.
StatementPdfCache
This card's invented cache of rendered statement PDFs, first unbounded, then bounded to 500 entries.
StatementsController
The statements controller after the rename in the view-not-found bug.
StatementService
builds a loan's monthly statement (payments and fees for one month).
StatementWriter
The batch class that writes one dealer statement row for a contract.
StoredResponse
Our class holding the status code and body saved under an idempotency key, so a repeated request gets the same answer.
Subscription
a car subscription: monthly card payment, cancel any month, no balance. Implements IBillable, not Contract.
SubventedLoan
A vehicle loan with manufacturer interest rate subvention or dealer discounts.
Summary
IBillable's one-line bill text, with a default body (C# 8 default interface method): name and amount due.
TermCatalog
Invented class holding the terms each client offers, loaded once at start-up and handed out by the DI container. Full page →
TermMonths
Invented property on LeaseAgreement: how many months the lease runs. Must be above 0.
TermOptions
Invented table: which terms (months) each client offers.
TermStore
Invented class that reads the TermOptions table from ; the fixed version retries.
TokenResponse
Small class that carries the access and refresh tokens back as JSON.
TokenService
Our class that signs access tokens and creates and revokes refresh tokens.
TracLease
a truck lease with a fixed : one new class, added without touching billing.
Truck
A one-line practice class in the incident's lab that signs IBillable.
TruckLease
Navistar's truck lease: a contract that adds a mileage fee.
TruckLeaseBill
In Navistar's truck-lease add-on (another team's DLL): the class that signs IBillable for truck leases.
TryCreate
A common name for a static factory method: it checks the input and returns the new object, or null, instead of throwing.
UserService
Our class that finds dealer users and checks their passwords.
ValidDays
Invented property on PayoffLetter: how many days the figure holds. 7 unless staff set another.
VehicleContract
Loan contract class modeling vehicle term, amount, and dealer tier.
VehicleLoan
Base vehicle loan class holding and financed principal amount.
Vin
Invented class for one vehicle's 17-character ; its constructor is private, so it is built only through TryCreate.
VinMatcher
The mileage-job helper that matches returned truck against the open contracts, using a HashSet for the lookup.
WelcomeMailer
Subscribes to Activated and queues the customer's welcome pack.
WelcomeSms
Sends the welcome text after a loan is created.
WriteAll
The statement batch's method that writes one statement per contract.

My projects

asObservable
RxJS: hands out a read-only view of a subject, so callers can listen but not call next().
BaseDealerClass
UDC dealer portal: the base component 84 components build on (subscriptions, clean-up, form patching).
BaseDealerService
UDC dealer portal: the abstract service holding the shared form data in a private field.
BaseFormClass
UDC portal: the base form component from the team's own UI library (auro-ui).
BaseStandardQuoteClass
UDC dealer portal: extends BaseDealerClass with quote modes, program changes and status.
BehaviorSubject
RxJS: a stream that remembers its latest value and gives it to every new subscriber.
Check
IDealCheck's method: runs the check on a deal and returns the problems found (empty means pass).
getBaseDealerFormData
UDC portal: returns the shared form-data stream; today it hands out the subject itself.
ngOnInit
Angular: the hook that runs once when a component starts. A child that overrides it must call super.ngOnInit().
onFormDataUpdate
UDC portal: an empty hook the base calls on every form change; each component overrides it.
setBaseDealerFormData
UDC portal: the one method that merges a change into the shared form data and broadcasts it.
validateAction
UDC portal: answers whether the user's role allows an action in the current mode. Hides buttons; the API must still check.

Azure

Always On
An setting that keeps the app running when nobody calls it. Without it the app sleeps when idle, and background stop.In real life: Required on the hub-workers app, or the 02:00 run would never happen on a quiet night.
App Configuration · Azure App Configuration
An Azure service that holds settings and for many apps, changed without a deploy.In real life: The hub's live there; may flip a flag with the client's OK, with no .
App Insights · Application Insights
Azure's monitoring for an app: requests, errors, logs, timings and memory, all searchable. Docs ↗In real life: Every BMW FS service sends its data there. starts every investigation in its Failures and Logs views.
App Service
Azure's managed hosting for web apps, APIs and background jobs: you deploy the code, Azure runs the servers. Docs ↗In real life: BMW FS's APIs, the integration hub and its run on in a US region.
availability test · availability tests
An check that calls your URL from several Azure regions every few minutes and alerts when it fails. Docs ↗In real life: Navistar's API has one; since the CORS incident it sends a browser-style preflight, not just a plain GET.
Azure DevOps · Azure Repos · Azure Pipelines · Azure Boards
Microsoft's team tool: Repos for code and , Pipelines for build and release, Boards for work items.In real life: BMW FS's satellite services live in . Release pipelines need an approval before PROD.
Azure Functions · Functions timer trigger · timer trigger
Small pieces of code Azure runs on an event or a schedule. A runs one copy on a cron schedule, however many servers there are.In real life: Where nightly jobs belong: exactly one run at 02:00 ET, not one per server, and no drift after restarts.
Azure Monitor alert · alert rule
A rule that watches a number or a log query and notifies people when it crosses a line.In real life: An alert opens a ticket for the , and for a also phones the developer.
Azure SQL
SQL Server run by Azure: backups, patching and failover are handled for you.In real life: Our satellite services' databases. The FIS core itself runs on its own SQL Server.
Azure Storage Queue · Storage Queue
A simple, cost-effective cloud message queue service for reliable asynchronous background job processing. Docs ↗In real life: UDC Finance uses to offload PDF generation and webhook processing from the dealer API.
AzureFrontDoor.Backend
A service tag: Azure's own named list of the public IP ranges uses to reach your app, kept up to date by Azure so you don't copy addresses by hand. Docs ↗In real life: The BMW FS dealer API trusts only these ranges to tell it the caller's IP, and also checks the X-Azure-FDID header so only its own gets in.
branch policy
rules a must pass before merging: reviewers, a green build, a linked work item, resolved comments. Full page →In real life: On main: at least one reviewer who is not the author, and the build must pass. Nobody can push straight to main.
Container Apps
Azure's managed service for running containers: it starts replicas, restarts a failed one and scales on load, without you managing servers. Docs ↗In real life: The UDC statement runs here; each replica has its own memory limit, and a leak shows up as a restart every night.
Copilot in Azure · Azure Copilot
AI chat in the Azure portal: drafts from a plain question and explains resources. Generally available April 2025.In real life: Used only if the client allows it, and never with customer data pasted in.
deployment slot · staging slot · slot
A second live copy of an app with its own address. You deploy there first and test it. Full page → Docs ↗In real life: Every BMW FS release goes to the first, gets a , then is swapped in.
Entra ID · Microsoft Entra ID
Microsoft's sign-in service (formerly Azure Active Directory): it signs users in and issues tokens with their app roles.In real life: At BMW FS, Navistar and UDC staff sign in with , and app roles like CreditOfficer are assigned there, with an approval.
Front Door
Azure's global entry point for web traffic: it ends HTTPS near the user, caches, and forwards requests to the app. Docs ↗In real life: Dealer websites reach BMW FS's public APIs through .
Key Vault
Azure's safe for secrets, keys and certificates. Apps read them at run time instead of keeping them in config files.In real life: Connection strings and the SMS provider key live there; no developer sees the production values.
KQL · Kusto
Query Language: how you search logs. Like SQL written as a pipe: table | where | summarize.In real life: keeps saved queries in each ; you write new ones during triage.
managed identity
An identity Azure gives an app, so it can sign in to or with no password stored anywhere.In real life: The hub signs in to its database and this way; a leaked config file holds no secret.
Service Bus
Azure's message queue: one service drops a message, another picks it up later, even if it was down.In real life: FIS events (payment posted, account changed) reach the hub through .
slot swap · swap back
Staging and production trade places: the warmed-up staging copy becomes live in seconds. Swapping back is the . Full page →In real life: Release night at BMW FS: deploy to staging, , swap, watch for 30 minutes.
sticky slot setting · slot setting
A setting that stays with its and does not move when the are swapped. Full page →In real life: Workers:Enabled=false is sticky on staging, so only the production copy ever sends texts.
WAF · web application firewall
Web application firewall: rules at the edge (here on ) that block known attack patterns, floods and listed IP addresses before they reach the app. Docs ↗In real life: BMW FS's public APIs sit behind with a policy; a custom rule can block an address in minutes, with a change approval.
worker · hub workers
A background program with no web page. It runs on a timer or reads a queue. In .NET it is a BackgroundService.In real life: Our integration hub's send notices, sync FIS data and build the file, inside one app.
YAML · pipeline YAML
A plain-text format where indentation shows structure. are written in it. Full page →In real life: Each BMW FS service keeps its in the repo, and changes to it are reviewed in like code.

Team and process: support, releases, incidents

CAB · Change Advisory Board
: the meeting that approves changes before they go to production. Full page →In real life: BMW FS's meets weekly. A normal release needs its OK, and you may have to explain the risk and the plan.
change freeze · freeze
Days when no production changes are allowed except emergencies. Full page →In real life: Month-end close and year-end. At BMW FS also the days before the file goes out.
change request · CR
The ticket that asks to change production: what, when, risk, test proof and the plan. Full page →In real life: You write it, the tech lead checks it, the or the BMW FS IT manager approves it. No approved , no deploy.
cherry-pick · cherry-picked
Git: copy one commit from one branch onto another. Full page →In real life: How a fix on main reaches the without bringing other unfinished work.
CI/CD · CI · CD
: every push is built and tested automatically. : the tested build is deployed through the environments by a pipeline. Full page →In real life: runs on every ; a red build blocks the merge. The same build moves DEV → → → PROD.
compliance
The team that makes sure the business follows the law and the regulators' rules. Full page →In real life: At BMW FS they decide what customers are told and what goes to the . Developers never make that call.
DBA
Database administrator: the person who owns and runs the production databases. Full page →In real life: At BMW FS only their runs SQL in production. You send the script with a row-count check and a .
delivery manager
The vendor manager who owns delivery for one client: plans, people, contract and escalations. Full page →In real life: Approves from our side and gives BMW FS the bad news when needed.
DEV · dev environment
The development environment: shared servers where merged code runs first, with fake data. Full page →In real life: Our Azure dev subscription. Every merge to main deploys there automatically.
DMS · dealer management system
Dealer management system: the software a dealership runs its business on; some call our APIs directly.In real life: Hudson BMW's syncs prices from BMW FS's calculator API every night.
emergency change
A change made now to stop harm, approved by one or two named people; the paperwork comes after. Full page →In real life: Only for a at BMW FS. The reviews it at its next meeting, and you must show why it could not wait.
expedited change · fast-track change · fast-track
A change approved faster than the weekly because waiting would cost more. Testing is shortened, not skipped. Full page →In real life: The BMW FS IT manager and our approve it the same day, in .
feature flag · kill switch
A setting that turns a feature on or off while the app runs, with no deploy.In real life: Every new customer-facing notice ships behind one, so can switch it off in seconds if it misbehaves.
fix forward · roll forward
Shipping a new fix instead of going back to the old version. Full page →In real life: Chosen when the old version had the bug too, or a database change cannot be undone.
go/no-go
A short call just before a release: every owner says ready or not; any "no" stops it. Full page →In real life: 30 minutes before the window: testing, the , and BMW FS IT each answer go or no-go.
hotfix
A small urgent fix released outside the normal release.In real life: At BMW FS a still needs a and a check, just faster.
incident commander · IC
The one person who runs the incident: decides, hands out tasks, sends the updates. They usually do not debug. Full page →In real life: For a it is our tech lead. For a , BMW FS's major-incident manager leads and our tech lead runs the technical side.
L1 · service desk
First line of support: takes the user's call or email, logs a ticket, tries the known fixes, passes it on. Full page →In real life: At BMW FS, is BMW FS's own . They log the ticket and never touch our code or logs.
L2
Second line: support engineers who read logs, follow , restart things and flip flags. They do not change code. Full page →In real life: Our vendor watches the BMW FS queue in shifts and pulls in L3 (the developers) when the runs out.
L2 pod · support pod
A small fixed support team (4 to 8 people) that looks after one client or product. Full page →In real life: "The BMW FS pod" is the people assigned to BMW FS. They own its ticket queue and its .
L3
Third line: the developers who own the code. They find the root cause and write the fix. Full page →In real life: That is you. pulls you in during India hours; for a US-night the L3 gets a phone call.
maker-checker · four-eyes
One person makes a change, a different person checks and approves it. Nobody does both.In real life: Banks and lenders require it for data fixes, payment settings and releases. Auditors check that it happened.
masked data · data masking
A copy of production data with names, account numbers and addresses scrambled, so testers can use it safely. Full page →In real life: BMW FS refreshes from production with masking. Real customer data never goes to a developer laptop.
on-call
The person who must answer the phone out of hours this week if something breaks. Full page →In real life: One L3 developer per week is for US-night ; it rotates, and the says when to call them.
P1–P4 · P1 · P2 · P3 · P4
Incident severity. : down, or money or legal harm right now. : serious, with a workaround. : minor. : cosmetic or a question. Full page →In real life: A BMW FS means a within minutes and updates every 30 minutes. A is worked in business hours. The contract () sets the response times.
PII
Personally identifiable information: names, phone numbers, addresses, account and ID numbers.In real life: Never in logs, test data or AI chat prompts. A log line with a customer phone number is a security incident at BMW FS.
postmortem · post-mortem
A meeting and a document after an incident: timeline, cause, what went well, action items with owners. Blameless: it asks what allowed the mistake, not who made it. Full page →In real life: Ours is internal and honest. The is the cleaned-up version the client receives.
PR · pull request
Pull request: a request to merge your branch. Teammates review it before it goes in. Full page →In real life: In BMW FS's a needs one approval, a green build, a linked work item and every comment resolved.
pre-prod · pre-production
A copy of production with the same size and settings, for the last check before release. Full page →In real life: Client-owned. Used for load tests and release rehearsals. Not every client pays for one.
problem ticket · problem record
A ticket to find and remove the root cause, opened once the incident itself is calm. Full page →In real life: The incident closes when customers are fine again. The stays open until the real fix is in production.
PROD
Production: the live system that real customers use. Full page →In real life: Only the release pipeline and the client's change it. Developers usually get read-only access to logs, not to the database.
RCA · root-cause analysis
Root-cause analysis: the report on why it happened and what now stops it happening again. Full page →In real life: BMW FS wants it within about 5 working days of a or . The tech lead writes it from the and sends it to their IT manager.
release branch
A branch cut for one release. Only fixes go into it; new work stays on main. Full page →In real life: A production fix lands on main first and is then copied to the , so the next release keeps it.
release window
The agreed time when production changes may happen, when the fewest users are on. Full page →In real life: BMW FS: Thursday 21:00 US Eastern, which is Friday 06:30 in India, so the India team is awake for it.
rollback · roll back · rolled back
Going back to the last good version. Full page →In real life: On : swap the back, seconds. A database change makes it harder, so migrations are written to work with both versions.
runbook
Written steps for a known issue: what to check, what to run, when to call the next person. Full page →In real life: follows the at 3 a.m. A step like "restart and re-run" can hide a real bug for weeks.
ServiceNow · INC · PRB · CHG
The ticket tool most big companies use. Every incident (), problem () and change () is a record in it. Full page →In real life: BMW FS's tickets start , or . Our works in BMW FS's , not our own tool.
SIT
System integration testing: testers check the whole system works together, with the FIS core and the other systems. Full page →In real life: Our vendor test team runs it against an FIS test instance with made-up accounts.
SLA
Service level agreement: the contract's promise, such as "answer a in 15 minutes, fix or work around it in 4 hours". Full page →In real life: The vendor contract with BMW FS has targets per severity. Missing them costs the vendor money (service credits).
smoke test · smoke-test
A quick check right after a deploy that the main paths work. Full page →In real life: After a release: the health endpoint, one test login, one quote. A few minutes, then the .
standard change · pre-approved standard change
A low-risk change done the same way every time, approved once in advance, so it needs no each time. Full page →In real life: Flipping a off from the , with the BMW FS IT manager told, is a .
Teams bridge · bridge call · bridge
One Microsoft Teams call that stays open while an incident is worked. Everyone working it joins; one person leads. Full page →In real life: The tech lead opens it for a BMW FS ; for a BMW FS joins too. The chat log becomes the timeline for the .
UAT
User acceptance testing: the client's own business users check it does what they need, and sign it off. Full page →In real life: BMW FS collections or operations staff test in their environment on . Their sign-off goes into the .

Asset finance: the clients and their words

ACH
The US bank-to-bank payment system. A payment takes 1 to 3 business days to settle.In real life: Most BMW FS customers pay by . A payment made on Friday posts in FIS on Monday.
billing run · billing runs
The scheduled job that makes every due customer's bill for the month.In real life: Runs on the 1st (US time) for BMW FS; bills are emailed the next morning after a check of the totals.
BMW FS · BMW Financial Services
BMW Financial Services: BMW's own finance company (a ) in the US. Car loans and leases for BMW buyers.In real life: The default client in these stories. Its loans and leases run on the FIS core; our .NET services sit around it on Azure.
captive lender
A finance company owned by a manufacturer, to fund buyers of its own products.In real life: BMW FS and Navistar Financial are captives. UDC is not.
credit application · credit applications · credit app · credit apps
A dealer's request to the lender to finance one customer's vehicle: customer, vehicle, price, deposit, term.In real life: Navistar dealers submit them from the dealer portal; each one becomes a deal in FIS for credit to approve or decline.
credit bureau · bureau
A company that keeps people's credit history: Experian, Equifax and TransUnion in the US.In real life: Lenders send each account's status every month. A wrong "late" there hurts a real person's credit score.
days past due · DPD
How many days the oldest unpaid instalment is late. It drives notices, fees and what the is told.In real life: Recalculated every night after payments post. One wrong value means a wrong text and maybe a wrong line.
EMI
Equated monthly instalment: the same payment every month that pays off a loan's interest and principal together.In real life: The lending API's own word (Indian loans). BMW FS and Navistar say "monthly payment"; the maths is the same.
end-of-day batch
The core system's nightly run that posts the day's payments, accrues interest and rolls the date; writes wait until it ends.In real life: FIS runs it every night for BMW FS; our API pauses payment writes during it instead of returning errors.
finance contract
The lender's agreement with a customer for a vehicle: a loan (pay monthly, keep it) or a lease (pay monthly, give it back).In real life: At BMW FS, Navistar and UDC every contract lives in the one FIS core; our services read and bill them.
finance lease
A lease where the customer carries the vehicle's economics and pays the at the end to keep it.In real life: FL in UDC's product codes; "Fixed Finance Lease (US)" on the BMW FS side.
FIS · FIS Asset Finance · FIS core
FIS Asset Finance: the core lending system (accounts, schedules, payments, collections) the three clients run.In real life: FIS owns its code. We build plugins inside it and .NET services around it on Azure.
GST · Goods and Services Tax
: New Zealand's sales tax, 15%, added to the price of most things.In real life: UDC Finance quotes and invoices show amounts with added.
lien release · lien
Removing the lender's legal claim on the vehicle once it is paid off.In real life: Released a few days after a is funded. Releasing on a short gives up the security.
Metro 2
The standard file format US lenders use to send account status to the , once a month.In real life: BMW FS sends it around the 2nd. Regulators fine lenders who send wrong data (Hyundai, 2022).
Navistar Financial
Navistar's finance company in the US: loans and leases for trucks, sold through dealers.In real life: Same FIS core as BMW FS. You also work on its Angular dealer portal.
operating lease
A lease where the lender keeps the vehicle and its value risk; the customer hands it back at the end.In real life: OL in UDC's product codes; "Operating Lease (US)" on the BMW FS side.
payoff quote · payoff
The amount that closes a contract early on a given date: principal left, plus and fees.In real life: Dealers ask for one when a customer trades in a vehicle. Navistar funds the , then releases the .
residual · residual value
The vehicle's value at the end of a lease, fixed when the deal is signed.In real life: In a the customer pays it to keep the vehicle; in an the lender carries the risk of selling for less.
service plan · service-plan
A maintenance package paid monthly with a lease: servicing and wear parts included.In real life: Billed as a fee on top of the lease amount; finance ops watch its income per run.
TRAC lease · TRAC
A truck lease with a fixed up front (terminal rental adjustment clause). At the end the truck is sold and the customer pays or gets the difference.In real life: Navistar Financial's common truck lease. Billing and treat the like a balloon payment.
UDC Finance · UDC
A New Zealand finance company: vehicle and equipment loans, under NZ consumer-credit law.In real life: Same FIS core. NZ is 6.5 to 7.5 hours ahead of India, so its night batch runs in our afternoon. You work on its Angular portal too.
VIN
Vehicle identification number: the 17-character ID every car and truck carries.In real life: Navistar dealer files and BMW FS deals carry one per vehicle; a typo in it is the most common reason a row is rejected.