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).
- 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.