An analyst is examining the process for promoting a verified build from the development environment to production. Which statements accurately describe key steps in the flow of code changes between physical star systems in GWCP, according to the training? (Choose 2)
Production database backups are not required when promoting builds.
A build must be deployed to every planet in the dev star system before promotion is allowed.
Builds are promoted sequentially from dev to pre-production and then to production physical star systems.
Code is directly committed from dev to production repositories.
The Build Promotion app in Guidewire Home is used to manage the promotion process.
The Guidewire Cloud Platform (GWCP) enforces a rigorous and standardized path for code promotion to ensure maximum stability in production environments. This process follows the Astronomy Metaphor where code moves between logical partitions.
Statement C is a fundamental truth of the cloud delivery model: Sequential Promotion. Code cannot " skip " environments. A build must first be verified in the Development Star System (on a Dev planet). Once verified, that same immutable build (Docker image) is promoted to the Pre-Production Star System for User Acceptance Testing (UAT) and Performance testing. Only after passing the " Quality Gates " in Pre-Prod can the build be promoted to the Production Star System. This sequence ensures that the exact same code being deployed to production has been thoroughly vetted in lower environments.
Statement E identifies the tool used for this management: the Build Promotion app located in Guidewire Home. This application provides a centralized interface for authorized users to select a verified build from a lower " Orbit " and promote it to a higher one. This tool abstracts the underlying complexity of the CI/CD pipeline and ensures that the promotion follows all security and compliance protocols.
Option D is incorrect because code is never " committed " directly to production; rather, a pre-compiled build image is promoted. Option B is incorrect as not every dev planet needs a deployment—only the specific verified " golden " build needs to move forward. Adhering to this sequential, tool-managed process is a key requirement of the Guidewire Cloud Standards.
An insurer doing business globally wants to use a validation expression to verify that a contact ' s postal code is a real postal code for the country specified in the contact ' s address.
A developer has created a method with the signature validatePostalCode(anAddress: Address): boolean, which returns true if and only if the postal code is valid.
What would be the correct validation expression?
validatePostalCode(anAddress) == true
validatePoslalCode(anAddress) == null
validatePostalCode(anAddress)
validatePostalCode(anAddress) ? null: false
In Guidewire InsuranceSuite configuration, Validation Expressions (found in the Data Model within entity properties or specialized validation files) follow a specific logic: they must return null if the data is valid, and a non-null value (typically a String representing the error message) if the data is invalid. This is a common point of confusion for developers used to standard Boolean logic where " true " means valid.
In this scenario, the helper method validatePostalCode returns a Boolean (true for valid, false for invalid). Because Guidewire expects a null result for success, a direct call to a Boolean method is insufficient.
Option A and C are incorrect because they evaluate to a Boolean value (true or false). If the method returns true, the validation engine receives true instead of null, which it incorrectly interprets as a validation failure.
Option B is syntactically incorrect as it compares a Boolean to null.
Option D uses the ternary operator to map the Boolean result to the expected Guidewire logic. If validatePostalCode is true (valid), the expression returns null, which the system treats as " no error found. " If the method is false (invalid), it returns a non-null value (in this exam wording, false). Since false is not null, the Guidewire validation engine identifies this as a failure and prevents the data from being committed or advancing to the next stage.
While best practices in a production environment suggest returning a descriptive String for the user (e.g., " Invalid postal code for this country " ), for the purposes of the developer exam, the logic focuses on the Null/Non-Null requirement. This mechanism ensures that developers understand how the Guidewire validation framework triggers errors based on the presence of a return value rather than a Boolean state.
Which statement accurately defines automated Guidewire inspections?
Developers need to toggle on all of the inspections they want to execute against their code.
Inspections cannot be modified by developers but will be used as delivered in Studio.
Inspections enable static analysis to enforce standards and detect Gosu anti-patterns.
All Guidewire inspections are incorporated into a plugin that can be installed in Guidewire Studio.
Guidewire Inspections are a cornerstone of the Static Analysis framework built directly into Guidewire Studio. Unlike dynamic testing (like GUnits) which requires code to run, inspections analyze the source code " as written " to find potential issues early in the development lifecycle.
The primary purpose of these inspections (Option C) is to enforce Cloud Delivery Standards and identify Gosu anti-patterns. Common anti-patterns include:
Using query.select().toList().where(...) (filtering in memory instead of the database).
Hardcoding strings instead of using DisplayKeys.
Missing the _Ext suffix on custom metadata.
By detecting these issues in real-time within the IDE, developers can fix architectural flaws before they are ever committed to Git. Option A is incorrect because many core inspections are enabled by default to ensure baseline quality. Option B is incorrect because Guidewire provides the ability to configure the severity of certain inspections (Warning vs. Error). Option D is incorrect because inspections are a native feature of the Guidewire plugin for IntelliJ/Studio, not a separate secondary plugin.
What are two types of Guidewire Profiler? (Select two)
Exit-point
Entry-point
Database Performance
Worksheet
The Guidewire Profiler is a powerful diagnostic tool used to analyze the performance of Gosu code, database queries, and rule execution within the application. It helps developers identify bottlenecks by providing a detailed breakdown of where time is being spent during a specific operation.
According to the " System Health & Quality " training, the Profiler is categorized based on how the profiling data is captured and viewed. The two primary types are Entry-point and Worksheet.
Entry-point Profiler (Option B): This is used to profile a specific " entry point " into the application, such as a Web Service call, a Batch Process, or a specific PCF Page load. When a developer enables an entry-point profiler, the system records every operation (Gosu execution, SQL query, etc.) that occurs from the moment the entry point is triggered until it completes. This is essential for diagnosing high-latency API calls or slow-running background tasks.
Worksheet Profiler (Option D): This type is accessible directly within the application UI via the " Worksheet " (the slide-up panel at the bottom). It allows a developer or tester to profile their own current session. By clicking " Enable Profiler " in the worksheet, the developer can perform a specific action (like clicking a button or saving a claim) and immediately view the performance trace once the action finishes.
Options A (Exit-point) and C (Database Performance) are not standard names for the Profiler types in Guidewire. While the Profiler measures database performance, it is not a " type " of Profiler itself. Understanding the difference between these types allows developers to choose the right diagnostic tool depending on whether they are troubleshooting a user-interface issue (Worksheet) or a systemic back-end performance problem (Entry-point).
Succeed Insurance needs to implement a number of Gosu functions. Select the options that follow best practices. Select Two
When writing UI related functions, that code should be placed in UI helper classes. Following this practice ensures easier maintainability by developers.
When implementing an interface such as Rental Location the class should be called RentalLocationImpl.
Entities should be extended to support UI operations. Following this practice ensures easier maintainability by developers.
Add new interfaces to a customer package space such as si. in this case. In addition, do not append _Ext on the interface name in this package.
When writing UI related functions, that code should be placed in the code tab of a PCF file to improve performance and maintainability.
Functions defined in a Gosu class should be named in upper camel case such as ModifyAddressInformation
Use underscores to separate words in function names for better readability.
In Guidewire development, code organization is paramount for maintainability and scalability. According to the Gosu best practices taught in the InsuranceSuite Developer Fundamentals course, UI-related logic should be separated from the visual definition of the page. While PCF files have a " Code " tab, placing extensive logic there (Option E) is considered a " coding anti-pattern. " Instead, developers should create UI helper classes (Option A). This separation of concerns allows for easier unit testing of the logic and ensures that the PCF files remain focused on UI layout and widget configuration.
Furthermore, when introducing custom architectural components like interfaces, developers must manage namespaces correctly to ensure upgrade safety. If a developer creates a new interface within a dedicated customer package—such as si.insurance.util—Guidewire best practices (Option D) state that the _Ext suffix is not strictly required on the interface name itself because the package name already distinguishes it as a custom component. This differs from entity extensions where the suffix is mandatory because entities share a global namespace.
Options B and F violate standard Gosu naming conventions. Gosu methods should use lower camelCase (e.g., modifyAddressInformation), and while Impl is a common Java pattern, Guidewire prefers more descriptive naming or standard package-based organization. Option C is incorrect because entities should ideally contain business logic related to the data itself, not specific UI state or manipulation logic, which is better handled in helper classes.
An insurance carrier requires that a claim be flagged as potential fraud when the Loss Date on a claim is changed, and a review activity and history entry be created. Which configuration will accomplish this?
Create a Validation Rule to determine if the Policy is in force on the new Loss Date and only take action if the new Loss Date is outside the Policy effective dates.
Create a Pre-update Rule that flags the claim and creates a history entry; a ClaimException Rule will create an escalation activity for the supervisor.
Create a Pre-update Rule that checks for a change to the Loss Date field and flags the claim and creates the review activity and history entry.
Create a Post-setup Rule that checks for a change to the Loss Date field and flags the claim, which creates a supervisor activity and history entry.
In the Guidewire Rules Engine, detecting changes to specific fields during a transaction is a primary use case for Pre-update Rules. A Pre-update rule executes after the user clicks " Update " but before the data is committed to the database.
According to Gosu Rules best practices, the developer should use the isFieldChanged() method (e.g., claim.isFieldChanged(Claim#LossDate)) within a Pre-update rule. If the field has changed, the rule can then perform multiple actions within the same database bundle. In this scenario, the rule can simultaneously set the FraudIndicator flag, create a new Activity object for review, and add a History entry. Since these actions happen in the Pre-update stage, they are all bundled into a single atomic database transaction. If the save succeeds, all three updates are committed; if it fails, none are.
Option A is incorrect because Validation Rules are intended to block the save operation if data is invalid, not to perform secondary business logic like creating activities. Option B is inefficient because it splits the logic across two different rulesets, which is harder to maintain and may lead to timing issues. Option D is incorrect because Post-setup Rules are generally used for initial object defaults when a new entity is created, not for tracking changes to existing fields. By using a single Pre-update rule (Option C), the developer follows the architectural standard for " change-triggered " logic, ensuring the system remains performant and the code remains encapsulated.
ContactManager provides an inline reference to an editable list view on the Contact Basics screen that supports adding and editing of banking information for contacts. The screenshot below shows this list view in Studio. There is an error within the red outline.
Which configuration changes are necessary to resolve the error? (Select two)
Add a toolbar widget to the list view input
Add and configure Iterator buttons
Replace the list view input with a panel ref
Replace the list view PCF with an inline list view
Add edit permissions to the row iterator
In the Guidewire Page Configuration Framework (PCF), displaying a list of data within a Detail View (DV) requires specific container widgets. When a developer uses a ListViewInput to embed an existing List View into a form, they are essentially creating an " editable grid " section.
1. The Requirement for a Toolbar (Option A)
According to the InsuranceSuite Developer Fundamentals guide, a ListViewInput is a specialized widget that acts as a wrapper for a List View. Unlike a standard List View displayed on its own page (which inherits the page ' s toolbar), a ListViewInput exists inside a Detail View column. For the list to be interactive—allowing users to add new bank accounts or remove existing ones—the ListViewInput must have its own Toolbar. In Guidewire Studio, if a ListViewInput is marked as editable but lacks a toolbar, the metadata validator will flag an error because there is no container to hold the necessary action buttons.
2. Configuring Iterator Buttons (Option B)
Once the Toolbar is added to the ListViewInput, it remains empty until Iterator Buttons are placed inside it. These buttons (typically the " Add " and " Remove " buttons) must be explicitly configured to point to the Row Iterator defined within the referenced List View PCF.
The error in the screenshot is resolved by:
Selecting the ListViewInput in the PCF tree.
Adding a Toolbar child widget.
Adding Iterator Buttons (Add/Remove) to that toolbar.
Linking those buttons to the correct iterator ID.
This combination provides the end-user with the UI controls needed to manipulate the banking information array. Options C and D represent alternative ways to structure the UI but do not address the specific configuration error of the ListViewInput widget. Option E relates to security and runtime behavior, not the structural metadata requirements of the PCF layout engine.
Which two statements are true regarding the Guidewire Cloud Assurance process? (Select two)
Cloud Assurance does not apply to customer projects migrating self-managed implementations into Guidewire Cloud Platform.
Items in the Optimization Backlog must be resolved before deployment to the Cloud.
Cloud Assurance applies to both new Guidewire Cloud implementations and customer projects migrating self-managed implementations into Guidewire Cloud Platform.
Cloud Assurance applies to new Guidewire Self-managed implementations.
The Optimization Backlog includes Guidewire suggestions for improvement.
The Guidewire Cloud Assurance process is a mandatory quality framework designed to ensure that every implementation on the Guidewire Cloud Platform (GWCP) adheres to the highest standards of performance, security, and maintainability.
Statement C is true because the Assurance process is not limited to " greenfield " (new) projects. Customers migrating from a self-managed, on-premise environment to the cloud must go through the same rigorous code reviews and architectural assessments. This ensures that any " technical debt " or non-cloud-compliant patterns in the legacy codebase are identified and addressed before the application goes live in a SaaS environment.
Statement E is also true regarding the Optimization Backlog. During the code review and assessment phases, Guidewire experts identify areas of the configuration that, while perhaps not " breaking " the system, could be improved for better performance or easier future upgrades. These items are captured in the Optimization Backlog. While " Critical " or " Blocker " issues must be resolved before the go-live deployment, items in the Optimization Backlog represent a roadmap for continuous improvement.
This process aligns with the SurePath methodology, shifting the focus from simply " going live " to " staying healthy " on the cloud. It provides customers and partners with direct feedback from Guidewire’s own engineering standards, ensuring that the implementation remains scalable and capable of taking advantage of the bi-annual cloud release cycles.
In TrainingApp. the Person Info card of the Details screen for a contact has a section where basic employment information is stored:
The insurer requires this information to be displayed, in this format, on every card of both the Summary and Details screens, for every individual person contact. This information will be stored in a container to be reused on all these cards.
Which object will most efficiently meet this requirement, according to best practices?
Detail View Panel
Input set widget
Input Set PCF file
Worksheet PCF file
In Guidewire InsuranceSuite development, the Page Configuration Framework (PCF) is designed around the principles of modularity and reusability. When a business requirement specifies that a group of fields—such as basic employment information—must appear identically across multiple screens (e.g., Summary and Details), the most efficient approach is to create a reusable component. According to the InsuranceSuite Developer Fundamentals course, the Input Set PCF file (Option C) is the standard object for achieving this.
An Input Set PCF file is a standalone metadata file that contains a collection of input widgets (like TextInput, DateInput, etc.). By defining the employment fields in a single Input Set file, you create a " source of truth. " To display these fields on different screens, a developer simply adds an InputSetRef widget to the target Detail View or Page and points it to the employment Input Set file. This architectural pattern ensures that if the business later decides to add a " Work Phone " or " Employee ID " field, the developer only needs to update one file. This update then automatically reflects across all screens where the Input Set is referenced, significantly reducing maintenance effort and the risk of UI inconsistency.
Other options are less suitable for this specific task. A Detail View Panel (Option A) is a higher-level container; while it can be reused, it is generally intended to hold larger sections of a page and may contain logic that isn ' t applicable to every card. An Input set widget (Option B) is merely a structural element within a single PCF file and does not provide cross-file reusability on its own. A Worksheet (Option D) is a UI element that slides up from the bottom of the application window and is not intended to be embedded directly into the layout of a Summary or Details card. Therefore, the Input Set PCF file is the most granular and effective tool for field-level reuse.
Succeed Insurance has a page in PolicyCenter with a large fleet of vehicles. They want multiple filters to show only a subset of vehicles. Which methods follow best practices?
Apply the filter using the Row Iterator configuration in the PCF.
Implement filtering logic in the list view PCF using visible properties.
Add multiple Filter Options using Gosu Standard Query Filters.
Add a ListView Filter widget to the ListView.
Retrieve all policies and filter them in the application server layer.
Use Gosu ' s where method on the retrieved collection in memory.
When dealing with a large fleet of vehicles, performance is the primary concern. Retrieving thousands of vehicle records and filtering them in the application server ' s memory (Options E and F) is a high-risk anti-pattern that leads to latency and high memory consumption.
The best practice for implementing efficient UI filters on large datasets is to use Gosu Standard Query Filters (Option C). These filters are added to the ListView ' s toolbar. When a user selects a filter (e.g., " Only Heavy Trucks " ), the Guidewire platform translates that filter into a SQL WHERE clause. This allows the database to do the work, returning only the specific subset of vehicles requested. This " Database-First " approach ensures that the application server remains responsive and that the network traffic between the database and the application is kept to a minimum.
Option A (filtering on the Row Iterator) and Option B (using " visible " properties) still require the system to fetch all the data from the database first, which does not solve the underlying performance issue. Using Query Filters is the only scalable solution for InsuranceSuite applications managing high-volume data.
In the screenshot below
A developer has added a tab labeled Delinquencies to the tab bar of BillingCenter. This tab will contain several pages. The first page in the tab will display a summary of the currently-selected delinquency, the second page will show the associated policy, and the third page will show the associated account.
What PCF container will be used to configure this requirement?
A location ref
A location group
A location ref iterator
A location
In the Guidewire Page Configuration Framework (PCF), locations are organized into a hierarchical structure to manage navigation and user context. When a requirement involves grouping multiple related pages under a single entry point—such as a Tab in the Tab Bar or a sidebar menu—the correct container to use is a Location Group.
1. The Role of a Location Group
A Location Group is a " non-leaf " node in the PCF navigation tree. It does not display content itself; instead, it contains other locations (Pages, Popups, or even other Location Groups). In the context of the " Delinquencies " tab, the Location Group serves as the parent container that defines:
The Tab entry in the top-level navigation.
The list of child pages (Summary, Policy, Account).
The navigation menu (usually appearing on the left side of the screen) that allows users to switch between these three pages.
2. Why Other Options are Incorrect
Option A (Location Ref): This is a widget inside a container (like a Location Group or a Section) that simply points to another location. It is a " pointer, " not the organizational container itself.
Option C (Location Ref Iterator): This is used to dynamically generate a set of links or locations based on an array of data (e.g., a tab for each Open Claim). It is not the standard way to define a static three-page tab structure.
Option D (Location): This is a generic term that encompasses Pages, Popups, and Worksheets. A single " Location " (specifically a Page) can only display one set of data. It cannot manage the multiple-page navigation required by the " Delinquencies " tab.
According to the InsuranceSuite Developer Fundamentals guide, using a Location Group ensures that the user ' s context (like the selected Delinquency ID) is maintained as they click through the different sub-pages within that group. This provides a seamless UX where the application " remembers " which record is being inspected even as the view changes.
Which two types of InsuranceSuite projects does the Cloud Assurance process apply to? (Select two)
Upgrades to Guidewire Cloud Platform
New Guidewire Cloud Platform implementations
New self-managed implementations
Upgrades on self-managed implementations
New features added to existing implementations
The Cloud Assurance process is a specialized quality framework designed by Guidewire to ensure that any project destined for the Guidewire Cloud Platform (GWCP) meets the necessary standards for security, stability, and " upgrade-ability. " This process involves a series of reviews and checkpoints where Guidewire experts evaluate the customer ' s configuration and integration code.
Cloud Assurance is specifically mandatory for projects moving onto the Guidewire Cloud. This includes New Guidewire Cloud Platform implementations (Option B), where a customer is building their environment on GWCP for the first time. It also applies to Upgrades to Guidewire Cloud Platform (Option A), which occurs when a customer currently running an older version of InsuranceSuite on-premises (self-managed) chooses to migrate and upgrade their application into the cloud environment.
The process is vital because cloud-based applications share infrastructure and follow a " Continuous Delivery " model where Guidewire manages the underlying platform. To prevent one customer ' s inefficient code from impacting the shared cloud environment or blocking future platform updates, the Cloud Assurance team verifies that the project adheres to " Cloud Delivery Standards " (such as avoiding prohibited Gosu APIs or ensuring correct naming conventions).
Options C and D are incorrect because self-managed (on-premises) implementations are managed by the customer or a third-party partner; while Guidewire provides best practices, the formal Cloud Assurance gatekeeping process is not a prerequisite for these non-cloud deployments. Option E is a part of ongoing maintenance that may be subject to internal quality gates, but the " Cloud Assurance " process as defined in the training refers to the major project milestones of implementation and migration/upgrade to the cloud.
Which rule is written in the correct form for a rule which sets the claim segment and leaves the ruleset?
CONDITION: (claim: entity.Claim) return claim.Segment == nullACTION: (claim: entity.Claim, actions: gw.rules.Action) claim.Segment = TC_AUTO_LOW; actions.exit()
CONDITION: (claim: entity.Claim) if (claim.Segment == null) {claim.Segment = TC_AUTO_LOW}ACTION: actions.exit()
CONDITION: (claim: entity.Claim) return claim.Segment == nullACTION: (claim: entity.Claim, actions: gw.rules.Action) claim.Segment == TC_AUTO_LOW; actions.exitRuleset()
CONDITION: (claim: entity.Claim) return claim.Segment = TC_AUTO_LOWACTION: (claim: entity.Claim, actions: gw.rules.Action) actions.exit()
The Guidewire Rules Engine uses a declarative " Condition/Action " structure. For a rule to function correctly and follow best practices, the logic must be strictly separated between these two sections.
In Option A, the Condition is a pure Boolean expression (claim.Segment == null). In Gosu rules, the condition must return a value of true or false. If true, the engine proceeds to the Action block. The Action block in Option A correctly performs the assignment (claim.Segment = TC_AUTO_LOW) using the single equals sign, which is the assignment operator in Gosu. Crucially, it then calls actions.exit(). This is the standard method provided by the gw.rules.Action class to terminate the current ruleset execution for the object in scope.
Option C is incorrect because it uses the comparison operator (==) in the Action block instead of the assignment operator (=), meaning the segment would never actually be set. Additionally, exitRuleset() is not the standard syntax; the engine uses actions.exit(). Option D is incorrect because it attempts to perform an assignment within the Condition block, which violates the architectural purpose of the condition. Understanding this separation is vital for developers to ensure that rules are both performant and logically sound, preventing " infinite loops " or skipped logic within the claim or policy processing lifecycle.
==========
A business analyst provided a requirement to create a list of Payment Types accepted by vendors. The list will include the values Cash, Credit Card, Debit Card, Check, and EFT. It will be linked to Company Vendors. Following best practices for creating a new typelist, how can this requirement be configured in the data model?
PaymentType_Ext.ttx in the Extensions - > Typelist folder and add typecodes with the _Ext suffix to the typelist for the five payment types
PaymentType.tix in the Metadata - > Typelist folder and add typecodes with the _Ext suffix to the typelist for the five payment types
PaymentType_Ext.tti in the Extensions - > Typelist folder and add typecodes for the five payment types to the typelist
PaymentType.tti in the Metadata - > Typelist folder and add typecodes to the typelist for the five payment types
When a developer needs to introduce an entirely new set of values that does not exist in the base InsuranceSuite product, they must create a new Typelist. According to the Guidewire Data Model architecture, the proper way to define a new, customer-specific typelist is by creating a .tti (Typelist Interface) file within the Extensions folder of the configuration.
Following the naming conventions established for Guidewire Cloud and InsuranceSuite extensions, any new metadata object created by a customer should include the _Ext suffix. Therefore, the typelist should be named PaymentType_Ext.tti (Option C). This suffix clearly distinguishes the insurer ' s custom metadata from any current or future " Out of the Box " (OOTB) typelists provided by Guidewire. By placing it in the Extensions - > Typelist folder, the developer ensures that the new list is recognized by the metadata compiler and correctly integrated into the application.
It is important to understand why the other options are incorrect:
Option A: Uses a .ttx file. .ttx files are used only to extend existing base typelists (adding new codes to a list Guidewire already provides). They cannot be used to define a brand-new list.
Option B: Uses a .tix extension, which is not a valid Guidewire metadata extension, and places it in the Metadata folder, which is reserved for base product files.
Option D: Places a .tti in the Metadata folder without the required _Ext suffix, which violates the upgrade-safety principle and risks a name collision with future base product updates.
This sample code uses array expansion with dot notation and has performance issues:
What best practice is recommended to resolve the performance issues?
Rewrite the code to use a nested for loop
Break the code into multiple queries to process each array
Replace the .where clause with a .compare function
Replace the dot notation syntax with ArrayLoader syntax
In the Guidewire InsuranceSuite Developer training, specifically within the Advanced Gosu modules, the " Array Expansion Operator " (*.) is identified as a double-edged sword. While it provides a clean, declarative syntax for gathering properties from an array of objects into a new collection, it is a common source of performance degradation in complex configurations.
The technical reason for this performance hit is that every time the expansion operator is invoked, Gosu must create an intermediate, temporary collection in memory to hold the projected values. If you are expanding multiple levels (e.g., Claim.Exposures*.Contacts*.Address), the system is essentially building multiple " throwaway " lists in the application server ' s heap. For large datasets, this leads to high memory overhead and triggers frequent garbage collection cycles, which slows down the entire application.
Guidewire’s official recommendation is to rewrite the code using a nested for loop (Option A). By using explicit procedural iteration, the developer eliminates the need for these hidden intermediate collections. A nested loop allows for " streaming " the data—processing each item as it is reached rather than collecting everything into a list first. This is significantly more memory-efficient. Additionally, nested loops allow developers to integrate " early exit " logic or filters that can prevent the system from even attempting to load certain records from the database, further optimizing the transaction. Following this best practice ensures that the code is not only easier to debug using the Guidewire Profiler but also scales predictably as the insurer ' s data volume grows.
What configuration item is needed to add ABContact.Notes to PendingContactChangeView following best practices?
Add a viewEntityType for Note to PendingContactChangeView.etx
Add a viewEntityType for Note to PendingContactChangeView.eti
Set the value on the input widget to PendingContactChangeView.ABContact.Note
Create a viewEntity that includes Note
In Guidewire InsuranceSuite, View Entities are specialized data model objects used primarily to provide flattened, high-performance data for ListViews (LVs). They function similarly to a database view, joining multiple related entities into a single virtual record to minimize the number of database queries required when rendering a page.
The screenshot provided shows PendingContactChangeView.eti. As indicated by the " This is a read-only file " warning in the Studio interface, this is a Base Application File. According to the Data Model Architecture and InsuranceSuite Developer Fundamentals, developers must never modify base files directly. Direct modifications to .eti files are not upgrade-safe and would be overwritten during any future Guidewire platform update, leading to significant maintenance issues.
To extend the metadata of a base view entity, the best practice is to use an Extension File, which carries the .etx suffix. By adding a viewEntityType for Note within a PendingContactChangeView.etx file, the developer instructs the system to merge this custom field into the existing base view entity at runtime. This allows the new field to be accessible in Gosu and PCFs as if it were part of the original definition, while keeping the custom code isolated for easy upgrades.
Option C is incorrect because bypassing the View Entity by traversing through ABContact.Note directly in a PCF widget defeats the performance purpose of the View Entity and can lead to " N+1 " query performance bottlenecks. Option D is incorrect because creating a separate view entity is unnecessary and redundant when the current view entity can be easily extended. Therefore, Option A is the only verified best practice for maintaining a scalable and upgradeable Guidewire configuration.
==========
According to the training, which application in Guidewire Home is used to configure custom quality gates for pre-merge or pre-promotion stages within the GWCP pipeline? (Select Two)
Storage Access
Repository Settings
CI/CD Manager
Quality Gates
Build Promotion
Automated Builds
In the Guidewire Cloud Platform (GWCP), the management of the delivery pipeline is handled through Guidewire Home. To ensure that only code meeting the insurer ' s standards reaches higher environments, developers use two specific integrated applications.
The CI/CD Manager (Option C) is the primary hub for managing the automation pipelines. It allows developers to define the flow of code from the repository to various environments (Dev, QA, UAT). Within this application, you configure the " stages " of the build.
To enforce specific standards at these stages, the Quality Gates application (Option D) is used. Quality gates act as " toll booths " in the pipeline. They can be configured to check for specific criteria, such as a minimum percentage of GUnit test coverage, a lack of critical static analysis violations, or successful execution of performance smoke tests. If a build fails to meet the threshold set in the Quality Gates configuration, the CI/CD Manager will automatically halt the promotion, preventing " bad code " from merging into the integration branch or moving to production.
The following Gosu statement is the Action part of a validation rule:
It produces the following compilation error:
Gosu compiler: Wrong number of arguments to function rejectFieldQava.lang.String, typekey.ValidationLevel, java.lang.string, typekey.ValidationLevel, java.lang.string). Expected 5, got 3
What needs to be added to or deleted from the statement to clear the error?
The two nulls must be replaced with a typekey and a string
A left parenthesis must be delete
The word " State ' must be replaced with a DisplayKey
A right parenthesis must be added.
In Guidewire Validation Rules, the rejectField method is a critical tool for identifying specific fields that fail business logic checks. This method allows the application to highlight the exact UI widget in red and provide a specific error message to the user.
As indicated by the compiler error, the rejectField method on a Guidewire entity (like Contact or Claim) has a very specific signature that requires five parameters:
Field Name (String): The name of the property being validated (e.g., " State " ).
Validation Level (ValidationLevel): The severity of the failure (e.g., TC_LOADSAVE).
Error Message (String): The text displayed to the user.
Error Group (ValidationLevel): An optional group for categorizing the error.
Error ID (String): An optional unique identifier for the specific error.
When the compiler reports " Expected 5, got 3 " , it means the developer only provided the first three arguments. To resolve this error according to Guidewire best practices, the developer must complete the signature. While null is often passed for the final two arguments if they are not needed, the compiler requires them to be present so it can identify which version of the overloaded rejectField method is being called.
The reason Option A is the recognized answer in this context is that simply adding null, null is often insufficient if the types aren ' t explicitly recognized or if the code had " placeholder " nulls that didn ' t match the expected typekey/string types. By ensuring the 4th argument is a ValidationLevel typekey and the 5th is a String, the developer satisfies the Gosu compiler ' s strict type-checking requirements. This ensures the validation logic is correctly registered within the current bundle transaction and will properly interrupt the commit process if the condition is met.
An insurer would like to include the Law Firm Specialty as part of the Law Firm ' s name whenever the name is displayed in a single widget. Which configurations follow best practices to meet this requirement?
Modify the Law Firm entity ' s displayname property to include the law firm ' s specialty.
Implement a getter method on the entity to return a formatted name that includes the law firm ' s specialty.
Place a Text Input widget in the ListView ' s Row container for the law firm ' s specialty.
Configure the entity name for the Law Firm entity to include law firm ' s specialty.
Add a custom field to the entity to store a concatenated display string.
Use a dynamic field to generate the display string to include the law firm ' s specialty.
Place a Text Cell widget in the ListView ' s Row container for the law firm ' s specialty.
In Guidewire InsuranceSuite, the standard and most efficient way to define how an object identifies itself visually across the entire application is by using Entity Names. This is a declarative configuration found in the metadata layer (specifically within .en files).
1. The Centralized Approach (Option D)
According to the InsuranceSuite Developer Fundamentals course, whenever a requirement asks for a consistent display format across " every widget " or " anywhere the name is displayed, " developers should use Entity Name configuration. By modifying the EntityName metadata for the Law Firm entity, you can define a template that concatenates the firm ' s name with its specialty (e.g., Name + " ( " + Specialty + " ) " ).
This approach is considered a best practice for several reasons:
Consistency: It ensures that every dropdown, list view, and detail view automatically displays the firm in the correct format without needing to modify hundreds of individual PCF files.
Maintenance: If the business logic changes (e.g., they want to add the City instead of the Specialty), the change is made in exactly one place.
Performance: Entity Names are handled efficiently by the platform ' s display engine, avoiding the overhead of custom Gosu calculations every time a widget renders.
2. Why Other Options are Discouraged
Option B (Getter Method): While implementing a getter works, it requires you to manually point every single widget to this new property (e.g., LawFirm.FullDisplayName_Ext) instead of just using the standard entity reference.
Options C and G: These only solve the problem for a single List View. They do not address the requirement to show the combined information " whenever the name is displayed " in other parts of the UI, such as Detail Views or search results.
Option E (Custom Field): Storing a concatenated string in the database is a data redundancy anti-pattern. It creates extra storage overhead and requires complex logic to keep the concatenated string in sync whenever the Name or Specialty changes.
By utilizing the Entity Name configuration, developers leverage the Guidewire platform ' s built-in " stringify " logic, which is the architecturally sound way to manage entity identity in the UI.
A ListView shows related Policies for a policyholder. When a user clicks a Policy Number in a text cell, the UI should open a Popup showing details of that specific policy. The elementName property in the row iterator is currentPolicy. What is the correct syntax to open the popup?
Modify the Action property on the atomic widget to PolicyPopup.go(currentPolicy)
Modify the actionAvailable property on the atomic widget to PolicyPopup(currentPolicy)
Modify the actionAvailable property on the atomic widget to PolicyPopup.push(currentPolicy)
Modify the Action property on the atomic widget to PolicyPopup.push(currentPolicy)
In Guidewire PCF Configuration, navigating between different parts of the application requires a clear understanding of Location types and their corresponding Gosu methods. When a requirement specifically calls for a Popup, the developer must use the .push() method.
The .push() method is used for " modal " or " semi-modal " navigation. It places the new location (the Popup) on top of the current navigation stack, allowing the user to perform a task and then return exactly where they were when the popup is dismissed. In contrast, the .go() method (seen in Option A) is used for " terminal " navigation, which replaces the current location entirely; it is used for moving between main Pages or Location Groups. Using .go() for a popup would violate the intended UI flow and likely result in a runtime error or unexpected navigation behavior.
Furthermore, the logic to trigger this navigation must be placed in the Action property of the widget (typically a TextCell or Link). The actionAvailable property (Options B and C) is a Boolean expression used only to determine if the action is clickable (i.e., whether the link is active or grayed out based on permissions or data state); it cannot execute the navigation itself. By specifying PolicyPopup.push(currentPolicy) in the Action property, the developer ensures that the currentPolicy object (defined by the RowIterator ' s elementName) is passed as a parameter to the popup, allowing it to display the correct details. This follows the standard PCF Architecture for drill-down interactions.
What is a benefit of archiving?
Re-indexes the contents of the database to increase data retrieval speed.
Reduces database size by permanently removing data marked for purge.
Improves application performance by reducing the size of the database.
Reorganizes and compresses the contents of the database to conserve space.
Archiving is a vital strategy for long-term System Health and Quality within Guidewire InsuranceSuite, particularly for high-volume customers. As an application matures, the database accumulates a massive amount of " closed " or " historical " data (e.g., claims that were settled years ago or expired policies).
The primary benefit of archiving is that it improves application performance by moving this historical data out of the " active " operational database and into a secondary, long-term storage location (the Archive Store). When the size of the active database is reduced, several performance gains are realized:
Faster Queries: Database indexes become smaller and more efficient, leading to faster search and retrieval times for active claims and policies.
Efficient Maintenance: Operations such as backups, index rebuilding, and database consistency checks run significantly faster on a leaner dataset.
Reduced Resource Contention: With fewer rows for the database engine to manage, there is less strain on memory (buffer cache) and CPU.
It is important to distinguish archiving from Purging (Option B). Archiving preserves the data so it can be retrieved later if needed, whereas purging permanently deletes it. Archiving also differs from simple compression (Option D) or re-indexing (Option A), as it physically changes the location of the data to keep the primary production environment optimized for current business operations. This is a core concept in the Developing in the Cloud curriculum, where maintaining a performant SaaS environment is essential.
Which statement is correct and recommended for writing GUnit tests?
Use the init() method to set up objects shared by all tests in a test class
Handle any exceptions thrown by test methods in the finally() method
Clear all instance variables of completed test in the tearDown() method
Use fluent assertions over conventional assert statements
GUnit is the Guidewire-specific testing framework based on JUnit, used to verify that Gosu classes and business rules function correctly. Efficient test writing requires a clear understanding of the test lifecycle, specifically how to manage resources and test data.
According to the Guidewire " System Health & Quality " training, the init() method (or equivalent @BeforeClass setup logic in newer versions) is the recommended location for initializing resources that are expensive to create or are shared across all test methods within a specific class (Option A). By setting up shared objects—such as mock configuration data or static helper instances—in the init() phase, the developer ensures that the test suite runs faster and avoids redundant processing for every individual test case.
While Option C (clearing variables in tearDown()) is a valid memory management practice in some long-running Java environments, the primary focus of Guidewire GUnit training regarding the test lifecycle emphasizes the setup phase to ensure a consistent " known state " before tests execute. Option B is incorrect because GUnit is designed to catch and report exceptions as test failures; wrapping them in a manual finally block would obscure the failure and bypass the framework ' s reporting capabilities. Option D mentions fluent assertions; while modern and readable, conventional assertTrue, assertEquals, and assertNotNull remain the standard recommended assertion types in the core Guidewire Developer training curriculum.
An insurer has a number of employees who are working remotely from different locations. Displaying the employee ' s name in a drop-down list in the user interface must include the employee ' s location along with it. For example: John Smith London, UK; William Andy Dublin, Ireland; Eric Andy BC, Canada. How can a developer satisfy this requirement following best practices?
Define an entity name that concatenates the name fields and work locations.
Create a setter property in a Name enhancement class.
Create a displaykey that concatenates the name fields and work locations.
Enable Post On Change for name fields to modify how the name is displayed when referenced.
In the Guidewire InsuranceSuite data model, an entity ' s " Display Name " is the primary string representation used by the system whenever that entity is shown in the user interface—most notably in dropdowns (RangeInputs), search results, and labels. This is controlled via Entity Name Configuration (typically .en files or specialized Gosu classes).
According to the Data Model Architecture and InsuranceSuite Developer Fundamentals, when business requirements demand that users distinguish between entities with similar names (like " William Andy " ), the best practice is to modify the entity ' s name definition to include differentiating data, such as a location or an ID. By defining an entity name that concatenates the employee ' s name fields with their work location, the developer creates a globally consistent identity for the object. This ensures that every time the " Employee " entity is selected from a dropdown, the user sees both the name and the location, reducing the risk of administrative error.
Using a Displaykey (Option C) is incorrect because displaykeys are meant for localized static text, not for dynamic data-driven identity logic. Post On Change (Option D) is a UI-level mechanism used to trigger server-side logic when a field value changes; it does not govern how an entity is fundamentally represented as a string. By modifying the entity name directly, the developer follows the " DRY " (Don ' t Repeat Yourself) principle, as the concatenation logic is written once at the data model level and automatically inherited by every PCF that references the entity.
According to best practices, which two requirements should be implemented using a Pre-Update Rule? (Select two)
Update the address details on all currently unissued checks associated with a Contact when that Contact ' s address is changed.
Initiate an asynchronous background workflow process after a Claim has been committed to the database.
Create a transactional audit entry that captures both the prior value and the new value immediately before committing a change to a specific field.
Automatically determine the optimal adjuster to handle a newly reported loss.
Pre-Update Rules occupy a specific place in the Guidewire Rules Engine lifecycle. They execute after a user clicks " Update " but before the data is actually committed to the database. This makes them the ideal location for logic that needs to perform " cross-entity " synchronization or final data adjustments within the same transaction (the " Bundle " ).
Option A is a classic Pre-Update use case. If a developer needs to ensure that a change to one entity (a Contact) propagates to related entities (unissued Checks) in a single atomic transaction, the Pre-Update rule is the correct place. Because the system is already in the process of saving, any changes made to the checks in this rule will be included in the same database commit, ensuring data consistency.
Option C is another best practice. Since the Pre-Update rule runs while the system still has access to the " original " values of the fields in the database (via the bean ' s ChangedFields or OriginalValue properties), it is the last opportunity to generate an audit log or " History " entry that compares the old data with the new data before the old data is overwritten.
In contrast, Option B should be handled in a Post-Setup or Event Fired rule to ensure the workflow only starts if the database commit actually succeeds. Option D (Assignment) should be handled by the Assignment Engine, which has its own dedicated rule sets. Using Pre-Update rules for these tasks would violate the architectural separation of concerns and could lead to performance issues or data corruption.
In the Extensions folder, there is a typelist file named BusinessType.ttx containing three typecodes: Insurer, Broker, and Agency. The business analysts have requested an additional typecode: Reinsurer. How should this typecode be added?
Create a reinsurer_Ext typecode in BusinessType.ttx
Create a reinsurer typecode in BusinessType.ttx
Create a .ttx extension file and add a reinsurer_Ext typecode to it
Create a Reinsurer_Ext typelist with a reinsurer typecode
When managing Typelists (Guidewire’s version of enumerations) in a Cloud-compliant environment, there is a distinct difference between adding codes to an existing typelist and creating an entirely new one.
According to the InsuranceSuite Developer Fundamentals curriculum, if you are adding a new code to an existing typelist that is already an extension (indicated by the .ttx file extension), you simply add the new code to that existing .ttx file.
One of the most common points of confusion is the use of the _Ext suffix. While new entities and new typelists require the _Ext suffix to follow Cloud Delivery Standards, individual typecodes (the values within the list) generally do not require the suffix unless the specific project guidelines demand it for every single metadata element. In standard Guidewire practice, a typecode named reinsurer (Option B) is sufficient and cleaner.
Option C is incorrect because you should not create multiple .ttx files for the same typelist; you should consolidate extensions into the existing one. Option D is incorrect because it suggests creating a whole new list rather than modifying the existing one. Option A is less ideal because adding _Ext to individual codes within a list is not a mandatory platform requirement and can make logic like TC_REINSURER_EXT cumbersome to write in Gosu.
Which log message follows logging best practices in production?
[Method=ClaimProcess#createClaim][Claim#PublicID=00001234] was created.
The personal auto claim was created for Jane Smith with driver ' s license AD45678.
The claim was created successfully for: Ray Newton, email: rnewton@foo.com, vehicle: white 2022 Toyota Camry.
ERROR! The claim was not created because the database connection was lost.
In the Guidewire InsuranceSuite Developer Fundamentals course, logging best practices are strictly tied to two primary concerns: Security (PII protection) and Troubleshooting Efficiency.
Option A is the correct choice because it provides contextual, structured data without revealing sensitive information. It includes the method name (createClaim) and the unique database identifier (PublicID). Using the PublicID is the gold standard in Guidewire development because it allows developers to look up the exact record in the database or the UI without logging Personally Identifiable Information (PII). This ensures compliance with data privacy regulations like GDPR and CCPA.
In contrast, Options B and C are significant security violations. Option B logs a name and a driver ' s license number, while Option C logs a name, email address, and vehicle details. These are all considered PII and should never appear in clear text in application logs. Option D is poor practice because it is " noisy " and lacks specific context (like a claim number or timestamp) that would help a developer determine which attempt failed, and the use of " ERROR! " with an exclamation mark is non-standard for system logs. Structured logging, as seen in Option A, allows automated tools like Datadog to parse the logs more effectively.
A developer has finished a bug fix. Which step is needed before merging to follow best practices?
Recreate the development branch
Merge user story branch into parent branch
Clone the parent branch
Integrate parent branch to defect branch
In the Guidewire Cloud (GWCP) development lifecycle, managing code through Source Control Management (SCM) requires a disciplined branching strategy. When a developer completes a bug fix on a " defect " or " feature " branch, the environment is often dynamic, meaning other developers may have merged changes into the Parent Branch (such as develop or master) while the fix was being worked on.
The critical best practice before attempting to merge the fix back into the main codebase is to Integrate the parent branch into the defect branch (Option D). This is typically achieved through a git merge or a git rebase operation. The purpose of this step is twofold:
Conflict Resolution: It allows the developer to identify and resolve any code conflicts locally on their branch where they have full context of their changes.
Validation: It ensures that the bug fix is compatible with the most recent version of the application. By integrating the parent branch first, the developer can run GUnit tests and local builds against the combined code, ensuring that their merge will not " break the build " for the rest of the team.
Merging a branch that is " out of sync " with its parent directly into the main repository (Option B) often leads to failed builds in TeamCity and disrupts the CI/CD pipeline. Options A and C are administrative or redundant tasks that do not address the logical synchronization of the code. Adhering to this " pull-before-push " integration pattern is a cornerstone of the InsuranceSuite Developer curriculum for cloud-native delivery.
Which GUnit base class is used for tests that involve Gosu queries in PolicyCenter?
PCUnitTestClassBase
SuiteDBTestClassBase
PCServerTestClassBase
GUnitTestClassBase
When developing automated tests in Guidewire PolicyCenter, choosing the correct GUnit Base Class is essential for determining the scope and capabilities of the test.
For tests that involve Gosu Queries, the test must have access to the application’s persistence layer and the database environment. PCServerTestClassBase is the standard base class used for these " Integration Tests. " When a test class extends PCServerTestClassBase, the GUnit runner initializes a full server environment, including the database schema and the Bundle management system. This allows the test to create data, commit it to a temporary transaction, and then execute Gosu queries against the database to verify the results.
In contrast, PCUnitTestClassBase (Option A) is intended for " Pure Unit Tests. " These tests are faster because they do not start the server or connect to the database. They are used for testing isolated logic or utility methods that do not rely on entity persistence. If a developer attempts to execute a query within a class extending PCUnitTestClassBase, the test will likely fail with a " No active bundle " or " Database not available " error. GUnitTestClassBase (Option D) is a generic base class and often lacks the PolicyCenter-specific configurations provided by the PC prefixed classes. Therefore, for any scenario requiring database interaction—which is fundamental to verifying Gosu queries—PCServerTestClassBase is the required architectural choice.
Succeed Insurance has information that they want to display on multiple pages with the same layout. Which PCF container types can be used to meet this requirement? (Choose 3)
DetailView
Popup
LocationGroup
ListView
InputSet
Worksheet
One of the primary goals of PCF Configuration is modularity and reuse. Guidewire provides specific Container Widgets that allow developers to define a layout once and reference it in multiple locations throughout the application.
DetailView (DV): This is the standard container for displaying field-value pairs, typically organized in columns. A DV can be defined as a standalone PCF file and then referenced on multiple pages (like a Policy File screen and a Claim Summary screen) using a DetailViewRef.
ListView (LV): This container is used for tabular data or grids. Similar to DVs, LVs are often created as separate files so that the same table structure (with the same columns, sorting, and filtering) can be reused across different parts of the suite.
InputSet: This is a more granular container used specifically within DetailViews. An InputSet allows a developer to group a set of related widgets (like an address block or a set of contact fields). By using an InputSetRef, a developer can ensure that the " Address Layout " is identical on every screen that requires it, drastically reducing maintenance time.
In contrast, Popups, LocationGroups, and Worksheets are classified as Locations, not containers. Locations define where a user is in the application (the URL or navigation state), whereas Containers (DV, LV, InputSet) define how the data is laid out inside those locations. Selecting these three containers allows for a " DRY " (Don ' t Repeat Yourself) development approach, which is a key best practice in InsuranceSuite Developer Fundamentals.
This code sample performs poorly due to the use of dot notation with multiple array expansions: var lineItems = Claim.Exposures*.Transactions*.LineItems. What is the recommended best practice to improve the performance of this code?
Rewrite the code with a nested for loop to retrieve the results
Break the code into multiple gosu queries to retrieve the results for each array
Write a query that fetches the addresses into a collection then uses where() to filter the results
Replace the dot notation syntax in the code with ArrayLoader syntax
In Guidewire InsuranceSuite, the expansion operator (*) is a powerful Gosu feature used to flatten arrays and access properties across a collection. However, as noted in the Advanced Gosu and System Health & Quality curriculum, using multiple expansions in a single statement—especially across deep entity hierarchies like Claim - > Exposures - > Transactions - > LineItems—is a significant performance anti-pattern.
When this dot-notation traversal is executed, the application performs " lazy loading. " For every exposure, it fetches all transactions, and for every transaction, it fetches all line items. This creates the N+1 query problem, where the number of database roundtrips grows exponentially with the data volume. Furthermore, all these entities are loaded into the application server’s memory and added to the current Bundle. This leads to " Bundle Bloat, " which increases memory pressure, slows down garbage collection, and can significantly degrade the performance of the specific web request or batch job.
The recommended best practice to resolve this is to use the ArrayLoader syntax (Option D). The ArrayLoader API is specifically designed to perform " eager loading. " It allows the developer to specify related arrays that should be loaded in bulk using optimized SQL joins or batch fetches. By using ArrayLoader, the developer can retrieve the necessary nested data in a single or highly reduced number of database operations, ensuring that the data is ready in memory before the logic attempts to access it. This eliminates the overhead of repeated lazy-loading calls and is the standard architectural solution for improving the performance of deep entity graph traversals in Guidewire.
Which of the following are true about Guidewire Inspections?
Inspections must be triggered manually using the Analyze toolbar option.
There are no inspections provided with the out of the box version of the product.
Developers can create custom inspections profile in Studio to include any customer specific standards that are to be enforced.
Inspections are run at the command line by running the gwb inspect.
Inspections run automatically in the Gosu editor as a background task.
Guidewire Inspections are a form of static code analysis integrated directly into Guidewire Studio (which is built on the IntelliJ IDEA platform). These inspections are designed to help developers identify code smells, performance bottlenecks, and violations of Gosu Coding Standards in real-time.
The most important operational fact about inspections (Option E) is that they run automatically as a background task within the Gosu editor. As a developer types code, the IDE continuously analyzes the syntax and logic. If a violation is found—such as an unused variable, a potentially null reference, or an inefficient query—the editor provides immediate visual feedback through highlights (like yellow warnings or red errors) and " gutter " icons. This allows for " Shift-Left " quality management, where issues are corrected the moment they are created, rather than during a later build or code review phase.
While Option C is technically true (profiles can be customized), Option E is the primary characteristic of the tool’s behavior as described in the System Health and Quality training. Option B is false because Guidewire provides hundreds of out-of-the-box inspections specifically tailored for InsuranceSuite (e.g., checking for PII in logs or inefficient bundle usage). Option D is incorrect as the primary mode of interaction is the IDE, not a command-line tool. By leveraging these automatic background inspections, developers maintain a high level of code quality and adhere to the SurePath methodology throughout the development lifecycle.
A developer is creating an enhancement class for the entity AuditMethod_Ext in PolicyCenter for an insurer, Succeed Insurance. Which package structure of the gosu class and function name follows best practice?
si.pc.enhancements.entity, determineAuditType()
si.pc.enhancements.entity, determineAuditType_Ext()
gw.job.audit, determineAuditType()
gw.entity.enhancement, determineAuditType_Ext()
Guidewire emphasizes a strict naming and packaging convention for custom Gosu classes and enhancements to ensure code clarity and to prevent " namespace collisions " during platform upgrades. For a customer like " Succeed Insurance, " the best practice is to use a unique prefix for the package structure, typically derived from the company ' s initials and the specific application.
In this case, " si.pc " (Succeed Insurance PolicyCenter) is the appropriate starting point for the package. Placing enhancements in a sub-package like " enhancements.entity " (Option B) logically organizes the code by its function, separating entity logic from other business rules or integration classes. This structure ensures that developers can easily locate custom logic added to both base entities and custom entities like AuditMethod_Ext.
Regarding the function name, Guidewire best practices for enhancements dictate that custom methods added to an entity should include the _Ext suffix (e.g., determineAuditType_Ext()). This is crucial because if Guidewire later releases a product update that adds a method with the same name (determineAuditType) to the base entity, the customer ' s version will not conflict with the base version.
Options C and D use the gw namespace, which is strictly reserved for Guidewire ' s internal " Out of the Box " code. Using the gw package for custom code can lead to severe compilation errors or unexpected behavior during upgrades, as the Guidewire platform assumes total ownership of that namespace. Therefore, utilizing the insurer ' s unique package prefix combined with the _Ext suffix on the method is the only approach that aligns with Guidewire ' s certification standards and long-term maintenance requirements.
An insurer ran the DBCC checks against a copy of their production database and found three errors with high counts in the category Data update and reconciliation. What are two best practices for resolving the errors? (Select two)
Analyze the errors to determine the root cause and correct the code responsible for the errors
Promote the code to production and run the DBCCs again
Wait to see if error counts increase; if they increase by more than 10%, fix the errors
Identify any bad data and write a SQL script to correct the data; run the script immediately
Search the Knowledge Base on the Guidewire Community for solutions to the problems found
Database Consistency Checks (DBCCs) are the " canary in the coal mine " for data integrity. When high error counts appear in the Data update and reconciliation category, it usually implies that recent configuration changes (Gosu rules, enhancements, or batch processes) are generating data that violates the underlying metadata constraints.
The first best practice is Root Cause Analysis (Option A). Simply fixing the data in the database is a " band-aid " solution; if the underlying Gosu code that created the bad data is not fixed, the errors will immediately return. Developers must trace the lifecycle of the affected entities to find where the logic is failing.
The second best practice is to leverage the Guidewire Community Knowledge Base (Option E). Many DBCC errors, especially those following a version upgrade or a major configuration change, have been encountered by other insurers. The Knowledge Base often provides specific SQL patterns or Gosu fixes tailored to known platform behaviors.
Why other options are incorrect:
Option B is dangerous; never promote code known to cause database inconsistencies to a production environment.
Option C is irresponsible; data corruption should be addressed as soon as it is detected.
Option D is a partial fix, but " running the script immediately " without a code fix or support review (as discussed in Question 61) is high-risk and violates Cloud Assurance standards.
A developer has completed a configuration change in an InsuranceSuite application on their local environment. According to the development lifecycle described in the training, which initial steps are required to move this change towards testing and deployment? Select Two
Deploy the application directly to a pre-production planet.
Schedule automated builds in TeamCity
Push the code changes to the remote source code repository in Bitbucket.
Trigger a TeamCity build via Guidewire Home if it has not already begun automatically.
Create a new physical star system in Guidewire Home.
Configure pre-merge quality gates in Bitbucket.
The Guidewire Cloud Platform (GWCP) development lifecycle is built around a modern CI/CD (Continuous Integration/Continuous Delivery) pipeline. This process moves code from a developer ' s local workstation through various " Planets " (environments) using integrated tools like Bitbucket, TeamCity, and Guidewire Home.
The first step in moving a local change toward production is committing and pushing the code to Bitbucket (Option C). Bitbucket serves as the centralized Git-based source code repository. This action triggers the " Build " phase of the lifecycle. Once the code is in Bitbucket, the next step involves the CI server, TeamCity. TeamCity is responsible for compiling the Gosu code, running automated GUnit tests, and performing static code analysis (Quality Gates). While TeamCity is often configured to trigger automatically upon a push, a developer may need to manually trigger or monitor the build via Guidewire Home (Option D) if they need immediate feedback or if the automation is set to a specific schedule.
Options such as " Deploying directly to pre-production " (Option A) are impossible in the GWCP model, as code must first pass through the " Dev " planet and satisfy quality gates before being promoted. " Scheduling automated builds " (Option B) is an administrative task, not an initial step for a developer ' s specific change. Finally, " creating a star system " (Option E) refers to the infrastructure setup usually handled by Guidewire Cloud operations, not a part of the standard code-change lifecycle. Following the C and D sequence ensures that the code is properly versioned, tested, and validated before it ever reaches a runtime environment.
Which rule is written in the correct form for a rule which sets the claim segment and leaves the ruleset?
A)
B)
C)
D)
Option A
Option B
Option C
Option D
In the Guidewire Gosu Rules engine, managing the logic flow within a ruleset is a fundamental skill for any developer. A ruleset is essentially a collection of " If-Then " statements that the application evaluates sequentially. When a business requirement dictates that an action should be taken—such as categorizing a claim by setting its Segment property—and then no further rules in that specific set should be processed, the developer must use the actions utility object.
The correct method to terminate the current ruleset execution is actions.exit(). As shown in Option A, the logic must be ordered procedurally: first, the state of the entity is modified (claim.Segment = TC_AUTO_LOW), and then the exit() command is called to stop the engine from evaluating subsequent rules. Using the typecode constant (TC_AUTO_LOW) is the best practice for assignment, as it provides compile-time checking, whereas using a hardcoded string (Option B) is error-prone and discouraged in Guidewire development.
Furthermore, the placement of the exit command is critical. In Option C, the actions.exit() is placed before the assignment; this results in the rule terminating immediately, and the claim segment is never actually updated. Option D is incorrect because actions.stop() is not the standard method for exiting a ruleset in the Gosu rule architecture. By following the pattern in Option A, developers ensure that once a " mutually exclusive " business condition is met and handled, the system efficiently moves to the next ruleset or stage in the claim lifecycle, preventing redundant processing or accidental overwrites of the segment value by lower-priority rules.
A query is known to return 500,000 rows. Which two are recommended to process all 500,000 rows efficiently? (Select two)
Use Google Iterables.
Use setPageSize().
Use a batch process for large result sets.
Chunk the results into page sets.
Sort the result by entity name.
Processing extremely large datasets—such as 500,000 rows—presents significant challenges for memory management and transaction stability in Guidewire. To handle this efficiently, developers must use the Gosu Query API correctly and choose the right execution context.
The first best practice is the use of setPageSize() (Option B). When a query is executed, by default, the system might attempt to fetch a large number of rows into the application server ' s memory. By calling setPageSize(50) or setPageSize(100) on the query object, the developer instructs the database driver to fetch only a small " page " of records at a time. This keeps the memory footprint of the Gosu bundle low and prevents OutOfMemory errors, even though the developer can still iterate through the entire 500,000-row result set as if it were a single collection.
The second best practice is to move such a heavy operation into a Batch Process (Option C). Executing a 500,000-row loop within a UI request or a standard rule would likely cause a web server timeout or block other threads. A Batch Process runs in the background, has its own dedicated work queue, and can be configured to " checkpoint " its progress. This means if the server restarts, the batch process can potentially resume where it left off.
Options like sorting (Option E) can actually hinder performance on large sets if the database index is not optimized for that sort. " Chunking " (Option D) is conceptually similar to paging, but setPageSize() is the specific, built-in method provided by the Guidewire Query API to achieve this.
A developer wants to manually trigger a build chain in TeamCity to generate a deployable Docker image for a specific commit. According to the process described in the training, what are the key initial steps to achieve this? (Choose 2)
Update the application ' s configuration resources in Lifecycle Manager.
Access the Automated Builds app in Guidewire Home.
Access TeamCity via Guidewire Home.
Configure a new monitor in Datadog.
Select the desired build configuration and trigger the build.
In the Guidewire Cloud (GWCP) ecosystem, the CI/CD pipeline is centrally managed through Guidewire Home, which serves as the primary portal for developers to access cloud-native tools. To generate a deployable Docker image, a developer must interact with the build server, which is TeamCity. The first critical step is navigating to TeamCity via the link or tile provided in Guidewire Home (often labeled under " Automated Builds " ). This ensures the developer is authenticated within the secure Guidewire Cloud environment.
Once inside TeamCity, the developer must locate the specific Build Configuration associated with the project and branch they intend to build. Because a Docker image is specific to a commit, the developer must ensure they are triggering the correct " build chain. " A build chain in Guidewire Cloud typically involves several stages, including compiling the Gosu code, running unit tests (GUnit), and finally packaging the application into a Docker container. Manually triggering the build (Step E) involves clicking the " Run " button, often after specifying a specific branch or commit hash to ensure the resulting image contains the correct code changes.
This process is distinct from Lifecycle Manager (LCM), which is used for managing environment-specific configurations (like database settings or API keys) and promoting already-built images to specific " Planets " (Dev, Pre-Prod, etc.). Datadog (Option D) is used for post-deployment observability and would not be used to trigger an image build. Therefore, the combination of accessing the correct tool and manually initiating the build configuration is the verified procedure for cloud developers.
A developer is creating a new entity for auditors that contains a field for the license. Which configuration of the file name and the field name fulfills the requirement and follows best practices?
Auditor_Ext.eti, License_Ext
Auditor.etx, License_Ext
Auditor.eti, License_Ext
Auditor_Ext.eti, License
Auditor_Ext.etx, License
The Guidewire Data Model Architecture follows strict naming and file-type conventions to ensure the system is maintainable and cloud-ready. When creating a brand-new entity (as opposed to extending an existing one), developers must use an Entity Internal (.eti) file located in the extensions directory.
According to the Guidewire Cloud Standards, custom entities should be named with the _Ext suffix (e.g., Auditor_Ext.eti). This clearly identifies the entity as a customer-specific addition to the data model, distinguishing it from out-of-the-box (OOTB) entities. This is the first half of a valid configuration.
The second half involves naming the fields (columns) within that new entity. There is a common point of confusion here: while fields added to base application entities (like Claim or User) must have the _Ext suffix to prevent naming collisions during upgrades, fields added to a custom-created entity (like Auditor_Ext) do not require the _Ext suffix. This is because the entity itself is already in a custom " namespace " created by the _Ext suffix on the filename. Adding _Ext to every field inside a custom entity is redundant and makes the code less readable. Therefore, License is the correct name for the field.
Options B and E are incorrect because .etx files are for extending existing entities, not for defining new ones. Option C is less ideal because it lacks the standard _Ext suffix on the entity filename, which is a requirement for modern InsuranceSuite development to ensure clear separation of concerns.
The business wants to create a new popup in BillingCenter that displays a single customer invoicing inquiry. The popup will have the inquiry date, inquiry contact, and the description of the inquiry. Which configurations follow best practices to make this page editable? (Choose Two)
Add a Boolean variable named editable_Ext to the Variables tab and set its initial value to true.
Set the Page ' s startInEditMode property to true if it should initially be editable.
Set the Detail View panel ' s readOnly property to false.
Be sure that the ListView container widget has its editable property set to true.
Ensure that Input widgets are used for fields requiring data entry, and that their editable property is set to true.
Add an InputSet widget within the detail view and set its canEdit property to true.
In Guidewire PCF configuration, making a page or popup editable requires a combination of page-level properties and widget-level settings. According to the PCF Architecture and Dynamic UI lessons, the startInEditMode property (Option B) is a critical page-level setting. When a popup is intended to collect data immediately upon opening—such as a new inquiry—setting startInEditMode to true ensures the user doesn ' t have to manually click an " Edit " button to begin typing. This property governs the initial state of the UI container.
At the widget level, individual fields must be capable of receiving input. In Guidewire, Input widgets (such as TextInput, DateInput, or RangeInput) are used to display and modify data. For these widgets to allow user interaction, their editable property must be set to true (Option E). While the parent container (like a Detail View) often has an editable property that can be bound to a variable or expression, the individual widgets must also be configured to allow data entry to fulfill the business requirement of an " editable " inquiry page.
Options like adding a custom boolean variable (Option A) are unnecessary because Guidewire provides built-in state management. readOnly (Option C) is generally an expression-based property used to lock fields under specific conditions, rather than a primary way to enable editing. InputSet (Option F) does not have a canEdit property that controls the entire set in that specific manner; instead, editability is typically inherited or controlled via the editable property on the container or the inputs themselves. Following these best practices ensures that the BillingCenter UI remains consistent with Guidewire ' s declarative UI model.
Which statement is true about the Project Release branch for an implementation using Git?
It stores the current production code and is updated whenever the production system is updated
It is used by the implementation team to develop code for a specific release
It is used by the implementation team to stabilize the code for a specific release
It contains product releases from Guidewire
In the Guidewire Cloud Platform (GWCP) development lifecycle, effective source control management is essential for maintaining a stable path to production. Guidewire recommends a specific branching strategy tailored for InsuranceSuite implementations using Git (typically hosted in Bitbucket).
The Project Release branch (often named release/*) serves a very specific purpose: stabilization. According to the " Developing with Guidewire Cloud " course, the standard workflow involves developers working on feature branches and merging them into a develop or integration branch. Once a set of features is deemed complete for a specific deployment cycle, a Release branch is created.
The primary goal of this branch is to isolate the release-ready code from the ongoing, potentially volatile development occurring in the main integration branch. On the Release branch, the team performs final GUnit testing, regression testing, and bug fixes specifically identified during the QA phase for that version. No new features should be introduced here. This isolation ensures that the " Candidate for Production " is stable and that any fixes applied are strictly for high-priority issues.
Option A refers to the master or main branch, which holds the current production state. Option B describes the function of feature or development branches. Option D is incorrect because product releases from Guidewire are provided as base code updates, which are typically merged into the customer ' s repository rather than existing as a " Project Release " branch. By focusing on stabilization, the Release branch minimizes the risk of introducing " noise " or untested features into the final production deployment.
You need to retrieve Claim entity instances created after a specific date. Which methods ensure that the filtering is performed in the database for optimal performance?
Retrieve all claims and filter the collection in Gosu memory using the where ( ) method.
Retrieve claims using a query and then filter the results collection using the filterwhere method.
Use the filter () .where () methods on the query object to filter the records by their creation date.
Use the compare method on the query object to filter claim records by their creation date.
Use the where method on the query object to filter claim records by their creation date.
In Guidewire InsuranceSuite development, performance is heavily dependent on how data is retrieved from the relational database. When dealing with potentially large datasets, such as the Claim entity, it is critical to perform filtering at the database level (via SQL WHERE clauses) rather than at the application level (in Gosu memory).
The Guidewire Query API provides the primary mechanism for constructing these database-level filters. When a developer creates a query object (e.g., gw.api.database.Query.make(Claim)), they must use specific methods to define the criteria that will be translated into a SQL query. The compare() method is the standard approach for adding these constraints. It allows the developer to specify the property (such as CreateTime), the comparison operator (such as GreaterThan), and the value (the specific date). Because the compare() method is called directly on the Query object before the query is executed, the filtering happens within the database engine.
In contrast, methods like where() or filter() used on a collection or a QueryBuilder result (Option A, C, and E) often trigger the execution of the query first, fetching all records into the Gosu application server ' s memory, and then discarding the ones that don ' t match. This " in-memory filtering " leads to severe performance degradation, high memory consumption, and potential " Out of Memory " errors. Option D correctly utilizes the Query API ' s ability to refine the result set at the source. Understanding the lifecycle of a query—from construction using compare() to execution—is a fundamental skill for any Guidewire developer to ensure the application remains scalable and responsive under high data volumes.
As a developer for Succeed Insurance, you have been given a requirement to add the following options to a ContactManager typelist BusinessType that was provided with the product:
Auto Repair Shop
Home Inspector
Collection Agency
Following best practices, which of the following options correctly adds these options to the existing typelist?
Adding the following options to the existing BusinessType.ttx file:Code: auto_repair_shop, Code: home_inspector, Code: collection_agency
Adding the following options to the BusinessType.tti file:Code: auto_repair_shop_Ext, Code: home_inspector_Ext, Code: collection_agency_Ext
Adding the following options to a new BusinessType_Ext.tti file:Code: auto_repair_shop, Code: home_inspector, Code: collection_agency
Adding the following options to a new BusinessType_Ext.ttx file:Code: auto_repair_shop, Code: home_inspector, Code: collection_agency
In Guidewire InsuranceSuite, typelists are defined using two types of metadata files: .tti (Typelist Internal) and .ttx (Typelist Extension). The .tti files contain the base out-of-the-box (OOTB) codes provided by Guidewire and should never be modified by a developer. Direct modifications to base files are not upgrade-safe and violate the core architectural principles of the platform.
To add custom codes to an existing typelist, the best practice is to use the extension file associated with that typelist, which carries the .ttx suffix. If the file BusinessType.ttx already exists in the configuration module, the developer simply adds the new typecode elements to it. If it does not exist, the developer creates it with the same name as the base typelist. At runtime, the Guidewire platform performs a " metadata merge, " combining the base codes from the .tti with the custom codes from the .ttx.
Option D is incorrect because the extension file should not have _Ext appended to the filename itself; it must match the name of the base typelist exactly to be recognized by the system. Option C is incorrect because .tti files are reserved for Guidewire ' s internal use. By following the pattern in Option A, the developer ensures that the new options (Auto Repair Shop, Home Inspector, and Collection Agency) are seamlessly integrated into the application while maintaining a clean, upgradeable configuration. This is a fundamental concept in Data Model Configuration and metadata management.
TESTED 30 May 2026

