FTF and Guidewire

FTF GW client

How a Guidewire application is designed to use FTF.

The same toggles, releases and attributes as every other FTF client, shaped for InsuranceSuite: a Gosu call, evaluation inside the application, and toggle screens of its own.

Design only. This page describes the design of FTF's Guidewire client. It is available to design partners — talk to us.

One call in Gosu

Code asks about its own toggle, passing what it knows about the policy, account or claim. The toggle's switch, its release and its attributes give the answer — the call never names the release.

A toggle's name carries the application it belongs to: acme.pc.fe-234.new_quote belongs to PolicyCenter, acme.bc.… to BillingCenter. Release toggles span applications.

The same four attribute kinds as everywhere in FTF: lists, numbers, a percentage of accounts, and references. Business scenarios

// a PolicyCenter rule or PCF expression if (Ftf.isEnabled("acme.pc.fe-234.new_quote", { "brands" -> policy.Brand, "jurisdiction" -> policy.BaseState.Code, "accountId" -> account.AccountNumber})) { showNewQuote() // the new feature } else { showQuote() // what users have today }

Evaluated inside the application

Each Guidewire application keeps its own copy of its toggles and answers isEnabled from it, in-process — no network call per check, and answers keep coming if FTF can't be reached.

When something changes in FTF, the application is told to refresh its copy; on every start it catches up in full. A Guidewire application doesn't need to be reachable from the internet for anything else: where it isn't, FTF's address is allowed through, or the one refresh call is routed through your API gateway.

Same answers as every other client

The design holds the Guidewire evaluator to the same shared set of test cases as FTF's service and its other evaluators, so a toggle is on for the same customers in PolicyCenter as in the web portal. Same answers everywhere

Pending until it's built here

A toggle that arrives for an application starts pending there and answers off until a developer marks it implemented for that application — so a release can't switch on code one application hasn't built. A toggle's life

A toggle and release console in the application

Guidewire's own runtime-properties screen is generic, one property at a time. The design pairs FTF with purpose-built screens inside the application — toggle list and detail with history, releases, and adding attributes — the same shape as FTF's web console.

The screens live in the application's administration area. They are where toggles are switched in a standalone application and on a developer's local server; with FTF connected they are a fallback while FTF can't be reached — a change made there may be replaced by FTF's at the next refresh.

Permissions

  • View toggles and releases, and edit them, as two Guidewire permissions — assigned to whichever roles suit your access model.
  • In FTF itself, your identity provider decides who switches and promotes what. Security & access
  • Every change is recorded with who made it and when, whether made in the application or in FTF.

No code or configuration change between environments

What changes from a developer's laptop to production is supplied by each environment, never committed.

WhatCommitted?What it holds
FTF configurationYes — the same in every environment Your company's toggle prefix and this application's name. Two installations of the same product, say one per country, each have their own name.
Toggles fileYes, with the configuration The application's toggles, for developers' local servers and CI — edited with FTF's screens like any other toggles file.
Environment fileNo — one per FTF environment FTF's address and the environment's key, shared by every installation in that environment.
Installation fileNo — one per installation The secret FTF uses to tell this installation to refresh.

No environment file means offline: the application uses its toggles file. That's how developers and CI work, and how a standalone Guidewire application runs.