75% found this document useful (4 votes)
9K views776 pages

Config Guide

Uploaded by

davide543
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
75% found this document useful (4 votes)
9K views776 pages

Config Guide

Uploaded by

davide543
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 776

Guidewire PolicyCenter™

Configuration Guide
Release 9.0.6
©2018 Guidewire Software, Inc.
For information about Guidewire trademarks, visit http://guidewire.com/legal-notices.
Guidewire Proprietary & Confidential — DO NOT DISTRIBUTE

Product Name: Guidewire PolicyCenter


Product Release: 9.0.6
Document Name: Configuration Guide
Document Revision: 27-November-2018
Guidewire PolicyCenter 9.0.6 Configuration Guide

Contents

About PolicyCenter documentation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .29


Conventions in this document . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .30
Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .30

Part 1
PolicyCenter configuration basics
1 Overview of PolicyCenter configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .35
What you can configure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .35
Guidewire internal methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .36
How you configure PolicyCenter. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .36
Types of application environments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .36
The development environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .37
The production environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .37
Deploying configuration files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .37
Deploying changes in a development environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .37
Deploying changes to the production server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .38
Regenerating the data and security dictionaries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .38
Generating the data and security dictionaries in HTML format. . . . . . . . . . . . . . . . . . . . . . . . . . .39
Generating the data and security dictionaries in XML format . . . . . . . . . . . . . . . . . . . . . . . . . . . .39
Generating the security dictionary from PolicyCenter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .40
Generating the dictionaries as you generate a .war or .ear file. . . . . . . . . . . . . . . . . . . . . . . . . . . .40
Aspects of regenerating the Security Dictionary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .40
Managing configuration changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .40

2 Application configuration parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .41


Working with configuration parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .41
Adding custom parameters to PolicyCenter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .41
Configuration parameter behaviors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .41
View configuration parameters on a running server. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .43
Access configuration parameters in Gosu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .43
Adding custom MIME types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .43
Account parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .44
AccountsWithdrawnAfterMonths . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .44
Archive parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .44
ArchiveDaysRetrievedBeforeArchive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .44
ArchiveDefaultRecheckDays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .44
ArchiveEnabled . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .45
ArchivePolicyTermDays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .45
ArchiveRecentJobCompletionDays. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .45
DomainGraphKnownUnreachableTables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .45
Assignment parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .45
AssignmentQueuesEnabled . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .45
Batch process parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .46
BatchProcessHistoryPurgeDaysOld . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .46
CleanupETLPurgeRoot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .46
Business calendar parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .46
BusinessDayDemarcation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .46
3
Guidewire PolicyCenter 9.0.6 Configuration Guide

BusinessDayEnd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .46
BusinessDayStart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .46
BusinessWeekEnd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .46
HolidayList (obsolete). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .46
IsFridayBusinessDay . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .47
IsMondayBusinessDay . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .47
IsSaturdayBusinessDay . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .47
IsSundayBusinessDay . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .47
IsThursdayBusinessDay . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .47
IsTuesdayBusinessDay . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .47
IsWednesdayBusinessDay . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .47
MaxAllowedDate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .47
MinAllowedDate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .48
Business rules parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .48
BizRulesCacheStaleTimeMinutes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .48
BizRulesDeploymentEnabled. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .48
BizRulesDeploymentId . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .48
BizRulesImportBootstrapRules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .49
BizRulesLeafSearchNumOfHops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .49
BulkLoadRuleHeadByIdCacheEnabled. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .49
PreloadBizRulesBeansCacheEnabled . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .50
Cache parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .50
ExchangeRatesCacheRefreshIntervalSecs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .50
GlobalCacheActiveTimeMinutes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .50
GlobalCacheDetailedStats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .51
GlobalCacheReapingTimeMinutes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .51
GlobalCacheSizeMegabytes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .51
GlobalCacheSizePercent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .51
GlobalCacheStaleTimeMinutes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .51
GlobalCacheStatsRetentionPeriodDays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .51
GlobalCacheStatsWindowMinutes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .52
GroupCacheRefreshIntervalSecs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .52
ScriptParametersRefreshIntervalSecs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .52
TreeViewRefresh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .52
ZoneCacheRefreshIntervalSecs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .52
Clustering parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .52
ClusteringEnabled . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .53
ClusterMemberPurgeDaysOld . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .53
ClusteringProductModelUpdateMaxRetries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .53
ClusteringProductModelUpdateRetryTimeout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .54
ClusteringProductModelUpdateSleepTimeCeiling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .54
ConfigVerificationEnabled . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .55
PDFMergeHandlerLicenseKey. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .55
SerializationWhitelistEnabled . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .55
Database parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .55
DisableHashJoinPolicySearch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .55
DisableIndexFastFullScanForPolicySearch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .56
DisableSequenceUtil. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .56
DisableSortMergeJoinPolicySearch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .56
DiscardQueryPlansDuringStatsUpdateBatch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .56
IdentifyQueryBuilderViaComments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .56
IdentifyORMLayerViaComments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .56
MigrateToLargeIDsAndDatetime2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .57
UseOracleHintsOnMessageQueries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .57
Data destruction parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .57

4
Guidewire PolicyCenter 9.0.6 Configuration Guide

ArchiveReferenceTrackingEnabled Parameter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .57


ContactDestructionRequestAgeForPurgingResults parameter . . . . . . . . . . . . . . . . . . . . . . . . . . .57
PersonalDataDestructionEnabled parameter. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .57
Desktop and team parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .58
ActivityStatisticsWindowSize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .58
OtherWorkOrdersStatisticsWindowSize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .58
RenewalsStatisticsWindowSize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .58
SearchActivityThresholdDays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .58
SubmissionsStatisticsWindowSize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .59
TeamScreenTabVisibilityRowCountCutoff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .59
Document creation and document management parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .59
DisplayDocumentEditUploadButtons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .59
DocumentContentDispositionMode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .59
DocumentTemplateDescriptorXSDLocation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .59
FinalDocumentsNotEditable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .60
MaximumFileUploadCount . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .60
MaximumFileUploadSize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .60
MaximumTotalUploadSize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .60
Environment parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .60
AddressVerificationFailureAsError . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .60
AlwaysShowPhoneWidgetRegionCode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .60
CurrentEncryptionPlugin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .61
DeprecatedEventGeneration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .61
EnableAddressVerification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .61
EnableInternalDebugTools. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .61
KeyGeneratorRangeSize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .61
MemoryUsageMonitorIntervalMins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .62
PublicIDPrefix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .62
ResourcesMutable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .62
RetainDebugInfo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .63
StrictDataTypes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .63
TwoDigitYearThreshold . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .64
UnreachableCodeDetection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .64
UnrestrictedUserName . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .64
UseOldStylePreUpdate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .64
WarnOnImplicitCoercion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .64
WebResourcesDir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .64
Financial parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .64
Geocoding parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .65
UseGeocodingInPrimaryApp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .65
ProximitySearchOrdinalMaxDistance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .65
ProximityRadiusSearchDefaultMaxResultCount . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .65
UseMetricDistancesByDefault . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .65
Globalization parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .65
DefaultApplicationLanguage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .65
DefaultApplicationLocale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .66
DefaultApplicationCurrency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .66
DefaultRoundingMode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .66
MulticurrencyDisplayMode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .67
DefaultCountryCode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .67
DefaultPhoneCountryCode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .67
DefaultNANPACountryCode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .67
AlwaysShowPhoneWidgetRegionCode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .67
Integration parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .68
BillingSystemArchiveEnabled . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .68

5
Guidewire PolicyCenter 9.0.6 Configuration Guide

BillingSystemArchivePolicyPeriodDays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .68
BillingSystemURL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .68
ClaimSystemURL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .68
DefaultXmlExportIEncryptionId . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .69
KeepCompletedMessagesForDays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .69
LockDuringDistributedMessageRequestHandling. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .69
LockPrimaryEntityDuringMessageHandling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .69
PaymentSystemURL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .69
PluginStartupTimeout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .69
Job expiration parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .70
JobExpirationCheckAudit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .70
JobExpirationCheckCancellation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .71
JobExpirationCreateDateThreshold. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .71
JobExpirationEffDateThreshold . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .71
JobExpireCheckIssuance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .71
JobExpireCheckPolicyChange . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .71
JobExpireCheckReinstatement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .71
JobExpireCheckRenewal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .71
JobExpireCheckRewrite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .72
JobExpireCheckSubmission. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .72
JobExpireCheckTestJob . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .72
Lookup table parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .72
AvailabilityContextCacheEntryExpirationTime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .72
AvailabilityContextCacheSize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .72
UsePolicyPeriodReferenceDateForOfferingAvailability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .72
Miscellaneous job-related parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .72
AllowedDaysBeforeOrAfterPolicyStartDate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .72
MaximumPolicyCreationYearDelta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .73
MaxRecentAccounts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .73
MaxRecentPoliciesAndJobs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .73
MaxSubmissionsToCreate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .73
MinimumPolicyCreationYear. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .73
PatternCacheMaxDuration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .73
PolicyChangeMaxQuotes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .73
PurgeTemporaryPolicyPeriodsAfterDays. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .73
PurgeTemporaryPolicyPeriodsEnabled . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .73
RenewalMaxQuotes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .74
RenewalProcessLeadTime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .74
SubmissionMaxQuotes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .74
Miscellaneous parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .74
ConsistencyCheckerThreads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .74
DefaultDiffDateFormat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .74
DisableDomainGraphSupport . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .74
IgnoreLeapDayForEffDatedCalc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .75
InitialSampleDataSet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .75
PreloadSystemTableToCacheForFasterSynchronization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .75
ProfilerDataPurgeDaysOld . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .76
TransactionIdPurgeDaysOld . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .76
Policy exception parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .76
BoundPolicyThresholdDays. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .76
ClosedPolicyThresholdDays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .76
OpenPolicyThresholdDays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .76
PDF print settings parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .76
DefaultContentDispositionMode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .76
PrintFontFamilyName. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .77

6
Guidewire PolicyCenter 9.0.6 Configuration Guide

PrintFontSize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .77
PrintFOPUserConfigFile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .77
PrintHeaderFontSize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .77
PrintLineHeight . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .77
PrintListViewBlockSize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .77
PrintListViewFontSize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .77
PrintMarginBottom. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .78
PrintMarginLeft . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .78
PrintMarginRight . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .78
PrintMarginTop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .78
PrintMaxPDFInputFileSize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .78
PrintPageHeight . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .78
PrintPageWidth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .78
PrintPdfDefaultBaseFileExtension . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .78
PrintPdfMimeType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .78
Print settings parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .79
PrintCsvDefaultBaseFileExtension . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .79
PrintCsvMimeType. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .79
PrintDefaultBaseFileName . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .79
Product model parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .79
ExternalProductModelDirectory. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .79
ProductModelClassCacheConcurrencyLevel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .79
Quote purging configuration parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .80
PruneAndPurgeJobsEnabled . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .80
PruneVersionsDefaultRecheckDays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .80
PruneVersionsPolicyTermDays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .80
PruneVersionsPolicyTermDaysCheckDisabled . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .80
PruneVersionsRecentJobCompletionDays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .80
PurgeJobsDefaultRecheckDays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .80
PurgeJobsPolicyTermDays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .81
PurgeJobsPolicyTermDaysCheckDisabled. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .81
PurgeJobsRecentJobCompletionDays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .81
PurgeOrphanedPolicyPeriodsEnabled . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .81
Rating management parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .81
PurgeRateBookExportResultEnabled . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .81
PurgeWorksheetsEnabled . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .81
RateBookExportResultAgeForPurging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .82
RateRoutineIndexingThreshold . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .82
RateTableManagementNormalizationRowLimit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .82
RateTableManagementNormalizationRowThreshold . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .82
RatingWorksheetContainerAgeForPurging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .82
SmallRateTableRowLimit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .82
RateBookPreloadEnabled . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .83
Risk assessment parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .83
MultipleLocationRiskAssessmentEnabled . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .83
PurgeRiskAssessmentTempStoreDays. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .83
RiskAssessmentIntegrationEnabled . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .83
RiskAssessmentThumbnailMapEnabled . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .83
SingleLocationRiskAssessmentEnabled . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .83
SpotlightInteractiveServiceURL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .84
SpotlightLoginURL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .84
SpotlightRiskAssessmentServiceURL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .84
SpotlightThumbnailMapURL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .84
Scheduler and workflow parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .84
SchedulerEnabled. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .84

7
Guidewire PolicyCenter 9.0.6 Configuration Guide

WorkflowLogDebug . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .84
WorkflowLogPurgeDaysOld . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .84
WorkflowPurgeDaysOld . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .85
WorkflowStatsIntervalMins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .85
Search parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .85
FreeTextSearchEnabled. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .85
MaxContactSearchResults . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .85
PolicySearchMaxResult . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .85
Security parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .85
EnableDownlinePermissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .86
ExternalUserAccess . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .86
FailedAttemptsBeforeLockout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .86
LockoutPeriod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .86
LoginRetryDelay . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .86
MaxPasswordLength. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .86
MinPasswordLength . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .87
RestrictContactPotentialMatchToPermittedItems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .87
RestrictSearchesToPermittedItems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .87
SessionTimeoutSecs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .87
Side-by-side quoting parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .87
RenewalMaxSideBySideQuotes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .87
SideBySide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .87
SubmissionMaxSideBySideQuotes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .88
PolicyChangeMaxSideBySideQuotes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .88
User interface parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .88
ActionsShortcut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .88
AutoCompleteLimit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .88
InputMaskPlaceholderCharacter. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .88
ListViewPageSizeDefault . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .88
MaxBrowserHistoryItems (obsolete). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .88
QuickJumpShortcut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .88
UISkin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .89
WebUIAJAXTimeout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .89
Work queue parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .89
InstrumentedWorkerInfoPurgeDaysOld. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .89
WorkItemCreationBatchSize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .89
WorkItemPriorityMultiplierSecs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .89
WorkItemRetryLimit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .90
WorkQueueHistoryMaxDownload . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .90
WorkQueueThreadPoolMaxSize. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .90
WorkQueueThreadPoolMinSize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .90
WorkQueueThreadsKeepAliveTime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .90

Part 2
The Guidewire development environment
3 Getting started . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .93
What Is Guidewire Studio? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .93
The Studio development environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .93
Working with the QuickStart development server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .94
Connecting the development server to a database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .94
Deploying your configuration changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .95
PolicyCenter configuration files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .96
Key directories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .97

8
Guidewire PolicyCenter 9.0.6 Configuration Guide

Studio and IntelliJ IDEA configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .97


Using Studio with IntelliJ IDEA Ultimate Edition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .97
Setting IntelliJ IDEA properties in Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .98
Studio and the DCEVM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .98
Start Guidewire Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .99
Stop Guidewire Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .99
Updating Guidewire Studio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .99
Enable or disable automatic update checks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .99
Manually check for Studio updates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
Setting the Studio update site . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
Updating Studio manually . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101

4 Working in Guidewire Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103


Entering valid code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
Using dot completion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
Accessing reference information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
Accessing the Gosu API Reference. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
Accessing the PCF Reference Guide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
Accessing the Gosu Reference Guide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
Using Studio keyboard shortcuts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
Saving your work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
Verifying configuration resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
Inspecting configuration resources. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
Compiling configuration resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
Enabling or disabling Gosu compilation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
Setting options for Gosu command prompt compilation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
Suppressing compiler warnings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
Editing the XML definition of Studio resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109

5 Working with Guidewire Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111


Improving Studio performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
Set the maximum amount of memory available to Guidewire Studio. . . . . . . . . . . . . . . . . . . . . . 111
Set the amount of memory for project builds in Guidewire Studio . . . . . . . . . . . . . . . . . . . . . . . 112
Resetting Guidewire Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
Rebuild the Studio project files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
Rebuild the Studio file index cache. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
Setting font display options. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112

6 PolicyCenter Studio and Gosu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115


Gosu building blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
Gosu case sensitivity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
Working with Gosu in PolicyCenter Studio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
Gosu packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
Create a new package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
Gosu classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
Create a new Gosu class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
PolicyCenter base configuration classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
Class visibility in Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
Preloading Gosu classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
Gosu enhancements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
Create a new enhancement. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
XML and GX models. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
Define a GX model. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
Script parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
Script parameters overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
Script parameters as global variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
9
Guidewire PolicyCenter 9.0.6 Configuration Guide

Script parameter examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121


Working with script parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
Referencing a script parameter in Gosu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
PolicyCenter script parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123

Part 3
Guidewire Studio editors
7 Using the Studio editors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
Editing in Guidewire Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
Working in the Gosu editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
Using Product Designer to edit the product model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128

8 Using the plugins registry editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129


What are plugins? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
Plugin implementation classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
What is the plugins registry? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
Startable plugins. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
Working with plugins. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
Create a plugins registry item. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
Add an implementation to a plugins registry item . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
Set environment and server context for plugin implementations . . . . . . . . . . . . . . . . . . . . . . . . . 131
Customizing plugin functionality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
Working with plugin versions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132

9 Working with web services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133


Using the web service editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
Defining a web service collection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134

10 Implementing QuickJump commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135


What Is QuickJump? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
Adding a QuickJump navigation command. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
Implementing QuickJumpCommandRef commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
Implementing StaticNavigationCommandRef commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
Implementing ContextualNavigationCommandRef commands. . . . . . . . . . . . . . . . . . . . . . . . . . 138
Checking permissions on QuickJump navigation commands. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138

11 Using the entity names editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141


Entity names editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
Variable table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
The Entity Path column . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
The Use Entity Name? column. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
The Sort columns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
Gosu text editor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
Including data from subentities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
Entity name types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145

12 Using the messaging editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147


Messaging editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
Open the messaging editor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
Add or remove a messaging configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
Add a message destination. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
Associating event names with a message destination. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149

13 Using the display keys editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151


Overview of display keys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151

10
Guidewire PolicyCenter 9.0.6 Configuration Guide

Display key requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151


Creating display keys in a Gosu editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
Retrieving the value of a display key . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152

Part 4
Data model configuration
14 Working with the Data Dictionary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
What is the Data Dictionary? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
What can you view in the Data Dictionary? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
Using the Data Dictionary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
Property colors. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
Object attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
Property attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
Property tags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
Entity subtypes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
Data field types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
Virtual properties on data entities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162

15 The PolicyCenter data model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163


What is the data model? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
The data model in Guidewire application architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
The base data model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
Working with dot notation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
Overview of data entities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
Data entity metadata files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
The extensions properties file. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
Working with entity definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
Search for an existing entity definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
Create a new entity definition. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
Extend an existing entity definition. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
PolicyCenter data entities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
Data entities and the application database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
PolicyCenter database tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
Data objects and scriptability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
XML root elements and related base PolicyCenter data object types . . . . . . . . . . . . . . . . . . . . . . . 173
<delegate> elements and related data object types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
<entity> elements and related data object types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
<extension> elements and related data object types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
<nonPersistentEntity> elements and related data object types . . . . . . . . . . . . . . . . . . . . . . . . . . 184
<subtype> elements and related data object types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
<viewEntity> elements and related data object types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
<viewEntityExtension> elements and related data object types . . . . . . . . . . . . . . . . . . . . . . . . . 190
Data entity subelements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
<array> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
<column> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
<edgeForeignKey> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
<events> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
<foreignkey> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
<fulldescription> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
<implementsEntity> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
<implementsInterface> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
<index>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
<onetoone> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
<remove-index> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
11
Guidewire PolicyCenter 9.0.6 Configuration Guide

<tag> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
<typekey> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212

16 Working with associative arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215


Overview of associative arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
Associative array mapping types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
Scriptability and associative arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
Setting array member values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
Subtype mapping associative arrays. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
Working with array values using subtype mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
Typelist mapping associative arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
Working with array values using typelist mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
Example: Mapping an entity to entities of a different type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
Constant mapping associative arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
Working with array values using constant mapping. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224

17 Modifying the base data model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225


Planning changes to the base data model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
Overview of data model extensions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
Strategies for extending the base data model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
What happens if you change the data model? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
Naming restrictions for extensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
Defining a new data entity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
Create a new entity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
Default properties on a new entity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
Extending a base configuration entity. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
Create a new extension file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
Working with attribute and element overrides . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
Overriding data type attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
Overriding nested subelements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
Extending the base data model: examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
Creating a new delegate object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
Extending a delegate object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
Defining a subtype . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
Defining a reference entity. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
Define an entity array . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
Implementing a many-to-many relationship between entity types . . . . . . . . . . . . . . . . . . . . . . . . 242
Extending an existing view entity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
Removing objects from the base configuration data model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
Remove a base extension entity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
Remove an extension to a base object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
Implications of modifying the data model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
Deploying data model changes to the application server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248

18 Example: Creating assignable entities. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249


Creating an assignable extension entity type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
Step 1: Create extension entity type UserAssignableEntity_Ext . . . . . . . . . . . . . . . . . . . . . . . . . 249
Step 2: Create assignment class NewAssignableMethodsImpl . . . . . . . . . . . . . . . . . . . . . . . . . . 251
Step 3: Test assignment of your extension entity instance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
Making your extension entity type eligible for round-robin assignment . . . . . . . . . . . . . . . . . . . . . 253
Step 1: Extend the AssignmentState entity types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
Step 2: Subclass class AssignmentType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
Step 3: Create class UserAssignableEntityExtEnhancement. . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
Step 4: Test round-robin assignment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
Creating an assignable extension entity type that uses foreign keys . . . . . . . . . . . . . . . . . . . . . . . . 259
Step 1: Create extension entity type TestClaimAssignable_Ext. . . . . . . . . . . . . . . . . . . . . . . . . . 259
12
Guidewire PolicyCenter 9.0.6 Configuration Guide

Step 2: Add foreign keys to assignable entity types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261


Step 3: Create new assignment type for extension entity type TestClaimAssignable_Ext . . . . . . . . 261
Step 4: Create enhancement class TestClaimAssignableExtEnhancement . . . . . . . . . . . . . . . . . . 263
Step 5: Create delegate class TestClaimAssignableMethodsImpl . . . . . . . . . . . . . . . . . . . . . . . . 264
Step 6: Add the necessary permission for the extension entity type . . . . . . . . . . . . . . . . . . . . . . . 265
Step 7: Test assignment of the assignable entity type. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267

19 Data types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269


Overview of data types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
Working with data types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
Using data types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
Defining a data type for a property . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
The data types configuration file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
<...DataType> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
Deploying modifications to the data types configuration file . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
Customizing base configuration data types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
The Length attribute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
The Precision and Scale attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
The Validator attribute. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
List of customizable data types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
Working with the medium text data type (Oracle) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
Working with the VARCHAR data type (SQL Server) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
The data type API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
Retrieving the data type for a property . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
Retrieving a particular data type in Gosu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
Retrieving a data type reflectively. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
Using the IDataType methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
Define a new data type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
Defining a new tax identification number data type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
Step 1: Register the data type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
Step 2: Implement the IDataTypeDef Interface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
Step 3: Implement the data type aspect handlers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280

20 Field validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283


Field validators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
Field validator definitions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
<FieldValidators> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
<ValidatorDef> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
Modifying field validators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
Using <column-override> to modify field validation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287

21 Working with typelists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289


What is a typelist? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
Terms related to typelists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290
Typelists and typecodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290
Typelist definition files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
Different kinds of typelists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
Internal typelists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
Extendable typelists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
Custom typelists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
Working with typelists in Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
The typelist editor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
Entering typecodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
Typekey fields. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
Example: Typekey field. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
Removing or retiring a typekey . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
13
Guidewire PolicyCenter 9.0.6 Configuration Guide

Remove a typekey . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299


Retire a typekey . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
Typelist filters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300
Static filters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300
Create a static filter. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300
Creating a static filter using categories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
Creating a static filter using includes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
Creating a static filter using excludes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
Dynamic filters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
Creating a dynamic filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
Typecode references in Gosu. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307
Mapping typecodes to external system codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308

22 The PolicyCenter archive domain graph . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311


Understanding archiving in Guidewire PolicyCenter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
Overview of the archive domain graph . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
The archive domain graph is a directed acyclic graph . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
The archive domain graph and entity instance graphs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
The archive domain graph and reference data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314
Understanding PolicyCenter entity ownership . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314
Foreign key ownership in the archive domain graph . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
Inverse foreign key ownership in the archive domain graph . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316
Ownership through the effective dated branch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
Ownership relationships in the PolicyCenter archive domain graph . . . . . . . . . . . . . . . . . . . . . . . . 317
Entities in the archive domain graph . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318
Archive entities and the RootInfo delegate. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
Archive entities and the Extractable delegate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320
Archive entities and the EffDated delegate. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
Archive entities and the OverlapTable delegate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
Data model changes that impact archiving . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322
Working with shared entity data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322
About cycles in the archive domain graph. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
Circular foreign key references. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
Ownership cycles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
Validation of the archive domain graph . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
Graph validation errors that prevent the server from starting . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
Graph validation warnings that do not prevent the server from starting . . . . . . . . . . . . . . . . . . . . 325
About archive domain graph errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326
Resolve archive graph errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326
Resolve archive graph warnings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327
Resolving issues with custom archive entities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327
Defining a cross-domain tag . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
Defining a revisioned entity from a purge-only domain graph tag . . . . . . . . . . . . . . . . . . . . . . . . 330
About archive graph error messages. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
Graph validation errors generated during server startup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
Graph validation errors generated at run time. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332
About archiving and event messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332
Viewing the archive domain graph. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332
Generate the archive domain graph in PDF format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332
Generate the archive domain graph in PNG format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
Using archive logging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333

Part 5
User interface configuration

14
Guidewire PolicyCenter 9.0.6 Configuration Guide

23 Using the PCF editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337


Page configuration (PCF) editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337
Page canvas overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337
Creating a new PCF file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338
Create a new PCF folder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338
Create a new PCF file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338
PCF file type icons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339
Working with shared or included files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339
Understanding PCF modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339
Setting a PCF mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340
Create new modal PCF files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340
Page Config menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
Toolbox tab. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
Structure tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
Properties tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
Child lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343
PCF elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344
PCF elements and the Properties tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
Working with elements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
Adding an element to the canvas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
Moving an element on the canvas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
Changing the type of an element. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
Adding a comment to an element . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
Find a PCF element on the canvas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
View the source of a PCF element . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
Duplicate a PCF element . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
Delete a PCF element . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
Copy a PCF element . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
Cut a PCF element . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
Paste a PCF element . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
Linking widgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349

24 Introduction to page configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351


Page configuration files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
Page configuration elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
What is a PCF element? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
Types of PCF elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352
Identifying PCF elements in the user interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354
Getting started configuring pages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
Finding an existing element to edit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
Creating a new standalone PCF element . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357
Modifying style and theme elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358
Changing or adding images . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358
Overriding CSS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358
Changing theme colors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358
Advanced theming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358

25 Data panels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359


Panel overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359
Detail view panel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359
Define a detail view . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
Add columns to a detail view . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361
Format a detail view . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
List view panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
Define a list view . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
Iterate a list view over a data set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366
15
Guidewire PolicyCenter 9.0.6 Configuration Guide

Choose the data source for a list view . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367

26 Location groups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369


Location group overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369
Define a location group . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369
Location groups as navigation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370
Location groups as tab menus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370
Location groups as menu links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371
Location groups as sidebar navigation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372

27 Navigation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375
Navigation overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375
Tab bars . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375
Configure the default tab bar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376
Specify which tab bar to display . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376
Define a tab bar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376
Tabs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376
Define a tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377
Define a drop-down menu on a tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377

28 Configuring search functionality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379


Search overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379
Database search configuration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382
PolicyCenter database search functionality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382
Configuring PolicyCenter database search . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383
Configuring database search criteria in XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386
Configuring database search criteria in Gosu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389
Deploying customized database search files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391
Search criteria validation on server start-up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392
Free-text search configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392
Overview of free-text search . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392
Free-text search system architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392
Enabling free-text search in PolicyCenter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397
Enable free-text search in PolicyCenter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397
Enabling the free-text search user interface in PolicyCenter . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
Configuring the Guidewire Solr Extension. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399
Configuring free-text search for indexing and searching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410
Configuring the free-text batch load command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410
Configuring the basic search screen for free-text search . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411
Modifying free-text search for additional fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412
Localizing free-text search. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416

29 Configuring special page functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417


Adding print capabilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417
Overview of print functionality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417
Types of printing configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418
Linking to a specific page using an EntryPoint PCF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418
Entry points . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419
Create a Forwarding EntryPoint PCF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420
Linking to a specific page using an ExitPoint PCF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421
Creating an ExitPoint PCF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421

Part 6
Workflow, activity patterns, and email configuration

16
Guidewire PolicyCenter 9.0.6 Configuration Guide

30 Using the workflow editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427


Workflow in Guidewire PolicyCenter. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427
Workflow in Guidewire Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427
Access the workflow editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427
Workflow editor window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428
Workflow editor elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428
Understanding workflow steps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429
Using the workflow right-click menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430
Using search with workflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430

31 Guidewire workflow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431


Understanding workflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431
Workflow instances . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431
Work items . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432
Workflow process format. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433
Workflow step summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433
Workflow Gosu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434
Workflow versioning. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434
Workflow localization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435
Workflow structural elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436
<Context> workflow element. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436
<Start> workflow element . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437
<Finish> workflow element . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437
Common step elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437
Enter and exit scripts in workflows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437
Asserts in workflows. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437
Events in workflows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438
Notifications in workflows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438
Branch IDs in workflows. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438
Basic workflow steps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438
AutoStep workflow step . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439
MessageStep workflow step. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439
ActivityStep workflow step . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440
ManualStep workflow step . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442
Outcome workflow step . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443
Step branches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444
Working with branch IDs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444
GO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445
TRIGGER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446
TIMEOUT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447
Creating new workflows. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 448
Clone an existing workflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 448
Extend an existing workflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449
Extending a workflow: a simple example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 450
Instantiating a workflow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452
A simple example of instantiation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453
The workflow engine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455
Distributed execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455
Synchronicity, transactions, and errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455
Workflow subflows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458
Workflow administration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459
Workflow debugging, logging, and testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460
Process logging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460
Workflow testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461
Enable the ITestingClock plugin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461

17
Guidewire PolicyCenter 9.0.6 Configuration Guide

32 Defining activity patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463


What is an activity pattern?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463
Pattern types and categories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464
Activity pattern types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464
Categorizing activity patterns. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464
Using activity patterns in Gosu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464
Calculating activity due dates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465
Target due dates (deadlines) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465
Escalation dates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465
Base configuration activity patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465
Activity pattern objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466
Use activity patterns with documents and emails . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467
Specifying document and email templates in CSV files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468
Localizing activity patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468

33 Guidewire PolicyCenter and Email. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469


Configure email plugin parameters in Guidewire. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470
The email object model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470
Email utility methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471
Email transmission . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472
About email templates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472
Create an email template file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473
Create an email template descriptor file. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473
Localize an email template . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473
Sending emails from Gosu code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474
Saving an email message as a document . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474
Creating an HTML email within code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475

Part 7
Testing Gosu code
34 Testing and debugging your configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485
Testing PolicyCenter with Guidewire Studio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485
Running PolicyCenter without debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485
Debugging PolicyCenter within Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486
Debugging a PolicyCenter server that is running outside of Studio . . . . . . . . . . . . . . . . . . . . . . . 486
The Studio debugger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 488
Setting breakpoints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 488
Set a breakpoint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 488
View a breakpoint. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489
Remove a breakpoint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489
Stepping through code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489
Viewing current values. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490
Viewing variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490
Defining a watch list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490
Resuming execution. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490
Using the Gosu scratchpad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491
Run the Gosu scratchpad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491
Executing code in the Gosu scratchpad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491
Accessing application data in the Gosu scratchpad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491
Run scratchpad code in the application server debug process . . . . . . . . . . . . . . . . . . . . . . . . . . . 491
Understanding internally generated code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492
Manually generate code for configuration resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492
Enable or disable code generation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492
Change code generation for XML classes to generate source code . . . . . . . . . . . . . . . . . . . . . . . 492
18
Guidewire PolicyCenter 9.0.6 Configuration Guide

Change PCF code generation error behavior . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493


Suggestions for testing rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493
Compiling and building the application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494

35 Using GUnit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495


The TestBase class. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495
Overriding TestBase methods. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495
Configuring the server environment. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496
Server runtime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497
Configuring the test environment. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498
Set default configuration parameters for all tests. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498
Add a named set of configuration parameters for tests. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498
View test configuration settings before launching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498
Configuration parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498
Creating a GUnit test class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499
Server tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 500
Using entity builders to create test data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502
Creating an entity builder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503
Entity builder examples. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505
Creating new builders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507

Part 8
Guidewire PolicyCenter configuration
36 PolicyCenter configuration guidelines. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515
Guidelines for modularizing line-of-business code. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515

37 Validation in PolicyCenter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 517


Validation overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 517
Choosing between validation and underwriting authority. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 517
Field-level validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518
Class-based data object validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
Rules-based data object validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

38 Class-based validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521


Class-based validation overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521
Validation classes in the base configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 522
Configuring class-based validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 522
Policy object validation levels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523
Adding new validation levels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523
Validation package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524
Validation chaining . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 527
PolicyPeriodValidation:validateImpl method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531
PolicyPeriodValidation validation checks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531
Invariant validation checks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532
Static validation checks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533
Invoking class-based validation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533
Example: Invoking validation in a job wizard step . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533

39 Configuring quote purging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537


Quote purging configuration overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537
Quote purging object model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537
Objects that get purged or pruned . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 538
Quote purging batch processes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 540
Enable quote purging batch processes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 541

19
Guidewire PolicyCenter 9.0.6 Configuration Guide

Batch processes to run prior to running the purge batch process . . . . . . . . . . . . . . . . . . . . . . . . . 541
Purge batch process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 541
Purge Orphaned Policy Periods batch process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544
Using events to notify external system of purged of pruned entities . . . . . . . . . . . . . . . . . . . . . . . . 545
Purging test tool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545
Flushing other work queues with the purging test tool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545
Purge or prune a job with the purging test tool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545
Prune policy periods with the purging test tool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546
Run the Purge batch process from the purging test tool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547

40 Configuring quote cloning for business intelligence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549


Quote cloning configuration overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549
Quote cloning object model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550
Enable quote cloning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550
Quote clone plugin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550
Determining whether to clone a quote . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 551
Cleaning up after cloning policy period . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 551
Processing the cloned policy period . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 551
Adding to the Purge Quote Clones query . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 551
Purge quote clones batch processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 552

41 Configuring contingencies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553


Contingency configuration overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553
Contingency object model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553
Contingency Gosu class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555
Contingency batch processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555

42 Configuring the Spotlight integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 557


Spotlight integration overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 557
Spotlight Integration Requires HTTPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 557
Accessing risk assessment interactively. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558
Accessing risk assessment non-interactively . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 560
Risk assessment object model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 561
Location risk assessment object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 561
Risk assessment temporary objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 562
Configuring risk assessment in the Location Information Screen . . . . . . . . . . . . . . . . . . . . . . . . . . 563
Risk assessment information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 563
Risk assessment thumbnail map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564
Deleting temporary risk assessment objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564
Risk assessment configurable classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564
Spotlight service authentication for risk assessment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565
Risk assessment error handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565
Request and location level errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565
Enabling Spotlight services. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 566
Risk assessment configuration parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 566
Spotlight session time-out . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567

43 Configuring underwriting authority . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569


Overview of configuring underwriting authority . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569
Underwriting Authority Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569
Configuring authority grants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569
Underwriting authority profile object model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 570
Displaying authority grants in the user interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 571
Configuring underwriting rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 571
Configuring underwriting rules through business rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 571
Underwriting rules object model. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 571

20
Guidewire PolicyCenter 9.0.6 Configuration Guide

Adding a new checking set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573


Adding a new value comparator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575
Adding a new value formatter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577
Checking sets and evaluators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 578
Orphaned underwriting issues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579
Blocking points . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579
Configuring underwriting referral reasons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 580
Job interactions with underwriting issues. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 580
Issue keys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583
Configuring underwriting issue history . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584
Comparing issue values. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584
Configuring default values for assignment type and value offset amount . . . . . . . . . . . . . . . . . . . 585
Underwriter issue type verifier class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585
Localizing underwriting issue details . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585
Configuring approvals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 586
Approval expiration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 586
Special approval permission. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 586
Passing approval requests to underwriters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 586
Handling underwriting issues in policy revisions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 588
Handling underwriting issues in out-of-sequence policy changes . . . . . . . . . . . . . . . . . . . . . . . . 588
Handling underwriting issues in preempted jobs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 588
Creating externally managed underwriting rules in Gosu code . . . . . . . . . . . . . . . . . . . . . . . . . . . 589
Gosu implementation overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 589
UWIssueType fields in underwriting rule. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 590
Creating underwriting issues with policy evaluation plugin . . . . . . . . . . . . . . . . . . . . . . . . . . . . 590
Raise underwriting issues in Gosu code. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 591

44 Configuring business rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593


The business rules plugin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593
What can you modify in the business rules plugin class? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593
Working with the business rules plugin class. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594
Configuring methods and properties for business rule conditions . . . . . . . . . . . . . . . . . . . . . . . . 594
Business rule actions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 595
Triggering point mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 595
Rule permission provider. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 595
Custom rule utility functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 595
Rule contexts and rule context definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 596
Configuring applicability criteria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 597
Add a new PolicyCenter applicability criterion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 598

45 Configuring the account holder info screen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 599


Ways to configure the account holder info screen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 599
Consolidate account information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 600
Cross-application alerts in a single location . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 601
Links to referenced objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 601
Controlled access to the account holder info screen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 601
Customizing account holder info screen data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 602
Account holder info screen performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 602
Configuration files for the account holder info screen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 603
Entities and the Account Holder Info screen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 603
Permissions for the Account Holder Info screen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 603
Display keys for the Account Holder Info screen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 603
PCF files for the Account Holder Info screen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 603
Gosu files for the Account Holder Info screen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 603

21
Guidewire PolicyCenter 9.0.6 Configuration Guide

46 Configuring policy data spreadsheet import/export . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 605


Changing the spreadsheet protection password . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 605
Change the worksheet protection password . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 605
Configuring spreadsheet import/export in commercial property. . . . . . . . . . . . . . . . . . . . . . . . . . . 605
Adding spreadsheet import/export to other entities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 606
Create an XML file describing columns to import and export. . . . . . . . . . . . . . . . . . . . . . . . . . . 606
Defining column data resolvers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 608
Create an import strategy for each new data column resolver . . . . . . . . . . . . . . . . . . . . . . . . . . . 609
Modify the ImportStrategyRegistry class. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 609

47 Configuring earned premium . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 611


How PolicyCenter calculates earned premium. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 611
Methods that calculate earned premium . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 612
PCF files that display earned premium . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 612

48 Configuring the Team tab. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 613


Configuring the Team Screens batch process for team statistics. . . . . . . . . . . . . . . . . . . . . . . . . . . 613
Scheduling the Team Screens batch process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 613
Setting the window size for team statistics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 614
How PolicyCenter calculates reporting categories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 614
Setting the maximum number of rows on the Team screens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 616

49 Configuring Rating Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 617


Rating Management data model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 617
Rate table data model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 617
Rate routine data model. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 618
Loading Rating Management components on system startup. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 619
Improving rate table performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 619
Improving performance with a covering index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 620
Parameters and properties for rating management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 620
Minimum rating level parameter. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 620
Rate table normalization configuration parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 621
Logging properties for rating management. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 621
Third party libraries for rating management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 622
POI library. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 622
User authority and permissions for rating management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 622
Rating Management permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 622
Rating Management roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 622
Assignment of permission to roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 622
Custom physical tables for Rating Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 623
Configuring a new custom physical table. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 623
Configuring value providers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 623
Typelist value provider . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 624
PolicyCenter product model value providers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 624
Reference factor value provider . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625
Creating a new value provider . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625
Configuring matching rule operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625
Configure a new match operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 626
Extending the match operation factory class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 626
Match operation implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 626
Match operation validator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 628
Configuring rate book matching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 628
Configuring rate routines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 629
Configuring the rating engine to execute the rate routine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 629
Adding a new rate routine function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 630
Configuring rounding operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 631
22
Guidewire PolicyCenter 9.0.6 Configuration Guide

Configure prefixes that identify types in rate routine steps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 631


Configuring variant identifiers for a rate routine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 632
Configuring the rate routine plugin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 634
Using Gosu to get the rate factor from the rate table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 634
Configuring new parameters in parameter sets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 637
Creating a new parameter for inclusion in parameter sets. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 638
Adding a new parameter to the rating engine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 639
Configuring new wrappers for parameter sets. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 640
Configuring rating worksheets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 640
Configuring extract and purge rating worksheets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 640
Logging rate routine functions in a rating worksheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 643
Configuring impact testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 643
Impact Testing Warnings and Recommendations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 643
Enabling impact testing for a line of business. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 643
Rate renewals as renewal jobs in impact testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 644
Modifying the functionality of impact testing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 644
Work queues for impact testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 644
Configuring the impact testing plugin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 645
Configuring rate book export to spreadsheet and XML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 645
Rating Management plugins and interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 645
Rate routine plugin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 645
Impact testing plugin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 650
Rate query lookup plugin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 652
Adding line-specific cost methods using cost adapters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

50 Configuring Reinsurance Management. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655


Reinsurance Management object model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655
Reinsurance program object model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655
Reinsurance agreement object model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655
Reinsurance coverage group object model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 658
Policy period reinsurance object model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 659
Reinsurance Management permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 660
Configuring reinsurance coverage groups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 661
Configure reinsurance coverage group on individual coverages . . . . . . . . . . . . . . . . . . . . . . . . . 661
Disable Reinsurance Management for a line of business . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 661
Reinsurance net retention underwriting issue type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 661
Implementing Gosu methods for Reinsurance Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 661
Gosu methods for calculating the total insured value. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 662

51 Handling high volume quote requests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663


High volume quotes overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663
Generating the quote . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663
Viewing the quote. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664
Moving the quote into the system of record . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664
Other considerations for handling high volume quotes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 665
High volume quotes implementation overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 665
Quoting processor plugin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 667
Quoting data plugin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 667

52 Configuring multicurrency. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 669


Configuring PolicyCenter for a single currency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 669
Creating multicurrency policy lines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 669
Adding coverage currencies to a policy line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 670
Changing the settlement currency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 671
Configuring the coverage currency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 671
Coverage currency in accounts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 672
23
Guidewire PolicyCenter 9.0.6 Configuration Guide

Coverage currency in policy periods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 672


Coverage currency in coverages and clauses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 672
Coverage currency in coverables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 673
Configuring the settlement currency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 673
Settlement currency in contacts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 673
Settlement currency in accounts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 674
Settlement currency in policy periods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 674
Configuring multicurrency and reinsurance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 674
Reinsurance objects and multicurrency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 675
Configuring multicurrency and rating . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 675
Costs and multicurrency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 675
Transactions and multicurrency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 676
Configuring underwriting authority and multicurrency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 677
Configuring underwriting issues and multicurrency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 677
Configuring authority profiles and multicurrency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 678
Implementing an exchange rate service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 678
The exchange rate service plugin interface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 678
Enabling multicurrency integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 679
Set up currency-specific plans and authority limits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 679

53 Policy Term archiving . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 681


Archiving in Guidewire PolicyCenter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 681
How PolicyCenter determines the date for archive eligibility . . . . . . . . . . . . . . . . . . . . . . . . . . . . 682
Batch processing and archiving . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 682
Monitoring archiving activity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 682
Understanding errors in the archiving process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 683
Logging archiving activity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 683
Archive configuration options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 683
Archive data model. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 683
Archive configuration parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 685
Archiving and the SQL Server database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 685
Gosu code and archiving . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 685
Understanding the archiving plugins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 686

54 Configuring personal data destruction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 687


Data destruction configuration parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 687
Data destruction web service. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 688
PersonalDataDestructionAPI web service methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 688
Lifecycle of a personal data destruction request . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 689
Personal data destruction request entities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 690
Example of a request made with AddressBookUID. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 690
Example of a request made with PublicID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 691
Typelists for status of personal destruction workflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 691
Work queues used in personal data destruction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 692
PersonalDataDestructionController class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 694
Data model configuration for data destruction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 695
DestructionRootPinnable delegate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 695
Do Not Process flag . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 695
Display keys for data destruction messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 696
Obfuscatable delegate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 696
Obfuscator interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 696
Marking entity fields for obfuscation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 697
Entity domain graphs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 698
Identifying archived objects that affect destruction of data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 698
Data Protection Officer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 699
Data Protection Officer permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 699
24
Guidewire PolicyCenter 9.0.6 Configuration Guide

Notifying the Data Protection Officer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 699


Data destruction purge configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 700
Pinnable hierarchy in PolicyCenter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 700
PersonalDataPurgeTree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 701
Traversing the pinnable hierarchy for personal data purge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 701
Defining the destroyer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 704
PersonalDataPurge event . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 704
Specifying which objects in the graph can be destroyed. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 704
Data obfuscation in PolicyCenter. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 706
Implementing the Obfuscatable delegate in an entity. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 706
Implementing the Obfuscator interface in an entity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 707
Personal data obfuscator classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 707
Data destruction test tool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 710

Part 9
Guidewire PolicyCenter job configuration
55 Configuring jobs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 713
Common ways to configure jobs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 713
Wizards for jobs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 713
Gosu classes for jobs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 714
Job rule sets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 714
Job workflows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 715
System configuration parameters for jobs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 715
Changing jobs to expired status . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 715
Configuring the job expire batch process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 715
Configuring job history events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 716
History events in the default configuration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 717
Configuring history search criteria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 718
Multiple revision jobs and the job selected branch property . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 718
Selecting the underwriting company through segmentation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 718
Segmentation classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 719
PolicyPeriodBaseEnhancement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 719

56 Configuring submissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 721


Configuring submissions overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 721
Submission process Gosu class. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 721
Submission enhancements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 722
Submission integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 723
Submission web services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 723
Submission plugins. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 723
Expiring submissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 724
Submission configuration examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 724
Configuring the copy submission feature . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 724

57 Configuring issuance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 725


Configuring issuance overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 725
Modifying the issuance process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 725
Issuance integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 725
Issuance web services and plugins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 726

58 Configuring renewals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 727


Configuring renewals overview. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 727
Renewal process Gosu class. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 727
Renewal enhancement. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 728

25
Guidewire PolicyCenter 9.0.6 Configuration Guide

Renewal workflows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 728


Renewal rule sets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 729
Renewal integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 729
Renewal web services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 729
Renewal plugins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 730
Renewal events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 731
Configuring batch process renewals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 731
Renewal plugin calculation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 732
Renewal lead time in notification config system table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 733
Example lead time by line of business. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 733
Example lead time by time of year . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 733
Delay for a conflicting job . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 734
Configuring explanations in pre-renewal directions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 734

59 Configuring cancellations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 735


Configuring cancellations overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 735
Cancellation Gosu classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 736
Complete cancellation workflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 737
Cancellation integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 737
Cancellation web services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 737
Cancellation plugins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 737
Cancellation events. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 738
Calculating the cancellation effective date . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 738
Calculating the cancellation effective date if the source is insured . . . . . . . . . . . . . . . . . . . . . . . 738
Calculating the cancellation effective date if the source is insurer . . . . . . . . . . . . . . . . . . . . . . . . 738
Configuring the premium calculation method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 739

60 Configuring policy change . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 741


Configuring policy change overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 741
Policy change process class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 741
Modifying the policy change process class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 742
Policy change integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 743
Policy change web services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 743
Policy change plugins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 743
Policy change events. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 743

61 Configuring reinstatement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 745


Configuring reinstatement overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 745
Reinstatement process Gosu class. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 745
Reinstatement integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 746
Reinstatement web services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 746
Reinstatement plugins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 746
Reinstatement events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 747

62 Configuring rewrite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 749


Configuring rewrite overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 749
Rewrite process Gosu class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 749
Rewrite integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 750
Rewrite events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 750

63 Configuring rewrite new account . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 751


Configuring the rewrite new account job overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 751
Rewrite new account job . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 751
Rewrite new account object model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 752
Rewrite new account history events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 752

26
Guidewire PolicyCenter 9.0.6 Configuration Guide

64 Configuring premium audit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 753


Configuring premium audit overview. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 753
Audit Gosu classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 754
Premium audit integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 755
Integration with BillingCenter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 755
Audit web services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 755
Audit plugins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 755
Audit events. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 755
Defining audit schedules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 755
Final audit schedules. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 756
Premium report schedules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 756
Create audit schedule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 757
Configuring audit types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 757
Add new audit type. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 758
Extend audit schedule type typelist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 758
Audit schedule properties file. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 759
Audit schedule pattern. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 761

65 Configuring side-by-side quoting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 763


Changing the maximum number of versions in side-by-side quoting . . . . . . . . . . . . . . . . . . . . . . . 763
Marking a job as side-by-side . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 763
Side-by-side quoting object model. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 763
Configuring the side-by-side quoting screen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 764
Posting Changes to the server. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 764
Disable post on enter. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 765
Configuring initial behavior of the side-by-side quoting screen . . . . . . . . . . . . . . . . . . . . . . . . . 765
Copying base data for side-by-side quoting. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 765
High-level view of base data copy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 766
Gosu methods for base data copy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 766
Excluding side-by-side data from base data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 768
Side-by-side data that base data copy must exclude . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 768
Side-by-side data that base data copy can exclude . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 769
Side-by-side data in personal auto excluded from base data copy . . . . . . . . . . . . . . . . . . . . . . . . 771
Exclude entities reachable through two paths . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 771
Configuring data excluded from base data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 774
Configuring quote all to ignore validation warnings. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 774

27
Guidewire PolicyCenter 9.0.6 Configuration Guide

28
Guidewire PolicyCenter 9.0.6 Configuration Guide

About PolicyCenter documentation

The following table lists the documents in PolicyCenter documentation:

Document Purpose
InsuranceSuite Guide If you are new to Guidewire InsuranceSuite applications, read the InsuranceSuite Guide for informa‐
tion on the architecture of Guidewire InsuranceSuite and application integrations. The intended read‐
ers are everyone who works with Guidewire applications.
Application Guide If you are new to PolicyCenter or want to understand a feature, read the Application Guide. This guide
describes features from a business perspective and provides links to other books as needed. The in‐
tended readers are everyone who works with PolicyCenter.
Database Upgrade Guide Describes the overall PolicyCenter upgrade process, and describes how to upgrade your PolicyCenter
database from a previous major version. The intended readers are system administrators and imple‐
mentation engineers who must merge base application changes into existing PolicyCenter application
extensions and integrations.
Configuration Upgrade Guide Describes the overall PolicyCenter upgrade process, and describes how to upgrade your PolicyCenter
configuration from a previous major version. The intended readers are system administrators and im‐
plementation engineers who must merge base application changes into existing PolicyCenter applica‐
tion extensions and integrations. The Configuration Upgrade Guide is published with the Upgrade
Tools and is available from the Guidewire Community.
New and Changed Guide Describes new features and changes from prior PolicyCenter versions. Intended readers are business
users and system administrators who want an overview of new features and changes to features. Con‐
sult the “Release Notes Archive” part of this document for changes in prior maintenance releases.
Installation Guide Describes how to install PolicyCenter. The intended readers are everyone who installs the application
for development or for production.
System Administration Guide Describes how to manage a PolicyCenter system. The intended readers are system administrators re‐
sponsible for managing security, backups, logging, importing user data, or application monitoring.
Configuration Guide The primary reference for configuring initial implementation, data model extensions, and user inter‐
face (PCF) files for PolicyCenter. The intended readers are all IT staff and configuration engineers.
PCF Reference Guide Describes PolicyCenter PCF widgets and attributes. The intended readers are configuration engineers.
Data Dictionary Describes the PolicyCenter data model, including configuration extensions. The dictionary can be gen‐
erated at any time to reflect the current PolicyCenter configuration. The intended readers are configu‐
ration engineers.
Security Dictionary Describes all security permissions, roles, and the relationships among them. The dictionary can be
generated at any time to reflect the current PolicyCenter configuration. The intended readers are con‐
figuration engineers.
Globalization Guide Describes how to configure PolicyCenter for a global environment. Covers globalization topics such as
global regions, languages, date and number formats, names, currencies, addresses, and phone num‐
bers. The intended readers are configuration engineers who localize PolicyCenter.
Rules Guide Describes business rule methodology and the rule sets in Guidewire Studio for PolicyCenter. The in‐
tended readers are business analysts who define business processes, as well as programmers who
write business rules in Gosu.
Contact Management Guide Describes how to configure Guidewire InsuranceSuite applications to integrate with ContactManager
and how to manage client and vendor contacts in a single system of record. The intended readers are
PolicyCenter implementation engineers and ContactManager administrators.

About PolicyCenter documentation 29


Guidewire PolicyCenter 9.0.6 Configuration Guide

Document Purpose
Best Practices Guide A reference of recommended design patterns for data model extensions, user interface, business
rules, and Gosu programming. The intended readers are configuration engineers.
Integration Guide Describes the integration architecture, concepts, and procedures for integrating PolicyCenter with ex‐
ternal systems and extending application behavior with custom programming code. The intended
readers are system architects and the integration programmers who write web services code or plu‐
gin code in Gosu or Java.
Java API Reference Javadoc‐style reference of PolicyCenter Java plugin interfaces, entity fields, and other utility classes.
The intended readers are system architects and integration programmers.
Gosu Reference Guide Describes the Gosu programming language. The intended readers are anyone who uses the Gosu lan‐
guage, including for rules and PCF configuration.
Gosu API Reference Javadoc‐style reference of PolicyCenter Gosu classes and properties. The reference can be generated
at any time to reflect the current PolicyCenter configuration. The intended readers are configuration
engineers, system architects, and integration programmers.
Glossary Defines industry terminology and technical terms in Guidewire documentation. The intended readers
are everyone who works with Guidewire applications.
Product Model Guide Describes the PolicyCenter product model. The intended readers are business analysts and implemen‐
tation engineers who use PolicyCenter or Product Designer. To customize the product model, see the
Product Designer Guide.
Product Designer Guide Describes how to use Product Designer to configure lines of business. The intended readers are busi‐
ness analysts and implementation engineers who customize the product model and design new lines
of business.

Conventions in this document


Text style Meaning Examples
italic Indicates a term that is being defined, A destination sends messages to an external system.
added emphasis, and book titles. In Navigate to the PolicyCenter installation directory by running the
monospace text, italics indicate a variable to following command:
be replaced.
cd installDir

bold Highlights important sections of code in for (i=0, i<someArray.length(), i++) {


examples. newArray[i] = someArray[i].getName()
}

narrow bold The name of a user interface element, such Click Submit.
as a button name, a menu item name, or a
tab name.
monospace Code examples, computer output, class and The getName method of the IDoStuff API returns the name of the
method names, URLs, parameter names, object.
string literals, and other objects that might
appear in programming code.
monospace italic Variable placeholder text within code Run the startServer server_name command.
examples, command examples, file paths, Navigate to http://server_name/index.html.
and URLs.

Support
For assistance, visit the Guidewire Community.
30 About PolicyCenter documentation
Guidewire PolicyCenter 9.0.6 Configuration Guide

Guidewire customers
https://community.guidewire.com

Guidewire partners
https://partner.guidewire.com

About PolicyCenter documentation 31


Guidewire PolicyCenter 9.0.6 Configuration Guide

32 About PolicyCenter documentation


part 1

PolicyCenter configuration basics


Guidewire PolicyCenter 9.0.6 Configuration Guide
chapter 1

Overview of PolicyCenter
configuration

This topic provides some basic information, particularly about the Guidewire PolicyCenter data model and system
environment. Guidewire recommends that before you undertake any configuration changes, that you thoroughly
understand this information.

What you can configure


Application configuration files determine virtually every aspect of the PolicyCenter application. For example, you
can make the following changes by using XML configuration files and simple Gosu:

Extend the data model


You can add fields to existing entities handled by the application, or create wholly new entities to support a wide
array of different business requirements. You can:
• Add a field such as a column, typekey, array or foreign key to an extendable entity. For example, you can add an
IM Handle field to contact information.
• Create a subtype of an existing non-final entity. For example, you can create an Inspector object as a subtype of
Person.
• Create a new entity to model an object not supported in the base configuration product. For example, you can
create an entity to archive digital recordings of customer phone calls.

Change or augment the PolicyCenter application


You can extend the functionality of the application:
• Build new views of policies and other associated objects.
• Create or edit validators on fields in the application.
• Configure a new line of business.

Modify the PolicyCenter interface


You can configure the text labels, colors, fonts, and images that comprise the visual appearance of the PolicyCenter
interface. You can also add new screens and modify the fields and behavior of existing screens.

Implement security policies


You can customize permissions and security in XML and then apply these permissions at application runtime.
Overview of PolicyCenter configuration 35
Guidewire PolicyCenter 9.0.6 Configuration Guide

Create business rules and processes


You can create customized business-specific application rules and Gosu code. For example, you can create business
rules that perform specialized tasks for validation and work assignment.

Designate activity patterns


You can group work activities and assign to agents and underwriters.

Integrate with external systems


You can integrate PolicyCenter data with external applications.

Define application parameters


You can configure basic application settings such as database connections, clustering, and other application settings
that do not change during server runtime.

Define workflows
You can create new workflows, create new workflow types, and attach entities to workflows as context entities. You
can also set new instances of a workflow to start within Gosu business rules.

Guidewire internal methods


Some code packages contain Guidewire internal methods that are reserved for Guidewire use only. Gosu code
written to configure PolicyCenter must never call an internal method for any reason. Future releases of PolicyCenter
can change or remove an internal method without notification.
The following packages contain Guidewire internal methods.
• All packages in com.guidewire.*
• Any package whose name or location includes the word internal
Gosu configuration code can safely call methods defined in any gw.* package (except for those packages whose
name or location includes the word internal).

How you configure PolicyCenter


Guidewire provides a configuration tool, Guidewire Studio, that you use to edit files stored in the development
environment. (Guidewire also calls the development environment the configuration environment.) You then deploy
the configuration files by building a .war or .ear file and moving it to the application (production) server.
Guidewire Studio provides graphical editors for most of the configuration files. A few configuration files you must
manually edit (again, through Studio).

See also
• “Using the Studio editors” on page 127

Types of application environments


Configuring the application requires an installed development instance of the application (often called a
configuration environment). You use Guidewire Studio to edit the configuration files. Then, you create a .war
or .ear file and copy it to the production server. This section describes some of the particular requirements of these
two environments:
• “The development environment” on page 37
• “The production environment” on page 37
36 chapter 1: Overview of PolicyCenter configuration
Guidewire PolicyCenter 9.0.6 Configuration Guide

The development environment


The development environment for PolicyCenter has the following characteristics:
• It includes an embedded development QuickStart server and database for rapid development and deployment.
• It includes a repository for the source code of your customized application files. Guidewire expects you to check
your source code into a supported Software Configuration Management—SCM—system.
• It includes directories for the base configuration application files and your modifications of them.
• It provides command line tools for creating the deployment packages. (These are new, customized, versions of
the server application files that you use in a production environment.)
Guidewire provides a development environment (Guidewire Studio) that is separate from the production
environment. Guidewire Studio is a stand-alone development application that runs independently of Guidewire
PolicyCenter. You use Studio to build and test application customization in a development or test mode before
deploying your changes to a production server. (You can for example, modify a PCF file or add a new workflow.)
It is important to understand that any changes that you make to application files through Studio do not automatically
propagate into your production environment. You must specifically build a .war or .ear file and deploy it to a
production server for the changes to take effect. Studio and the production application server—by design—do not
share the same configuration file system.

The production environment


The deployed production application server for PolicyCenter has the following characteristics:
• It runs as an application within an application server.
• It handles web clients, or SOAP message requests, for policy information or services.
• It generates the web pages for browser-based client access to PolicyCenter.

Deploying configuration files


There is a vast difference in how you deploy modified configuration files in a development environment as opposed
to a production environment. The following sections describes these differences:
• “Deploying changes in a development environment” on page 37
• “Deploying changes to the production server” on page 38

Deploying changes in a development environment


In the base configuration, Guidewire provides an embedded application server in the development environment.
This, by design, shares its file structure with the Studio application configuration files. Thus:
• If you modify a file, in many cases, you do not need to deploy the changed configuration file. The development
server reflects the changes automatically. For example, if you add a new typelist, Studio recognizes this change.
• If you modify certain resource files, you must stop and restart Studio for the change to become effective. For
example, if you add a new workflow type, then you must stop and restart Studio before a Gosu class that you
create recognizes the workflow.
• If you modify the base configuration data model files, you must stop and restart the development server to force a
database upgrade.
It is possible to use a different development environment and database other than that provided by Guidewire in the
base configuration. If you do so, then deployment of modified configuration files can require additional work. For
details on implementing a different development environment, see the Installation Guide.

Overview of PolicyCenter configuration 37


Guidewire PolicyCenter 9.0.6 Configuration Guide

Deploying changes to the production server


About this task
To deploy configuration changes to the PolicyCenter production application server, you must do the following:
• Create an application .war (or .ear) file with your configuration changes in the development environment.
• Shut down the production server.
• Remove the old PolicyCenter instance on the production application server.
• Deploy the .war (or .ear) file to the production application server.
• Restart the production application server.
In the following procedure, notice whether you need to do a task on the development or production server.

Procedure
1. After making configuration changes in your development environment, run one of the build commands from
your development PolicyCenter directory.
For example:

gwb warTomcatDbcp

2. Shut down the production application server.


3. Delete the existing web application folder in the production server installation.
For example (for Tomcat), delete the following folder:

PolicyCenter/webapps/pc

Also, delete the existing .war (or .ear) file on the production server. In any case, moving a new copy to the
production server overwrites the existing file.
4. Navigate to your development installation dist directory (for example, PolicyCenter/dist). The build
script places the new pc.war or pc.ear file in this directory.
5. Copy the newly created pc.war file to the production webapps folder (for Tomcat). If using WebSphere or
WebLogic, use the administrative console to deploy the pc.ear file.
6. Restart the production application server.
7. During a server start, if the application recognizes changes to the data model, then it mandates that a database
upgrade be run. The server runs the database upgrade automatically.

See also
• If working in a clustered server environment, see the System Administration Guide.

Regenerating the data and security dictionaries


If you change the metadata, for example by extending base entities, it is important that you regenerate the Data
Dictionary and Security Dictionary to reflect those changes. In this way, other people who use the dictionaries can
see these changes.
To generate the Data Dictionary or the Security Dictionary, use one of the following methods:

Method Use to generate More information

PolicyCenter Administration→Utilit- Security Dictionary “Generating the security dictionary from PolicyCenter” on page
ies→Export Data 40
Command prompt gwb Security Dictionary “Generating the data and security dictionaries in HTML format”
genDataDictionary Data Dictionary on page 39
38 chapter 1: Overview of PolicyCenter configuration
Guidewire PolicyCenter 9.0.6 Configuration Guide

Method Use to generate More information


“Generating the data and security dictionaries in XML format” on
page 39

See also

• To understand the Data Dictionary and the information it includes, see “Working with the Data Dictionary” on
page 157.
• To understand the Security Dictionary and the information it includes, see the Application Guide

Generating the data and security dictionaries in HTML format


About this task

To generate the PolicyCenter Data Dictionary and PolicyCenter Security Dictionary in HTML format, run the
following command from the PolicyCenter directory:

gwb genDataDictionary

This command generates HTML files for the dictionaries in the following locations:

PolicyCenter/build/dictionary/data
PolicyCenter/build/dictionary/security

To view a dictionary, open its index.html file from the listed locations.

Generating the data and security dictionaries in XML format


About this task

You can generate the Data Dictionary and Security Dictionary in XML format, with associated XSD files. Use the
generated XML and XSD files to import the Data Dictionary and Security Dictionary into third-party database
design tools.
To generate the Data Dictionary and Security Dictionary in XML format, run the following command from the
PolicyCenter directory:

gwb genDataDictionary -DoutputFormat=xml

This command generates the following XML and XSD files for the dictionaries:

PolicyCenter/build/dictionary/data/entityModel.xml
PolicyCenter/build/dictionary/data/entityModel.xsd

PolicyCenter/build/dictionary/security/securityDictionary.xml
PolicyCenter/build/dictionary/security/securityDictionary.xsd

The parameter that specifies the output format has two allowed values.

-DoutputFormat={html|xml}

If you specify -DoutputFormat=html or you omit the -DoutputFormat parameter, the genDataDictionary
command generates HTML versions of the Data Dictionary and the Security Dictionary.

Overview of PolicyCenter configuration 39


Guidewire PolicyCenter 9.0.6 Configuration Guide

Generating the security dictionary from PolicyCenter


If you add or modify a user role or role permission, you need to regenerate the Security Dictionary to ensure that it
reflects the changes that you made. You can regenerate the Security Dictionary either through a command prompt
tool or from within PolicyCenter itself.
To generate the Security Dictionary from PolicyCenter, you must have administrative privileges and be able to
access the PolicyCenter Administration tab. On the Administration tab, navigate to the Utilities Export Data screen. From
here, you can download the current security information in HTML and XML format.

Generating the dictionaries as you generate a .war or .ear file


About this task
You can generate the Data Dictionary and the Security Dictionary in HTML format as you generate the Guidewire
application .war (.ear) file. To do so, use one of the build commands. For example:

gwb warTomcatDbcp -DincludeDictionary=true

See also
• Installation Guide

Aspects of regenerating the Security Dictionary


Guidewire PolicyCenter stores the role information used by the Security Dictionary in the base configuration in the
following file:

PolicyCenter/modules/configuration/config/import/gen/roleprivileges.csv

PolicyCenter does not write this file information to the database.


If you make changes to roles using the PolicyCenter interface, PolicyCenter does write these role changes to the
database.
PolicyCenter does not base the Security Dictionary on the actual roles that you have in your database. Instead,
PolicyCenter bases the Security Dictionary on the roleprivileges.csv file.

IMPORTANT It is possible for the Security Dictionary to become out of synchronization with the
actual roles in your database. Guidewire PolicyCenter bases the Security Dictionary on the file
roleprivileges.csv only.

Managing configuration changes


To track, troubleshoot and replicate the configuration changes that you make, Guidewire strongly recommends that
you use a Software Configuration Management (SCM) to manage the application source code.

40 chapter 1: Overview of PolicyCenter configuration


chapter 2

Application configuration parameters

This topic covers the PolicyCenter configuration parameters, which are static values that you use to control various
aspects of system operation. For example, you can control business calendar settings, cache management, and user
interface behavior through the use of configuration parameters, along with much more.

Working with configuration parameters


You set application configuration parameters in the file config.xml. You can find this file in the Guidewire Studio
Project tool window, under configuration→config.
This file generally contains entries in the following format:

<param name="param_name" value="param_value" />

Each entry sets the parameter named param_name to the value specified by param_value.
The config.xml file in the base configuration contains all available parameters. To set a parameter, edit the file,
locate the parameter, and change its value. PolicyCenter configuration parameters are case-insensitive. If a
parameter does not appear in the file, Guidewire PolicyCenter uses the default value, if the parameter has one.

Adding custom parameters to PolicyCenter


You cannot add new or additional configuration parameters to config.xml. If you want to add custom parameters to
your configuration of PolicyCenter, consider defining script parameters. You can access the values of script
parameters in Gosu code at runtime. For more information, see “Script parameters” on page 121.

Configuration parameter behaviors


The configuration parameters in config.xml may implement the following behaviors:

Behavior Summary More information


Required You must supply a value. “Required” on page 42
Set for environment You can set a different value for different servers in the same “Set for environment” on page 42
environment.
Development envi‐ The parameter is valid only on a development environment “Development environment only” on
ronment only server. page 42

Application configuration parameters 41


Guidewire PolicyCenter 9.0.6 Configuration Guide

Behavior Summary More information


Dynamic You can change the parameter value on a running server. “Dynamic” on page 42
Permanent Once you start the server, you cannot change the parameter “Permanent” on page 42
value.
Semi‐permanent Once you start the server, you can change the parameter value “Semi‐permanent” on page 43
only in limited ways.
Nullable The parameter value is allowed to be null. “Nullable” on page 43

Required
Guidewire designates certain configuration parameters as required, which means that you must supply a value for
that parameter.
Configuration parameters that are required have Required: Yes in their parameter descriptions.

Set for environment


Guidewire designates certain configuration parameters as possible for the parameter value to vary on different
servers in the same environment.
Configuration parameters that can be set per environment have Set for Environment: Yes in their parameter
descriptions.
Do not add a configuration parameter that is not designated as Set for Environment: Yes to a local configuration file.
If you do so, PolicyCenter prints a warning message in the configuration log file when the application server starts.
For example:

WARN Illegal parameter specified in a local config file (will be ignored): XXXXXXX

Note: For information on server environments in Guidewire PolicyCenter, see the System
Administration Guide.

Development environment only


Guidewire designates certain configuration parameters as permitted to be active only in a development environment.
A production server ignores any configuration parameters that are designated as such. A configuration parameter
with this behavior has Development Environment Only: Yes in its parameter description.

Dynamic
Guidewire designates certain configuration parameters as dynamic. This indicates that Guidewire permits you to
change this value on a running application server through management integration. The discussion of configuration
parameters indicates this by adding Dynamic: Yes to the parameter description.
See the Integration Guide.

Permanent
Guidewire specifies several configuration parameter values as permanent. After you set the value of a permanent
parameter and start the production application server, you cannot change the parameter’s value. An example is the
DefaultApplicationLocale configuration parameter. If you set the value of this parameter on a production server and
then start the server, you are unable to change the value thereafter.
Guidewire stores these values in the database and checks the value at server start up. If an application server value
does not match a database value, PolicyCenter throws an error.
42 chapter 2: Application configuration parameters
Guidewire PolicyCenter 9.0.6 Configuration Guide

Semi‐permanent
Guidewire specifies a limited number of configuration parameter values as semi-permanent. After you set the value
of a semi-permanent parameter and start the production application server, you can change the value of the
parameter only once to a specified value.

Nullable
The parameter value is allowed to be null.

View configuration parameters on a running server

About this task


You can view the configuration parameters and their values that are in effect on a running PolicyCenter server. To
change the values dynamically, you can create a management integration plugin.

Procedure
1. Open the Server Tools page of the PolicyCenter server.
2. In the sidebar, click Info Pages→Configuration.

Result
See the Integration Guide.

Access configuration parameters in Gosu


Procedure
To access a configuration parameter in Gosu code, use the following syntax:

gw.api.system.PCConfigParameters
gw.api.system.PLConfigParameters

Example
For example:

var businessDayEnd = gw.api.system.PLConfigParameters.BusinessDayEnd.Value


var forceUpgrade = gw.api.system.PLConfigParameters.ForceUpgrade.Value

Adding custom MIME types


About this task
Perform the following steps to add PolicyCenter support for a new MIME type (Multipurpose Internet Mail
Extension).

Procedure
1. If necessary, add the MIME type to the configuration of the application server. This step is dependent on the
configuration requirements of the application server.
For example, Tomcat stores MIME type information in the web.xml configuration file in a series of <mime-
mapping> tags. Verify that the needed MIME type exists in the appropriate file. If necessary, add it.
Application configuration parameters 43
Guidewire PolicyCenter 9.0.6 Configuration Guide

2. Add the new MIME type to the PolicyCenter config.xml file in the <mimetypemapping> section.
• For the name attribute, specify the name of the MIME type, such as text/plain.
• For the extensions attribute, specify the file extensions used by the MIME type. If the MIME type is used
by more than one file extension, separate each extension with a “|” character. PolicyCenter uses this
information to associate MIME types and file extensions. If retrieving a file extension from a MIME type,
PolicyCenter uses the first extension in the list. If retrieving a MIME type from a file extension,
PolicyCenter uses the first <mimetype> entry associated with the extension.
• For the icon attribute, specify the image to use for documents of the MIME type. For example, Tomcat
assumes the images are stored in the tomcat/webapps/pc/resources/images directory.
3. Create a description for the MIME type. The description is stored in the displaykey files. The definition has a
prefix of Mimetype. (notice the prefix-terminating period) followed by the MIME type name attribute
specified in the type’s definition in the config.xml <mimetypemapping> section. Any non-alphanumeric
character in the name must be replaced with an underscore character. For example, the text/plain MIME
type would have a displaykey description of Mimetype.text_plain.

Account parameters
Guidewire provides the following configuration parameters in the config.xml file related to approval activities.
For information on editing config.xml and setting configuration parameters, see “Working with configuration
parameters” on page 41.

AccountsWithdrawnAfterMonths
This parameter is one of the factors that Account Withdraw Evaluation batch processing uses to evaluate whether to
change an account's status to withdrawn. If the creation time or origination date of the account is greater than this
value in months, then the account can be withdrawn.
Default: 37 months

Archive parameters
Guidewire provides the following configuration parameters in the config.xml file that relate to archiving.

IMPORTANT Guidewire strongly recommends that you contact Customer Support before you
implement archiving.

See also
• “Working with configuration parameters” on page 41
• “Policy Term archiving” on page 681
• Application Guide

ArchiveDaysRetrievedBeforeArchive
Minimum number of days that must pass after PolicyCenter restores a policy term before it is possible to archive the
term again.
Default: 90

ArchiveDefaultRecheckDays
Minimum number of days that must pass before PolicyCenter reconsiders a policy term for archiving after a
previous check did not identify the policy term as an archiving candidate.
Default: 30
44 chapter 2: Application configuration parameters
Guidewire PolicyCenter 9.0.6 Configuration Guide

ArchiveEnabled
A boolean string that specifies whether archiving is enabled or disabled. If set to true, an archive storage area must
be implemented. An archive storage area can be implemented as a database, a regular file on a storage system, or
some other desired method of storage. The PolicyCenter base configuration does not provide an archive storage
area.
This parameter also controls the creation of indexes on the ArchivePartition column. If you set the value of this
parameter to true, PolicyCenter creates a non-unique index on the ArchivePartition column for Extractable
entities.
In PolicyCenter, ArchiveEnabled controls whether or not the domain graph is started. If this parameter and
DisableDomainGraphSupport are both true, the server will not start.
The value of ArchiveEnabled is semi-permanent, meaning that after you start the production server, you can change
the value of this parameter from false to true, but not the converse.

WARNING After you set ArchiveEnabled to true and start the server, you cannot change the
value again. If you reset the value to false, the server will not start.

Default: false
Required: Yes
Permanent: Semi-permanent

ArchivePolicyTermDays
Minimum number of days that must pass before the policy periods associated with a given policy term can be
archived.
Default: 366

ArchiveRecentJobCompletionDays
Minimum number of days that must pass after a job is closed before archiving the associated policy term. Jobs are
associated with policy periods.
Default: 90

DomainGraphKnownUnreachableTables
Use to define a comma-separated list of relative names of entity types that are linked to the graph through a nullable
foreign key. This can be problematic because the entity can become unreachable from the graph if the foreign key is
null. Naming the type in this configuration parameter suppresses the warning that would otherwise be generated for
the type by the domain graph validator
Default: None

Assignment parameters
Guidewire provides the following configuration parameters in the config.xml file that relate to assignment.
For information on editing config.xml and setting configuration parameters, see “Working with configuration
parameters” on page 41.

AssignmentQueuesEnabled
Whether to display the PolicyCenter interface portions of the assignment queue mechanism. If you turn this on, you
cannot turn it off again while working with the same database.
Default: false
Application configuration parameters 45
Guidewire PolicyCenter 9.0.6 Configuration Guide

Batch process parameters


Guidewire provides the following configuration parameters in the config.xml file that relate to batch processing.
For information on editing config.xml and setting configuration parameters, see “Working with configuration
parameters” on page 41.

BatchProcessHistoryPurgeDaysOld
Number of days to retain batch process history before PolicyCenter deletes it.
Default: 45

CleanupETLPurgeRoot
Minimum number of days that must pass after a purge event has occurred for the request to be eligible for delete by
the Cleanup ETLPurgeRoot process.
Default: 180

Business calendar parameters


Guidewire provides the following configuration parameters in the config.xml file that relate to defining a business
calendar.
For information on editing config.xml and setting configuration parameters, see “Working with configuration
parameters” on page 41.

BusinessDayDemarcation
The time at which a business day begins.
Default: 12:00 AM
Set For Environment: Yes

BusinessDayEnd
Indicates the time at which the business day ends.
Default: 5:00 PM
Set For Environment: Yes

BusinessDayStart
Indicates the time at which the business day starts.
Default: 8:00 AM
Set For Environment: Yes

BusinessWeekEnd
The day of the week considered to be the end of the business week.
Default: Friday
Set For Environment: Yes

HolidayList (obsolete)
This parameter is obsolete. Do not use it. Previously, you would use this to generate a comma-delimited list of
dates to consider as holidays. Instead, use the Administration screen within Guidewire PolicyCenter to manage the
46 chapter 2: Application configuration parameters
Guidewire PolicyCenter 9.0.6 Configuration Guide

official designation of holidays. Guidewire retains this configuration parameter to facilitate upgrade from older
versions of PolicyCenter.

IsFridayBusinessDay
Indicates whether Friday is a business day.
Default: true
Set for Environment: Yes

IsMondayBusinessDay
Indicates whether Monday is a business day.
Default: true
Set for Environment: Yes

IsSaturdayBusinessDay
Indicates whether Saturday is a business day.
Default: false
Set for Environment: Yes

IsSundayBusinessDay
Indicates whether Sunday is a business day.
Default: false
Set for Environment: Yes

IsThursdayBusinessDay
Indicates whether Thursday is a business day.
Default: true
Set for Environment: Yes

IsTuesdayBusinessDay
Indicates whether Tuesday is a business day.
Default: true
Set for Environment: Yes

IsWednesdayBusinessDay
Indicates whether Wednesday is a business day.
Default: true
Set for Environment: Yes

MaxAllowedDate
The latest date allowed to be used.
Default: 2200-12-31
Set For Environment: Yes
Application configuration parameters 47
Guidewire PolicyCenter 9.0.6 Configuration Guide

MinAllowedDate
The earliest date allowed to be used.
Default: 1800-01-01
Set For Environment: Yes

Business rules parameters


Guidewire provides the following configuration parameters in the config.xml file that relate to the business rules.
Business rules, which you manage through the PolicyCenterAdministration tab, are distinct from Gosu rules, which
you manage through Guidewire Studio.
For information on editing config.xml and setting configuration parameters, see “Working with configuration
parameters” on page 41.

See also
• Application Guide

BizRulesCacheStaleTimeMinutes
Time (in minutes) that PolicyCenter retains rule data in the RuleVersion cache before it considers cached items to
be stale and thus eligible for reaping.
PolicyCenter initializes the RuleVersion cache once, at server start up. It then rebuilds the cache every time the
following entities change:
• RuleHead
• RuleVersion
• Rule
Default: 60
Minimum: 1
Maximum: 120
Set for Environment: Yes

BizRulesDeploymentEnabled
Determines whether it is necessary to explicitly deploy a business rule before PolicyCenter can evaluate the rule. If
you set the value of this parameter to true, you must also provide a value for configuration parameter
BizRulesDeploymentId.

IMPORTANT Always set this parameter to true in a production environment.

It is possible to disable the requirement for rule deployment in a test or development environment, by setting
BizrulesDeploymentEnabled to false. In a non-production environment, if you do not enable business rule
deployment, PolicyCenter evaluates all enabled and valid rules at runtime, including rules in the draft state.
Default: false

BizRulesDeploymentId
Unique string identifier of the server to which you intend to deploy the business rules. There is no default value for
this parameter. If the value of BizRulesDeploymentEnabled is true, then you must supply a value for this
parameter. Otherwise, the server generates an error during server start and refuses to start. PolicyCenter ignores this
configuration parameter if the value of BizRulesDeploymentEnabled is false.
It is possible to change the value of this parameter through a server restart. However, if you change the value of
BizRulesDeploymentId, PolicyCenter does not update already deployed rule versions.
48 chapter 2: Application configuration parameters
Guidewire PolicyCenter 9.0.6 Configuration Guide

Guidewire recommends, in a production environment, that you have a single BizRulesDeploymentId value for the
entire production cluster. This action guarantees that all nodes in the cluster use the same BizRulesDeploymentId
parameter value. Using the same value on all cluster nodes ensures that rule deployment works consistently across
all nodes in the cluster. You can choose any name for this value if you use only a single PolicyCenter production
cluster. For example, if all nodes in a cluster point to a single database, you can use the database ID as the
BizRulesDeploymentId value.
However, if you use multiple production clusters, each separate cluster must have its own unique value for this
configuration parameter. PolicyCenter expressly does not permit you to import business rules from another cluster
instance that has the same BizRulesDeploymentId value as the cluster instance into which you are importing the
rules.
PolicyCenter associates the BizRulesDeploymentId value (name) with a rule during its deployment. Thus, if you
deploy the rule in one production cluster, the name appears along with the rule version number in other production
clusters to identify that the rule was deployed in a particular production cluster. For example, if the value of
BizRulesDeploymentId is GW100-A, the rule version appears as 1.GW100-A in all other production clusters.
Default: None

See also
• System Administration Guide

BizRulesImportBootstrapRules
Whether PolicyCenter imports the business rules located in folder config/import/bizrules on starting the
application server with an empty database. Set the value of this parameter to true to import the files located in the
bizrules folder.

IMPORTANT Guidewire recommends that you set the value of this configuration parameter to true in
a non-production test environment only.

Default: false

See also
• System Administration Guide

BizRulesLeafSearchNumOfHops
Maximum number of hops for a leaf search to search through in suggesting matching results. This parameter refers
to the autocomplete feature of the Rule Condition editor on the Business Rules detail screens.
In the following expression, A is the root, B is a single hop, and c is a leaf.

A.B.c

The following example illustrates a two hop expression, with the root being office and PhoneNumber the leaf.

office.ConferenceRooms[0].Table.PhoneNumber

Default: 3

BulkLoadRuleHeadByIdCacheEnabled
The Rule Head cache stores the RuleHead IDs for all business rules used in the application. If not configured to do
otherwise, PolicyCenter populates this cache using multiple database queries. The use of multiple queries can
greatly impact the performance of the business rules. However, if you set this configuration parameter to true,
PolicyCenter uses a single database query to bulk load the cache, thereby significantly improving the performance of
the business rules.
Application configuration parameters 49
Guidewire PolicyCenter 9.0.6 Configuration Guide

This parameter can take the following values:


• true - PolicyCenter uses a single query to populate the Rule Head cache.
• false - PolicyCenter uses multiple queries to populate the Rule Head cache.
Note: For information on how to bulk load the Rule Head cache at server start, see the System
Administration Guide.
Default: true

PreloadBizRulesBeansCacheEnabled
The Rule Entities cache stores the entities that comprise the entire rule graph for all rule versions that can possibly
execute in the application. If not configured to do otherwise, PolicyCenter populates this cache using multiple
database queries. The use of multiple queries can greatly impact the performance of the business rules. However, if
you set this configuration parameter to true, PolicyCenter uses a single database query to bulk load the cache,
thereby significantly improving the performance of the business rules.
This parameter can take the following values:
• true - PolicyCenter uses a single query to preload the Rule Entities cache with business rule entities from the
database.
• false - PolicyCenter uses multiple queries during rule execution to fetch the necessary business rule entities.
Note: For information on how to bulk load the Rule Entities cache at server start, see the System
Administration Guide.
Default: true

Cache parameters
Guidewire provides the following configuration parameters in the config.xml file that relate to the application
cache.
For information on editing config.xml and setting configuration parameters, see “Working with configuration
parameters” on page 41.

See also
• System Administration Guide

ExchangeRatesCacheRefreshIntervalSecs
The time between refreshes of the ExchangeRateSet cache, in seconds. This integer value must be 0 or greater. See
the System Administration Guide for more information.
Default: 600

GlobalCacheActiveTimeMinutes
Time period (in minutes) in which PolicyCenter considers cached items as active, meaning that Guidewire
recommends that the cache give higher priority to preserve these items. You can think of this as the period during
which PolicyCenter is using one or more items very heavily. For example, this can be the length of time that a user
stays on a page. The maximum value for this parameter is the smaller of 15 and the value of
GlobalCacheStaleTimeMinutes.
See the System Administration Guide for more information.
Default: 5
Minimum: 1
Maximum: 15
Set for Environment: Yes
50 chapter 2: Application configuration parameters
Guidewire PolicyCenter 9.0.6 Configuration Guide

GlobalCacheDetailedStats
Configuration parameter GlobalCacheDetailedStats determines whether to collect detailed statistics for the global
cache. Detailed statistics are data that PolicyCenter collects to explain why items are evicted from the cache.
PolicyCenter collects basic statistics, such as the miss ratio, regardless of the value of this parameter.
In the base configuration, Guidewire sets the value of the GlobalCacheDetailedStats parameter to false. Set the
parameter to true to help tune your cache.
At runtime, use the PolicyCenter Management Beans page to enable the collection of detailed statistics for the global
cache. If you disable the GlobalCacheDetailedStats parameter, PolicyCenter does not display the Evict Information
and Type of Cache Misses graphs.
Default: false
Dynamic: Yes
Required: Yes

GlobalCacheReapingTimeMinutes
Time (in minutes) since the last use before PolicyCenter considers cached items to be eligible for reaping. You can
think of this as the period during which PolicyCenter is most likely to reuse and entity. See the System
Administration Guide for more information.
Default: 15
Minimum: 1
Maximum: 15
Set for Environment: Yes

GlobalCacheSizeMegabytes
The amount of space to allocate to the global cache. If you specify this value, it takes precedence over
GlobalCacheSizePercent. See the System Administration Guide for more information.
Nullable: Yes
Set for Environment: Yes

GlobalCacheSizePercent
The percentage of the heap to allocate to the global cache. See the System Administration Guide for more
information.
Default: 15
Set for Environment: Yes

GlobalCacheStaleTimeMinutes
Time (in minutes) since the last write before PolicyCenter considers cached items to be stale and thus eligible for
reaping. See the System Administration Guide for more information.
Default: 60
Minimum: 1
Maximum: 120
Set for Environment: Yes
Dynamic: Yes

GlobalCacheStatsRetentionPeriodDays
Time period (in days), in addition to today, for how long PolicyCenter preserves statistics for historical comparison.
See the System Administration Guide for more information.
Application configuration parameters 51
Guidewire PolicyCenter 9.0.6 Configuration Guide

Default: 7
Minimum: 2
Maximum: 365
Set for Environment: Yes

GlobalCacheStatsWindowMinutes
Time period (in minutes). PolicyCenter uses this parameter for the following purposes:
• To define the period of time to preserve the reason for which PolicyCenter evicts an item from the cache, after
the event occurred. If a cache miss occurs, PolicyCenter looks up the reason and reports the reason in the Cache
Info page.
• To define the period of time to display statistics on the chart on the Cache Info page.
See the System Administration Guide for more information.
Default: 30
Minimum: 2
Maximum: 120
Set for Environment: Yes

GroupCacheRefreshIntervalSecs
The time in seconds between refreshes of the group cache. This integer value must be 0 or greater. See the System
Administration Guide for more information.
Default: 600

ScriptParametersRefreshIntervalSecs
The time between refreshes of the script parameter cache, in seconds. This integer value must be 0 or greater. See
the System Administration Guide for more information.
Default: 600

TreeViewRefresh
The time in seconds that Guidewire PolicyCenter caches a tree view state.
Default: 120

ZoneCacheRefreshIntervalSecs
The time between refreshes of the zone cache, in seconds. See the System Administration Guide for more
information.
Default: 86400

Clustering parameters
Guidewire provides the following configuration parameters in the config.xml file that relate to the application
clusters.
To improve performance and reliability, you can install multiple PolicyCenter servers in a configuration known as a
cluster. A cluster distributes client connections among multiple PolicyCenter servers, reducing the load on any one
server. If one server fails, the other servers transparently handle its traffic.
For information on editing config.xml and setting configuration parameters, see “Working with configuration
parameters” on page 41.
52 chapter 2: Application configuration parameters
Guidewire PolicyCenter 9.0.6 Configuration Guide

See also
• System Administration Guide

ClusteringEnabled
Whether to enable clustering on this application server.

Studio Read‐only Mode


If you set the value of ClusteringEnabled to true in file config.xml on a particular application server and then
restart the associated Studio, Studio becomes effectively read-only. In this context, read-only means:
• It is not possible to modify a Studio-managed resource. This applies, for example, to files that you open in the
Gosu or Rules editor.
• If it is possible to modify a Studio-managed resource, it is not possible to save any modification you make to that
resource. This applies, for example, to files that you open in the PCF editor.
To indicate the read-only status:
• Studio displays a padlock icon on the status bar that is visible only if Studio is in read-only mode. If you click the
icon, Studio displays a modal message box indicating the reason why it is in read-only mode.
• Studio disables the Save button any time that Studio is in read-only mode.
• Studio changes the Save button tooltip in read-only mode to display the reason that save is not active in this
mode. This is the same message that Studio shows if you click the padlock icon on the status bar.
Setting the value of configuration parameter “ResourcesMutable” on page 62 to false provides the same Studio
read-only behavior.
Default: false
Set for Environment: Yes

See also
• “ResourcesMutable” on page 62

ClusterMemberPurgeDaysOld
The number of days to keep cluster member records before they can be deleted.
Default: 30
Minimum value: 1
Required: true

ClusteringProductModelUpdateMaxRetries
Note: This configuration parameter has no meaning unless configuration parameter
ClusteringEnabled is set to true.
Sets the maximum number of retries for each cluster node to perform synchronized product model update
operations. In a multi-node PolicyCenter cluster, you install product model changes on one server, then start that
server to force the upgrade changes. After the first server completes the upgrade process, you can then start the other
nodes in the server cluster simultaneously. Due to the number of concurrent server starts, it is possible for there to be
contention for the shared update lock while updating the PolicyCenter product model on each node. This
configuration parameter sets the maximum number of times that a server node attempts to acquire the update lock
before failing.
This parameter works in conjunction with ClusteringProductModelUpdateRetryTimeout and
ClusteringProductModelUpdateSleepTimeCeiling. See ClusteringProductModelUpdateSleepTimeCeiling
for an explanation of how these parameters interact.
Default: 25 (retries)
Application configuration parameters 53
Guidewire PolicyCenter 9.0.6 Configuration Guide

ClusteringProductModelUpdateRetryTimeout
Note: This configuration parameter has no meaning unless configuration parameter
ClusteringEnabled is set to true.
Sets the time between successive attempts (retries) by a server node to perform synchronized product model update
operations. In a multi-node PolicyCenter cluster, you install product model changes on one server, then start that
server to force the upgrade changes. After the first server completes the upgrade process, you can then start the other
nodes in the server cluster simultaneously. Due to the number of concurrent server starts, it is possible for there to be
contention for the shared update lock while updating the PolicyCenter product model on each node. This
configuration parameter sets the time to wait between successive attempts to acquire the update lock.
Each node in the server cluster uses the following algorithm to calculate the timeout before the next retry attempt. In
this equation, TIMEOUT is the value of ClusteringProductModelUpdateRetryTimeout and n is the value of
ClusteringProductModelUpdateMaxRetries.
(TIMEOUT) + (2 * TIMEOUT) + ... + ((n-1) * TIMEOUT) + (n * TIMEOUT)
This parameter works in conjunction with ClusteringProductModelUpdateMaxRetries and
ClusteringProductModelUpdateSleepTimeCeiling. See ClusteringProductModelUpdateSleepTimeCeiling
for an explanation of how these parameters interact.
Default: 5000 (milliseconds)

ClusteringProductModelUpdateSleepTimeCeiling
Note: This configuration parameter has no meaning unless configuration parameter
ClusteringEnabled is set to true.
Sets the maximum time between successive attempts (retries) by a server node to perform synchronized product
model update operations. In a multi-node PolicyCenter cluster, you install product model changes on one server,
then start that server to force the upgrade changes. After the first server completes the upgrade process, you can then
start the other nodes in the server cluster simultaneously. Due to the number of concurrent server starts, it is possible
for there to be contention for the shared update lock while updating the PolicyCenter product model on each node.
Each cluster server uses a retry/back-off approach in which each retry causes an increasing sleep time delay on that
node. This configuration parameter sets the maximum allowable sleep time between successive attempts to acquire
the update lock. PolicyCenter uses the minimum of the calculated sleep time and this parameter value to calculate
the sleep time for each cluster node for each retry.
This parameter works in conjunction with ClusteringProductModelUpdateMaxRetries and
ClusteringProductModelUpdateRetryTimeout. The following table illustrates the connections between these
three configuration parameters.

Parameter Default Effect


Value
ClusteringProductModelUpdateMaxRetries 25 retries The server attempts to acquire the database lock and
fails. It then tries another n‐1 times to acquire the lock
until it is either successful or reaches the maximum
number of permitted retries (n), at which point the
lock acquisition fails.
ClusteringProductModelUpdateRetryTimeout 5 seconds The first retry attempt to acquire the lock occurs 5000
ms or 5 seconds after the first attempt. The second
retry occurs 10 seconds (2 * 5) after the second
attempt. The third retry occurs after 15 seconds (3 * 5).
This pattern repeats until the 9th retry, after which the
time between successive retries increases to 50
seconds (10 * 5).
ClusteringProductModelUpdateSleepTimeCeiling 50 seconds After the calculated time between retries equals the
value of the sleep time ceiling, PolicyCenter waits this
amount of time between all succeeding retry attempts
until the lock process either succeeds or fails.

54 chapter 2: Application configuration parameters


Guidewire PolicyCenter 9.0.6 Configuration Guide

Default: 50000 (milliseconds)

ConfigVerificationEnabled
Whether to check the configuration of this server against the other servers in the cluster. You must also set
configuration parameter ClusteringEnabled to true for ConfigVerificationEnabled to be meaningful.
WARNING Guidewire does not support disabling the ConfigVerificationEnabled parameter in
a production environment. Do not set this parameter to false unless specifically instructed to do
so by Guidewire Support.

Default: true
Set for Environment: Yes

PDFMergeHandlerLicenseKey
Provides the BFO (Big Faceless Organization) license key needed for server-side PDF generation. If you do not
provide a license key for a server, each generated PDF from that server contains a a large DEMO watermark on its
face. The lack of a license key does not, however, prevent document creation entirely.
It is possible to set this value differently for each server node in the cluster.
Default: None

SerializationWhitelistEnabled
Whether PolicyCenter permits only those Java classes placed on a serialization whitelist to be deserialized. In some
situations, it is possible for deserialized Java objects from untrusted sources to be used to perform remote code
invocation attacks against a Guidewire application server.
For this configuration parameter:
• If disabled, PolicyCenter permits any Java class sent over a cluster channel to be deserialized, except for those
classes specifically placed on a black (forbidden) list.
• If enabled, PolicyCenter permits only those Java classes placed on a white list to be deserialized if sent over a
cluster channel. If enabled, it is not possible to place any class on the black list on the white list as well.
You define the permitted (whitelist) and forbidden (blacklist) Java classes in the following configuration files:
• serialization-whitelist.lst
• serialization-blacklist.lst
The Server Tools Serialization Info screen (under Info Pages) provides a means of monitoring the deserialization of Java
classes.
Default: false

See also
• System Administration Guide

Database parameters
Guidewire provides the following configuration parameters in the config.xml file that relate to the application
database.
For information on editing config.xml and setting configuration parameters, see “Working with configuration
parameters” on page 41.

DisableHashJoinPolicySearch
On an Oracle database, you can improve the performance of a policy search—if the search criteria include a first
name, last name or a company name—by disabling a Hash Join.
Application configuration parameters 55
Guidewire PolicyCenter 9.0.6 Configuration Guide

Default: true

DisableIndexFastFullScanForPolicySearch
On Oracle, you can improve the performance of a policy search—if the search criteria include a first name, last
name or a company name—by disabling an Index Fast Full Scan. This parameter has no effect on databases other
than Oracle.
Default: true

DisableSequenceUtil
Disables the sequence utility class gw.api.system.database.SequenceUtil. Use this to ensure that any sequences
in your code use some alternative mechanism for sequenced identifiers.
Default: false

DisableSortMergeJoinPolicySearch
On Oracle, you can improve the performance of a policy search—if the search criteria include a first name, last
name or a company name—by disabling a Sort Merge Join. This parameter has no effect on databases other than
Oracle.
Default: true

DiscardQueryPlansDuringStatsUpdateBatch
Whether to instruct the database to discard existing query plans during a database statistics batch process.
Default: false

IdentifyQueryBuilderViaComments
(SQL Server only.) Whether to provide comments with contextual information in certain SQL Select statements
sent to the relational database. The comments are generated by instrumentation in higher level database objects
created by using the query builder APIs.
The SQL comments are in the following format:

/* applicationName:ProfilerEntryPoint */

The applicationName component of the comment is PolicyCenter.


The ProfilerEntryPoint component of the comment is the name of an entry point known to the Guidewire
profiler for that application. For example, ProfilerEntryPoint might have the value WebReq:ClaimSearch.
Default: true

See also
• Gosu Reference Guide

IdentifyORMLayerViaComments
(SQL Server only.) Whether to provide comments with contextual information in certain SQL Select statements
sent to the relational database. The comments are generated by instrumentation in lower level objects, such as beans,
typelists, and other database building blocks.
The SQL comments are in the following format:

/* applicationName:ProfilerEntryPoint */

The applicationName component of the comment is PolicyCenter.


56 chapter 2: Application configuration parameters
Guidewire PolicyCenter 9.0.6 Configuration Guide

The ProfilerEntryPoint component of the comment is the name of an entry point known to the Guidewire
profiler for that application. For example, ProfilerEntryPoint might have the value WebReq:ClaimSearch.
Default: false

See also
• Gosu Reference Guide

MigrateToLargeIDsAndDatetime2
(SQL Server only.) Use to control whether to migrate to large 64-bit IDs in the database while upgrading. Migrating
to 64-bit IDs is an expensive operation. Also updates timestamps to use the data type Datetime2.
Default: true

UseOracleHintsOnMessageQueries
An Oracle database can experience improved performance if Oracle hints are used on queries for Message objects.
This parameter effects Oracle databases only.
Default: true

Data destruction parameters


Guidewire provides configuration parameters in the config.xml file that relate to destruction of data. In the base
configuration of PolicyCenter, data destruction is not enabled. You must set configuration parameters to enable data
destruction.

See also
• “Data destruction configuration parameters” on page 687
• “Working with configuration parameters” on page 41.

ArchiveReferenceTrackingEnabled Parameter
When archiving is enabled, you must set this parameter to true to enable tracking of archived objects for personal
data destruction. This parameter must also be set to true before you run the ArchiveReferenceTrackingSync
batch process to build the table of objects that you have already archived.
In the base configuration, this parameter is false.

ContactDestructionRequestAgeForPurgingResults parameter
Used by the RemoveOldContactDestructionRequest work queue to determine the age of
PersonalDataDestructionRequest objects that have a status of Finished. In the base configuration, this parameter
is set to 10 days.

See also

PersonalDataDestructionEnabled parameter
Set this parameter to true to enable destruction of personal data. In the base configuration, this parameter is false.
The server will not start if both PersonalDataDestructionEnabled and DisableDomainGraphSupport parameters
are true.
Application configuration parameters 57
Guidewire PolicyCenter 9.0.6 Configuration Guide

Desktop and team parameters


Guidewire provides the following configuration parameters in config.xml that relate to the Desktop and Team tabs.
For information on editing config.xml and setting configuration parameters, see “Working with configuration
parameters” on page 41.

ActivityStatisticsWindowSize
Time window to capture activity statistics.
Default: 0

OtherWorkOrdersStatisticsWindowSize
Time window that the Team tab uses to calculate statistics for work orders other than renewals and submissions.
Possible values are:

0 Use this week as the window, defined as the start of the current business week until now.
‐1 Use this month as the window, defined as the start of the current month until now.
Any positive integer N The window is the last N days of activity, including the current day.

Default: 0

See also
• “Setting the window size for team statistics” on page 614
• Application Guide

RenewalsStatisticsWindowSize
Time window that the Team tab uses to calculate renewal statistics. Possible values are:

0 Use this week as the window, defined as the start of the current business week until now.
‐1 Use this month as the window, defined as the start of the current month until now.
Any positive integer N The window is the last N days of activity, including the current day.

Default: 0

See also
• “Setting the window size for team statistics” on page 614
• Application Guide

SearchActivityThresholdDays
This parameter controls the threshold within which an activity must have been modified to qualify a job as being
assigned to a user. The UpdateTime field on an activity contains a timestamp of when the activity was last modified.
The activity must have been modified within SearchActivityThresholdDays days before the current date.
Default: 366

See also
• “Configuring the Team tab” on page 613
58 chapter 2: Application configuration parameters
Guidewire PolicyCenter 9.0.6 Configuration Guide

• Application Guide

SubmissionsStatisticsWindowSize
Time window that the Team tab uses to calculate submission statistics. Possible values are:

0 Use this week as the window, defined as the start of the current business week until now.
‐1 Use this month as the window, defined as the start of the current month until now.
Any positive integer N The window is the last N days of activity, including the current day.

Default: 0

See also
• “Setting the window size for team statistics” on page 614
• Application Guide

TeamScreenTabVisibilityRowCountCutoff
This parameter sets the maximum number of rows on the Team tab screens. Increasing this parameter potentially
increases the amount of time that PolicyCenter takes to render the Team screens. If the results exceed the value of
this parameter, then PolicyCenter displays a message on that screen and does not display the results.
If you select an individual user, PolicyCenter always displays the filtered results even if the number of results
exceeds the cutoff parameter.
Default: 200
• “Setting the maximum number of rows on the Team screens” on page 616
• Application Guide

Document creation and document management parameters


Guidewire provides configuration parameters in the config.xml file that relate to document creation and
management.

See also
• “Working with configuration parameters” on page 41
• Application Guide

DisplayDocumentEditUploadButtons
Whether the Documents list displays Edit and Upload buttons. Set this parameter to false if the
IDocumentContentSource integration mechanism does not support it.
Default: true

DocumentContentDispositionMode
The Content-Disposition header setting to use when PolicyCenter returns document content directly to the
browser. Supported settings are inline and attachment.
Default: inline

DocumentTemplateDescriptorXSDLocation
The path to the XSD file that PolicyCenter uses to validate document template descriptor XML files. Specify this
location relative to the following directory:
Application configuration parameters 59
Guidewire PolicyCenter 9.0.6 Configuration Guide

modules/configuration/config/resources/doctemplates

FinalDocumentsNotEditable
Indicates whether documents with Final status can be transferred by using the Asynchronous implementation of the
IDocumentContentSource plugin. A value of false indicates that documents with Final status can be transferred. A
value of true indicates that documents with Final status cannot be transferred.
Default: false

MaximumFileUploadCount
The maximum number of document content files that can be listed and uploaded at once. The number of files listed
for upload can affect the performance of the upload screen.
Default: 200

MaximumFileUploadSize
The maximum allowable size in megabytes for a document file that you can upload to the server. Attempting to
upload a file larger than this size results in failure. Because the uploaded document must be handled on the server,
this parameter protects the server from possible memory consumption problems.
Default: 150 MB

MaximumTotalUploadSize
The maximum allowable total size in megabytes per session for documents uploads that are pending commitment to
the document management system. Because multiple documents can be uploaded at once, this value also provides
control of the overall size of an upload and protects the server from possible memory consumption problems.
Default: 150 MB

Environment parameters
Guidewire provides the following configuration parameters in the config.xml file that relate to the application
environment.
For information on editing config.xml and setting configuration parameters, see “Working with configuration
parameters” on page 41.

AddressVerificationFailureAsError
Set to true to have address verification failures shown as errors instead of warnings. This parameter has no effect if
EnableAddressVerification is set to false.
Default: false

See also
• “EnableAddressVerification” on page 61

AlwaysShowPhoneWidgetRegionCode
Whether the phone number widget in the application user interface always displays a selector for phone region
codes.
Default: false
Set for Environment: Yes
60 chapter 2: Application configuration parameters
Guidewire PolicyCenter 9.0.6 Configuration Guide

CurrentEncryptionPlugin
Set this value to the name of the plugin that you intend to use to manage encryption. Typically, a Guidewire
installation has only a single implementation of an encryption plugin interface. However, you can, for example,
decide to implement a different encryption algorithm using a different implementation of the encryption interface as
part of an upgrade process. In this case, you must retain your old encryption plugin implementation in order to
support the upgrade.
To support multiple implementations of encryption plugins, PolicyCenter provides the CurrentEncryptionPlugin
configuration parameter. Set this configuration parameter to the EncryptionID of the encryption plugin currently in
use—if you have implemented multiple versions IEncryption plugin interface.
• If you do not provide a value for this configuration parameter, then data is unencrypted.
• If you create multiple implementations of a plugin interface, then you must name each plugin implementation
individually and uniquely.
IMPORTANT PolicyCenter does not provide an encryption algorithm. You must determine the best
method to encrypt your data and implement it.

Default: None

See also
• For information on using the Plugins Registry editor, see “Using the plugins registry editor” on page 129.
• Integration Guide

DeprecatedEventGeneration
Whether to use the now-deprecated event logic that had previously been available.
Default: false

EnableAddressVerification
Set this value to true to enable address verification warnings. Address verification checks that all the fields match
each other based on the zone data.
This parameter works in concert with the AddressVerificationFailureAsError parameter to show either a
warning or an error, as follows:
• If EnableAddressVerification is true and AddressVerificationFailureAsError is false, PolicyCenter
shows a warning message if verification against zone data fails.
• If EnableAddressVerification is true and AddressVerificationFailureAsError is true, PolicyCenter
shows an error message if verification against zone data fails.
• If EnableAddressVerification is false, PolicyCenter does not verify the address based on zone data.
Default: false

See also
• “AddressVerificationFailureAsError” on page 60

EnableInternalDebugTools
Make internal debug tools available to developers.
Default: false
Set for Environment: Yes

KeyGeneratorRangeSize
The number of key identifiers (as a block) that the server obtains from the database with each request. This integer
value must be 0 or greater.
Application configuration parameters 61
Guidewire PolicyCenter 9.0.6 Configuration Guide

As you create a new PolicyCenter object such as a Policy, PolicyCenter assigns it a key, or unique public identifier.
To ensure that keys are unique, the server requests an available key from the PolicyCenter database. If every server
in a cluster queried the database each time it needed a single key, performance would degrade.
Instead, use this configuration parameter to obtain a block of keys with a single request. For example, a server can
reserve a block of 100 keys, and then assign each key without needing to query the database again. The server
continues to assign the keys from a block until it uses all keys in that block.
The default value of 100 is large enough to prevent frequent database queries for more keys. It is also small enough
to not waste too many keys that the server reserves but never uses. The server discards allocated but unused keys as
it shuts down. Keys are 64-bit integers, so wasting a few keys is not an issue. The default value of 100 is reasonable
in most situations.
Default: 100

MemoryUsageMonitorIntervalMins
How often the PolicyCenter server logs memory usage information, in minutes. This is often useful for identifying
memory problems.
To disable the memory monitor, do one of the following:
• Set this parameter to 0.
• Remove this parameter from config.xml.
Default: 0

PublicIDPrefix
The prefix to use for public IDs generated by the application. Generated public IDs are of the form prefix:id.
This id is the actual entity ID. Guidewire strongly recommends that you set this parameter to different values in
production and test environments to allow for the clean import and export of data between applications.
This PublicIDPrefix must not exceed 9 characters in length. Use only letters and numbers. Do not use space
characters, colon characters, or any other characters that other applications might process or escape specially. Do not
specify a two-character value. Guidewire reserves for itself all public IDs that start with a two-character ID and then
a colon

IMPORTANT Guidewire reserves two-character public ID prefixes for its own current or future use.

Required: Yes
Default: None

ResourcesMutable
Indicates whether resource are mutable (modifiable) on this server. If you connect Studio to a remote server (on
which this parameter set to true), then Studio pushes resource changes to the remote server as you save local
changes. Guidewire strongly recommends that you set this value to false on a production server to prevent changes
to the configuration resources directory.
See also “RetainDebugInfo” on page 63.

Studio Read‐only Mode


If you set the value of ResourcesMutable to false in config.xml on a particular application server and then restart
the associated Studio, that Studio becomes effectively read-only. In this context, read-only means:
• It is not possible to modify a Studio-managed resource. This applies, for example, to files that you open in the
Gosu or Rules editor.
• If it is possible to modify a Studio-managed resource, it is not possible to save any modification you make to that
resource. This applies, for example, to files that you open in the PCF editor.
62 chapter 2: Application configuration parameters
Guidewire PolicyCenter 9.0.6 Configuration Guide

To indicate the read-only status:


• Studio displays a padlock icon on the status bar that is visible only if Studio is in read-only mode. If you click the
icon, Studio displays a modal message box indicating the reason why it is in read-only mode.
• Studio disables the Save button any time that Studio is in read-only mode.
• Studio changes the Save button tooltip in read-only mode to display the reason that save is not active in this
mode. This is the same message that Studio shows if you click the padlock icon on the status bar.
Setting the value of configuration parameter ClusteringEnabled to true provides the same Studio read-only
behavior.
Default: true

WARNING Guidewire recommends that you always set this configuration parameter to false in a
production environment. Setting this parameter to true has the potential to modify resources on a
production server in unexpected and possibly damaging ways.

See also

• “ClusteringEnabled” on page 53

RetainDebugInfo
Whether the production server retains debugging information. This parameter facilitates debugging from Studio
without a type system refresh.
• If set to true, PolicyCenter does not clear debug information after compilation.
• If set to false, the server does not retain sufficient debugging information to enable debugging. As a production
server does not recompile types, it is not possible to regenerate any debugging information.
Default: false

See also

• “ResourcesMutable” on page 62

StrictDataTypes
Controls whether PolicyCenter uses the pre-PolicyCenter 4.0 behavior for configuring data types, through the use of
the fieldvalidators.xml file.
• Set this value to false to preserve the existing behavior. This is useful for existing installations that are
upgrading but want to preserve the existing functionality.
• Set this value to true to implement the new behavior. This is use for new PolicyCenter installations that want to
implement the new behavior.

StrictDataTypes = true

If you set the StrictDataTypes value to true, then PolicyCenter:


• Does not permit decimal values to exceed the scale required by the data type. The setter throws a
gw.datatype.DataTypeException if the scale is greater than that allowed by the data type. You are responsible
for rounding the value, if necessary.
• Validates field validator formats in both the PolicyCenter user interface and in the field setter.
• Validates numeric range constraints in both the PolicyCenter user interface and in the field setter.
Application configuration parameters 63
Guidewire PolicyCenter 9.0.6 Configuration Guide

StrictDataTypes = false
If you set the StrictDataTypes value to false, then PolicyCenter:
• Auto-rounds decimal values to the appropriate scale, using the RoundHalfUp method. For example, setting the
value 5.045 on a field with a scale of 2 sets the value to 5.05.
• Validates field validator formats in the interface but not at the setter level. For example, PolicyCenter does not
permit a field with a validator format of [0-9]{3}-[0-9]{2}-[0-9]{4} to have the value 123-45-A123 in the
interface. It is possible, however, to set a field to that value in Gosu code, for example. This enables you to
bypass the validation set in the interface.
• Validates numeric range constraints in the interface, but not at the setter level. For example, Guidewire does not
allow a field with a maximum value of 100 to have the value 200 in the interface. However, you can set the field
to this value in Gosu rules, for example. This enables you to bypass the validation set in the interface.
Default: true

TwoDigitYearThreshold
The threshold year value for determining whether to resolve a two-digit year to the earlier or later century.
Default: 50

UnreachableCodeDetection
Determines whether the Gosu compiler generates errors if it detects unreachable code or missing return statements.
Default: true

UnrestrictedUserName
By default, PolicyCenter uses the su user as the user with unrestricted permissions to do anything in PolicyCenter.
To set the unrestricted user to a different user, set the value of the UnrestrictedUserName parameter to that user’s
login name.
Default: su

UseOldStylePreUpdate
Deprecated. This parameter has no effect in PolicyCenter.
Default: false

WarnOnImplicitCoercion
A value of true indicates that the Gosu compiler generates warnings if it determines that an implicit coercion is
occurring in a program.
Default: true

WebResourcesDir
Specifies the location of the Web resources directory under the root of the Tomcat configuration directory.
Default: resources

Financial parameters
Guidewire provides the following parameters in the config.xml file to help configure how PolicyCenter works with
monetary amounts.
For information on editing config.xml and setting configuration parameters, see “Working with configuration
parameters” on page 41.
64 chapter 2: Application configuration parameters
Guidewire PolicyCenter 9.0.6 Configuration Guide

See also
• Globalization Guide

Geocoding parameters
Guidewire provides the following configuration parameters in the config.xml file that relate to geocoding.
For information on editing config.xml and setting configuration parameters, see “Working with configuration
parameters” on page 41.

UseGeocodingInPrimaryApp
If true, PolicyCenter enables searching for nearby locations in the Reinsurance Management user interface.
ContactManager does not respond to this parameter.
Default: false

ProximitySearchOrdinalMaxDistance
A distance that provides an approximate bound to improve performance of an ordinal (nearest n items) proximity
search. This distance is in miles, unless you set UseMetricDistancesByDefault to true. This parameter has no
effect on radius (within n miles or kilometers) proximity searches or walking-the-group-tree-based proximity
assignment.
Default: 300

ProximityRadiusSearchDefaultMaxResultCount
The maximum number of results to return if performing a radius (within n miles or kilometers) proximity search.
This parameter has no effect on ordinal (nearest n items) proximity searches.
Default: 1000

UseMetricDistancesByDefault
If true, PolicyCenter uses kilometers and metric distances instead of miles and United States distances for location
searches. Set this parameter identically in both PolicyCenter and ContactManager.
Default: false

Globalization parameters
Guidewire provides the following configuration parameters in the config.xml file that relate to globalization.
For information on editing config.xml and setting configuration parameters, see “Working with configuration
parameters” on page 41.

IMPORTANT If you integrate the core applications in Guidewire InsuranceSuite, you must set the
values of DefaultApplicationCurrency and MulticurrencyDisplayMode to be the same in each
application.

DefaultApplicationLanguage
Default display language for the application as a whole.

IMPORTANT This parameter setting is permanent. Once you set the parameter and then start the
server, you cannot change the value.

Default: en_US
Application configuration parameters 65
Guidewire PolicyCenter 9.0.6 Configuration Guide

Permanent: Yes

See also
• Globalization Guide

DefaultApplicationLocale
Default locale for regional formats in the application. You must set configuration parameter
DefaultApplicationLocale to a typecode contained in the LocaleType typelist.

IMPORTANT This parameter setting is permanent. Once you set the parameter and then start the
server, you cannot change the value.

Default: en_US
Permanent: Yes

See also
• Globalization Guide

DefaultApplicationCurrency
Default currency for the application. You must set configuration parameter DefaultApplicationCurrency to a
typecode contained in the Currency typelist, even if you configure PolicyCenter with a single currency. Guidewire
applications which share currency values must have the same DefaultApplicationCurrency setting in their
respective config.xml files. The default currency is sometimes known as the preferred currency.

IMPORTANT This parameter setting is permanent. Once you set the parameter and then start the
server, you cannot change the value.

Default: usd
Permanent: Yes

See also
• Globalization Guide

DefaultRoundingMode
Sets the default rounding mode for monetary amount calculations.
The available choices are a subset of those supported by java.math.RoundingMode, namely:
• UP
• DOWN
• CEILING
• FLOOR
• HALF_UP
• HALF_DOWN
• HALF_EVEN
Guidewire strongly recommends that you use one of the following:
• HALF_UP
• HALF_EVEN
You can access this value in Gosu code by using the following method:

gw.api.util.CurrencyUtil.getRoundingMode()

66 chapter 2: Application configuration parameters


Guidewire PolicyCenter 9.0.6 Configuration Guide

IMPORTANT This parameter setting is permanent. Once you set the parameter and then start the
server, you cannot change the value.

Default: HALF_UP
Permanent: Yes

See also
• Globalization Guide

MulticurrencyDisplayMode
Determines whether PolicyCenter displays currency selectors for monetary values. The following are the allowed
values for MulticurrencyDisplayMode:
• SINGLE
• MULTIPLE
In the base configuration of PolicyCenter, the value is set to SINGLE. You can change the value to MULTIPLE once
only. After you change the value to MULTIPLE, you cannot later change it back to SINGLE. If you change the value
back to SINGLE, subsequent attempts to start the server fail.
Default: SINGLE
Permanent: Semi-permanent

See also
• Globalization Guide

DefaultCountryCode
The default ISO country code that PolicyCenter uses if the country for an address is not set explicitly. PolicyCenter
also uses the value of this parameter as the default country code for new addresses that it creates. The country code
must be a valid ISO country code that exists as a typecode in the Country typelist.
See the following page to search a list of ISO country codes:

https://www.iso.org/obp/ui

DefaultPhoneCountryCode
The default ISO country code used for phone data.
Default: None

DefaultNANPACountryCode
The default country code for region 1 phone numbers. If the area code is not in the nanpa.properties map file,
then it defaults to the value configured with this parameter.
Default: US

AlwaysShowPhoneWidgetRegionCode
Whether the phone number widget in the application user interface always displays a selector for phone region
codes.
Default: false
Application configuration parameters 67
Guidewire PolicyCenter 9.0.6 Configuration Guide

Integration parameters
Guidewire provides the following configuration parameters in the config.xml file that relate to how multiple
Guidewire applications integrate with each other.
For information on editing config.xml and setting configuration parameters, see “Working with configuration
parameters” on page 41.

BillingSystemArchiveEnabled
Whether or not the archiving is enabled in the billing system. This parameter needs to match billing system settings
for archiving.
Default: false

BillingSystemArchivePolicyPeriodDays
The minimum number of days after the term end date before the billing policy period is archived. This value must be
less than the setting in the billing system. This value must be less than or equal to the setting in the billing system.
Guidewire recommends setting the value to be equal and keeping the value of
BillingSystemArchivePolicyPeriodDays synchronized with the value of ArchivePolicyPeriodDays in
BillingCenter.
This parameter is used to decide whether to check the billing system for the archiving flag. A negative value
disables this check, and PolicyCenter ignores the archiving flag when determining whether to call the billing system
API. This parameter is applicable only if the BillingSystemArchiveEnabled parameter is true.
Default: -1

BillingSystemURL
URL to use in ExitPoint PCF pages that view items in the billing system.
• If integrating Guidewire PolicyCenter with Guidewire BillingCenter, then set this parameter to the BillingCenter
base URL (for example, http://server/bc). In this case, the exit points add the appropriate BillingCenter entry
point.
• If integrating with a non-Guidewire billing system, then you need to modify the ExitPoint PCF to set up the
parameters required by that system.
• If you omit this parameter or if you set it to an empty string, then PolicyCenter hides the buttons in the interface
that take you to the exit points.
Default: Empty string

See also
• Integration Guide

ClaimSystemURL
URL to use in ExitPoint PCF pages that view items in the claims system.
• If integrating Guidewire PolicyCenter with Guidewire ClaimCenter, then set this parameter to the ClaimCenter
base URL (for example, http://server/cc). In this case, the exit points add the appropriate ClaimCenter entry
point.
• If integrating with a non-Guidewire claim system, then you need to modify the ExitPoint PCF to set up the
parameters required by that system.
• If you omit this parameter or if you set it to an empty string, then PolicyCenter hides the buttons in the interface
that take you to the exit points.
Default: Empty string
68 chapter 2: Application configuration parameters
Guidewire PolicyCenter 9.0.6 Configuration Guide

See also
• Integration Guide

DefaultXmlExportIEncryptionId
The unique encryption ID of an encryption plugin. If archiving is enabled, PolicyCenter uses the encryption plugin
to encrypt any encrypted fields during XML serialization.
Default: null (no encryption)

KeepCompletedMessagesForDays
Number of days after which PolicyCenter purges old messages in the message history table.
Default: 90

LockDuringDistributedMessageRequestHandling
When processing a distributed message transaction, the parameter determines whether to lock the transaction's
message object. The parameter has no effect on non-distributed message transactions.
Default: false

LockPrimaryEntityDuringMessageHandling
When processing a message transaction, the parameter determines whether to lock the primary entity instance
associated with the message. If the message has no primary entity associated with it, the parameter has no effect.
Default: true
Regardless of the parameter's setting, the primary entity instance is locked only if the transaction's message object is
also locked. For example, a distributed message transaction that does not lock its message object will not lock the
primary entity either, even if locking of the entity is enabled by this parameter. Whether a distributed message
transaction locks its message object is determined by the LockDuringDistributedMessageRequestHandling
configuration parameter.

PaymentSystemURL
URL to use in ExitPoint PCF pages that view items in a payment system.
• If integrating Guidewire PolicyCenter with Guidewire BillingCenter, then set this parameter to the BillingCenter
base URL (for example, http://server/bc). In this case, the exit points add the appropriate BillingCenter entry
point.
• If integrating with a non-Guidewire billing system, then you need to modify the ExitPoint PCF to set up the
parameters required by that system.
• If you omit this parameter or if you set it to an empty string, then PolicyCenter hides the buttons in the interface
that take you to the exit points.
Note: Guidewire configures this parameter in the base configuration to work with a demonstration
payment system. For more details, see the Integration Guide.
Default: pc

See also
• Integration Guide

PluginStartupTimeout
OSGi plugins startup timeout (in seconds). The PluginConfig component waits for at most this time for all required
OSGi plugins to start. The PluginConfig component reports an error for each OSGi plugin that does not start after
this timeout has expired.
Application configuration parameters 69
Guidewire PolicyCenter 9.0.6 Configuration Guide

Default: 60

Job expiration parameters


Guidewire provides the following configuration parameters in config.xml that relate to how PolicyCenter handles
jobs.
PolicyCenter provides a Job Expire (jobexpire) batch process that moves jobs from the New, Draft, or Quote status to
the Expired status. This process first examines all jobs that have a New, Draft, or Quote status. From this set of jobs, the
batch process expires the jobs that meet all of the following criteria:
• The job meets the expiration threshold.
• The job meets the creation threshold.
• The job.canExpireJob method returns true for that job type.
In the base configuration, this process moves Submission jobs to the Expired status if all of the following are true:
• The job status is either New, Draft, or Quote.
• The job is at least seven days past the effective date of the policy.
Setting the expiration and creation thresholds – Modify the following parameters to configure the expiration and
creation thresholds. If you enable both parameters, the job must meet both thresholds.
• “JobExpirationEffDateThreshold” on page 71 – The number of days past the policy effective date before the
batch process JobExpire expires a job.
• “JobExpirationCreateDateThreshold” on page 71 – The number of days past the job creation date before batch
process JobExpire expires a job.
Expiring different job types – You can also enable expiration for job types other than Submission. To facilitate this
process, PolicyCenter provides a number of Boolean configuration parameters of the following pattern:

JobExpirationCheck<JobType>

Job types – For this configuration parameter, <JobType> can be any of the following:
• Audit
• Cancellation
• Issuance
• PolicyChange
• Reinstatement
• Renewal
• Rewrite
• Submission
• TestJob
To enable the expiration of a particular job type, set JobExpirationCheck<JobType> to true for that particular job
type.

See also
• “Changing jobs to expired status” on page 715
• System Administration Guide

JobExpirationCheckAudit
Set to true to enable PolicyCenter to expire this job type. For audit jobs, you must override the canExpireJob
method in the gw.job.AuditProcces class and modify it to return true. You can find this class in the Classes folder
in Studio.
Default: false
70 chapter 2: Application configuration parameters
Guidewire PolicyCenter 9.0.6 Configuration Guide

JobExpirationCheckCancellation
Set to true to enable PolicyCenter to expire this job type.
Default: false

JobExpirationCreateDateThreshold
Number of days past the job creation date before batch process JobExpire expires a job. Batch process JobExpire
first examines all jobs meeting the date criteria set by this parameter. In addition to this threshold, the job must also
meet the JobExpirationEffDateThreshold threshold. The batch process then expires those jobs for which
job.canExpireJob is true.
The job creation date is specified in Job.CreateTime.
A value of -1 disables this parameter.

IMPORTANT Setting the create date threshold to a negative number effectively disables create date
checking, as it is not possible to create a job with a future create date. Disabling
JobExpirationCreateDateThreshold does not disable JobExpirationEffDateThreshold.

Default: -1

JobExpirationEffDateThreshold
Number of days past the job effective date before batch process JobExpire expires a job. Batch process JobExpire
first examines all jobs meeting the date criteria set by this parameter. In addition to this threshold, the job must also
meet the JobExpirationCreateDateThreshold threshold. The batch process then expires those jobs for which
job.canExpireJob is true.
The job effective date is the EditEffectiveDate of a PolicyPeriod on the Job. If the job has more than one policy
period, then each active policy period on the job must meet the threshold. You access the active policy periods on
the job through the Job.ActivePeriods array.
A negative value means that the batch process expires unbound jobs by that number of days before their effective
date is reached. For example, a value of -5 for this parameter indicates that jobs expire five days before their
effective date.
Default: 7

JobExpireCheckIssuance
Set to true to enable PolicyCenter to expire this job type.
Default: false

JobExpireCheckPolicyChange
Set to true to enable PolicyCenter to expire this job type.
Default: false

JobExpireCheckReinstatement
Set to true to enable PolicyCenter to expire this job type.
Default: false

JobExpireCheckRenewal
Set to true to enable PolicyCenter to expire this job type.
Default: false
Application configuration parameters 71
Guidewire PolicyCenter 9.0.6 Configuration Guide

JobExpireCheckRewrite
Set to true to enable PolicyCenter to expire this job type.
Default: false

JobExpireCheckSubmission
Set to true to enable PolicyCenter to expire this job type.
Default: true

JobExpireCheckTestJob
Set to true to enable PolicyCenter to expire this job type.
Default: false

Lookup table parameters


For information on editing config.xml and setting configuration parameters, see “Working with configuration
parameters” on page 41.

AvailabilityContextCacheEntryExpirationTime
Lookup Table Manager uses a cache to improve performance of Product Model availability lookups. Cache entries
expire after a period of inactivity defined by this configuration parameter. Specify the expiration time in minutes.
Consider the performance impact before reducing the expiration time. Cache misses may result if entries have been
flushed.
Default: 1440 minutes (1 hour)
Required: No

AvailabilityContextCacheSize
The maximum size of the cache holding AvailabilityContexts after a lookup.
Default: 1000
Required: Yes

UsePolicyPeriodReferenceDateForOfferingAvailability
Whether to use written date or effective date for offerings availability. If true, use effective date. If false, use
written date.
Default: false
Required: No

Miscellaneous job‐related parameters


Guidewire provides the following configuration parameters in config.xml that relate to PolicyCenter jobs.
For information on editing config.xml and setting configuration parameters, see “Working with configuration
parameters” on page 41.

AllowedDaysBeforeOrAfterPolicyStartDate
Number of days, before or after a given policy period StartDate, to search for a non-cancelled bound
PolicyPeriod on which to base the renewal.
72 chapter 2: Application configuration parameters
Guidewire PolicyCenter 9.0.6 Configuration Guide

For example, if you need to rewrite a cancelled policy with an earlier start date, the most recent bound period is the
cancelled period. To renew such a policy, it must be possible to identify the rewrite. This parameter establishes the
windows in which to search for a rewritten policy.
• If the policy term is 6 months or longer, then the default of 90 days is acceptable.
• If the policy term is shorter, then use a smaller number for this parameter.
Default: 90

MaximumPolicyCreationYearDelta
Value, which added to the current year, represents the maximum year to use during policy creation. This integer
value must be 0 or greater.
Default: 1

MaxRecentAccounts
Maximum number of recent accounts that PolicyCenter shows in the Account tab.
Default: 5

MaxRecentPoliciesAndJobs
Maximum number of recent policies and jobs that PolicyCenter shows in the Policy tab.
Default: 8

MaxSubmissionsToCreate
Maximum number of submissions that PolicyCenter can create at one time in the New Submission page.
Default: 20

MinimumPolicyCreationYear
Minimum (earliest) year to use during policy creation. This integer value must be 1000 or greater.
Default: 1000

PatternCacheMaxDuration
Upper bound on how long PolicyCenter allows caches of pattern entities to exist without refresh, measured in
seconds.
Default: 86400

PolicyChangeMaxQuotes
Maximum number of allowable quotes for a policy change.
Default: 3

PurgeTemporaryPolicyPeriodsAfterDays
Minimum number of days that must pass before a temporary policy period can be purged.
Default: 14

PurgeTemporaryPolicyPeriodsEnabled
Enables Purge Temporary Policy Periods batch processing. If false, the work queue will not remove any temporary
policy periods.
Application configuration parameters 73
Guidewire PolicyCenter 9.0.6 Configuration Guide

Default: false

RenewalMaxQuotes
Maximum number of allowable quotes for a renewal.
Default: 3

RenewalProcessLeadTime
Lead time (in number of days) before the state non-renewal notification deadline to start renewals.
Default: 165

SubmissionMaxQuotes
Maximum number of allowable quotes for a submission.
Default: 3

Miscellaneous parameters
Guidewire provides the following configuration parameters in the config.xml file that relate to various
miscellaneous application features.
For information on editing config.xml and setting configuration parameters, see “Working with configuration
parameters” on page 41.

ConsistencyCheckerThreads
Number of threads to use when running the consistency checker.
Default: 1

DefaultDiffDateFormat
Sets the default format for dates in the difference tree user interface. Valid formats mirror the Java default date
formats:
• short
• medium
• long
• full
Default: short

DisableDomainGraphSupport
All PolicyCenter environments are expected to have valid data models. However, in rare situations, you might want
to upgrade a PolicyCenter environment that does not yet have a valid data model. If there are compelling business
reasons not to correct the data model during the upgrade, you can disable domain graph support by setting the
DisableDomainGraphSupport parameter to true.
Guidewire strongly recommends that you resolve domain graph issues at the earliest opportunity to minimize the
upgrade cost of the changes required to achieve a valid data model.
You cannot disable domain graph support if you are using archiving, quote purging, quote cloning, and personal data
destruction. These features require domain graph support. Therefore, PolicyCenter will not start if
DisableDomainGraphSupport is true and ArchiveEnabled or PersonalDataDestructionEnabled is true.
Default: false
74 chapter 2: Application configuration parameters
Guidewire PolicyCenter 9.0.6 Configuration Guide

IgnoreLeapDayForEffDatedCalc
In the default configuration, the IgnoreLeapDayForEffDatedCalc parameter determines whether PolicyCenter
ignores a leap day in the following calculations:
• Calculating scalable properties
• Prorating premiums for policies that are less than a full term
The following table describes the values for the IgnoreLeapDayForEffDatedCalc parameter:

Value Description
true PolicyCenter does not include the leap day while calculating the values for scalable properties or prorated premiums.
false PolicyCenter includes the leap day while calculating the scalable property amount or prorated premium.

In the default configuration, some scalable properties are OverrideAmount on the Cost entity and
ScalableBasisAmount on the GLExposure entity.
Default: true

Leap Days and Prorated Premiums Example


Assume that PolicyCenter needs to rate a policy change that affects the entire month of February in a year that
includes a leap day. If IgnoreLeapDayforEffDatedCalc is true, PolicyCenter ignores the leap day and prorates the
premium for 28 days. If false, PolicyCenter includes the leap day and prorates the premium for 29 days.
PolicyCenter prorates the premium in the proration plugin. It is possible to override the
IgnoreLeapDayForEffDatedCalc parameter by a parameter on the plugin. For more information, see the
Integration Guide.

InitialSampleDataSet
Optional set of sample data to load at server start up. This value must be a typecode from the SampleDataSet
typelist, or null. In the base application configuration, valid typecodes are:

Typecode Description
Tiny Just a few users like aapplegate, good for test purposes.
Small A small community model and a few sample Accounts and Policies, useful for local development.
Large A large, full data set useful for application demonstrations and manual Quality Assurance.

Set value to Tiny, Small, or Large, corresponding to the data set that you want to load:
• If there is no sample data loaded as the server starts, PolicyCenter loads the sample data set that you specify.
• If there is sample data, PolicyCenter does nothing.
Default: None
Set for Environment: Yes

PreloadSystemTableToCacheForFasterSynchronization
Enables or disables the pre-load of system tables at server start. To enable pre-loading, set this parameter to true.
Pre-loading the system tables at server start allows for faster synchronization and faster server startup times.
However, be aware that the use of system table pre-loading can require PolicyCenter to allocate additional heap
space.
Default: true
Required: Yes
Application configuration parameters 75
Guidewire PolicyCenter 9.0.6 Configuration Guide

ProfilerDataPurgeDaysOld
Number of days to keep profiler data before PolicyCenter deletes it.
Default: 30

TransactionIdPurgeDaysOld
Number of days to keep external transaction ID records before they can be deleted.
Default: 30

Policy exception parameters


Guidewire provides the following configuration parameters in config.xml that limit how many days must pass
before the Policy Exception Rules run a second time on any given PolicyPeriod entity.

See also
• Rules Guide

BoundPolicyThresholdDays
The minimum number of days that must pass before the Policy Exception Rules run again on a bound
PolicyPeriod entity. This integer value must be 0 or greater.
Default: 14
Dynamic: Yes

ClosedPolicyThresholdDays
The minimum number of days that must pass before the Policy Exception Rules run again on a closed
PolicyPeriod entity. This integer value must be 0 or greater.
Default: 14
Dynamic: Yes

OpenPolicyThresholdDays
The minimum number of days that must pass before the Policy Exception Rules run again on an open
PolicyPeriod entity. This integer value must be 0 or greater.
Default: 1
Dynamic: Yes

PDF print settings parameters


Guidewire provides the following configuration parameters in the config.xml file that relate to the generation of
PDF files from PolicyCenter.
For information on editing config.xml and setting configuration parameters, see “Working with configuration
parameters” on page 41.

DefaultContentDispositionMode
The Content-Disposition header setting to use when PolicyCenter returns file content directly to the browser.
This parameter applies to printed and exported content. It does not apply to documents. For documents, use the
DocumentContentDispositionMode parameter. Supported settings are inline and attachment.
76 chapter 2: Application configuration parameters
Guidewire PolicyCenter 9.0.6 Configuration Guide

Default: attachment

PrintFontFamilyName
Use to configure FOP settings for printing non-U.S. character sets. (FOP refers to the Apache Formatting Objects
Processor.) Set this value to the name of the font family for custom fonts as defined in your FOP user configuration
file. For more information, refer to the following:

http://xmlgraphics.apache.org/fop/

Default: san-serif

PrintFontSize
Font size of standard print text.
Default: 10pt

PrintFOPUserConfigFile
Path to FOP user configuration file, which contains settings for printing non-U.S. character sets. (FOP refers to the
Apache Formatting Objects Processor.) Enter a fully qualified path to a valid FOP user configuration file. There is
no default. However, a typical value for this parameter is the following:

C:\fopconfig\fop.xconf

For more information, refer to the following:

http://xmlgraphics.apache.org/fop/

Default: None

PrintHeaderFontSize
Font size of headers in print text.
Default: 16pt

PrintLineHeight
Total size of a line of print text.
Default: 14pt

PrintListViewBlockSize
Use to set the number of elements in a list view to print as a block. This parameter splits the list into blocks of this
size, with a title page introducing each block of elements. A large block size consumes more memory during
printing, which can cause performance issues. For example, attempting to print a block of several thousand elements
can potentially cause an out-of-memory error.
Default: 20

PrintListViewFontSize
Font size of text within a list view.
Default: 10pt
Application configuration parameters 77
Guidewire PolicyCenter 9.0.6 Configuration Guide

PrintMarginBottom
Bottom margin size of print page.
Default: 0.5in

PrintMarginLeft
Left margin size of print page.
Default: 1in

PrintMarginRight
Right margin size of print page.
Default: 1in

PrintMarginTop
Top margin size of print page.
Default: 0.5in

PrintMaxPDFInputFileSize
During PDF printing, PolicyCenter first creates an intermediate XML file as input to a PDF generator. If the input is
very large, the PDF generator can run out of memory.

Value Purpose
Negative A negative value indicates that there is no limit on the size of the XML input file to the PDF generator.
Non‐ A non‐negative value limits the size of the XML input file to the set value (in megabytes). If a user attempts to
negative print a PDF file that is larger in size than this value, PolicyCenter generates an error.

Default: -1

PrintPageHeight
Total print height of page.
Default: 8.5in

PrintPageWidth
Total print width of page.
Default: 11in

PrintPdfDefaultBaseFileExtension
Default base output file extension for PDF documents.
Default: 11in

PrintPdfMimeType
MIME type used for generated PDF output files.
Default: application/pdf
78 chapter 2: Application configuration parameters
Guidewire PolicyCenter 9.0.6 Configuration Guide

Print settings parameters


Guidewire provides the following configuration parameters in the config.xml file that relate to printing from
PolicyCenter.
For information on editing config.xml and setting configuration parameters, see “Working with configuration
parameters” on page 41.

PrintCsvDefaultBaseFileExtension
Default base output file extension for CSV documents.
Default: csv

PrintCsvMimeType
MIME type used for generated CSV output files.
Default: application/excel

PrintDefaultBaseFileName
Default base output filename for output generation.
Default: Print

Product model parameters


Guidewire provides the following configuration parameters in config.xml that relate to the PolicyCenter product
model.
For information on editing config.xml and setting configuration parameters, see “Working with configuration
parameters” on page 41.

ExternalProductModelDirectory
Specifies the directory from which to load product model availability data. PolicyCenter loads the information in
this directory at server startup time or if requested through the Server Tools Product Model Info screen. For the load to
succeed, all of the following must true:
• The parameter specifies a directory accessible to the application server.
• The directory is not in the deployment directory.
• The directory contains a complete product model definition that only defines existing patterns.
• The directory contains at least one lookup XML file ending in -lookups.xml.
• The XML files in the directory are all valid.
If this parameter is blank, PolicyCenter loads availability data from the standard configuration module at server
startup time. Any attempt to reload the data through the Server Tools Product Model Info screen then fails with an error
message.
Default: None
Dynamic: No

See also
• Product Model Guide
• System Administration Guide

ProductModelClassCacheConcurrencyLevel
To fine tune performance, use this parameter to adjust the concurrency level of the product model class cache. This
cache is lazy-loaded when product model pattern objects, such as coverage patterns, are instantiated. See
Application configuration parameters 79
Guidewire PolicyCenter 9.0.6 Configuration Guide

com.google.common.cache.CacheBuilder#concurrencyLevel for more information about caches and


concurrency levels. The minimum value is 1. The maximum value is 100.
Default: 10
Dynamic: No

Quote purging configuration parameters


This topic describes quote purging configuration parameters related to purging jobs and pruning policy periods.
Purging removes jobs after a specified length of time has passed. The jobs must meet the purging criteria.
Pruning removes unselected policy periods attached to a job. The selected policy period is specified by the
SelectedVersion property on the Job entity. Unselected policy periods are any policy periods attached to the job
that are not the SelectedVersion.

See also
• “Configuring quote purging” on page 537
• Application Guide

PruneAndPurgeJobsEnabled
Specifies whether the Purge batch process is enabled.
Default: false

See also
• “Enable quote purging batch processes” on page 541

PruneVersionsDefaultRecheckDays
The minimum number of days that must pass after failing a purging check before reconsidering the unselected
policy periods on the job for pruning.
Default: 30

PruneVersionsPolicyTermDays
The minimum number of days that must pass after a job’s selected policy period has ended before the unselected
policy periods on the job are eligible for pruning. This parameter is ignored if
PruneVersionsPolicyTermDaysCheckDisabled is true.
Default: 30

PruneVersionsPolicyTermDaysCheckDisabled
If true, then disable the PruneVersionsPolicyTermDays parameter. Setting this parameter to true does not disable
pruning closed jobs.
Default: false

PruneVersionsRecentJobCompletionDays
The minimum number of days that must pass after a job is closed before the unselected policy periods on the job are
eligible for pruning.
Default: 210

PurgeJobsDefaultRecheckDays
The minimum number of days that must pass after failing a purging check before a job is reconsidered for purging.
80 chapter 2: Application configuration parameters
Guidewire PolicyCenter 9.0.6 Configuration Guide

Default: 30

PurgeJobsPolicyTermDays
The minimum number of days that must pass after the end of a job’s selected policy period before the job is eligible
for purging. This parameter is ignored if PurgeJobsPolicyTermDaysCheckDisabled is true.
Default: 30

PurgeJobsPolicyTermDaysCheckDisabled
If true, then disable the PurgeJobsPolicyTermDays parameter. Setting this parameter to true does not disable
purging closed jobs.
Default: false

PurgeJobsRecentJobCompletionDays
The minimum number of days that must pass after a job is closed before the job is eligible for purging.
Default: 210

PurgeOrphanedPolicyPeriodsEnabled
Specifies whether the Purge Orphaned Policy Periods batch process is enabled.
Default: false

See also
• “Enable quote purging batch processes” on page 541

Rating management parameters


Guidewire provides the following configuration parameters in the config.xml file that relate to Guidewire Rating
Management.

IMPORTANT To determine whether your Guidewire PolicyCenter license agreement includes


Guidewire Rating Management, contact your Guidewire sales representative. Rating Management
requires an additional license key. For instructions on obtaining and installing this key, contact your
Guidewire support representative.

PurgeRateBookExportResultEnabled
If true, enable Purge Rate Book Export Result batch processing.
Default: true

See also
• System Administration Guide

PurgeWorksheetsEnabled
Enable the Purge Rating Worksheets batch process.
Default: false

See also
• “Extract Rating Worksheets batch process” on page 641
Application configuration parameters 81
Guidewire PolicyCenter 9.0.6 Configuration Guide

RateBookExportResultAgeForPurging
Purge Rate Book Export Result batch processing removes from the PolicyCenter database RateBookExportResult
Excel and XML files that have been around for more days than this parameter.
Default: 60

See also
• System Administration Guide

RateRoutineIndexingThreshold
When editing a long rate routine, you can edit the rate routine by section. A long rate routine has more steps than the
value of the indexing threshold, theRateRoutineIndexingThreshold parameter.
Default: 150

See also
• Application Guide

RateTableManagementNormalizationRowLimit
PolicyCenter determines whether to normalize a rate table if the table contains this many rows or more.
If the number of rows in the normalized table would exceed this limit, the table is automatically marked as non-
normalizable. PolicyCenter stores the non-normalized version of the table.
Default: 10000

See also
• “Rate table normalization configuration parameters” on page 621

RateTableManagementNormalizationRowThreshold
If the number of rows in the normalized table would exceed this threshold, the user is given the option to store a
non-normalized version of the table.
Default: 1000

See also
• “Rate table normalization configuration parameters” on page 621

RatingWorksheetContainerAgeForPurging
The Purge Rating Worksheets batch process uses this parameter as one factor in determining if a worksheet
container can be purged. To be considered for purging, the worksheet container’s job must have been completed at
least RatingWorksheetContainerAgeForPurging days.
Default: 90

See also
• “Purge Rating Worksheet batch process” on page 641

SmallRateTableRowLimit
Before importing rate tables, PolicyCenter scans the import file. The scan does not examine rate tables with more
rows than specified in SmallRateTableRowLimit.
Default: 10000
82 chapter 2: Application configuration parameters
Guidewire PolicyCenter 9.0.6 Configuration Guide

RateBookPreloadEnabled
This parameter determines whether to load Rating Management components on system startup. If true,
PolicyCenter loads all rate books and their associated rate routines and rate tables on system startup.
Note: Unrelated to whether this parameter is true or false, PolicyCenter always preloads some parts
of rate books that load quickly. After this, PolicyCenter writes this message to the log file:

INFO Application.Rating.RateTableManagement Preloading all ratebooks

Therefore, this message is not an indication of the RateBookPreloadEnabled parameter setting.


Default: true

See also
• “Loading Rating Management components on system startup” on page 619

Risk assessment parameters


Risk assessment parameters enable you to set the URL for log in to Guidewire Spotlight and to access risk
assessment services.
You must change the default URL, example.com, to enable testing or using Spotlight services.

See also
• “Enabling Spotlight services” on page 566
• Application Guide

MultipleLocationRiskAssessmentEnabled
Specify whether multiple location risk assessment calls may be made to Spotlight.
Default: false

PurgeRiskAssessmentTempStoreDays
Minimum number of days that must pass after temporary risk assessment objects has been created before the objects
can be eligible for purging.
Default: 30

See also
• System Administration Guide

RiskAssessmentIntegrationEnabled
Enable or disable access to all Spotlight services from PolicyCenter.
Default: false

RiskAssessmentThumbnailMapEnabled
Enable or disable access to Spotlight thumbnail map service.
Default: false

SingleLocationRiskAssessmentEnabled
Specify whether single location risk assessment calls may be made to Spotlight.
Application configuration parameters 83
Guidewire PolicyCenter 9.0.6 Configuration Guide

Default: false

SpotlightInteractiveServiceURL
Specifies the URL to the Spotlight interactive service. This service provides interactive access to Spotlight.
Default: http://example.com

SpotlightLoginURL
Specifies the URL to the Spotlight login screen.
Default: http://example.com

SpotlightRiskAssessmentServiceURL
Specifies the URL to the Spotlight risk assessment service.
Default: http://example.com

SpotlightThumbnailMapURL
Specifies the URL to the Spotlight thumbnail map service.
Default: http://example.com

Scheduler and workflow parameters


Guidewire provides the following configuration parameters in the config.xml file that relate to batch process
scheduler and workflow.
For information on editing config.xml and setting configuration parameters, see “Working with configuration
parameters” on page 41.

SchedulerEnabled
Whether to enable the internal batch process application scheduler. See the System Administration Guide for more
information on batch processes and the scheduler.
Default: true
Dynamic: Yes

WorkflowLogDebug
Configuration parameter WorkflowLogDebug takes a Boolean value:
• If set to true, PolicyCenter outputs the ordinary verbose system workflow log messages from the Guidewire
server to the workflow log.
• If set to false, PolicyCenter does not output any of the ordinary system messages.
The setting of this parameter does not have any effect on calls to log workflow messages made by customers.
Therefore, all customer log messages are output. If customers experience too many workflow messages being
written to the xx_workflowlog table, Guidewire recommends that you set this parameter to false.
Default: true

WorkflowLogPurgeDaysOld
Number of days to retain workflow log information before PurgeWorkflowLogs batch processing deletes it.
See the System Administration Guide for details.
Default: 30
84 chapter 2: Application configuration parameters
Guidewire PolicyCenter 9.0.6 Configuration Guide

WorkflowPurgeDaysOld
Number of days to retain workflow information before PurgeWorkflows batch processing deletes it.
See the System Administration Guide for details.
Default: 60

WorkflowStatsIntervalMins
Aggregation interval in minutes for workflow timing statistics. Statistics such as the mean, standard deviation, and
similar statistics used in reporting on the execution of workflow steps all use this time interval. A value of 0 disables
statistics reporting.
Default: 60

Search parameters
Guidewire provides the following configuration parameters in the config.xml file that relate to searching.
For information on editing config.xml and setting configuration parameters, see “Working with configuration
parameters” on page 41.

FreeTextSearchEnabled
Whether to enable the free-text search feature. Setting the FreeTextSearchEnabled parameter to true enables the
free-text plugins for indexing and search. Setting the parameter to true also enables the display of the
Search Polices→Basic screen, which uses free-text search. The FreeTextSearchEnabled parameter has no effect on
the user interface unless you also set the EnableDisplayBasicSearchTab script parameter to true. Script
parameters are defined initially through Studio but administered on the Script Parameters page of the Administration tab.
Default: false

See also
• “Script parameters” on page 121
• “Free-text search configuration parameters and files” on page 395

MaxContactSearchResults
Maximum number of contacts that PolicyCenter returns in a search. If the number to return is greater than this value,
then PolicyCenter prompts the user to narrow the search parameters. This integer value must be 1 or greater.
Default: 100

PolicySearchMaxResult
Number of maximum results to return from a database policy search. This parameter has no effect on free-text
policy search.
Default: 300

See also
• “Search overview” on page 379

Security parameters
Guidewire provides the following configuration parameters in the config.xml file that relate to application security.
Application configuration parameters 85
Guidewire PolicyCenter 9.0.6 Configuration Guide

For information on editing config.xml and setting configuration parameters, see “Working with configuration
parameters” on page 41.

EnableDownlinePermissions
If UseACLPermissions is true, then setting this parameter to true means that supervisors inherit permissions on an
object that has been added for a supervised user or group.
Default: true

ExternalUserAccess
Indicate which groups and producer codes are available to external users. In order of increasing access, values are:
• FULLYRESTRICTED – External users can be assigned to groups only within their organization. Users inherit
producer codes from their groups. In addition, external users can be assigned producer codes from their
organization.
• PROTECTINTERNAL – External users can be assigned to any external groups. Users inherit producer codes from
their groups. In addition, external users can be assigned producer codes from any external organization.
• ALLOWINTERNAL – External users can be assigned to any groups, internal or external. Users inherit producer codes
from their groups. In addition, external users can be assigned producer codes from internal or external
organizations.
Default: FULLYRESTRICTED

See also
• Application Guide

FailedAttemptsBeforeLockout
Number of failed attempts that PolicyCenter permits before locking out a user. For example, setting this value to 3
means that the third unsuccessful try locks the account from further repeated attempts. This integer value must be 1
or greater. A value of -1 disables this feature.
Default: 3
Minimum: -1

LockoutPeriod
Time in seconds that PolicyCenter locks a user account. A value of -1 indicates that a system administrator must
manually unlock a locked account.
Default: -1

LoginRetryDelay
Time in milliseconds before a user can retry after an unsuccessful login attempt. This integer value must be 0 or
greater.
Default: 0
Minimum: 0

MaxPasswordLength
New passwords must be no more than this many characters long. This integer value must be 0 or greater.
Default: 16
86 chapter 2: Application configuration parameters
Guidewire PolicyCenter 9.0.6 Configuration Guide

MinPasswordLength
New passwords must be at least this many characters long. For security purposes, Guidewire recommends that you
set this value to 8 or greater. This integer value must be 0 or greater. If 0, then Guidewire PolicyCenter does not
require a password. (Guidewire does not recommend this.)
Default: 8
Minimum: 0

RestrictContactPotentialMatchToPermittedItems
Whether PolicyCenter restricts the match results from a contact search screen to those that the user has permission to
view.
Default: true

RestrictSearchesToPermittedItems
Whether PolicyCenter restricts the results of a search to those that the user has permission to view.
Default: true

SessionTimeoutSecs
Use to set the browser session expiration timeout, in seconds. By default, a session expires after three hours (60 * 60
* 3 = 10800 seconds).
• The minimum value to which you can set this parameter is five minutes (60 * 5 = 300 seconds).
• The maximum value to which you can set this parameter is one week (3600 * 24 * 7 = 604800 seconds)
This value sets the session expiration timeout globally for all PolicyCenter browser sessions. See the System
Administration Guide for information on how to set the session timeout at a more granular level.
Default: 10800
Minimum: 300
Maximum: 604800

Side‐by‐side quoting parameters


Guidewire provides the following configuration parameters in config.xml that relate to side-by-side quoting.
PolicyCenter provides a number of configuration parameters related to the display of side-by-side quotes in the
PolicyCenter interface. For a discussion of side-by-side quoting, see the Application Guide.

RenewalMaxSideBySideQuotes
Sets an upper limit on the number of versions to show on a side-by-side quote page for a policy renewal.
Default: 4

SideBySide
Determines whether validation warnings block Quote All in side-by-side quoting.
In the default configuration, Quote All in the Side by Side Quoting screen does not produce quotes when there are
validation warnings. This is to prevent PolicyCenter from generating invalid quotes. Guidewire expects that the
default implementation is suitable for most implementations.
Default: true
Application configuration parameters 87
Guidewire PolicyCenter 9.0.6 Configuration Guide

See also
• For more information about setting this parameter, see “Configuring quote all to ignore validation warnings” on
page 774.

SubmissionMaxSideBySideQuotes
Sets an upper limit on the number of versions to show on a side-by-side quote page for a policy submission.
Default: 4

PolicyChangeMaxSideBySideQuotes
Sets an upper limit on the number of versions to show on a side-by-side quote page for a policy change.
Default: 4

User interface parameters


Guidewire provides the following configuration parameters in t he config.xml file that relate to the PolicyCenter
interface.
For information on editing config.xml and setting configuration parameters, see “Working with configuration
parameters” on page 41.

ActionsShortcut
The keyboard shortcut to use for the Actions button.
Default: A

AutoCompleteLimit
The maximum number of autocomplete suggestions to show.
Default: 10

InputMaskPlaceholderCharacter
The character to use as a placeholder in masked input fields.
Default: . (period)

ListViewPageSizeDefault
The default number of entries that PolicyCenter displays in each page in a list view, if the page does not explicitly
specify this value. This integer value must be at least 1.
Default: 15
Minimum: 1

MaxBrowserHistoryItems (obsolete)
This parameter is obsolete. Do not use it.

QuickJumpShortcut
The keyboard shortcut to use to activate the QuickJump box.
Default: / (forward slash)
88 chapter 2: Application configuration parameters
Guidewire PolicyCenter 9.0.6 Configuration Guide

UISkin
Name of the PolicyCenter interface skin to use.
Default: theme-9

WebUIAJAXTimeout
Number of seconds that the PolicyCenter web client waits after issuing a call to the PolicyCenter server. If the server
does not respond within this time, the web client assumes that the server is offline, terminates all connections, and
displays an error. You may want to increase this value if you are performing data-intense operations that take a long
time to process.
Default: 600

Work queue parameters


Guidewire provides the following configuration parameters in the config.xml file that relate to the work queue.
For information on editing config.xml and setting configuration parameters, see “Working with configuration
parameters” on page 41.
For information on work queues in general, see the System Administration Guide.

InstrumentedWorkerInfoPurgeDaysOld
Number of days to retain instrumentation information for a worker instance before PolicyCenter deletes it.
Default: 45

WorkItemCreationBatchSize
The maximum number of work items for a work queue writer to create for each transaction.
Default: 100

WorkItemPriorityMultiplierSecs
Used to calculate the AvailableSince field for new work items. For new work items without a priority,
PolicyCenter sets AvailableSince to the current time. Later, PolicyCenter checks out work items from the work
queue in ascending order by AvailableSince, so work items without a priority are checked out in the order they
were created.
You can assign a priority to new work items by implementing the Work Item Priority plugin
(IWorkItemPriorityPlugin). For new work items with a priority, PolicyCenter sets AvailableSince according to
the following formula:

workItem.AvailableSince = CurrentTime – (workItem.Priority * WorkItemPriorityMultiplierSecs)

Work items with higher priorities have earlier AvailableSince values than work items with lower priorities.
Therefore, work items with higher priorities are checked out before ones with lower priorities because their
AvailableSince values are earlier.
Priority influences the calculation of AvailableSince only at the time work items are created. If a worker throws an
exception while processing a work item, PolicyCenter reverts the status of the work item from checkedout to
available. At the same time, PolicyCenter resets AvailableSince according to the following formula:

workItem.AvailableSince = CurrentTime + RetryInterval

Work items are retried in the order they encounter exceptions, irrespective of priority.
Application configuration parameters 89
Guidewire PolicyCenter 9.0.6 Configuration Guide

IMPORTANT Prioritization affects only work items of type WorkflowWorkItem or its derivatives.

Default: 600

WorkItemRetryLimit
The maximum number of times that PolicyCenter retries an orphaned or failed work item.
Guidewire logs a ConcurrentDataChangeException generated by workers at different levels depending on context.
If the ConcurrentDataChangeException occurs on processing the work items, PolicyCenter logs the error only if
the number of attempts exceeds the configured value of the WorkItemRetryLimit. Otherwise, PolicyCenter logs the
debug message instead.
The value for WorkItemRetryLimit applies to all work queues unless overridden in work-queue.xmlby
retryLimit for specific work queues. For more information on tuning work queue performance by adjusting the
number of retries, see the System Administration Guide.
Default: 3

WorkQueueHistoryMaxDownload
The maximum number of ProcessHistory entries to consider when producing the Work Queue History download.
The valid range is from 1 to 525600. (The maximum of 525,600 is 60*24*365, which is one writer running every
minute for a year.)
Default: 10000

WorkQueueThreadPoolMaxSize
Maximum number of threads in the work queue thread pool. This must be greater than or equal to
“WorkQueueThreadPoolMinSize” on page 90. All threads that are not core threads are additional on-demand
threads. PolicyCenter terminates any idle on-demand threads after the period of time defined by configuration
parameter WorkQueueThreadsKeepAliveTime.
Default: 50
Set For Environment: Yes

WorkQueueThreadPoolMinSize
Minimum number of core threads in the work queue thread pool.
Default: 0
Set For Environment: Yes

WorkQueueThreadsKeepAliveTime
Keep alive timeout (in seconds) for additional on-demand threads in the work queue thread pool. An additional on-
demand thread is terminated if it is idle for more than the time specified by this parameter.
Default: 60
Set For Environment: Yes

90 chapter 2: Application configuration parameters


part 2

The Guidewire development


environment
Guidewire PolicyCenter 9.0.6 Configuration Guide
chapter 3

Getting started

This topic describes Guidewire Studio, which is the PolicyCenter administration tool for creating and managing
PolicyCenter resources. (Studio resources include Gosu rules, classes, enhancements, the product model, script
parameters, and the PolicyCenter data model files.) Using Guidewire Studio, you can do the following:
• Create and edit individual rules, and manage these rules and their order of consideration within a rule set
• Create and manage PCF pages, workflows, entity names, and display keys
• Create and manage Gosu classes
• Access rule sets, Gosu classes, and other resources stored in a SCM (Software Configuration Management)
system

What Is Guidewire Studio?


Guidewire Studio is the IDE (integrated development environment) for creating and managing PolicyCenter
application resources. These resources include Gosu rules, classes, enhancements and plugins, and all configuration
files used by PolicyCenter to build and render the application.
Guidewire Studio is based upon IntelliJ IDEA Community Edition, a powerful and popular IDE.
Using Guidewire Studio, you can:
• Create and edit individual rules, and manage these rules and their order of consideration within a rule set
• Create and manage PCF pages, workflows, entity names, and display keys
• Create and manage Gosu classes and entity enhancements
• Create and manage the PolicyCenter data entities, business objects, and data types
• Manage plugins and message destinations
• Configure database connections
• Manage the PolicyCenter product model
IMPORTANT Do not create installation directories that have spaces in the name. This can prevent
Guidewire Studio from functioning properly.

The Studio development environment


Guidewire Studio is a stand-alone development application that runs independently of Guidewire PolicyCenter. You
use Studio to build and test application customization in a development or test mode before deploying your changes
to a production server. Any changes that you make to application files through Studio do not automatically
propagate into production. You must specifically build a .war file and deploy it to a server for the changes to take
effect. (Studio and the production application server—by design—do not share the same configuration file system.)
Getting started 93
Guidewire PolicyCenter 9.0.6 Configuration Guide

Guidewire recommends that you not run Studio on a machine with an encrypted hard drive. If you run Guidewire
Studio on a machine with hard drive encryption, Studio can take 15 or more seconds to refresh. This slow refresh
can happen when you switch focus from the Studio window to something else, such as the browser, and back again.
To assist with this development and testing process, Guidewire bundles the following with the PolicyCenter
application:
• A QuickStart development server
• A QuickStart database
• A QuickStart server used for testing that you cannot control
• A QuickStart database used for testing that is separate from the QuickStart development database
The following diagram illustrates the connections between Guidewire Studio, the bundled QuickStart applications,
the local file system, and the PolicyCenter application server. You use the QuickStart test server and test database for
testing only as PolicyCenter controls them internally. You can use either the bundled QuickStart development server
bundled with Guidewire PolicyCenter or use an external server such as Tomcat. In general, dotted lines indicate
actions on your part that you perform manually. For example, you must manually create a .war file and manually
move it to the production server. The system does not do this for you.

Local (Development) Environment Production


Application Server

Guidewire
Studio
Debug
Development Debug
QuickStart
Server
Test
Server
PolicyCenter
QuickStart Database Application
and
Check Out/Submit

Configuration
Files
Database
Local
Configuration WAR / EAR
Files

SCM
System

PolicyCenter Database

Working with the QuickStart development server


It is possible to use any of the supported application servers in a development environment, rather than the
embedded QuickStart server. To do so, you need to point PolicyCenter to the configuration resources edited by
Guidewire Studio. This requires additional configuration, described for each application server type in the
Installation Guide.
For information on starting and testing the QuickStart server from within Studio, see “Testing PolicyCenter with
Guidewire Studio” on page 485.

Connecting the development server to a database


PolicyCenter running on the QuickStart development server can connect to the same kinds of databases as any of the
other Guidewire-supported application servers. However, for performance reasons, Guidewire recommends that you
94 chapter 3: Getting started
Guidewire PolicyCenter 9.0.6 Configuration Guide

use the bundled QuickStart database. Guidewire optimizes this database for fast development use. It can run in either
of the following modes:

Mode Description
file mode The database persists data to the hard drive (the local file system), which means that the data can live from one
server start to another. This is the Guidewire‐recommended default configuration.
memory The database does not persist data to the hard drive and it effectively drops the database each time you restart
mode the server. Guidewire does not recommend this configuration.

You set configuration parameters for the QuickStart database associated with the development server in database-
config.xml. For example:

<!-- H2 (meant for development/quickstart use only!) -->


<database
name="PolicyCenterDatabase"
dbtype="h2">
<dbcp-connection-pool
jdbc-url="jdbc:h2:file:/tmp/guidewire/pc"/>
<upgrade
defer-create-nonessential-indexes="false"/>
</database>

Set the database mode


About this task
In the base configuration, the QuickStart database runs in file mode. You set the database mode using the jdbc-url
attribute. In file mode, the jdbc-urlattribute value specifies an actual file location. For example:

jdbc-url="jdbc:h2:file:/tmp/guidewire/pc"

The default file location in the base configuration is /tmp/guidewire/pc.

Drop the QuickStart database


About this task
Occasionally, you may want (or need) to drop the QuickStart database. For example, Guidewire recommends that
you drop the QuickStart database if you make changes to the PolicyCenter data model.
Drop the database from the command line
• At the command prompt, run gwb dropDb.
Drop the database manually
• Delete the files from the directory specified by the jdbcURL parameter (by default, <root>/tmp/guidewire/pc).
The server must be stopped when you delete the directory.

Deploying your configuration changes


About this task
To deploy your configuration changes to an actual production server, you must build a .war or .ear file and deploy
it on the application server. By design, you cannot directly deploy configuration files from Studio to the application
server.
As the bundled QuickStart development server and Studio share the same configuration directory, you do not need
to deploy your configuration changes to the QuickStart development server.
Hot-deploy PCF files
Getting started 95
Guidewire PolicyCenter 9.0.6 Configuration Guide

Editing and saving PCF files in the Page Configuration (PCF) editor does not automatically reload them in the
QuickStart server, even if there is a connection between it and Studio. You do not actually need to be connected to
the server from Studio to reload PCF files.
You can also reload display keys this way, as well.

Procedure
1. Navigate to the PolicyCenter web interface on the deployment server, and log in.
2. Reload the PCF configuration using either the Internal Tools page or the Alt+Shift+L shortcut.

Result
Hot-deploy Gosu files
Editing and saving Gosu files in Studio does not automatically reload them in the QuickStart server, even if there is
a connection between it and Studio. To reload the Gosu files, do one of the following:
• To recompile all files, click Build→Compile.
• To compile only files that were changed since the last compile, click Build→Make Project.

PolicyCenter configuration files


WARNING Do not attempt to modify any files other than those in the PolicyCenter/modules/
configuration directory. Any attempt to modify files outside of this directory can cause damage
to the PolicyCenter application and prevent it from starting thereafter.

Installing Guidewire PolicyCenter creates the following directory structure:

Directory Description
.gradle Configuration and settings for Gradle, the project build tool.
.idea Configuration and settings for IntelliJ IDEA, the foundation for Guidewire Studio.
admin Administrative tools. See the System Administration Guide for descriptions.
bin Deprecated. The gwpc batch file and shell script used to launch commands for building and deploying.
These commands are deprecated, and are provided only for backwards compatibility with previous releas‐
es. For the updated commands, see the Installation Guide.
build The output of build commands such as exploded .war files and the data and security dictionaries. This
directory is not present when you first install PolicyCenter. The directory is created when you run one of
the build commands.
dist Guidewire application .war, and .jar files are built in this directory. The directory is created when you run
one of the build commands to generate .war files.
doc HTML and PDFs of PolicyCenter documentation.
gradle Support files for Gradle, the project build tool.
java-api The Java API libraries created by running the gwb genJavaApi command. See the Integration Guide.
javadoc Reference documentation for the Java API libraries.
licenses License information for third‐party tools used by PolicyCenter.
logs Application log files.
modules Subdirectories including configuration resources for each application component.
productdesigner Application files for Product Designer.

repository Necessary PolicyCenter files.

96 chapter 3: Getting started


Guidewire PolicyCenter 9.0.6 Configuration Guide

solr Installation and support files for the Solr free text search platform. See “Free‐text search configuration” on
page 392.
studio Application files for Guidewire Studio.
ThemeApp Files defining the user interface styling for PolicyCenter.
webapps Necessary files for use by the application server.

Edited Resource Files Reside in the Configuration Module Only


The configuration module is the only place for configured resources. As PolicyCenter starts, a checksum process
verifies that no files have been changed in any directory except for those in the configuration directory. If this
process detects an invalid checksum, PolicyCenter does not start. In this case, overwrite any changes to all modules
except for the configuration directory and try again.
Guidewire recommends that you use Studio to edit configuration files to minimize the risk of accidentally editing a
file outside the configuration module.

Key directories
The installation process creates a configuration environment for PolicyCenter. In this environment, you can find all
of the files needed to configure PolicyCenter in two directories:
• The main directory of the configuration environment. In the default PolicyCenter installation, the location of this
directory is PolicyCenter/modules/configuration.
• PolicyCenter/modules/configuration/config contains the application server configuration files.
The installation process also installs a set of system administration tools in PolicyCenter/admin/bin.
PolicyCenter runs within a J2EE server container. To deploy PolicyCenter, you build an application file suitable for
your server and place the file in the server’s deployment directory. The type of application file and the deployment
directory location is specific to the application server type. For example, for PolicyCenter (deployed as the pc.war
application) running on a Tomcat J2EE server on Windows, the deployment directory might be C:\Tomcat\webapps
\pc.

Studio and IntelliJ IDEA configuration


Guidewire Studio is based upon IntelliJ IDEA Community Edition. You can configure many aspects of Studio using
the same configuration that you would use for the standalone IntelliJ IDEA application. Some configuration changes
require special procedures. This topic describes the following:
• “Using Studio with IntelliJ IDEA Ultimate Edition” on page 97
• “Setting IntelliJ IDEA properties in Studio” on page 98

Using Studio with IntelliJ IDEA Ultimate Edition


About this task
Guidewire Studio is bundled with the Community Edition of IntelliJ IDEA, a free version of this popular IDE. If
desired, you can configure Studio to work with the Ultimate Edition of IntelliJ IDEA instead. To use the Ultimate
Edition, you must obtain your own license for it from IntelliJ. For information about the supported versions of
IntelliJ IDEA Ultimate, visit the Guidewire Community and search for knowledge article 1005, “Supported
Software Components”.

Procedure
1. In your PolicyCenter installation directory, create a text file named studio.ultimate that contains the full
path of your IntelliJ IDEA Ultimate Edition installation directory. For example:
C:\Program Files (x86)\JetBrains\IntelliJ IDEA 15.0.6
Getting started 97
Guidewire PolicyCenter 9.0.6 Configuration Guide

2. Run Guidewire Studio.


3. When prompted for your IntelliJ IDEA Ultimate Edition license, provide it.

Setting IntelliJ IDEA properties in Studio


About this task
In the standalone IntelliJ IDEA application, you can set various properties by editing the idea.properties file. In
Guidewire Studio, you cannot edit idea.properties directly. Instead, do the following:

Procedure
1. Edit the file PolicyCenter/modules/script/gw-build.gradle.
2. Locate the studio section:

studio {
...
}

3. Within this section, set any properties that are valid in the idea.properties file by adding a statement in the
following format:

ideaProperties["property_name"] = "property_value"

For example, to disable the IntelliJ IDEA cycle buffer, set the following:

ideaProperties["idea.cycle.buffer.size"] = "disabled"

Note: Do not modify other sections of the gw-build.gradle file.


4. Restart Studio.

Studio and the DCEVM


The PolicyCenter application server and Guidewire Studio require a JVM (Java Virtual Machine). The version of the
JVM depends on the servlet container and operating system on which the application server runs.
Guidewire strongly recommends the use of the DCEVM for development in the QuickStart environment. Guidewire
does not support the DCEVM for other application servers or in a production environment.
The Dynamic Code Evolution Virtual Machine (DCEVM) is a modified version of the Java HotSpot Virtual
Machine (VM). The DCEVM supports any redefinition of loaded classes at runtime. You can add and remove fields
and methods and make changes to the super types of a class using the DCEVM. The DCEVM is an improvement to
the HotSpot VM, which only supports updates to method bodies.

DCEVM Limitations
If you reload Gosu classes using hotswap on the DCEVM, it is possible to add new static fields (again, only on the
DCEVM). However, Gosu does not execute any initializers for those static variables. For example, if you add the
following static field to a class:

public static final var NAME = "test"

Gosu adds the NAME field to the class dynamically. However, the value of the field is null until you restart the server
(or Studio, if you are running the code from the Studio Gosu Scratchpad). If you need to initialize a newly added
static field, you must write a static method that sets the variable and then executes that code.
For example, suppose that you added the following static method to class MyClass:

public static var x : int = 10

98 chapter 3: Getting started


Guidewire PolicyCenter 9.0.6 Configuration Guide

To initialize this field, write code to set the static variable to the value that you expect and then execute that code:

MyClass.x = 10

This does not work if the field is final.


Note: Adding an instance variable rather than a static variable with an initializer also results in null
values on existing instances of the object. However, any newly-constructed instances of the object will
have the field initialized.

See also
• For details on how to select the proper JVM for your installation, see the Installation Guide.

Start Guidewire Studio


Procedure
1. Open a command window.
2. Navigate to the application directory.
3. At the command prompt, type:

gwb studio

Result
The first time that you start Guidewire Studio, it may take some extra time to load and index configuration data.
Subsequent starts, however, generally load much more quickly.

Stop Guidewire Studio


Procedure
Click File→Exit. You can also stop Studio by closing its window (by clicking the x in the upper right-hand corner of
the window).

Updating Guidewire Studio


Guidewire Studio can be updated to a newer release independently of your application, and without requiring a full
reinstallation. Studio can detect when Guidewire posts a Studio update, and then download and apply the update. If
desired, you can manually download and apply updates instead.

Enable or disable automatic update checks


About this task
Studio can automatically check an update site to determine if an update is available. If enabled, the automatic check
occurs at the following times:
• each time Studio is run
• if Studio is left running, every 24 hours after it was first run
If an update is available, Studio notifies you and prompts you to download and apply it.
Getting started 99
Guidewire PolicyCenter 9.0.6 Configuration Guide

Procedure
1. Click File→Settings.
2. In the Settings dialog, in the navigation list, click Guidewire Studio.
3. In the Update section, select or clear the Check Automatically check box.

Manually check for Studio updates


About this task
If an update is available, Studio notifies you and prompts you to download and apply it.
• Click Help→Check for Studio Update.

Setting the Studio update site


To determine whether an update is available, Studio contacts an update site. If an update is available, Studio
downloads the update.
The update site can be one of the following:
• a secure site managed by Guidewire
• an internal site managed by you

Use the Guidewire update site for Studio updates


About this task
Guidewire provides a secure site that Studio can contact to download updates.
Note: The Guidewire update site is a secure server that only Studio can access. You cannot access this
server yourself, such as by using a web browser.

Procedure
1. Click File→Settings.
2. In the Settings dialog, in the navigation list, click Guidewire Studio.
3. In the Update section, set the Update Site URL text box to the following:
https://studio-release.guidewire.com/releases/

Use an internal site for Studio updates


About this task
Instead of having Guidewire Studio download updates from the update server managed by Guidewire, you can set
up your own internal update site. You may want to use an internal update site if you have multiple Studio
installations that do not have Internet access to the Guidewire update server. You can also use an internal update site
to closely manage when your Studio installations are updated.
Your update site can be a web server, FTP server, network file share, or any location accessible using standard URL
protocols such as http, ftp, file, and so on.

Procedure
1. Download the Studio update files. See “Download update files from the Guidewire Community” on page 101.
2. Place the Studio update files in the shared location in your update site. You must include both the latest
studio-*.zip file, and also the metadata.txt file
3. In Studio, click File→Settings.
4. In the Settings dialog, in the navigation list, click Guidewire Studio.
5. In the Update section, set the Update Site URL text box to the URL of your update site.
100 chapter 3: Getting started
Guidewire PolicyCenter 9.0.6 Configuration Guide

6. Repeat from step 3 for each instance of Studio that updates from your update site.

Updating Studio manually


Instead of having Guidewire Studio download updates from an update server, you can manually update Studio when
desired. You may want to manually update Studio if you have multiple Studio installations that do not have access to
an update server. You can also manually update Studio to closely manage when your Studio installations are
updated.
You can obtain the Studio update files from either the Guidewire Community or a Studio installation that has already
been updated. Once you have the files, you can install them in the Studio instance that you want to update.

See also
• “Download update files from the Guidewire Community” on page 101
• “Copy update files from an updated Studio installation” on page 101
• “Manually install the Studio update files” on page 101

Download update files from the Guidewire Community


You can download the Studio update files from the Guidewire Community.
1. Browse to the Guidewire Community, on the same page where your Guidewire application download is
available.
2. Click the link to the Studio Update page.
3. Download the following files:
• The studio-*.zip file with the highest release number.
• If you are setting up an internal site for Studio updates, also download the file metadata.txt.

See also
• “Manually install the Studio update files” on page 101.

Copy update files from an updated Studio installation


About this task
You can copy the Guidewire Studio update files from a Studio installation that has already been updated.

Procedure
1. In the updated Studio installation, go to the directory PolicyCenter/studio.
2. Copy the studio-*.zip file with the highest release number.

See also
• “Manually install the Studio update files” on page 101.

Manually install the Studio update files


About this task
Once you have obtained the Guidewire Studio update files, you can install them manually into a Studio instance that
you want to update.

Procedure
1. In the Studio installation to update, go to the directory PolicyCenter/studio/plugins.
Getting started 101
Guidewire PolicyCenter 9.0.6 Configuration Guide

2. Delete the following directories:


• gosucheckstyle
• ij-gosu
• ij-studio
• inspections
3. Extract the studio-*.zip Studio update file into the PolicyCenter/studio/plugins directory.

See also
• “Updating Studio manually” on page 101.

102 chapter 3: Getting started


chapter 4

Working in Guidewire Studio

You can perform a number of common tasks in Guidewire Studio™.

Entering valid code


Guidewire Studio provides several different ways of obtaining information about PolicyCenter objects and APIs to
assist you in writing valid rules and Gosu code. These include:

Dot comple‐ Opens a context‐sensitive pop‐up window that contains all the subobjects and methods that are valid for this
tion object, in this context. Dot completion works with both Gosu or Java packages.
SmartHelp Displays a list of valid fields and subobjects for the current object.

Keyboard commands provide code completion, code navigation, and code editing shortcuts. See “Using Studio
keyboard shortcuts” on page 104 for information on keyboard shortcuts.

Using dot completion


You can use Studio to complete your code by placing the cursor (or caret) at the end of a valid PolicyCenter object
or subobject and typing a dot (.). This action causes Studio to open a pop-up window that contains all the
subobjects, methods, and properties that are valid for this object, in this context.
As you type, Studio filters this list to include only those choices that match what you have typed thus far. Use the
down arrow to highlight the item you want and press Enter, the space bar, or Tab to select it. After you select an
item, Studio inserts it in the correct location in the code.

Gosu and Java package name completion


Dot completion also works with Gosu or Java packages. You can enter a package name and press dot to get a list of
packages and types within the package name before the dot. Studio can complete all packages and namespaces
within the Studio type system including product model and PCF types. Studio filters the list as you type to include
only those choices that match what you have typed thus far.

Accessing reference information


PolicyCenter provides reference information that you can review. This includes:
Working in Guidewire Studio 103
Guidewire PolicyCenter 9.0.6 Configuration Guide

Gosu API Reference Provides a searchable reference on the Gosu APIs, methods and properties. See the Gosu Reference
Guide.
PCF Reference Guide Provides a description of the PCF widgets and their attributes that you can use within the PCF editor.
This documentation is also known as the PCF Format Reference.
Gosu Reference Guide Provides information on the Gosu language.

Accessing the Gosu API Reference


Guidewire provides API reference information that you can use to obtain additional information about the Gosu
APIs and their methods and parameters. There are two ways to access this information:
• Access the Gosu API reference as described in the Gosu Reference Guide. Use the Search functionality to find
information on an API, or expand the API list and select a field, parameter or method to view.
• Click a method name in a line of code and press CTRL+Q. A pop-up window opens and displays information about
that method, including information about its parameters.
The Gosu API reference window contains a search pane, a contents tree, and a display area.
• The contents tree displays a tree view of the type system, organized by package.
• The search pane contains a text field for search terms, a button to clear the text field, a search button, and a re-
index button. It also includes an indication of the time of the last indexing operation.
If the reference has never been indexed, then index it before proceeding.

Accessing the PCF Reference Guide


Guidewire provides a PCF reference (official name, Guidewire PolicyCenter PCF Format Reference) that you can
use to obtain information about PCF widgets and their attributes. To access the reference guide, in your file system,
open the file PolicyCenter/modules/pcf.html.

Accessing the Gosu Reference Guide


You can view the in the Guidewire PolicyCenter documentation set.

Using Studio keyboard shortcuts


Guidewire Studio provides a number of keyboard commands that provide important code completion, navigation,
and editing capabilities. For a full list of keyboard shortcuts, see the IntelliJ IDEA documentation at the following
link:

https://www.jetbrains.com/idea/help/keyboard-shortcuts-by-category.html

The following are some of the more useful keyboard shortcuts:

Keystroke Name Description


Ctrl+Space Code completion Helps you complete the names of classes, methods, fields, and keywords.
Ctrl+/ Comment/uncomment Comment or uncomment a line or block of code.
Ctrl+Shift+/

Alt+Enter Intention actions Offers suggestions to correct the error nearest the caret.
Ctrl+N Find class or file by name Finds and opens the class or file in its editor.
Ctrl+Shift+N

Ctrl+Q Context help Shows documentation for the symbol at the caret.
Ctrl+Shift+G Show type information Shows the type of the symbol at the caret.

104 chapter 4: Working in Guidewire Studio


Guidewire PolicyCenter 9.0.6 Configuration Guide

Saving your work


PolicyCenter automatically saves any modifications made in Studio under the following conditions:
• If you move between different tabs (views) within Studio
• If the Studio main window loses focus (for example, by moving to another application)
However, you also have the option of performing manual “saves” using the File menu.

Command Description

File→Save All Writes any unsaved changes to your local fie or SCM system. You can also use the standard keyboard
shortcut Ctrl+S save your changes.

Toolbar Save icon Works the same way that Save All and Ctrl+S do.

If you have no unsaved changes pending, these commands are unavailable.

Verifying configuration resources


Guidewire Studio automatically verifies each configuration resource as you edit it. All errors are highlighted in the
editor.
To explicitly verify a resource, right-click it, and then click Verify.
In addition, you can verify configuration resources using the command line tool verifyResources. For example:

gwb verifyResources

Any resource errors are reported on the command line.

Inspecting configuration resources


Guidewire has implemented several scripts that enable Gosu developers to inspect Gosu code and to identify style-
related issues. The Gosu code to be inspected can include configuration resources. With the inspection scripts,
developers can examine Gosu code and obtain reports on it in the Guidewire Studio development environment.
The inspection scripts that Guidewire has implemented report on issues regarding code style as well as declaration
redundancy. The code style reports include the following:
• Anonymous classes that block expressions can replace
• Getter and setter method prototypes that class property definitions can replace
• Calls to property getter and setter methods that class property syntax can replace
• Block expressions with code block bodies that block expressions with expression-style bodies can replace
• Calls to the Object.equals method that the equality operator, ==, can replace
The declaration redundancy reports include the following:
• Local variable declarations that Gosu code can omit due to the Gosu type inference capability. For example, this
report would include the variable declaration, var a : String = "Hello". The report would do so because the
developer can simplify this declaration by using the declaration, var a = "Hello".

Working in Guidewire Studio 105


Guidewire PolicyCenter 9.0.6 Configuration Guide

Compiling configuration resources


There are several ways to compile configuration resources during development:
• Make – On the Build menu, click Make Project. Compiles all resources that have been modified since the last
compilation. All dependent resources are also compiled. When you run or debug the server within Studio, Studio
first runs a make to ensure that all resources are compiled.
• Rebuild – On the Build menu, click Rebuild Project. Recompiles all resources, including resources that have
already been compiled. This is required after first installing Studio, and may be necessary when the classpath
entries have changed. For example, when SDKs or libraries are added, removed, or altered.
• Compile – On the Build menu, click Compile ‘resource_name’. Recompiles only the selected resource and its
dependencies.
• gwb compile – At a command prompt, run this command. To run the QuickStart development server from the
command line, you must first run this command to compile it from the command line.

Enabling or disabling Gosu compilation


If you know that your Gosu code will generate many compilation errors, then you may want to disable compilation
while you fix them. For example, if a PolicyCenter upgrade involves API changes, then you can disable compilation
while you make the required changes to your code.
There are several ways to compile Gosu source code files, such as by building the project. When compilation is
disabled, explicitly compiling Gosu source files within Studio does not produce .class files. Instead, only the .gs
files are copied to the output directory. In addition, when compilation is disabled, Studio always reports an explicit
compilation as completing successfully, even when the code contains errors. To detect errors in your code when
compilation is disabled, explicitly verify that resource.
When you deploy your application, the .gs files are copied to the server, and the server compiles them as needed.
Therefore, when Gosu compilation is disabled, you may see server compilation errors that were not reported when
compiling in Studio.
Gosu compilation in Guidewire Studio is enabled by default.
1. In Guidewire Studio, click File→Settings.
2. In the Settings dialog, in the navigation list, expand Build, Execution, Deployment, then expand Compiler, and then
click Gosu Compiler.
3. Do the following:
• To disable Gosu compilation for tests, set Exclude Tests.
• To disable Gosu compilation for other files, set Disable Local Gosu Compilation. Then set the option to disable it
for All Gosu code, or Only Gosu code in PCF files.

See also
• “Compiling configuration resources” on page 106
• “Verifying configuration resources” on page 105
• “Setting options for Gosu command prompt compilation” on page 106

Setting options for Gosu command prompt compilation


The gwb compile command provides multiple options that modify the behavior of the Gosu compiler. These
configuration options apply only to the gwb compile command. The compilation tools that Guidewire Studio
provides do not use these options. For example, if you make changes to your Gosu code that might cause many
compilation errors or warnings, you can set options to terminate the compilation after reaching a threshold.
To set Gosu command-prompt compilation options, you edit the build.gradle file in the PolicyCenter
configuration folder. You add the configuration options and values at the top of the file, similar to the following
lines:

// Add custom project specific configuration here if needed


tasks.compileGosu.gosuOptions.failOnError = false

106 chapter 4: Working in Guidewire Studio


Guidewire PolicyCenter 9.0.6 Configuration Guide

The following table lists and describes the available configuration options for Gosu compilation.

Configuration option Default value Description


tasks.compileGosu.gosuOptions.checkedArithmetic false Supports enabling checked arithmetic, which
generates Gosu exceptions for nu.meric overflow
errors
tasks.compileGosu.gosuOptions.failOnError true Supports terminating a compilation task if the
number of errors exceeds the value that maxErrs
specifies.
tasks.compileGosu.gosuOptions.maxErrs 100 Specifies the permitted number of compilation
errors after which the compilation task fails if
failOnError is set to true. The compilation task
checks this value after compiling each file and
terminates if the number of errors is greater than
this value. If a file generates multiple compilation
errors, the reported number of errors can be
more than one greater than this option value.
tasks.compileGosu.gosuOptions.maxWarns Integer.maxInt Specifies the permitted number of compilation
warnings after which the compilation task fails if
warnings is set to true. The compilation task
checks this value after compiling each file and
terminates if the number of warnings is greater
than this value. If a file generates multiple compi‐
lation warnings, the reported number of warn‐
ings can be more than one greater than this op‐
tion value.
tasks.compileGosu.gosuOptions.verbose false Specifies whether to print a message to the log
for every file that the task compiles.
tasks.compileGosu.options.warnings false Supports terminating a compilation task if the
number of warnings exceeds the value that
maxWarns specifies.

Examples
Each example stands alone. Remove the line or lines that you added for one example before you try the next
example.
• Add the following line to the top of the build.gradle file.

tasks.compileGosu.gosuOptions.checkedArithmetic = true

At the command prompt run the gwb compile command. When you run a compiled class that causes a numeric
overflow, the class throws an arithmetic exception and terminates.
• Add the following line to the top of the build.gradle file.

tasks.compileGosu.gosuOptions.failOnError = false

At the command prompt run the gwb compile command. Even if there are multiple compilation errors, the task
ignores the maxErrs option and compiles all available Gosu classes. Output similar to the following lines
appears.

Error threshold of 10 exceeded; aborting compilation.


gosuc completed with 12 errors. Warnings were disabled.

Working in Guidewire Studio 107


Guidewire PolicyCenter 9.0.6 Configuration Guide

:modules:configuration:compileGosu completed with errors, but ignoring as 'gosuO


ptions.failOnError = false' was specified.

• Add the following lines to the top of the build.gradle file.

tasks.compileGosu.gosuOptions.failOnError = true
tasks.compileGosu.gosuOptions.maxErrs = 10

At the command prompt run the gwb compile command. If the number of compilation errors after completing
compilation of any Gosu file is greater than maxErrs, the compilation task terminates. Output similar to the
following lines appears.

Error threshold of 10 exceeded; aborting compilation.


gosuc completed with 12 errors. Warnings were disabled.

:modules:configuration:compileGosu FAILED

FAILURE: Build failed with an exception.

* What went wrong:


Execution failed for task ':modules:configuration:compileGosu'.
> Compilation failed with exit code 1; see the compiler error output for details.

• Add the following line to the top of the build.gradle file.

tasks.compileGosu.options.warnings = true
tasks.compileGosu.gosuOptions.maxWarns = 100

At the command prompt run the gwb compile command. If the number of compilation warnings after
completing compilation of any Gosu file is greater than maxWarns, the compilation task terminates. Output
similar to the following lines appears.

Warning threshold of 100 exceeded; aborting compilation.


gosuc completed with 129 warnings and 0 errors.

:modules:configuration:compileGosu FAILED

FAILURE: Build failed with an exception.

* What went wrong:


Execution failed for task ':modules:configuration:compileGosu'.
> Compilation failed with exit code 1; see the compiler error output for details.

• Add the following line to the top of the build.gradle file.

tasks.compileGosu.gosuOptions.verbose = true

At the command prompt run the gwb compile command. Output similar to the following lines appears.

gosuc: about to compile file: C:\Guidewire\PolicyCenter\modules\configuration\gsrc\gw\policy


\PolicyPeriodSearchCriteria.gs
gosuc: about to compile file: C:\Guidewire\PolicyCenter\modules\configuration\gsrc\gw\policy
\PolicyPeriodSideBySideEnhancement.gsx

See also
• Gosu Reference Guide

Suppressing compiler warnings


Gosu provides limited support for the Java annotation, @SuppressWarnings. As its namesake indicates, the
@SuppressWarnings annotation informs a compiler to suppress warnings.
108 chapter 4: Working in Guidewire Studio
Guidewire PolicyCenter 9.0.6 Configuration Guide

You can use the @SuppressWarnings annotation in several kinds of declarations. Such declarations exclude
declarations of local variables. Instead, the @SuppressWarnings annotation can apply to declarations of the
following categories:
• Type
• Function
• Property
• Constructor
• Field
• Parameter
The @SuppressWarnings annotation requires one parameter. This parameter is a String value that indicates the
warnings you wish to suppress.
For example, suppose you pass in the argument "all" into the @SuppressWarnings annotation. The annotation
invocation in this case would be @SuppressWarnings("all"). The effect of the annotation would be to suppress all
warnings.
For another example, suppose instead that you pass in the argument "deprecation" into the @SuppressWarnings
annotation. Suppose further that you invoke the annotation on the line prior to a Gosu class declaration. The
invocation in this case would be @SuppressWarnings("deprecation"). The effect of this annotation is to suppress
all deprecation warnings for the Gosu class you have declared.

Editing the XML definition of Studio resources


About this task
The editors in Guidewire Studio provide a visual editing environment for many resources. In addition to using the
visual editors, you can also edit the underlying XML code that defines the resource. Guidewire recommends that
you edit the XML code only within Studio, and that you do not edit it in an external editor.

Procedure
1. Open the resource in the Studio editor.
2. At the bottom of the editor pane, click the Text tab. The XML definition is shown in the editor pane.
3. Modify the XML as desired.
4. To switch back to the visual editor, click the tab next to the Text tab that shows the type of the resource that
you are editing.

Next steps
Make sure that the XML remains valid, and that you do not introduce any syntax errors. If the XML contains errors,
the representation of the resource in the visual editor may not be accurate.

Working in Guidewire Studio 109


Guidewire PolicyCenter 9.0.6 Configuration Guide

110 chapter 4: Working in Guidewire Studio


chapter 5

Working with Guidewire Studio

This topic describes Guidewire Studio and the Studio development environment.

Improving Studio performance


• “Set the maximum amount of memory available to Guidewire Studio” on page 111
• “Set the amount of memory for project builds in Guidewire Studio” on page 112

Set the maximum amount of memory available to Guidewire Studio


About this task
If Guidewire Studio is running slowly, you can increase the amount of memory available to it. Additional memory
allocated might improve Studio performance.

Procedure
1. Edit the file PolicyCenter/modules/script/gw-build.gradle.
2. Locate the studio section:

studio {
...
}

3. Within this section, set the following properties:

ideaProperties["tasks.studio.maxHeapSize"] = "memory_value"

Set memory_value to the number of megabytes desired, followed by the letter m. For example, to assign Studio
6GB, set this property to 6000m. The default value is 4000m.
Note: To set the memory for IntelliJ IDEA with OSGi Editor, set the property
tasks.pluginStudio.maxHeapSize.
4. Restart Studio.

See also
• “Setting IntelliJ IDEA properties in Studio” on page 98

Working with Guidewire Studio 111
Guidewire PolicyCenter 9.0.6 Configuration Guide

Set the amount of memory for project builds in Guidewire Studio


About this task

You can set the amount of memory available to Guidewire Studio during project builds and compilation. This may
reduce the time required for these actions.

Procedure

1. In Studio, click File→Settings.


2. In the Settings dialog, navigate to Build, Execution, Deployment→Compiler.
3. In the Build process heap size text box, type the number of megabytes.
For example, to assign Studio 12GB for project builds, set this property to 12000.

Resetting Guidewire Studio


Some changes that you make to Guidewire Studio or configuration files may result in Studio having obsolete file
references. For example, if you relocate the Guidewire Studio installation directory, or reinstall a source control
system, then Studio may produce compilation errors due to incorrect file references.
To correct obsolete file references, you can do the following:
• “Rebuild the Studio project files” on page 112
• “Rebuild the Studio file index cache” on page 112

Rebuild the Studio project files


Procedure

1. At a command prompt, change to the PolicyCenter directory.


2. Run the following command:
gwb cleanIdea

Rebuild the Studio file index cache


Procedure

1. Run Guidewire Studio.


2. On the File menu, click Invalidate Caches / Restart.
3. In the Invalidate Caches confirmation dialog, click Invalidate and Restart.

Setting font display options


About this task

You can set values for:


• Text font and size
• Character format properties
• Foreground and background colors of various language elements
112 chapter 5: Working with Guidewire Studio
Guidewire PolicyCenter 9.0.6 Configuration Guide

Note: You can set anti-aliasing of fonts in the editor Appearance settings page at
File→Settings→Editor→Appearance. Additionally, you can set font size zooming with the Ctrl+Mouse
wheel in the main Editor settings page at File→Settings→Editor.

Procedure
1. Navigate to File→Settings→Editor→Colors & Fonts.
2. Use the Colors & Fonts menu selections to set Studio display of text in the editors.
For example, if you click Gosu, you can set the font type and size of Gosu code in the editor.
3. You can also set how Studio displays specific Gosu code items, such as keywords or operators.
Studio displays a code sample at the bottom of the dialog that reflects your settings.

Working with Guidewire Studio 113


Guidewire PolicyCenter 9.0.6 Configuration Guide

114 chapter 5: Working with Guidewire Studio


chapter 6

PolicyCenter Studio and Gosu

This topic discusses how to work with Gosu code in PolicyCenter Studio.

Gosu building blocks


Guidewire provides a number of building blocks to assist you in implementing, configuring, and testing your
business logic in PolicyCenter. These include the following:
• Gosu classes and enhancements
• Gosu base library methods
• Gosu rules
• Gosu tests
• Gosu script parameters
For information on each of these, see the following:
• For general information on Gosu classes, see the Gosu Reference Guide.
• For information on the PolicyCenter base configuration classes see, “PolicyCenter base configuration classes” on
page 117.
• For information on the @export annotation and how it affects a class in Studio, see “Class visibility in Studio” on
page 118.
• For general information on Gosu enhancements, see the Gosu Reference Guide.
• For information on using Gosu business rules within Guidewire PolicyCenter, see the Rules Guide.
• For information on script parameters and how to use them in Gosu code, see “Script parameters” on page 121.

Gosu case sensitivity


Guidewire code is case sensitive. Access existing types exactly as they are declared, including correct capitalization.
For example, if a type is declared as MyClass, you cannot refer to it as myClass or myclass. Use the Gosu editor’s
code completion feature to enter the names of types and properties correctly.
To assist you, Studio highlights issues with case sensitivity.
The following table lists conventions for capitalization of various Gosu language elements:

Language element Standard capitalization Example


Gosu keywords Always specify Gosu keywords correctly, typically lowercase. if
Type names, including class names Uppercase first character DateUtil
PolicyCenter Studio and Gosu 115
Guidewire PolicyCenter 9.0.6 Configuration Guide

Language element Standard capitalization Example


Claim

Local variable names Lowercase first character myClaim

Property names Uppercase first character CarColor

Method names Lowercase first character printReport

Package names Lowercase all letters in packages and subpackages com.mycompany.*

Working with Gosu in PolicyCenter Studio


It is possible to create the following by selecting New from the Classes right-click menu:

Classes→New More information

Class • “Gosu classes” on page 116


• Gosu Reference Guide
Interface • Gosu Reference Guide
Enhancement • “Gosu enhancements” on page 120
• Gosu Reference Guide
Template • Gosu Reference Guide
Package • “Gosu packages” on page 116
GX Model • Gosu Reference Guide

Gosu packages
Guidewire PolicyCenter stores Gosu classes, enhancements, and templates in hierarchical structure known as
packages. To access a package, expand the Classes node in the Studio Resources tree.
Note: You can delete only an empty package.

Create a new package


About this task
It is possible to nest package names to create a dot-separated package name by selecting a package and repeating
these steps.

Procedure
1. Select Classes in the Resources tree.
2. Right-click, select New, then Package from the menu.
3. Enter the name for this package.
4. Click OK to save your work and exit this dialog.

Gosu classes
Gosu classes correspond to Java classes. Gosu classes reside in a file-based package structure. You can extend
classes in the base configuration of PolicyCenter to add properties and methods, and you can write your own Gosu
classes. You define classes in Gosu, and you access the properties and call the methods of Gosu classes from Gosu
code within methods.
116 chapter 6: PolicyCenter Studio and Gosu
Guidewire PolicyCenter 9.0.6 Configuration Guide

You create and reference Gosu classes by name, just as in Java. For example, you define a class named MyClass in a
package named MyPackage. You define a method on your class named getName. After you define your class, you
can instantiate an instance of the class and call the method on that instance, as the following Gosu sample code
demonstrates.

var myClassInstance = new MyPackage.MyClass()


var name = myClassInstance.getName()

Studio stores enhancement files in the gsrc folder in the resources tree. Gosu class files end in .gs.

See also
• “PolicyCenter base configuration classes” on page 117
• “Class visibility in Studio” on page 118
• “Preloading Gosu classes” on page 119
• Gosu Reference Guide

Create a new Gosu class


1. First create a package for your new class, if you have not already done so.
2. Select the package in the configuration tree.
3. Right-click, select New, then Gosu Class from the menu.
4. Enter the name for this class. (You can also set the resource context for this class at this time.)
5. Click OK to save your work and exit this dialog.

PolicyCenter base configuration classes


The gsrc resource folder contains Guidewire classes and enhancements—divided into packages—that provide
additional business functionality. In the base configuration, Studio contains the following packages in the gsrc
folder:
• com
• gw
• wsi
If you create new classes and enhancements, Guidewire recommends that you create your own subpackages in the
gsrc folder, rather than adding to the existing Guidewire folders.

The com package


In the base configuration, the com package contains a single Gosu class:

com.guidewire.pl.quickjump.BaseCommand

For a discussion of the QuickJump functionality, see “Implementing QuickJump commands” on page 135.

The gw package
In the base PolicyCenter configuration, the gw.* Gosu class libraries contain a number of Gosu classes, divided into
subpackages by functional area. To access these libraries, you merely need to type gw. (gw dot) in a Studio editor.
The following subpackages under the gw package play an important role in Studio:
• gw.api.*
• gw.plugin
PolicyCenter Studio and Gosu 117
Guidewire PolicyCenter 9.0.6 Configuration Guide

gw.api.*
There are actually two gw.api packages that you can access:
• One consists of a set of built-in library functions that you can access and use, but not modify.
• The other set of library functions is visible in the Studio gsrc folder in the configuration tree. You can not only
access these classes but also modify them to suit your business needs.
You access both the same way, by entering gw.api in the Gosu editor. You can then choose a package or class that
falls into one category or the other. For example, if you enter gw.api. in the Gosu editor, the Studio Complete Code
feature provides you with the following list:
• activity
• address
• admin
• ...
In this case, the activity and admin packages contain read-only classes. The address package is visible in Studio,
in the gsrc folder.

gw.plugin
If you create a new Gosu plugin, place your plugin class in the gw.plugin package.

See also
• For information on how to use Studio to work with plugins, see “Using the plugins registry editor” on page 129.
• For information on various types of plugins and how to implement plugins, see the Integration Guide.

The wsi package


PolicyCenter provides a fully WS-I standard-compliant web services layer for both server (publishing) and client
(consuming) web service APIs. The wsi package provides means of working with WS-I compliant web services.

See also
• “Using the web service editor” on page 133
• Integration Guide

Class visibility in Studio


For a Guidewire-provided Gosu class to be directly visible in Guidewire Studio™, Guidewire must mark that class
with the @export annotation. If a class is not marked @export, you might be able to access it in the file structure but
not see it in Studio.
If you need to access the class, simply create a new class and have it extend or subclass the class that you need.
For example, suppose that in PolicyCenter, the application source code defines a CCPCSearchCriteria class. This
class is visible in the application file structure as a read-only file in the following location:

PolicyCenter/modules/configuration/gsrc/gw/webservice/pc/pc900/ccintegration/ccentities

To access the class functionality, first create a new class in the following Studio Classes package:

gw.webservice.pc.ccintegration.v2.ccentities

You then have this class extend CCPCSearchCriteria, for example:

package gw.webservice.pc.ccintegration.v2.ccentities

uses java.util.Date
uses gw.api.web.product.ProducerCodePickerUtil
uses gw.api.web.producer.ProducerUtil

118 chapter 6: PolicyCenter Studio and Gosu


Guidewire PolicyCenter 9.0.6 Configuration Guide

class MyClass extends CCPCSearchCriteria {


var _accountNumber : String as AccountNumber
var _asOfDate : Date as AsOfDate
var _nonRenewalCode : String as NonRenewalCode
var _policyNumber : String as PolicyNumber
var _policyStatus : String as PolicyStatus
var _producerCodeString : String as ProducerCodeString
var _producerString : String as ProducerString
var _product : String as Product
var _productCode : String as ProductCode
var _state : String as State
var _firstName : String as FirstName
var _lastName : String as LastName
var _companyName : String as CompanyName
var _taxID : String as TaxID

construct() { }

override function extractInternalCriteria() : PolicySearchCriteria {


var criteria = new PolicySearchCriteria()
criteria.SearchObjectType = SearchObjectType.TC_POLICY
...
}
}

Preloading Gosu classes


PolicyCenter provides a preload mechanism to support preloading of Gosu classes, as well as other primary classes.
The intent is to make the system more responsive the first time requests are made for that class. This is meant to
improve application performance by preloading some of the necessary application types.
To support this, Guidewire provides a preload.txt file in Other Resources to which you can add the following:

Static meth‐ Static method invocations dictate some kind of action and have the following syntax:
od invoca‐ type#method
tions The referenced method must be a static, no‐argument method. However, the method can be on either a Java
or Gosu type.
In the base configuration, Guidewire includes some actions on the gw.api.startup.PreloadActions class. For
example, to cause all Gosu types to be loaded from disk, use the following:
gw.api.startup.PreloadActions#headerCompileAllGosuClasses
You can add additional lines that call static methods.
Type names Type names can be either Gosu or Java types. You must use the fully‐qualified name of the type. For any Java or
Gosu type that you list in this file:
• Java – PolicyCenter loads the associated Java class file.
• Gosu – PolicyCenter parses and compiles the type to Java byte code, as well as any Gosu blocks and inner
classes within that type.

Guidewire provides the logging category Server.Preload, which provides DEBUG level logging of all actions and
preloaded types.

Populate the list of types

Before you begin

Guidewire recommends that you first perform whatever actions you need to within PolicyCenter interface.

Procedure

1. Navigate to the Loaded Gosu Classes page (Server Tools→Info Pages).


2. Copy and paste the list that you see there into the preload.txt file.
PolicyCenter Studio and Gosu 119
Guidewire PolicyCenter 9.0.6 Configuration Guide

Result
The next time that you start the application server, PolicyCenter compiles those types on startup.

Gosu enhancements
Gosu enhancements provide additional methods (functionality) on a Guidewire entity. For example, suppose that
you create an enhancement to the Activity entity. Within this enhancement, you add methods that support new
functionality. Then, if you type Activity. (Activity dot) within any Gosu code, Studio automatically uses code
completion on the Activity entity. It also automatically displays any methods that you have defined in your
Activity enhancement, along with the native Activity entity methods.
Studio stores enhancement files in the gsrc folder in the resources tree.
• Gosu class files end in .gs.
• Gosu enhancement files end in .gsx.
The Gosu language defines the following terms:
• Classes – Gosu classes encapsulate data and code for a specific purpose. You can subclass and extend existing
classes. You can store and access data and methods on an instance of the class or on the class itself. Gosu classes
can also implement Gosu interfaces.
• Enhancements – Gosu enhancements are a Gosu language feature that allows you to augment classes and other
types with additional concrete methods and properties. For example, use enhancements to define additional
utility methods on a Java class or interface that you cannot directly modify. Also, you can use an enhancement to
extend Gosu classes, Guidewire entities, or Java classes with additional behaviors.

Create a new enhancement


Before you begin
If you have not already done so, first create a package for your new class.

Procedure
1. In Guidewire Studio, in the Project tool window, navigate to configuration→gsrc, and then to the package for
your new class.
2. Right-click the package, and then click New→Gosu Enhancement.
3. Type the name for the enhancement.
Guidewire strongly recommends that you end each enhancement name with the word Enhancement.
For example, if you create an enhancement for an Activity entity, name your enhancement
ActivityEnhancement.
4. Enter the entity type to enhance.
For example, if enhancing an Activity entity, enter Activity.

See also
• Gosu Reference Guide

XML and GX models


Business data entities, Gosu class data, and other types can be exported as XML by using a GX model. The model is
built by selecting the desired properties from the data type. While selecting the properties to map, PolicyCenter
automatically creates an XSD schema to describe the model’s XML structure. At run time, an object’s data can be
converted to XML by creating an instance of the GX model.
120 chapter 6: PolicyCenter Studio and Gosu
Guidewire PolicyCenter 9.0.6 Configuration Guide

Define a GX model
1. Navigate to the Classes package in which you want to create the GX model.
2. Right-click the package name, and then click New→GX Model.

See also
• Gosu Reference Guide

Script parameters
Script parameters are resources defined in Guidewire Studio™ that you can use as global variables in Gosu code.
System administrators change the values of script parameters on the Administration tab. Changes to values take effect
immediately in Gosu code.

Script parameters overview


PolicyCenter uses the ScriptParameters.xml configuration file as the system of record for script parameter
definitions and their initial values. You can create script parameters only in Studio, by navigating to
configuration→config→resources→ScriptParameters.xml. At the time of creation, Studio adds new script parameters to
the ScriptParameters.xml configuration file. After creation, you manage the values of script parameters through
the PolicyCenter user interface, not through Studio.
On server startup, PolicyCenter compares the list of script parameters that currently reside in the database to those in
the ScriptParameters file. During the comparison, PolicyCenter does one of the following:
• New script parameters – PolicyCenter adds to the database new script parameters in the XML file that are not
in the database. PolicyCenter propagates the initial values as set in the XML file to the database.
• Existing script parameters – PolicyCenter ignores existing script parameters in the XML file that already are in
the database. PolicyCenter does not propagate changed values for existing parameters from the XML file to the
database.
After a script parameter resides in the database, you manage it solely from the Script Parameters administration screen
in the PolicyCenter administrative interface. You access the Script Parameters screen by first logging on with an
administrative account, then navigating to Administration→Utilities→Script Parameters.

IMPORTANT After you create a script parameter in Studio, PolicyCenter ignores subsequent changes
that you make to the parameter value. You must make all subsequent changes to parameter values in
the Script Parameters administration screen of the PolicyCenter user interface.

Script parameters as global variables


There are several reasons to create global variables:
• You want a variable that is global in scope across the application that you can change or reset through the
application interface.
• You want a variable to hold a value that you can use in any Gosu expression, and you want to change that value
without editing the expression.
These two reasons for use of script parameters, while seemingly related, are entirely independent of each other.
• Use script parameters to create variables that you can change or reset through the PolicyCenter interface.
• Use Gosu class variables to create variables for use in Gosu expressions.
For information on Gosu class variables, see the Gosu Reference Guide.

Script parameter examples


Suppose, for example, that you have exception rules that trigger when an activity is overdue for more than five (5)
days. If you included the value “5” in all of the rules, you would have to modify the rules if you decided to change
PolicyCenter Studio and Gosu 121
Guidewire PolicyCenter 9.0.6 Configuration Guide

the value to ten (10). Instead, define a script parameter, set its value to five (5), and then use this parameter in the
rules. To change the activity exception behavior, you need change only the parameter, and the rules automatically
uses the new value.
More complex examples include:
• Setting the number of days before the policy end date to start the renewal process – It is possible that this
varies by policy type and Line of Business.
• Setting the maximum number of years for automatic policy renewal without an underwriting review –
After the set number of threshold years passes, the Rule engine generates an activity to manually review the
policy.
• Setting the date in which new policy terms come into effect – This effectively requires all policies created
after a given date to contain certain forms and amendment, for example.
Note: Script parameters are read-only within Gosu. You cannot set the value of a script parameter in a
Gosu statement or expression.

Working with script parameters


In working with script parameters:
• You create script parameters, set their initial values, and create property getter methods in Guidewire Studio.
• You administer script parameters and modify their values in the PolicyCenter interface, on the Administration tab.
The application server references only the initial values for script parameters that you set in Guidewire Studio.
Thereafter, the application server references the values that you set through the PolicyCenter interface and ignores
subsequent changes to values that you set as set in Studio.
A script parameter definition is provided in a <ScriptParameterPack> element within the <script-parameters>
element in the scriptparameters.xml configuration file. The following lines show the basic attributes and
subelements for a script parameter definition:

<script-parameters>
<ScriptParameterPack ParamName="ParameterName" ParamType="datatype">
<ParamValue>value</ParamValue>
</ScriptParameterPack>
</script-parameters>

To see the data types available for script parameters, examine the ScriptParameter entity definition. This entity
contains properties for each valid type. For example, ScriptParameter uses BitValue for bit, DatetimeValue for
datetime, IntegerValue for decimal, and VarcharValue for varchar script parameter values.
To make a new script parameter value available in Gosu, you must provide a getter method in the script parameters
enhancement file.

IMPORTANT After you create a script parameter in Studio, PolicyCenter ignores subsequent changes
that you make to the parameter value. You must make all subsequent changes to parameter values in
the Script Parameters administration screen of the PolicyCenter user interface.

Create a script parameter


Procedure
1. In Guidewire Studio, in the Project tool window, navigate to configuration→config→resources, and then open the
file ScriptParameters.xml.
2. Edit the XML and define your new parameter using the existing format as a guide.
3. Navigate to configuration→gsrc→gw→scriptparameter, and then double-click ScriptParametersEnhancement.
4. Add a static property getter method that returns a value of the correct data type for the new parameter.
For example, for a script parameter of type varchar, use code similar to the following:
122 chapter 6: PolicyCenter Studio and Gosu
Guidewire PolicyCenter 9.0.6 Configuration Guide

public static property get MyNewScriptParameter(): String {


return ScriptParameters.getParameterValue("MyNewScriptParameter") as String;
}

Delete a script parameter


About this task
You can delete a script parameter if you no longer reference it in any Gosu expression.

Procedure
1. In Guidewire Studio, in the Project tool window, navigate to configuration→config→resources, and then open the
file ScriptParameters.xml.
2. Edit the XML and remove the element defining the parameter to delete.

Referencing a script parameter in Gosu


You can access a script parameter in Gosu through the globally accessible ScriptParameters object. Within Gosu,
you access a parameter by using ScriptParameters.paramname.
For example, the following Gosu code determines if it is more than five days past an activities due date:

gw.api.util.DateUtil.daysSince( Activity.EndDate ) > 5

You can, instead, create a script parameter named escalationTime, set its value to 5, and rewrite the line as
follows:

gw.api.util.DateUtil.daysSince( Activity.EndDate ) > ScriptParameters.escalationTime

Note: Guidewire recommends that you use Gosu class variables instead of script parameters to
reference values in Gosu expressions. The exception would be if you needed the ability to reset the
value from the PolicyCenter interface.

PolicyCenter script parameters


The base configuration of PolicyCenter includes the script parameter EnableDisplayBasicSearchTab. You
administer script parameters and modify their values on the Script Parameters page of the Administration tab.

See also
• “Configuration parameters and files for free-text search in PolicyCenter” on page 395
• “Enabling free-text search in PolicyCenter” on page 397
• “Enabling the free-text search user interface in PolicyCenter” on page 398

PolicyCenter Studio and Gosu 123


Guidewire PolicyCenter 9.0.6 Configuration Guide

124 chapter 6: PolicyCenter Studio and Gosu


part 3

Guidewire Studio editors


Guidewire PolicyCenter 9.0.6 Configuration Guide
chapter 7

Using the Studio editors

This topic discusses the various editors available to you in Guidewire Studio.

Editing in Guidewire Studio


Guidewire Studio displays PolicyCenter resources in the left-most Studio pane. After you select a resource, Studio
automatically loads the editor associated with that resource into the Studio work space. Studio contains the
following editors:

Editor Use to... More information


Display Keys Graphically create and define display keys. “Using the display keys editor” on page 151
Entity Names Represent an entity name as a text string suitable for view‐ “Using the entity names editor” on page 141
ing in the PolicyCenter interface.
Gosu Create and manage Gosu code used in classes, tests, en‐ “Working in the Gosu editor” on page 128
hancements, and interfaces.
Messaging Work with messaging plugins. “Using the messaging editor” on page 147
Page Configura‐ Graphically define and edit page configuration (PCF) files, “Using the PCF editor” on page 337
tion (PCF) used to render the PolicyCenter Web interface.
Plugins Graphically define, edit and manage Java and Gosu plugins. “Using the plugins registry editor” on page
129
Product Model Define and configure the PolicyCenter product model. “Using Product Designer to edit the product
model” on page 128
System Tables Define PolicyCenter system tables. Product Model Guide
Typelist Define typelists for use in the application. “Working with typelists” on page 289
Workflows Graphically define and edit application workflows. “Using the workflow editor” on page 427

Using the Studio editors 127


Guidewire PolicyCenter 9.0.6 Configuration Guide

Working in the Gosu editor


You use the Gosu editor to manage all code written in Gosu. If you open any of the following from the Resources
pane, Studio automatically opens the file in the Gosu editor:
• Classes
• Enhancements
• Interfaces
• GUnit tests

See also
• Gosu Reference Guide

Using Product Designer to edit the product model


Guidewire Product Designer provides a means of viewing, manipulating, and managing the PolicyCenter product
model using a graphical interface (rather than through configuration files). By using Product Designer, you can
define and configure the following:
• Products
• Policy Lines
• Question Sets
• Audit Schedules
• System Tables
In Product Designer, you can view, edit, and create new instances of each product model component through a web
interface, in either a single-user or mutli-user environment.

See also
• Product Model Guide
• Application Guide

128 chapter 7: Using the Studio editors


chapter 8

Using the plugins registry editor

A PolicyCenter plugin is a mini-program that you can invoke to perform some task or calculate a result.

What are plugins?


PolicyCenter plugins are mini-programs (Gosu or Java classes) that PolicyCenter invokes to perform an action or
calculate a result.
• An example of a plugin that calculates a result is a policy number generation plugin, which PolicyCenter invokes
to generate a new policy number as necessary.
• An example of a plugin that performs an action would be a message transport plugin, the purpose of which is to
send a message to an external system.

Plugin implementation classes


A Guidewire plugin class implements a specific plugin interface. Guidewire provides a set of plugin interfaces in the
base configuration. You can create a new class that implements the plugin interface for your business needs. You can
choose to implement a plugin as either a Gosu class, Java class, or OSGi bundle. Alternatively, if the PolicyCenter
base configuration already provides a implementation of the plugin interface, then you can register it.

See also
• Integration Guide

What is the plugins registry?


Within Studio, expand the configuration→config →Plugins→registry node to view the contents of the Plugins Registry.
Each item in the Plugins Registry is a .gwp file that represents a plugin implementation in the base configuration. To
configure a particular plugin, double-click its name in the registry to enter the Plugins Registry editor.
Each Plugins Registry item (each.gwp file) includes fields for the following information:
• Plugin name – A unique name for this plugin implementation. Plugin names can include alphanumeric
characters only. Space or blank characters are not allowed. If the plugin interface supports only a single
implementation, make this the name of the interface without the package.
• Implementation class – The plugin implementation class as a fully-qualified class name.
• Plugin interface – The interface that the class implements. If the plugin interface field is left blank, PolicyCenter
uses the plugin name as the interface name.
Using the plugins registry editor 129
Guidewire PolicyCenter 9.0.6 Configuration Guide

The Plugins Registry fields work slightly differently depending on whether the interface supports multiple
implementations. Most plugin interfaces supports only a single plugin implementation. Other plugin interfaces, such
as messaging plugins and startable plugins, support multiple plugin implementations.

See also
• For the maximum number of supported implementations for each plugin interface, see the table the Integration
Guide.

Startable plugins
To register code that runs at server start up, you register startable plugin implementations. Startable plugins
implement the IStartablePlugin interface. Typically, startable plugins are implemented as daemons, such as
listeners to JMS queues. Unlike standard Guidewire plugins, you can stop and start startable plugins from the
administrative interface. Alternatively, you can use PolicyCenter multi-threaded inbound integration APIs, which
use startable plugins.

See also
• Integration Guide

Working with plugins


Create a plugins registry item
Procedure
1. In the Project tool window, navigate to configuration→config →Plugins→registry.
2. Right-click registry, and then click New→Plugin.
3. In the Name text box, type the plugin name. If the interface supports only a single implementation, use the
same name as the plugin interface. For the maximum number of supported implementations for each interface,
see the table the Integration Guide.
4. In the Interface box, type the name of the plugin interface, or click Browse to search for valid interfaces.
For all startable plugins, enter IStartablePlugin.

Add an implementation to a plugins registry item


Procedure
1. In the Project tool window, navigate to configuration→config →Plugins→registry. In the list of plugin items in the
Plugins Registry, double-click the plugin name to open it in the Plugins Registry editor.
2. Click Add Plugin , and then click the type of plugin to add: Gosu, Java, or OSGi.
Note: Do not change the value of the Name field in this editor. To rename the plugin
implementation, right-click it in the Project window hierarchy, and then click Refactor→Rename.
Gosu Implementations
If you select Add Gosu Plugin, you see the following:

Gosu Type the name of the Gosu class that implements this plugin interface. In the base configuration, Guidewire
Class places all Gosu plugin implementation classes in the following package under configuration→gsrc:
gw.plugin.package.impl
You must enter the fully‐qualified path to the Gosu implementation class. For example, use
gw.plugin.email.impl.EmailMessageTransportPlugin for the Gosu EmailMessageTransport plugin.
See the Integration Guide for more information.

130 chapter 8: Using the plugins registry editor


Guidewire PolicyCenter 9.0.6 Configuration Guide

Java Implementations
If you select Add Java Plugin, you see the following:

Java Class Type the fully qualified path to the Java class that implements this plugin. This is the dot separated package
path to the class. Place all custom (non‐Guidewire) Java plugin classes in the following directory:
PolicyCenter/modules/configuration/plugins/

Plugin Di- (Optional) Type the name of the base plugin directory for the Java class. This is a folder (directory) in the
rectory modules/configuration/plugins directory. If you do not specify a value, Studio assumes that the class
exists in the modules/configuration/plugins/shared directory.
See the Integration Guide.

OSGi Implementations
If you select Add OSGi Plugin, you see the following:

Service PID Type the fully‐qualified Java class name for your OSGi implementation class.
See the Integration Guide.

3. After creating the plugin, you can add parameters to it. To do so, click Add Parameter , and then enter the
parameter name and value.
If you have already set the environment or server property at the global level, then those values override any
that you set in this location. For any property that you set in this location to have an effect, that property must
be set to the Default (null) at the global level for this plugin. For more information on setting environment
or server properties, see “Set environment and server context for plugin implementations” on page 131.

Enable and disable a plugin implementation


You can choose to make a plugin implementation inactive using the Disabled checkbox. You can, for example, enable
the plugin implementation for testing and disable it for production. It is important to understand, however, that you
can still access a disabled plugin implementation and call it from code. Enabling or disabling a plugin
implementation is only meaningful for plugins that care about the distinction. For example, you must enable a plugin
for use in messaging in order for the plugin to work and for messages to reach their destination. If it is a concern,
then the plugin user must determine whether a plugin implementation is enabled.
If you change the status of the plugin (from enabled to disabled, or the reverse), then you must restart the application
server for it to pick up this change.

Set environment and server context for plugin implementations


Within the Plugins Registry editor, you can set the plugin deployment environment (the Environment property) and
the server ID (the Server property).
• Use Environment to set the deployment environment in which this plugin is active. For example, you may have
multiple deployment environments (a test environment and a development environment) and you want this
plugin to be active in only one of these environments.
• Use Server to set a specific server ID. For example, if running PolicyCenter in a clustered environment, you may
want this plugin to be active only on a certain machine within the cluster.
These are global properties for this plugin. You can set either of these two properties on individual plugin properties.
But, if set in this location, these override the individual settings.

See also

• Integration Guide
• System Administration Guide
Using the plugins registry editor 131
Guidewire PolicyCenter 9.0.6 Configuration Guide

Customizing plugin functionality


If you want to modify the behavior of a plugin, then do one of the following:
• Modify the underlying class that implements the plugin functionality.
• Change the plugin definition to point to an entirely different Java or Gosu plugin class.
For information on plugins in general, see the Integration Guide.
For information on creating and deploying a specific plugin type, see the following topics:

Plugin type Description More information


Gosu A Gosu class Integration Guide
Java A Java class that does not use the OSGi standard. Integration Guide
Integration Guide
OSGi A Java class inside an OSGi bundle. Integration Guide

Working with plugin versions


If your installation includes more than one Guidewire application, be aware that some plugins exist primarily to
connect to other Guidewire applications. If you want to use the base configuration plugin implementation to connect
to other Guidewire applications, you must ensure that you use the correct version of the plugin implementation. The
name of the classes are equivalent but vary in their package, which includes the application version number.
For the package name, Guidewire includes the application two-digit abbreviation followed by the application
version number with no periods. For example, in PolicyCenter 10.0, the package includes pc1000.
For example, in the Guidewire PolicyCenter application, the plugin implementation that connects PolicyCenter 10.0
to BillingCenter 10.0 is at the folowing fully qualified path:

gw.plugin.billing.bc1000.BCBillingSystemPlugin

For integrations with other Guidewire InsuranceSuite applications, choose the plugin implementation class that
matches the version of your applications. Choose the implementation with the proper version number of the other
application (not the current application) in its package name.
Guidewire uses the following abbreviation conventions for naming its applications:

Application Abbreviation
ClaimCenter cc

PolicyCenter pc

ContactManager ab
BillingCenter bc

132 chapter 8: Using the plugins registry editor


chapter 9

Working with web services

PolicyCenter supports WS-I web services. WS-I web services use the SOAP protocol. This topic discusses how to
define and configure web services with Guidewire Studio.

Using the web service editor


PolicyCenter provides a fully WS-I compliant web services layer for both server publishing and client consuming
web service APIs.
Guidewire Studio™ stores WS-I web service resources in a web service collection. A web service collection
encapsulates the set of resources necessary to connect to a web service on an external server. Typical resources
include one or more web service endpoints and the WSDL and XSD files that they reference. Web service
collections are created and managed in the Studio Web Service editor.
Collection files have a .wsc file extension. The location of the web service collection in the package hierarchy
defines the package for the types that Gosu creates from the associated WSDL.
The Web Service editor consists of several areas.

Editor Description
area
Toolbar The toolbar is located directly above the Resources pane. The toolbar icons provide the following actions.
• Add New Resource – Create new URL resource to the web service WSDL file.
• Edit Resource ‐ Edit the URL resource to the web service WSDL file.
• Remove Resource – Remove the URL from the list of web service resources.
• Move Up ‐ Move the selected URL resource up one level in the list of resources.
• Move Down ‐ Move the selected URL resource down one level in the list of resources.
• Fetch – Retrieve WSDL and XSD files for a web service resource. The retrieved files are shown in the editor's
Fetched Resources tab.
• Setup Environment ‐ Show the Studio Settings window. In the window's Sidebar, select Guidewire Studio to show
the Web Services Environment setting.
Resources Contains the list of defined URL resources for the web service. Each URL points to a web service WSDL file. The
pane WSDL file can exist in any of the following locations.
• The local file system
• A local server
• A remote server

Working with web services 133


Guidewire PolicyCenter 9.0.6 Configuration Guide

Editor Description
area
Settings tab Create and manage configuration entries for the web service. The following types of configuration entries are
supported.
• Configuration Provider – Specifies a class that implements the IWsiWebserviceConfigurationProvider
interface.
• Override URL – Specifies an override proxy URL for the web service.
See the Integration Guide.
Fetched Re- Shows the WSDL and XSD files for the web services.
sources tab

See also
• Integration Guide

Defining a web service collection


To consume an external web service, the associated WSDL and schema files for the web service must be loaded into
the local namespace. This operation is performed by defining a web service collection in PolicyCenter Studio. In the
base configuration, Guidewire provides a number of default web service collections in the following hierarchy.
configuration→gsrc→wsi.
Guidewire recommends that new web service collections be created within this directory structure.

Create a web service collection


Procedure
1. In Studio, navigate in the configuration→gsrc→wsi hierarchy to a package in which to store the collection file.
2. Right-click and choose New→Webservice Collection. Studio prompts for a name for the web service collection.
Enter a name for the web service collection and click OK to show the Web Service editor.
3. On the editor toolbar, click the Add New Resource icon.
4. In the Add Resource window, enter the URL of the WSDL for the external web service. This is also called the
web service endpoint URL. After a valid URL is entered, click OK.
5. Studio recognizes that the list of resource URLs has been modified and offers to fetch updated resources.
Click Yes. Studio retrieves the WSDL and XSD files for the web service. The file contents can be viewed in
the Fetched Resources tab. Updated resources can be fetched at any time by clicking the toolbar's Fetch icon.
6. The created collection URL is shown in the editor’s Resources pane.

134 chapter 9: Working with web services


chapter 10

Implementing QuickJump commands

This topic discusses how you can configure, or create new, QuickJump commands.

What Is QuickJump?
The QuickJump box is a text-entry box for entering navigation commands using keyboard shortcuts. Guidewire places
the box at the upper-right corner of each PolicyCenter screen. You set which commands are valid through the
QuickJump configuration editor. At least one command must exist (be defined) in order for the QuickJump box to appear
in PolicyCenter. (Therefore, to remove the QuickJump box from the PolicyCenter interface, remove all commands
from the QuickJump configuration editor.)
You set the keyboard shortcut that activates the QuickJump box in config.xml. The default key is “/” (a forward
slash). Therefore, the default action to access the box is Alt+/.
There are three basic types of navigation commands:

Type Use for


QuickJumpCom‐ Commands that navigate to a page that accepts one or more static (with respect to the command being
mandRef defined) user‐entered parameters. See “Implementing QuickJumpCommandRef commands” on page
136 for details.
StaticNavigation‐ Commands that navigate to a page without accepting user‐entered parameters. See “Implementing
CommandRef StaticNavigationCommandRef commands” on page 137.
ContextualNaviga‐ Commands that navigate to a page that takes a single parameter, with the parameter determined based
tionCommandRef on the user's current location. See “Implementing ContextualNavigationCommandRef commands” on
page 138.

Adding a QuickJump navigation command


If you add a command, first set the command type, then define the command by setting certain parameters. The
editor contains a table with each row defining a single command and each column representing a specific command
parameter. You use certain columns with specific command types only. PolicyCenter enables only those row cells
that are appropriate for the command, meaning that you can only enter text in those specific fields.

Implementing QuickJump commands 135


Guidewire PolicyCenter 9.0.6 Configuration Guide

Column Only use with Description


Command Name • QuickJumpCommandRef Display key specifying the command string the user types to
• StaticNavigationCommandRef invoke the command. Note that the command string must not
• ContextualNavigationCommandRef contain a space.
Command Class • QuickJumpCommandRef Class that specifies how to implement the command. This
class must be a subclass of QuickJumpCommand. Guidewire in‐
tentionally makes the base QuickJumpCommand class package
local. To implement, override one of the subclasses described
in “Implementing QuickJumpCommandRef commands” on
page 136.
You only need to subclass QuickJumpCommand if you plan to
implement the QuickJumpCommandRef command type. For the
other two command types, you use the existing base class ap‐
propriate for the command—either
StaticNavigationCommand or
ContextualNavigationCommand—and enter the other re‐
quired information in the appropriate columns.
Command Target • StaticNavigationCommandRef Target page ID.
• ContextualNavigationCommandRef
Command Argu‐ • StaticNavigationCommandRef Comma‐separated list of parameters used in the case in which
ments the target page accepts one or more string parameters. (This is
not common.)
Context Symbol • ContextualNavigationCommandRef Name of a variable on the user's current page.
Context Type • ContextualNavigationCommandRef Type of context symbol (variable).

Implementing QuickJumpCommandRef commands


To implement the QuickJumpCommandRef navigation command type, subclass QuickJumpCommand or one of its
existing subclasses. See the following sections for details:

Subclass Section
StaticNavigationCommand “Implementing QuickJumpCommandRef commands” on page 136
ParameterizedNavigationCommand “Implementing QuickJumpCommandRef commands” on page 136

ContextualNavigationCommand “Implementing QuickJumpCommandRef commands” on page 136


EntityViewCommand “Implementing QuickJumpCommandRef commands” on page 136

All QuickJumpCommand subclasses must define a constructor that takes a single parameter—the command name—as
a String.

Navigation commands with one or more static parameters


To perform simple navigation to a page that accepts one or more parameters (which are always the same for a given
command), subclass StaticNavigationCommand. The class constructor must call the super constructor, which takes
the following arguments:
• The command name (which you pass into your subclass's constructor)
• The target location's ID
Your subclass implementation must override the getLocationArgumentTypes and getLocationArguments
methods to provide the required parameters for the target location.
It is possible to create a no-parameter implementation by subclassing StaticNavigationCommand. However,
Guidewire recommends that you use the StaticNavigationCommandRef command type instead as it reduces the
136 chapter 10: Implementing QuickJump commands
Guidewire PolicyCenter 9.0.6 Configuration Guide

number of extraneous classes needed. See “Implementing StaticNavigationCommandRef commands” on page 137
for details.

Navigation commands with an explicit parameter (including search)


To create a command that performs simple navigation to a page that accepts a single user parameter, subclass
ParameterizedNavigationCommand. The constructor takes the same two arguments as
StaticNavigationCommand. Your subclass must override the getParameterSuggestions method, which provides
the list of auto-complete suggestions for the parameter. It must also override the getParameter method, which
creates or fetches the actual parameter object given the user's final input.
Subclasses of ParameterizedNavigationCommand must also implement getCommandDisplaySuffix.
PolicyCenter displays the command in the QuickJump box as part of the auto-complete list (before the user has
entered the entire command). Therefore, PolicyCenter displays the command name followed by the command
display suffix. This is typically some indication of what the parameter is, for example bean name or policy number.

Navigation commands with an inferred parameter


To implement a command that navigates to a page that accepts a single parameter, with the parameter based on the
user's current location, subclass ContextualNavigationCommand. The constructor takes the same two arguments as
StaticNavigationCommand, plus two additional arguments:
• The name of a PCF variable. If this variable exists on the user's current location, Guidewire Studio™ makes the
command available and uses the value of the variable as the parameter to the target location.
• The type of the variable.
Guidewire recommends that you use the ContextualNavigationCommandRef command type instead of subclassing
ContextualNavigationCommand. See “Implementing ContextualNavigationCommandRef commands” on page 138
for details.

Navigation to an entity‐viewing page


For commands that navigate to a page that simply displays information about some entity, subclass
EntityViewCommand. The constructor takes the following arguments:
• The name of the command (which you pass into your subclass's constructor)
• The type of the entity
• A property on the entity to use in matching the user's input (and providing auto-complete suggestions)
• The permission key that determines whether the user has permission to know the entity exists (This is typically a
“view” permission.)
• The target location's ID
Subclasses must override handleEntityNotFound to specify behavior on incomplete or incorrect user input. A
typical implementation simply throws a UserDisplayableException. Subclasses must also implement
getCommandDisplaySuffix, which behaves in the fashion described previously in “Implementing
QuickJumpCommandRef commands” on page 136.
By default, parameter suggestions and parameter matching use a query that finds all entities of the appropriate type
in which the specified property starts with the user's input. If this query is too inefficient, the subclass can override
getQueryProcessor (for auto-complete) and findEntity (for parameter matching). If you do not want some users
to see the command, then the subclass must also override the isPermitted method.
By default, the auto-complete list displays each suggested parameter completion as the name of the command
followed by the value of the matched parameter. Subclasses can override getFullDisplay to change this behavior.
However, the suggested name must not stray too far from the default, as it does not change what appears in the
QuickJump box after a user selects the suggestion. Entity view commands automatically chain to any appropriate
contextual navigation command (for example, “Claim <claim #> Financials”).

Implementing StaticNavigationCommandRef commands


StaticNavigationCommandRef specifies a command that navigates to a page without accepting user-entered
parameters. It is the simplest to implement. You specify the Command Name and Command Target in exactly the
Implementing QuickJump commands 137
Guidewire PolicyCenter 9.0.6 Configuration Guide

same manner as for a static navigation command. You must also specify the Command Target, and any necessary
Command Arguments. These parameters have the following meanings:
• Command Target specifies the ID of the target page.
• Command Arguments specify one or more parameters to use in the case in which the target page accepts one or
more string parameters. If there is more than one parameter, enter a comma-separated list.

Implementing ContextualNavigationCommandRef commands


ContextualNavigationCommandRef specifies a command that navigates to a page that takes a single parameter.
(The user's current location determines the parameter.) You specify the Command Name and Command Target in
exactly the same manner as for a static navigation command. You must also specify the Context Symbol and the
Context Type. These parameters have the following meanings:
• Context Symbol specifies that name of a variable on the user’s current page.
• Context Type specifies that variable’s type.
PolicyCenter passes the value of this variable to the target location as the only parameter. If no such variable exists
on the current page, then the command is not available to the user and the command does not appear in the
QuickJump box’s auto-complete suggestions.
If the Context Type is an entity, then any EntityViewCommands matching the entity type can automatically be
“chained” by the user into the ContextualNavigationCommand. For instance, suppose that there is an
EntityViewCommand called Policy that takes a policy number and navigates to a Policy. Also, suppose that there is
a ContextualNavigationCommand called Contacts whose context type is Policy. In this case, the user can type
Policy 35-402398 Contacts to invoke the Contacts command on the specified Policy.

See also
• “Implementing QuickJumpCommandRef commands” on page 136

Checking permissions on QuickJump navigation commands


Keep the following security issues in mind as you create navigation commands for the QuickJump box.

Subclassing StaticNavigationCommand
Commands that implement this subclass check the canVisit permission by default to determine whether a user has
the necessary permission to see that QuickJump option in the QuickJump box. The permission hole in this case arises
if permissions were in place for all approaches to the destination but not on the destination itself.
For example, suppose that you create a new QuickJump navigation for NewNotePopup. Then suppose that previously
you had placed a permission check on all New Note buttons. In that case PolicyCenter would have checked the
Note.create permissions. However, enabling QuickJump navigation to NewNotePopup bypasses those previous
permissions checks. The best practice is to check permissions on the canVisit tag of the actual destination page, in
this case, on NewNotePopup.

Subclassing ContextualNavigationCommand
As with StaticNavigationCommand subclasses, add permission checks to the destination page's canVisit tag.

Subclassing ParameterizedNavigationCommand
Classes subclassing ParameterizedNavigationCommand have the (previously described) method called
isPermitted, which is possible for you to override. This method—isPermitted—controls whether the user can
see the navigation command in the QuickJump box. After a user invokes a command, PolicyCenter performs standard
permission checks (for example, checking the canVisit expression on the target page), and presents an error
message to unauthorized users.
It is possible for the canVisit expression on the destination page to return a different value depending on the actual
parameters passed into it. As a consequence, PolicyCenter cannot determine automatically whether to display the
command to the user in the QuickJump box before the user enters a value for the parameter. If it is possible to
138 chapter 10: Implementing QuickJump commands
Guidewire PolicyCenter 9.0.6 Configuration Guide

manually determine whether to display the command to the user, check for permission using the overridden
isPermitted method. (This might be, for example, from the destination's canVisit attribute.)

Implementing QuickJump commands 139


Guidewire PolicyCenter 9.0.6 Configuration Guide

140 chapter 10: Implementing QuickJump commands


chapter 11

Using the entity names editor

This topic describes entity names and entity name types and how to work with the entity names in the Entity Names
editor in Guidewire Studio™.

Entity names editor


It is possible to define an entity name as a text string, which you can then use in the PolicyCenter interface to
represent that entity. Thus, you often see the term display name associated with this feature as well, especially in
code and in Gosu documentation.
PolicyCenter uses the DisplayName property on an entity to represent the entity name as a text string. You can
define this entity name string as a simple text string, or you can use a complicated Gosu expression to generate the
name. PolicyCenter uses these entity name definitions in generating database queries that return the limited
information needed to construct the display name string. This ensures that PolicyCenter does not load the entire
entity and its subentities into memory simply to retrieve the few field values necessary to generate the display name.
The use of the Entity Name feature helps to avoid loading entities into memory unless you are actually going to view
or edit its details. The use of display names improves overall application performance.
The Entity Names editor consists of two parts:
• A table in which you manage variables for use in the Gosu code that defines the entity name
• A Gosu editor that contains the Gosu code that defines the entity name

WARNING Do not reference in an entity name definition either a virtual property or an otherwise
non-queryable column, including an amount virtual property. Failing to follow this guidance will
compromise performance and lead to exceptions.

Variable table
You must declare any field that you reference in the entity definition (in the code definition pane) as a variable in the
variable table at the top of the page. This tells the Entity Name feature which fields to load from the database, and
puts each value in a variable for you to use.
For example, the Contact entity name defines the following variables:

Using the entity names editor 141


Guidewire PolicyCenter 9.0.6 Configuration Guide

Notice that this defines LastName as Person.LastName and Name as Company.Name, for example.
Use the variable table to manage variables that you can embed in the Gosu entity name definitions. You can add and
remove variables using the function buttons next to the table. The columns in the table have the following meanings:

Column name Description


Name The name of the variable.
Entity Path Entity.property that the variable represents.

Sort Path The values that PolicyCenter uses in a sort.


Sort Order The order in which PolicyCenter sorts the Sort Path values.
Use Entity Name? Whether to use this value as the entity display name.

The Entity Path column


Use only actual columns in the database as members of the Entity Path value. You must declare an actual database
column in metadata, in an actual definition file. If you do not define a column in metadata, then PolicyCenter labels
that entity column (field) as virtual in the PolicyCenter Data Dictionary.
Thus:
• You cannot use ClaimContactRole fields in the Entity Path, such as Exposure.Incident.Injured. This is
because the Injured contact role on Incident does not have a denormalized column.
• You can, however, use special denormalized fields for certain claim contacts, such as
Exposure.ClaimantDenorm or Claim.InsuredDenorm. The description of the column indicate which
ClaimContactRole value it denormalizes.

The Use Entity Name? column


The last column in the variable table is Use Entity Name? If the column check box is set, then it has a value of true. If
the check box is not set, then it has a value of false.
• A value of true is meaningful only if the value of Entity Path is an entity type. A value of true instructs the Entity
Name utility to calculate the Entity Name for that entity, instead of loading the entity into memory. The variable
for that subentity is of type String and you can use the variable in the Gosu code that constructs the current
Entity Name.
Note: If the value of Entity Path is an entity, then you must set the value of Use Entity Type? to true.
Otherwise, a variable entry that ends in an entity value uploads that entire entity, which defeats the
purpose of using Entity Names.
• A value of false indicates that PolicyCenter does not use the Entity Path value as an entity display name.
• An empty column is the same as a value of false. This is the default.
Set the Use Entity Name? value to true if you want to include the entire Entity Name for a particular subentity. For
example, suppose that you are editing the Exposure entity name and that you create a variable called claimant with
an Entity Path of Exposure.ClaimantDenorm. Suppose also that you set the value of Use Entity Name to true. In this
case, the entity name for the Claimant, as defined by the Contact entity name definition, would be included in a
142 chapter 11: Using the entity names editor
Guidewire PolicyCenter 9.0.6 Configuration Guide

String variable called claimant. PolicyCenter would then use this value in constructing the entity name for the
Exposure entity.
Note: If you set the Use Entity Name? field to true and then attempt to use a virtual field as an Entity
Path value, Studio resource verification generates an error.

Evaluating null values


If the value of Use Entity Name? is true, then PolicyCenter always evaluates the entity name definition, even if the
foreign key is null. By convention, in this case, the entity name definition usually returns the empty string "". In
other words, the entity name string can never be null even if the foreign key is null. You can use the HasContent
enhancement property on String to test whether the display name string is empty.
Thus, as you write entity name definitions, Guidewire recommends that you return the empty string if all the
variables in your entity name definition are null or empty. Guidewire uses the empty string (instead of returning
null) to prevent Null Pointer Exceptions. For example, suppose that you construct an entity name such as "X-Y-Z",
in which you add a hyphen between variables X,Y, and Z from the database. In this case, be sure you return the empty
string "" if X,Y, and Z are all null or empty and not " - - ".

The Sort columns


The two columns Sort Path and Sort Order do not, strictly speaking, involve variable replacement in the entity name
Gosu code. Rather, you use them to define how to sort beans of the same entity.

Sort Path Defines the values that PolicyCenter uses in a sort


Sort Order Defines the order in which PolicyCenter sorts the Sort Path values

Therefore, if PolicyCenter is in the process of determining how to order two contacts, it first compares the values in
the (Sort Path) LastNameDenorm fields (Sort Order = 1). If these values are equal, Studio then compares the values in
the FirstNameDenorm fields (Sort Order = 2), repeating this process for as long as there are fields to compare.
These columns specify the default sort order. Other aspects of Guidewire PolicyCenter can override this sort order,
for example, the sort order property of a list view cell widget.

Gosu text editor


You enter the actual Gosu code used to construct the entity name in the code definition pane underneath the variable
table. Studio then replaces the variable with mapped property.
The following Gosu definition code for the Contact entity name shows these mappings.

if (SubType != null && Person.Type.isAssignableFrom(Type.forName("entity." + SubType))) {


var person = new PersonNameFieldsImpl(){
:LastName = LastName,
:FirstName = FirstName,
:Suffix = Suffix,
:Prefix = Prefix,
:MiddleName = MiddleName,
:Name = Name
}
return new NameFormatter().format(person, " ", NameOwnerFieldId.DISPLAY_NAME_FIELDS)
} else {
var contact = new ContactNameFieldsImpl(){
:Name = Name
}
return new NameFormatter().format(contact, " ")
}

To use the Contact entity name definition, you can embed the following in a PCF page, for example.

<Cell id="Name" value="contact.DisplayName" ... />

Using the entity names editor 143


Guidewire PolicyCenter 9.0.6 Configuration Guide

Do not use virtual entity methods to define display names. Doing so may result in slow performance. Also, if the
entity for which the display name is being generated is retired, calls to virtual methods may behave unpredictably.

Including data from subentities


Many times, you want to include information from subentities of the current entity in its Entity Name. For example,
this happens often with Contacts related to the current entity. Guidewire recommends that you do one of the
following to include data from a subentity. (The two options are mutually exclusive. You must do one or the other.)

Option 1: Use the DisplayName for a subentity

To use the DisplayName value for a subentity, you must set the value of Use Entity Name to true on the variable
definition. For example, for Contacts, you must set the value to true through an explicit Denorm column, such as
Exposure.ClaimantDenorm.
To illustrate:

Name Entity Path Use Entity Name?


claimantDisplayName Exposure.ClaimantDenorm true

incidentDisplayName Exposure.Incident true

Option 2: Reference fields on the subentity

It is possible that you do not want to use the Entity Name as defined for the subentity's type. If so, then you need to
set up variables in the table to obtain the fields from the subentity that you need. To illustrate:

Name Entity Path Use Entity Name?


claimantFirstName Exposure.ClaimantDenorm.FirstName false

claimantLastName Exposure.ClaimantDenorm.LastName false

severity Exposure.Incident.Severity false

incidentDesc Exposure.Incident.Description false

You can then use these variables in Gosu code (in the text editor) to include the Claimant and Incident information
in the entity name for Exposure.

Guidewire recommendations

Do not end an Entity Path value with an entity foreign key, without setting the Use Entity Name value to true.
Otherwise, PolicyCenter loads the entire entity being referenced into memory. In actuality, you probably only need a
couple fields from the entity to construct your entity name. Instead, you one of the approaches described in one of
the previous steps.

Denormalized columns

Within the PolicyCenter data model, it is possible for a column to end in Denorm for (at least) two different reasons:
• The column contains a direct foreign key to a particular Contact (for example, as in Claim.InsuredDenorm.)
• The original column is of type String and the column attribute supportsLinguisticSearch is set to true. In
this case, the denormalized column contains a normalized version of the string for searching, sorting, and
indexing. Thus, the Contact entity definition uses LastNameDenorm and FirstNameDenorm as the sort columns
in the definition for the Contact entity name. It then uses LastName and FirstName in the variables' entity paths
for eventual inclusion in the entity name string.
144 chapter 11: Using the entity names editor
Guidewire PolicyCenter 9.0.6 Configuration Guide

Entity name types


An entity name definition is called the entity name type. Thus, most—but not all—entity names have a single type.
However, it is possible for certain entities in the base application to have multiple, alternate names (types) and thus,
multiple entity name definitions. Again, these can be either simple text strings, or more complicated Gosu
expressions.
Studio displays each entity name type as a separate tab or code definition area at the bottom of the screen. You
cannot add or delete an entity name type to the base application. You can, however, change the Gosu definition of an
entity name type. Guidewire recommends, however, that you not modify an entity name type definition without a
great deal of thought.
Most entity names have only the single type named Default. You can access the Default entity name from Gosu code
by using the following code:

entity.DisplayName

Only internal application code (internal code that Guidewire uses to build the application) can access any of non-
default entity name types. For example, some of the entity names contain an additional type or definition of
ContactRoleMessage. PolicyCenter uses the ContactRoleMessage type to define the format of the entity name to
use in role validation error messages. In some cases, this definition is merely the same as the default definition.
Note: It is not possible for you to either add or delete an entity name type from the base application
configuration. You can, however, modify the definition—the Gosu code—for all defined types. You
can directly access only the default type from Gosu code.

Using the entity names editor 145


Guidewire PolicyCenter 9.0.6 Configuration Guide

146 chapter 11: Using the entity names editor


chapter 12

Using the messaging editor

This topic covers how you use the messaging editor in Guidewire Studio.

Messaging editor
You use the Messaging editor to set up and define one or more message environments, each of which includes one or
more message destinations. A message destination is an abstraction that represents an external system. Typically, a
destination represents a distinct remote system. However, you can also use destinations to represent different remote
APIs or different types of messages that must be sent from PolicyCenter business rules.
You use the Messaging editor to set up and define message destinations, including the destination ID, name, and the
transport plugin to use with this destination. In a similar fashion to the Plugins editor, you can also set the
deployment environment in which this message destination is active.
Each destination can specify a list of events that are of interest to it, along with some basic configuration
information.

See also
• Integration Guide

Open the messaging editor


Procedure
1. In the Studio Project pane, go to configuration→config→Messaging.
2. Open the messaging-config.xml file.

Add or remove a messaging configuration


You can define multiple messaging configurations to suit different purposes. For example, you can set up different
messaging configurations for the following:
• A development environment
• A test environment
• A production environment
Guidewire provides a single default messaging configuration in the PolicyCenter base configuration. You see it
listed as Default in the Messaging Config drop-down list.
Using the messaging editor 147
Guidewire PolicyCenter 9.0.6 Configuration Guide

Create a new messaging configuration


Procedure

1. Next to the Messaging Config drop-down list, click Add Messaging .


2. In the New Messaging dialog box, type the name for the new message configuration.
3. Add message destinations as required.

Remove a messaging configuration


About this task
If there is more than one messaging configuration, than you can remove one. There must be at least one messaging
configuration.
Note: Be careful not to inadvertently click the Remove Messaging button, as PolicyCenter deletes the
message configuration without any additional warning. You cannot undo this action.

Procedure
1. In the Messaging Config drop-down list, click the messaging configuration to remove.
2. Click Remove Messaging .
PolicyCenter deletes the messaging environment without asking for confirmation.

Add a message destination


Procedure
1. Open the Messaging editor.
2. Select a message environment
3. Click Add Destination .
4. Fill in the required fields. Notice that Studio requires that you enter a plugin name in the Transport Plugin field.

IMPORTANT If you register a messaging plugin, you must register it in two places. First,
register it in the plugin registry in the plugin editor; see “Using the plugins registry editor” on
page 129. Remember the plugin name that you use. You need it to configure the messaging
destination in the Messaging editor in Studio for each destination. Use those plugin names in the
messaging editor.

5. After you click Add Destination in the Messaging editor, fill in the following fields.

ID The destination ID (as an integer value). The valid range for custom destination IDs is 0 through 63, inclusive.
Guidewire reserves all other destination IDs for built‐in destinations such as the email transport destination.
Studio marks these internal values with a gray background, indicating that they are not editable. Studio also
marks valid entries with a white background and invalid entries with a red background.
Name Required.The name to use for this messaging destination.
Trans- Required.The name of the MessageTransport plugin implementation that knows how to send messages for
port Plu- this messaging destination. A destination must define a message transport plugin that sends a Message object
gin over a physical or abstract transport. For example, the plugin might do one of the following.
• Submit the message to a message queue.
• Call a remote web service API and get an immediate response that the system handled the message.
• Implement a proprietary protocol that is specific to a remote system.
Each messaging destination must specify its own unique implementation of a MessageTransport plugin. A
particular MessageTransport plugin cannot be assigned to multiple destinations.

148 chapter 12: Using the messaging editor


Guidewire PolicyCenter 9.0.6 Configuration Guide

Next steps
If the Disabled checkbox is selected, the messaging destination is disabled.

See also
• Integration Guide

Associating event names with a message destination


To define one or more specific events for which you want this message destination to listen, click Add Event under
Events. Each event triggers the Event Fired rule set for that destination. Use the special event name wildcard string
"(\w)*" to listen for all events.
To get notifications using Event Fired rules when specific types of data changes occur, you must specify one or more
messaging destinations to listen for that event. If no messaging destination listens for an event, PolicyCenter does
not call the Event Fired rules for that combination of event and destination.
If more than one destination listens for that event, the Event Fired rules run multiple times, varying only in the
destination ID. To get the destination ID in your Event Fired rules, check the property messageContext.destID.

Using the messaging editor 149


Guidewire PolicyCenter 9.0.6 Configuration Guide

150 chapter 12: Using the messaging editor


chapter 13

Using the display keys editor

This topic discusses how to work with the display key editor that is available to you in Guidewire Studio.

Overview of display keys


A display key represents a single user-viewable text string. Guidewire strongly recommends that any string literal
that can potentially be seen by a user be defined as a display key rather than as a hard-coded String literal.
PolicyCenter stores display keys in a display key properties file. In Guidewire Studio, this file is located under
configuration→config→Localizations. The file is named display_languageCode.properties, where languageCode is
the language code for the strings defined in the file. For example, the display key properties file for United States
English is display_en_US.properties.
If you do localize one or more display keys, then PolicyCenter uses additional
display_languageCode.properties files, one for each language that you install. For more information, see the
Globalization Guide.
PolicyCenter represents display keys within a hierarchical name space. Within the display key properties file, this
translates into a dot (.) separating the levels of the hierarchy.
By opening the display key properties file in Studio, you can do the following:

Task Actions
View a display key Navigate to the display key that you want to view by scrolling through the display key proper‐
ties file. To search for a particular key or value, press Ctrl+F and then type your search term
in the search bar.
Modify the text of an existing Navigate to the display key that you want to modify, and then modify the string in the editor
display key as you want.
Create a new display key In the display key editor, type the desired name and value for your new display key.
Delete an existing display key Highlight the display key that you want to delete, and then press Delete.

Display key requirements


A display key name cannot contain spaces, and it must be defined on a single line.
A display key value can contain any string that the Java.util.Properties.load method accepts. Escape the
characters { (curly brace) and \ (backslash) with a backslash (for example, \{ and \\). You can also use codes such
as \n for a newline, or \u for Unicode characters (for example, \u00A0 for a non-breaking space).
Using the display keys editor 151
Guidewire PolicyCenter 9.0.6 Configuration Guide

Creating display keys in a Gosu editor


About this task
You can create a display key directly from within a Gosu editor by first typing a string literal and then converting it
to a display key.

Procedure
1. Place the cursor within the string, and then press Alt+Enter.
2. Click Convert string literal to display key. Studio opens the Create Display Key dialog.
3. In the Name text box, type the name of the display key. Studio fills in this text box with the string value, but
you can change it.
4. In the Values box, under the desired locale name, verify or change the string value.
5. Click OK. Studio creates the new display key in the display key properties file. Studio also inserts a reference
to that display key in place of the string literal in the Gosu code.

Example
For example, suppose that you enter the following in the Rules editor:

var errorString = "Failed to send"

If you place the cursor within that string, then press Alt+Enter, and then click Convert string literal to display key,
Studio opens the Create Display Key dialog.
If you name the new display key SendFailed, then Studio creates the following new display key in the display key
properties file:

SendFailed=Failed to send

Studio also replaces the string literal in your Gosu code, and changes it to the following:

var errorString = DisplayKey.get("SendFailed")

Retrieving the value of a display key


Some display keys contain a placeholder argument or parameter, designated by {}. PolicyCenter replaces each of
these parameters with actual values at run time. For example, in the display key properties file, you see the
following:

Java.Activities.Error.CannotPerformAction = You do not have permission to perform actions on the


following activities\: {0}.

Thus, at run time, PolicyCenter replaces {0} with the appropriate value, in this case, the name of an activity.
Occasionally, there are display keys that contain multiple arguments. For example:

Java.Admin.User.InvalidGroupAdd = The group {0} cannot be added for the user {1}
as they do not belong to the same organization.

Method DisplayKey.get
Use the DisplayKey.get method to return the value of the display key. Use the following syntax:

DisplayKey.get(display_key_name)

152 chapter 13: Using the display keys editor


Guidewire PolicyCenter 9.0.6 Configuration Guide

For example:

DisplayKey.get("Java.Admin.User.DuplicateRoleError")

returns:

User has duplicate roles

This also works with display keys that require a parameter or parameters. To retrieve the parameter value, use the
following syntax.

DisplayKey.get(display_key_name, arg1)

For example, the display key properties file defines the following display key with placeholder {0}:

Java.UserDetail.Delete.IsSupervisorError = Cannot delete user because they are supervisor of the


following groups\: {0}.

Suppose that you have the following display key Gosu code:

DisplayKey.get("Java.UserDetail.Delete.IsSupervisorError", GroupName)

If the variable GroupName is defined as WesternRegion, this display key returns the following:

Cannot delete user because they are supervisor of the following groups: WesternRegion

The same syntax works with multiple arguments, as well:

DisplayKey.get(display_key_name, arg1, arg2, ...)

Note: Make sure to include the following line in any Gosu code that calls the DisplayKey.get
method:

uses gw.api.locale.DisplayKey

Using the display keys editor 153


Guidewire PolicyCenter 9.0.6 Configuration Guide

154 chapter 13: Using the display keys editor


part 4

Data model configuration


Guidewire PolicyCenter 9.0.6 Configuration Guide
chapter 14

Working with the Data Dictionary

Guidewire provides the Data Dictionary to help you understand the PolicyCenter data model. The Data Dictionary
is a detailed set of linked documentation in HTML format. These linked HTML pages contain information on all the
data entities and typelists that make up the current data model.

Related concepts

“What is the Data Dictionary?” on page 157


“What can you view in the Data Dictionary?” on page 158
“Using the Data Dictionary” on page 159

What is the Data Dictionary?


The PolicyCenter Data Dictionary documents all the entities and typelists in your PolicyCenter installation.
Provided that you regenerate it following any customizations to the data model, the dictionary documents both the
base PolicyCenter data model and your extensions to it. Using the Data Dictionary, you can view information about
each entity, such as fields and attributes on it.
You must manually generate the Data Dictionary after you install Guidewire PolicyCenter. Guidewire strongly
recommends that you perform this task as part of the installation process. Also, as you extend the data model, it is
important that you regenerate the Data Dictionary as needed in order to view your extensions to the data model.
To generate the PolicyCenter Data Dictionary, run the following command from the PolicyCenter directory:

gwb genDataDictionary

PolicyCenter stores the current version of the Data Dictionary in the following directory:

PolicyCenter/build/dictionary/data/

To view the Data Dictionary, open the following file:

PolicyCenter/build/dictionary/data/index.html

As an option, you can generate the Data Dictionary in XML format with associated XSD files. Use the generated
XML and XSD files to import the Data Dictionary into third-party database design tools.

Working with the Data Dictionary 157


Guidewire PolicyCenter 9.0.6 Configuration Guide

Related concepts
“Regenerating the data and security dictionaries” on page 38

What can you view in the Data Dictionary?


Note: If you use a third-party tool to edit PolicyCenter configuration files, Guidewire recommends
that you work with one that fully supports UTF-8 file encoding. If the editing tool does not handle
UTF-8 characters correctly, it can create errors that you then see in the Guidewire Data Dictionary.
This is not an issue with the Data Dictionary. It occurs only if the third-party tool cannot handle
UTF-8 values correctly.
After you open the Data Dictionary (at PolicyCenter/build/dictionary/data/index.html), Guidewire presents
you with multiple choices. You can choose to view either Data Entities, Data Entities (Database View), Data Entities
(Migration View), or Typelists.
The standard, database, and migration views of data entities are similar but not identical. You use each for a different
purpose. In general:
• Use the standard view to view a full set of entities associated with the PolicyCenter application and the columns,
typekeys, arrays, and foreign keys associated with each entity. See “Using the Data Dictionary” on page 159.
• Use the database view to view all persistent, non-virtual entities associated with the PolicyCenter application and
the persistent columns, typekeys, arrays, and foreign keys associated with each persistent entity. See “Using the
Data Dictionary” on page 159.
• Use the migration view to assist you in converting data from a legacy application. This view provides a subset of
the information in the standard view of the application entities that is more useful for those working on the
conversion of legacy data.
• Use the typelists view to view all typelists associated with the PolicyCenter application and the typecodes
associated with each typelist. See “Using the Data Dictionary” on page 159.

The migration view of the Data Dictionary


The standard Data Dictionary view separates out entity subtypes from the main entity supertype. In brief, a
supertype relates to a subtype in a parent-child relationship. For example, if a Contact data entity is the supertype,
then Person and Company are examples of its subtypes. Thus, an entity subtype inherits the characteristics of its
supertype and adds individual variations particular to it.
This separation into supertype and subtype is not particularly useful for data conversion (the process of importing
data into PolicyCenter from an external legacy application). Therefore, the migration view of the Data Dictionary
differs from the standard view in the following respects:
• The migration view displays subtype fields interspersed with supertype fields. For example:
◦ fieldA
◦ fieldB (only for subtype XYX)
◦ fieldC (only for subtype DFG)
◦ fieldD
• The migration view does not show virtual fields or virtual arrays.
• The migration view does not show non-loadable columns. For example, it does not show createUserID or
createTime.
• The migration view omits any non-persistent entities.
• The migration view omits entities that are persistent but non-loadable. For example, Group is not loadable.
Therefore, the migration view does not display it.

Related concepts
“Using the Data Dictionary” on page 159
158 chapter 14: Working with the Data Dictionary
Guidewire PolicyCenter 9.0.6 Configuration Guide

Using the Data Dictionary


You use the Data Dictionary to do the following:
• To determine what a field means that you see in a data view definition.
• To see what fields are available to add to a view, or to use in rules, or to export in an integration template, and
more.
• To view the list of options for an associated typekey field.
You navigate the dictionary like a web site, with links leading you to associated pages. You can use the Back and
Forward controls of your browser to take you to previously visited pages. Within the Data Dictionary, you have the
option to navigate to three Data Entities views or the Typelists view.
If you click on one of the Data Entities views, PolicyCenter displays a left-side pane listing entities in PolicyCenter.
Then, on the right-side, PolicyCenter displays a pane that shows the details of the selected item in the left-side pane.
If you click on the Typelists view, PolicyCenter displays a left-side pane listing all of the typelists in PolicyCenter.
Then, on the right-side, PolicyCenter displays a pane that shows the typecodes for the selected typelist in the left-
side pane.
Within the details of an object, you can follow links to related objects or view the allowed values for a typelist.

Related concepts

“Property colors” on page 159


“Object attributes” on page 160
“Entity subtypes” on page 161
“Data field types” on page 161
“Virtual properties on data entities” on page 162
“What is a typelist?” on page 289
“What can you view in the Data Dictionary?” on page 158

Property colors
An examination of the Data Dictionary shows properties in green, blue, and red. These colors have the following
meanings:

Color Meaning
Green The object property is part of the Guidewire base configuration. The object definition file exists in Studio in the follow‐
ing locations:
• config→configuration→Metadata
• config→configuration→Extensions
Blue The object property is defined in an extension file, either by Guidewire or as a user customization. The object defini‐
tion file exists in Studio in the following location:
• config→configuration→Extensions
It is possible for Guidewire to define a base object in the Metadata folder and then to extend the object using an exten‐
sion entity in the Extensions folder.
Red Occasionally, it is possible to see a message in red in the Data Dictionary that states:
This entity is overwritten by the application during staging.
This message indicates that Guidewire PolicyCenter auto‐populates a table or column's staging table equivalent. Do
not attempt to populate the table yourself as the loader import process overwrites the staging table during import.
See also the description of the overwrittenInStagingTable attribute in “<entity> elements and related data object
types” on page 177.

Working with the Data Dictionary 159


Guidewire PolicyCenter 9.0.6 Configuration Guide

Object attributes
An object in the PolicyCenter data model can have a number of special attributes assigned to it. These attributes
describe the object (or entity) further. You use the Data Dictionary to see what these are. For example, the Policy
entity has the attributes Editable, Exportable, Extendable, Final, Keyed, Loadable, Sourceable, and Versionable.
The following list describes the possible attributes:

Attribute Description
Abstract The entity is a supertype. However, all instances of it must be one of its subtypes. That is, you cannot instantiate
the supertype entity itself. An abstract entity is appropriate if the supertype serves only to collect logic or common
fields. The abstract entity is appropriate because, in this case, it is not expedient for the supertype to exist on its
own.
Editable The related database table contains rows that you can edit. An Editable table manages additional fields that track
the immediate status of an entity in the table. For example, the table tracks who created the entity, the creation
time, who last modified the entity, and the modification time.
Exportable Unused.
Extendable It is possible to extend the entity with additional custom fields added to it.

Final It is not possible to subtype this entity. However, you can extend the entity by adding fields to it.
Keyed The entity has a related database table that has a primary key. Each row in a Keyed table has an integer primary
key named ID. PolicyCenter manages these IDs internally, and the application ensures that no two rows in a keyed
table have the same ID. You can also associate an external unique identifier with each row in a table.
Loadable It is possible to load the entity through the use of staging tables.
Sourceable The entity links to an external source. Each row in a table for a Sourceable entity has additional fields to identify
the external application and to store the ID of the Sourceable entity in the external application.
Supertype The entity has a single table that represents multiple types of entities called subtypes. Each subtype shares appli‐
cation logic and a majority of its fields. Each subtype can also define fields that are particular to it.
Temporary The entity is a temporary entity created as part of an upgrade or staging table loading. PolicyCenter deletes the
entity after the operation is complete.
Versionable The entity has a version number that increases every time the entity changes. The PolicyCenter cache uses the
version number to determine if updates have been made to an entity.

To view the definition of a particular attribute, click the small question mark (?) by the attribute name in the attribute
list in the Guidewire Data Dictionary.

Property attributes
A property in the PolicyCenter data model can have a number of special attributes assigned to it. These attributes
describe the property further. You use the Data Dictionary to see what these are. For example, the Policy entity has
a property named Account. The attributes of this property are exportable, non-null, and writable.
The following list describes the possible attributes:

Attribute Description
database column: [name] The corresponding database column for the property has a name of [name]. This attribute is
present if [name] is a name other than the name of the property.
default: [value] This attribute is often present for a property that is associated with a column or a typekey. When
the attribute is present, [value] represents the default value for the property.
exportable Unused.
export as id Unused.

160 chapter 14: Working with the Data Dictionary


Guidewire PolicyCenter 9.0.6 Configuration Guide

Attribute Description
loadable The property is loadable by way of the staging tables.
localized The property contains a <localization> subelement. This subelement causes a localization
table to be created during the next database upgrade. A localization table stores localized values
for a column for every language other than the default application language. See Globalization
Guide.
non-null The property cannot contain null values.
overwritten on load The property contains an overwrittenInStagingTable attribute with a value of true.
PolicyCenter uses the property and a corresponding staging table during the load of staging table
data to operational tables. When the overwrittenInStagingTable attribute has a value of true,
the loader import process overwrites the staging table corresponding the property. See “Staging
tables” on page 172 for more information.
triggers validation The property contains a triggersValidation attribute with a value of true. When this scenario
exists and an array, a foreign key, or a one‐to‐one entity on the property changes, PolicyCenter
initiates validation on the property. See “<array>” on page 193, “<foreignkey>” on page 204,
and “<onetoone>” on page 209 for more information about the effects of the
triggersValidation attribute when arrays, foreign keys, and one‐to‐one entities change.

unique index The property participates in one or more unique indexes.


virtual property PolicyCenter creates no physical database column for the property.
writable The user can write the property with Gosu or the IDataObjectAPI interface.

To view the definition of a particular attribute, click the small question mark (?) by the attribute name in the attribute
list in the Guidewire Data Dictionary.

Property tags
A property in the PolicyCenter data model can have a number of tags assigned to it. These tags further describe the
property.
You use the Data Dictionary to see what these tags are. For example, the Data Dictionary indicates whether the
PersonalData obfuscation tag is set on the various fields that use the tag as well as the tag value. One such value
for the PersonalData tag is ObfuscateDefault.

Entity subtypes
If you look at Contact in the Guidewire Data Dictionary, for example, you see that data dictionary lists a number of
subtypes. For certain PolicyCenter objects, you can think of the object in several different ways:
• As a generic object. That is, all contacts are similar in many ways.
• As a specific version or subtype of that object. For example, you would want to capture and display different
information about companies than about people.
PolicyCenter creates Contact object subtypes by having a base set of shared fields common to all contacts and then
extra fields that exist only for the subtype.
PolicyCenter also looks at the subtype as it decides which fields to show in the PolicyCenter interface. You can
check which subtype a contact is by looking at its subtype field (for example, in a Gosu rule or class).

Data field types


You can use the Data Dictionary to view the type of each object field. The following list describes some of the
possible field types on an object:
Working with the Data Dictionary 161
Guidewire PolicyCenter 9.0.6 Configuration Guide

Type Description
array Represents a one‐to‐many relationship. For example, consider the relationship between a contact and a set of
addresses. There is no actual column in the database table that maps to the array. PolicyCenter stores this infor‐
mation in the metadata.
column As the name specifies, it indicates a column in the database. Inside a column field, you can add tag subtypes to
point out additional information about the field. The Data Dictionary displays such tags and their values.
foreign key References a keyable entity. For example, Policy has a foreign key (AccountID) to the related account on the
policy, found in the Account entity.
typekey Represents a discrete value picked from a particular list, called a typelist.
virtual prop- Indicates a derived property. PolicyCenter does not store virtual properties in the PolicyCenter physical database.
erty

Note: Inside any field of the data model aside from virtual properties, you can add tags and optional
corresponding values to point out additional information about the field. The Data Dictionary displays
such tags and values.

Virtual properties on data entities


The Data Dictionary lists certain entity properties as virtual. PolicyCenter does not store virtual properties in the
PolicyCenter physical database. Instead, it derives a virtual property through a method, a concatenation of other
fields, or from a pointer (foreign key) to a field that resides elsewhere.
For example, if you view the Account entity in the Data Dictionary (for PolicyCenter), you see the following next
to the AccountContactRoleSubtypes field:

Derived property returning gw.api.database.IQueryResult (virtual property)

Examples

The following examples illustrate some of the various ways that Guidewire applications determine a virtual
property. The following examples use Guidewire ClaimCenter for illustration.

Virtual property based on a foreign key


Claim.BenefitsDecisionReason is a virtual property that pulls its value from the cc_claimtext table, which
stores ClaimText.ClaimTextType = BenefitsDecisionReason. It returns a mediumtext value. The other
fields in cc_claimtext and cc_exposuretext work in a similar fashion.

Virtual property based on an associated role


Claim.claimant is a virtual property that retrieves the Contact associated with the Claim having the
ClaimContactRole of claimant. The virtual property returns a Person value.

Virtual property based on a typelist


Contact.PrimaryPhoneValue is a virtual property that calculates its return value based on the value from
Contact.PrimaryPhone. It retrieves the telephone number stored in the field represented by that typekey. The
telephone number can be one of the following:
• Contact.HomePhone
• Contact.WorkPhone
• Person.CellPhone
The virtual property returns a phone value.

162 chapter 14: Working with the Data Dictionary


chapter 15

The PolicyCenter data model

The in PolicyCenter data model comprises the persistent data objects, called entities, that PolicyCenter manages in
the application database.

Related concepts

“What is the data model?” on page 163


“Overview of data entities” on page 165
“XML root elements and related base PolicyCenter data object types” on page 173

Related references

“Data entity subelements” on page 192

What is the data model?


At its simplest, the Guidewire data model is a set of XML-formatted metadata definitions of entities and typelists.

Entities An entity defines a set of fields for information. You can add the following kinds of fields to an entity:
• Column
• Type key
• Array
• Foreign key
• Edge foreign key
Typelists A typelist defines a set of code/value pairs, called typecodes, that you can specify as the allowable values for the
type key fields of entities. Several levels of restriction control what you can modify in typelists:
• Internal typelists – You cannot modify internal typelists because the application depends upon them for internal
application logic.
• Extendable typelists – You can modify this kind of typelist according to its schema definition.
• Custom typelists – You can also create custom typelists for use on new fields on existing entities or for use with
new entities.

Guidewire PolicyCenter loads the metadata of the data model on start-up. The loaded metadata instantiates the data
model as a collection of tables in the application database. Also, the loaded metadata injects Java and Gosu classes
in the application server to provide a programmatic interface to the entities and typelists in the database.

The PolicyCenter data model 163


Guidewire PolicyCenter 9.0.6 Configuration Guide

The data model in Guidewire application architecture


Guidewire applications employ a metadata approach to data objects. PolicyCenter uses metadata about application
domain objects to drive both database persistence objects and the Gosu and Java interfaces to these objects.
This architecture provides enormous power to extend Guidewire application capabilities. Typically, you alter
enterprise-level software applications through customization, wherein you change the behavior of the software by
editing the code itself. In contrast, a Guidewire application uses XML files that provide default behavior,
permissions, and objects in the base configuration. You change the behavior of the application by modifying the
base XML files and by creating Gosu business rules, classes, enhancements, and other objects.

The base data model


The PolicyCenter data model specifies the entities, fields, and other definitions that comprise a default installation of
PolicyCenter.
For example, the PolicyCenter data model defines a PolicyPeriod entity and several fields on it, such as
AccountNumber, IssueDate, and Status.
You can change the PolicyCenter data model to accommodate your business needs. Make your changes to the data
model by modifying existing XML files and adding new ones. PolicyCenter stores your files that change the data
model in the following application directory:
PolicyCenter/modules/configuration/config/extensions
Always access and edit the data model files through the configuration→config→Extensions folder in Studio. Do not
edit the XML files directly from the file system yourself.
Changes that you make to the data model are called data model extensions. For example, you can extend the data
model by adding new fields to the User entity, or you can declare entirely new entities. The complete data model of
your PolicyCenter installation comprises the PolicyCenter model and any data model extensions that you make.

WARNING Do not attempt to modify any files other than those in the PolicyCenter/modules/
configuration directory. Any attempt to modify files outside of this directory can prevent the
PolicyCenter application from starting.

Working with dot notation


Many places within PolicyCenter require knowledge of fields within the application data model, especially while
you configure PolicyCenter. For example, code in a business rule, class or enhancement may need to check the
owner of an assignable object. As an alternative, code may need to check the date and time of object creation.
PolicyCenter provides an easy and consistent method of referring to fields within the data model, using relative
references based on a root object.
A root object is the starting point for any field reference. If you run Gosu submission rules on a policy for example,
the policy is the root object and you can access anything that relates to this policy. On the other hand, if you run
Gosu assignment code for an activity, the activity is the root object. In this case, you have access to fields that relate
to the activity, including the User associated with the activity.
Guidewire applications use dot notation for relative references. For example, assume that your code has Account as
the root object. For a simple reference to a field on the account such as AccountNumber, use:

account.AccountNumber

However, suppose that you want to reference a field on an entity that relates to the account, such as a policy
expiration date. You must first describe the path from the account to the policy, then describe the path from the
policy to the policy expiration date:

account.Policy.ExpirationDate

164 chapter 15: The PolicyCenter data model


Guidewire PolicyCenter 9.0.6 Configuration Guide

Overview of data entities


Data entities are the high-level business objects used by PolicyCenter, such as a Policy, PolicyLine, or Coverage.
An entity serves as the root object for data views, rules, Gosu classes, and most other data-related areas of
PolicyCenter. Guidewire defines a set of data objects in the base PolicyCenter configuration from which it derives
all other objects and entities. For many of the Guidewire base entities, you can also create entity extensions that
enhance the base entities and provide additions required to support your particular business needs. In some cases,
you can even define entirely new entities.
If you plan to archive data entities in your PolicyCenter installation, you must define your data entities in such a way
as to facilitate the archiving process. An incorrect data entity definition can cause the archive operation to fail.

Related concepts
“The PolicyCenter archive domain graph” on page 311

Data entity metadata files


You define data entities through XML elements in the entity metadata definition files. The root element of an entity
definition specifies the kind of entity and any attributes that apply. Subelements of the entity element define entity
components, such as columns (or fields) and foreign keys.

WARNING Do not modify any of the base data entity definition files (those in the PolicyCenter/
modules/configuration/config/metadata directory) by editing them directly. You can view
these files in read-only mode in Guidewire Studio™ in the configuration →config→Metadata folder.

To better understand the syntax of entity metadata, it is sometimes helpful to look at the PolicyCenter data model
and its metadata definition files. PolicyCenter uses separate metadata definition files for entity declarations and
extensions to them.
The base metadata files are available in Studio in the following location: configuration→config→Metadata
The extension metadata files are available in Studio in the following location: configuration→config→Extensions
The file extensions of metadata definition files distinguish their type, purpose, and contents.

File type Pur‐ Contains More information


pose

.dti Data Type Info A single data type definition. “Data types” on page 269
.eti Entity Type In‐ A single Guidewire or custom entity declaration. The “XML root elements and related
formation name of the file corresponds to the name of the enti‐ base PolicyCenter data object
ty being declared. types” on page 173
.eix Entity Internal A single Guidewire entity extension. The name of the Internal defintion; see .etx
eXtension file corresponds to the name of the Guidewire entity
being extended.
.etx Entity Type eX‐ A single Guidewire or custom entity extension. The “<extension> elements and relat‐
tension name of the file corresponds to the name of the enti‐ ed data object types” on page 183
ty being extended. “<viewEntityExtension> elements
and related data object types” on
page 190
.tti Typelist Type In‐ A single Guidewire or custom typelist declaration. “Working with typelists” on page
fo The name of the file corresponds to the name of the 289
typelist being declared.
.tix Typelist Internal A single Guidewire typelist extension. The name of “Working with typelists” on page
eXtension the file corresponds to the name of the Guidewire 289
typelist being extended.

The PolicyCenter data model 165


Guidewire PolicyCenter 9.0.6 Configuration Guide

File type Pur‐ Contains More information


pose

.ttx Typelist Type eX‐ A single Guidewire or custom typelist extension. The “Working with typelists” on page
tension name of the file corresponds to the name of the 289
typelist being extended.

The type of a metadata definition file determines what you can store and whether you can modify its contents.

File type Location Files are modifia‐


ble
.dti configuration→config→datatypes No
.eti configuration→config→Extensions→Entity Yes
configuration→config→Metadata→Entity No
.eix configuration→config→Metadata→Entity No
.etx configuration→config→Extensions→Entity Yes
.tti configuration→config→Extensions→Typelist Yes
configuration→config→Metadata→Typelist No
.tix configuration→config→Metadata→Typelist No
.ttx configuration→config→Extensions→Typelist Yes

The Metadata folder


The Studio Metadata folder contains the metadata definition files for entities that comprise the PolicyCenter data
model.
A Metadata folder contains the following metadata definition file types:
• Declaration files – Versions of metadata definition files with extensions *.eti and *.tti.
• Internal extension files – Versions of metadata definition files with extensions *.eix or *.tix.
For an example, the PolicyCenter data model includes the following metadata definition files that collectively define
the Address entity type.

File version Metadata location File purpose


Address.eti configuration→config→Metadata→Entity Entity definition

Address.eix configuration→config→Metadata→Entity Extension to the entity definition

At runtime, PolicyCenter merges the .eti and .eix versions of the Address definition file to create a complete
Address entity type.

The Extensions folder


The configuration→config→Extensions folder contains your data model definitions that extend the PolicyCenter data
model. PolicyCenter considers the base definitions in configuration→config→Metadata first, and then applies the
definitions in the Extensions folder to them. This lets you create an entity extension that overrides any Guidewire
entity extensions.

166 chapter 15: The PolicyCenter data model


Guidewire PolicyCenter 9.0.6 Configuration Guide

Example of Activity metadata and extension files


The PolicyCenter data model includes the following metadata definition files that collectively define the
PolicyCenter Activity entity.

File Location Purpose


Activity.eti configuration→config→Metadata→Entity Entity definition, not modifiable.

Activity.eix configuration→config→Metadata→Entity Entity extension, not modifiable.

To extend the PolicyCenter Activity entity, create the following extension file through Guidewire Studio.

File Location Purpose


Activity.etx configuration→config→Extensions→Entity Custom entity extension.

WARNING Use only Guidewire Studio to create data model definition files. Use of Studio assures
that the files reside in the correct location.

The extensions properties file


In general, if you change the data model, PolicyCenter automatically upgrades the database the next time that you
start the application server. It detects changes to files in that directory by recording a checksum each time the
application server starts. If the recorded checksum and the current checksum differ, PolicyCenter upgrades the
database.
Sometimes you want to force PolicyCenter to upgrade the database without making changes to your custom data
model extensions. The configuration→config→Extensions folder in Guidewire Studio™ contains an
extensions.properties file that contains the numeric property version. The value of the version property
represents the current version of the data model definition for your instance of PolicyCenter. It controls whether
PolicyCenter performs a database upgrade on server startup.
Whenever PolicyCenter upgrades the database, PolicyCenter stores the value of the version property in the
database. The next time the application server starts up, PolicyCenter compares the value of the property in the
database to the value in the extensions.properties file. If the value in the database is lower than the value in the
file, PolicyCenter performs a database upgrade. If the value in the database is higher, the upgrade fails.

WARNING In a production environment, Guidewire requires that you increment the version
number whenever you make changes to the data model before you restart the application server.
Otherwise, unpredictable results can occur. Use of the extensions.properties file in a
development environment is optional.

Working with entity definitions


In working with entity definitions, you typically want to perform the following operations:
• Search for an existing entity definition
• Create a new entity definition
• Extend an existing entity definition
This section describes procedures for each operation.

The PolicyCenter data model 167


Guidewire PolicyCenter 9.0.6 Configuration Guide

Note: Guidewire strongly recommends that you verify your entity definitions at the time that you
create them. To do so, right-click the entity in the Project window, and then click Validate. The
verification process highlights any issues with a data model definition, enabling you to correct any
issues.

Search for an existing entity definition


Procedure
1. In Guidewire Studio, press Ctrl+N.
2. In the Enter class name dialog, start typing the name of the entity that you want to find.
Studio displays a list of matching entries that begin with the character string that you type.
3. In the list, click the name of the entity definition that you want to view.
Pay attention to the class type. For example, if you type Activity, Studio displays a list that includes all
components whose name contains that text. Look for the one that ends with .eti.

Result
Studio opens the file in the appropriate editor.

Create a new entity definition


Procedure
1. In Guidewire Studio, in the Project tool window, navigate to configuration→config→Extensions→Entity.
2. Right-click Entity, and then click New→Entity.
3. In the Entity text box, type the name of the new entity definition that you want to create. Set the other
properties for the entity.
4. Click OK.

Result
Studio displays the name of your new file in the Extensions→entity folder in Studio, and it stores the new file in the
file system at the following location.

configuration/config/extensions/entity

Then Studio opens your new file in the appropriate editor.

Extend an existing entity definition


About this task
You can extend only entity definition files that have the .eti extension.

Procedure
1. In Guidewire Studio, in the Project tool window, navigate to configuration→config→Metadata, and then expand
Entity.
2. Right-click the entity that you want to extend, and then click New→Entity Extension.
The file that you want to extend must have the .eti extension.
3. In the Entity Extension dialog, Studio displays the name and location of the extension file it will create. Click
OK.
168 chapter 15: The PolicyCenter data model
Guidewire PolicyCenter 9.0.6 Configuration Guide

Result
Studio displays the name of your new file in the Extensions→Entity folder and stores the new file at the following
location:

configuration/config/extensions/entity

Studio then opens your new file in the appropriate editor.

PolicyCenter data entities


PolicyCenter uses XML metadata files to define all data entities in the data model. The datamodel.xsd file defines
the elements and attributes that you can include in the XML metadata files. You can view a read-only version of this
file in the configuration→xsd→metadata folder in Studio.
WARNING Do not attempt to modify datamodel.xsd. You can invalidate your PolicyCenter
installation and prevent it from starting thereafter.

File datamodel.xsd defines the following:


• The set of allowable or valid data entities
• The attributes associated with each data entity
• The allowable subelements on each data entity
All PolicyCenter entity definition files must correspond to the definitions in datamodel.xsd.
Using XML files, Guidewire defines a data entity as a root element in an XML file that bears the name of the entity.
For example, Guidewire declares the Activity entity type with the following Activity.eti file:

<?xml version="1.0"?>
<entity xmlns="http://guidewire.com/datamodel"
desc="An activity is a instance of work assigned to a user and belonging to a claim."
entity="Activity"
exportable="true"
extendable="true"
platform="true"
table="activity"
type="retireable">
...
</entity>

At application server start up, PolicyCenter loads the XML definitions of the data entities into the application
database.

Data entities and the application database


PolicyCenter defines each data entity as a root XML element in the file that bears its name. For example,
PolicyCenter defines the Activity data entity in Activity.eti:

<entity xmlns="http://guidewire.com/datamodel"
entity="Activity"
...
type="retireable">
...
</entity>

Notice that for the base configuration Activity object, PolicyCenter sets the type attribute to retireable. The
type attribute that determines how PolicyCenter manages the data entity in the PolicyCenter database. For example:
• If a data entity has a type value of versionable, PolicyCenter stores instances of the entity in the database with
a specific ID and version number.
• If a data entity has a type value of retireable, PolicyCenter stores instances of the entity in the database
forever. However, you can retire, or hide, specific instances so that PolicyCenter does not display them in the
interface.
The PolicyCenter data model 169
Guidewire PolicyCenter 9.0.6 Configuration Guide

IMPORTANT For each data entity in the PolicyCenter data model and for each entity type that you
declare, PolicyCenter automatically generates a field named ID that is of data type key. An ID field is
the internally managed primary key for the object. Do not attempt to create entity fields of type key.
The key type is for Guidewire internal use only. Guidewire also reserves the exclusive use of the
following additional data types: foreignkey, typekey, and typelistkey.

The following table lists the possible values for the entity type attribute. Use only those type attributes marked for
general use to create or extend an data entity. Do not attempt to create or extend an entity with a type attribute
marked for internal-use.

Type attribute Usage Description


editable General An editable entity is a versionable entity. PolicyCenter automatically stores the version
use number of an editable entity. In addition to the standard versionable attributes of ver‐
sion and ID, an editable entity has the following additional attributes:
• CreateUser and CreateTime
• UpdateUser and UpdateTime
effdated General An effdated entity is an editable entity. effdated entities have effective date fields,
use meaning start and end dates, used within Guidewire PolicyCenter. An effdated entity is a
member of an effective dated graph, rooted at an effdatedbranch entity. PolicyCenter
auto‐splits the date fields during editing in some modes.
effdatedbranch Internal An effdated branch entity is a retireable entity. effdatedbranch entities define the enti‐
use ty type of the root of a tree that contains effdated entities.
Guidewire recommends not to attempt to create an entity with a type attribute of
effdatedbranch.

effdatedcontainer Internal An effdatedcontainer entity is a retireable entity. effdatedcontainer entities define


use only the entity type that has branch children. Guidewire recommends not to attempt to create an
entity with a type attribute of effdatedcontainer.
joinarray Internal A joinarray entity works in a similar manner as a versionable entity. Guidewire recom‐
use only mends not to use this entity type. Use versionable instead.
keyable Internal All entities are keyable entities, except for those entities with an explicit nonkeyable type.
use only Moreover, all entity types other than the nonkeyable entity type have the keyable entity
type as an ancestor.
A keyable entity has an ID. You can delete keyable entities from the database.
nonkeyable Internal Do not use.
use only
retireable General A retireable entity is an editable entity. retireable entities are the most common type
use of entity. Most, but not all, base entities are of this type.
After PolicyCenter adds an instance of a retireable data entity to the database,
PolicyCenter never deletes the instance. Instead, PolicyCenter retires the instance. For ex‐
ample, if you select a retireable instance in a list view and then click Delete, PolicyCenter
preserves the instance in the database. However, PolicyCenter inserts an integer in the
Retired column for the row that represents the instance. Any non‐zero value in the Retired
column indicates that PolicyCenter considers the instance retired.
PolicyCenter automatically creates the following fields for retireable entities:
• ID and PublicID
• CreateUser and CreateTime
• UpdateUser and UpdateTime
• Retired
• BeanVersion
These are the same fields as those PolicyCenter creates for editable entities, with the addi‐
tion of the Retired property.
IMPORTANT Although it is extremely common for a base entity to be retireable, it is not
required. You cannot assume this to be the case. Always check the Data Dictionary to deter‐
mine whether an entity can be retired.

170 chapter 15: The PolicyCenter data model


Guidewire PolicyCenter 9.0.6 Configuration Guide

Type attribute Usage Description


versionable General A versionable entity is a keyable entity. versionable entities have a version and an ID.
use Entities of this type can detect concurrent updates. It is possible to delete entities of this
type from the database.

PolicyCenter database tables


For every entity type in the data model, PolicyCenter creates a table in the application database. For example,
PolicyCenter creates a Policy table to store information about the Policy object.
In the application database, you can you identify an entity or extension table by the following prefix:

pc_ Entity table – one for each entity in the base configuration
pcx_ Extension table – one for each custom extension added to the extensions folder in Studio

Note: It is possible to create non-persistent entities. These are entities or objects that you cannot save
to the database. Guidewire discourages the use of non-persistent entities in favor of Plain Old Gosu
Objects (POGOs), instead. See “<nonPersistentEntity> elements and related data object types” on
page 184 for more information.
Besides entity tables, PolicyCenter creates the following types of tables in the database:

Table type More information


shadow tables “Shadow tables” on page 171
staging tables “Staging tables” on page 172
temporary tables “Temporary (temp) tables” on page 172

Shadow tables
A shadow table stores a copy of data from a main table for testing purposes. Every entity table potentially has a
corresponding shadow table. Shadow tables in the database have one of the following prefixes:

pct_ Entity shadow table


pctt_ Typelist shadow table

Shadow tables provide a way to quickly save and restore test data. All GUnit tests, including those that you write
yourself, use shadow tables automatically. You cannot prevent GUnit tests from using shadow tables. GUnit tests use
shadow tables according to the following process:
1. GUnit copies data from the main application tables to the shadow tables to create a backup of your test data.
2. GUnit runs your tests.
3. GUnit copies data backed up data in shadow tables to the main tables to restore a fresh copy of your test data
for subsequent tests.
To start a test server, set its server.running.tests system property to true either explicitly or programmatically.
In addition, set the server environment to one that uses your test database. Upon server startup, if shadow tables do
not already exist, PolicyCenter drops the database, recreates it, and then creates the shadow tables. PolicyCenter
creates shadow tables only in an empty database.

The PolicyCenter data model 171


Guidewire PolicyCenter 9.0.6 Configuration Guide

Staging tables
PolicyCenter generates a staging table for any entity that is marked with an attribute of loadable="true". The
loadable attribute is true by default in the base configuration. A staging table largely parallels the main entity table
except that:
• PolicyCenter replaces foreign keys by PublicID objects of type String.
• PolicyCenter replaces typecode fields by typekey objects of type String.
After you load data into these staging tables, you run the command line tool table_import to bulk load the staging
table data into the main application database tables. See the System Administration Guide for information on how to
use this command.
IMPORTANT Some data types, for example, Entity, contain an overwrittenInStagingTable
attribute. If this attribute is set to true, then do not attempt to populate the associated staging table
yourself because the loader import process overwrites this table.

In the application database, you can you identify a staging table by the following prefix pcst_.

Temporary (temp) tables


PolicyCenter generates a temporary table for any entity that is marked with an attribute of temporary="true". Do
not confuse a temporary table with a shadow table, they are not synonymous. PolicyCenter uses temporary tables as
work tables during installation or upgrade only. PolicyCenter does not use them if the server is running in standard
operation.
Unfortunately, it is easy to forget to clear up these tables if they are no longer needed. Therefore, it is quite possible
for an application to have several of these temporary tables remaining even though the upgrade triggers that used
them are long gone.
In the application database, temporary tables look like any other entity table except that temporary tables are almost
always empty.

Data objects and scriptability


Scriptability is the ability of code to set (write) or get (read) a scriptable item such as a property (column) on an
entity. To do so, you set the following attributes:
• getterScriptability
• setterScriptabiliy
The following table lists the different types of scriptability:

Type Description
all Exposed in Gosu, wherever Gosu is valid, for example, in rules and PCF files
doesNotExist Not exposed in Gosu

hidden Not exposed in Gosu

If you do not specify a scriptability annotation, then PolicyCenter defaults to a scriptability of all.
IMPORTANT There are subtle differences in how PolicyCenter treats entities and fields marked as
doesNotExist and hidden. However, these differences relate to internal PolicyCenter code. For your
purpose, these two annotations behave in an identical manner, meaning any entity or field that uses
one of these annotations does not show in Gosu code. In general, there is no need for you to use either
one of these annotations.

Scriptability behavior on entities


If you set setterScriptability at the entity level but you also set the value to hidden or doesNotExist, then
PolicyCenter does not generate constructors for the entity. In essence, you cannot create a new instance of the entity
172 chapter 15: The PolicyCenter data model
Guidewire PolicyCenter 9.0.6 Configuration Guide

in Gosu. Within the PolicyCenter data model, you can set the following scriptability annotation on <entity>
objects:

Object Set (write) Get (read)


<entity> Yes No*
* <entity> does not contain a getterScriptability attribute.

Scriptability behavior on fields (columns)


If you set setterScriptability at the field level, then the value that you set controls the writability of the
associated property in Gosu. Within the PolicyCenter data model, you can set the following scriptability annotation
on fields on <entity> objects:

Field Set (write) Get (read)


<array> Yes Yes
<column> Yes Yes
<edgeForeignKey> Yes Yes
<foreignkey> Yes Yes
<onetoone> Yes Yes
<typekey> Yes Yes

XML root elements and related base PolicyCenter data object types
The base PolicyCenter configuration recognizes a set of XML root elements. These elements match by name a set of
base data object types. All PolicyCenter objects exist as instances of one of the base data object types or as instances
of a subtype of a base object type. The following table lists the XML root elements for the base PolicyCenter data
object types:

XML root element Exten‐ Folder More information


sion
<delegate> .eti metadata, “<delegate> elements and related data object types” on page 174
extensions

<entity> .eti metadata, “<entity> elements and related data object types” on page 177
extensions

<extension> .etx extensions “<extension> elements and related data object types” on page 183
<nonPersistentEntity> .eti metadata, “<nonPersistentEntity> elements and related data object types” on
extensions page 184
<subtype> .eti metadata, “<subtype> elements and related data object types” on page 186
extensions

<viewEntity> .eti metadata “<viewEntity> elements and related data object types” on page 188
<viewEntityExtension> .etx extensions “<viewEntityExtension> elements and related data object types” on
page 190

The PolicyCenter data model 173


Guidewire PolicyCenter 9.0.6 Configuration Guide

IMPORTANT There are additional data objects that Guidewire uses for internal purposes. Do not
attempt to create or extend a data entity that is not listed in the previous table.

Related concepts
“<delegate> elements and related data object types” on page 174

Related references
“<entity> elements and related data object types” on page 177
“<extension> elements and related data object types” on page 183
“<nonPersistentEntity> elements and related data object types” on page 184
“<subtype> elements and related data object types” on page 186
“<viewEntity> elements and related data object types” on page 188
“<viewEntityExtension> elements and related data object types” on page 190

<delegate> elements and related data object types


The <delegate> XML root element defines delegate data object types. A delegate data object type is a collection of
properties and behaviors. Moreover, a delegate contains an interface and a default implementation of that interface.
A delegate can also add its own columns to the tables of data object types that implement the delegate. This type of
delegation enables a data object type to implement an interface while delegating the implementation to the delegate.
You often use a delegate so that objects can share code. The delegate implements the shared code rather than each
class implementing copies of common code. Thus, a delegate is an entity associated with an implemented interface
that multiple parent entities can reuse.
Guidewire defines delegates in data model metadata files. You can extend existing delegates that are marked as
extendible. You can also create your own custom delegates.
PolicyCenter stores all database columns on the delegate entity in the implementing entity.

Attributes of <delegate>
The <delegate> element contains the following attributes.

<delegate> attribute Description Default


extendable Internal. false

name Required. None


platform Internal. Do not use. The only real effect is to change the location in which the table false
appears in a data distribution report.
requiresType Specifies that the delegate must be implemented by an entity of a general type, such nonkeyable
as retireable or versionable.
Possible values for the requiresType attribute are the values of the type attribute on
the <entity> element. Some of the general types extend others. For example,
editable extends versionable, and versionable extends keyable. An entity can im‐
plement the delegate if the implementor is the specified type or one that extends it.
For example, if the requiresType attribute is keyable, then an implementing entity
could have type keyable, versionable, or editable.
setterScriptability See “Data objects and scriptability” on page 172 for information. None

Subelements of <delegate>
The <delegate> element contains the following subelements.
174 chapter 15: The PolicyCenter data model
Guidewire PolicyCenter 9.0.6 Configuration Guide

<delegate> subelement Description

column See “<column>” on page 195.


datetimeordering Internal.
dbcheckbuilder Internal.
foreignkey See “<foreignkey>” on page 204.
fulldescription See “<fulldescription>” on page 206.
implementsEntity See “<implementsEntity>” on page 206.
implementsInterface See “<implementsInterface>” on page 208.
index See “<index>” on page 208.
monetaryamount Handles monetary amounts. The <monetaryamount> subelement is a compound data type that
stores its values in two separate database columns: a <money> column type and a typekey to the
Currency typelist.

typekey See “<typekey>” on page 212.

Implementing delegate data object types


To implement most delegate data object types, you add the following to an entity definition or extension.

<implementsEntity name="SomeDelegate"/>

For example, in the base configuration, the Group entity implements the Validatable delegate by using the
following:

<entity entity="Group" ... >


<implementsEntity name="Validatable"/>
...
</entity>

It is possible for an entity to implement multiple delegates, just as a Gosu or Java class can implement multiple
interfaces.

See also
• “<implementsEntity>” on page 206
• “Creating a new delegate object” on page 234.
• For a discussion of working with delegates in Gosu classes, see the Gosu Reference Guide.

Delegate object types that you cannot implement directly


There are some delegates that you cannot implement directly through the use of the <implementsEntity> element.
They are:
• Versionable
• KeyableBean
• Editable
• Retireable
• EffDated
• EffDatedBranch
• EffDatedContainer
These are special delegates that PolicyCenter implicitly adds to an entity if you set the type attribute on the entity to
one of these values. Therefore, do not use the <implementsEntity> element to specify one of these delegates.
Instead, use the type attribute on the entity declaration. The basic syntax looks similar to the following:
The PolicyCenter data model 175
Guidewire PolicyCenter 9.0.6 Configuration Guide

<entity name="SomeEntity" ... type="SomeDelegate">

For example, in the base configuration, the Group entity also implements the Retireable delegate by setting the
entity type attribute to retireable.

<entity entity="Group" ... type="retireable">


<implementsEntity name="Validatable"/>
...
</entity>

Also, it is not possible to explicitly implement the EventAware delegate. PolicyCenter automatically adds this
delegate to any entity that contains an <events> element.

Archiving delegates in the base configuration must not be changed


To support the archive process, certain Guidewire entities in the base configuration implement one or more of the
following delegates:
• RootInfo
• Extractable
• OverlapTable
WARNING Do not change or remove the archiving delegates on Guidewire entities in the base
configuration. Otherwise, the server may not start due to errors in the archiving domain graph.

Recommendations for using delegates


Guidewire recommends that you use delegates in three scenarios.

Implementing a common interface


Guidewire recommends that you use a delegate if you want both of the following:
• If you want to have multiple entities implement the same interface
• If you want most of the implementations of the interface to be common
PolicyCenter defines a number of delegates in the base configuration. For example:
• Assignable
• Editable
• Validatable
• ...
To determine the list of base configuration delegate entities, search the configuration→config→Metadata→Entity folder
for files that contain the following text:

<delegate

Subtyping without single‐table inheritance


Guidewire recommends that you create a delegate entity rather than define a supertype entity if you do not want to
store subtype data in a single table. PolicyCenter stores information on all subtypes of a supertype entity in a single
table. This can create a table that is extremely large and extremely wide. This is true especially if you have an entity
hierarchy with a number of different subtypes that each have their own columns. Using a delegate avoids this single-
table inheritance while preserving the ability to define the fields and behavior common to all the subtypes in one
place.
Guidewire recommends that you consider carefully before making a decision on how to model your entity hierarchy.

Using entity polymorphism


Guidewire recommends that you create a delegate entity if you want to use polymorphism on class methods. For
core PolicyCenter classes defined in Java, you cannot override these class methods on its Gosu subtypes. You can,
176 chapter 15: The PolicyCenter data model
Guidewire PolicyCenter 9.0.6 Configuration Guide

however, push all methods and behaviors that can possibly be polymorphic into an interface, rather than the Java
superclass. You can then require that all implementers of the delegate implement that interface (the
<implementsEntity>) through the use of the delegate requires attribute. This delegate usage permits the use of
polymorphism and enables delegate implementations to share common implementations on a common superclass.

<entity> elements and related data object types


The <entity> XML root element defines many—if not most—of the PolicyCenter entities.

Attributes of <entity>
The <entity> element contains the following attributes.

<entity> attribute Description Default


abstract If true, you cannot an create instance of the entity type at run false
time. Instead, you must declare a subtype entity with
abstract=false, which you can instantiate. Any of the gener‐
ated code is abstract.
admin Determines whether you can reference the entity from staging false
tables:
• Entity X has admin="true". Suppose that you have
another, loadable table Y that has a foreign key to X. Then
at the time you load the staging table for Y, you can load
public IDs that specify entities of type X that are already in
the main tables.
• Entity X has admin="false". Any Y that you load into a
staging table must specify an X that is being loaded into
the staging table for X at the same time.
This is important because it allows the staging table loader to
do less checking at load time. For example:
• If admin="false", then the staging table loader merely
has to check that all public IDs in ccst_y specify valid
entries in ccst_x.
• If admin="true", then the staging table loader has to
check that all public IDs in ccst_y specify a valid entry in
ccst_x. It must also check that all public IDs in ccst_y
specify a valid entry in cc_x, the main table.
autoSplit Use with effDated entities, whether PolicyCenter auto‐splits true
the entity on a slice edit.
cacheable Internal. If set to false, then Guidewire prohibits entities of true
this type and all its subtypes from existing in the global cache.
consistentChildren Internal. If set to true, then PolicyCenter generates a consis‐ false
tency check and a loader validation that tries to ensure that
links between child entities of this entity are consistent.
Guidewire enforces the constraint only while loading data
from staging tables. You can detect violations of the constraint
on data committed to entity tables after the fact by running a
consistency check.
IMPORTANT Guidewire does not enforce
consistentChildren constraints at bundle commit.

desc A description of the purpose and use of the entity. None


displayName Optional. Creates a more human‐readable form of the entity None
name. You can access this name using the following:
entity.DisplayName

The PolicyCenter data model 177


Guidewire PolicyCenter 9.0.6 Configuration Guide

<entity> attribute Description Default


If you do not specify a value for the DisplayName attribute,
then the entity.DisplayName method returns the value of
the entity attribute, instead. If you subtype an entity that has
a specified display name, then the entity.DisplayName
method returns the name of the subtype key.
edgeTable For the purposes of archiving, whether the entity has the se‐ false
mantics of an edge table.
effDatedBranchType Relevant only for entities of type effDated. This value defines None
the type of the root of the tree in which the effDated entity
lives.
effDatedBranchesField Relevant only for entities of type effDatedContainer. This None
value defines the field that refers to the branches of this con‐
tainer.
effDatedContainerField Relevant only for entities of type effDatedBranch. This value None
defines the field that refers to the container of this branch.
effDatedRegistryTableName Relevant only for entities of type effDatedContainer. This None
value defines the name of the table that stores the effdated
table registry for this container entity.
entity Required. The name of the entity. You use this name to access None
the entity in data views, rules, and other areas within
PolicyCenter.
exportable Unused.
extendable Internal. If true, it is possible to extend this entity. true

final If true, you cannot subtype the entity. If false, you can de‐ true
fine subtypes using this entity as the supertype.
IMPORTANT If you define this incorrectly, PolicyCenter gener‐
ates an error message upon resource verification and the ap‐
plication server refuses to start. PolicyCenter generates this
verification error:
• If you attempt to subtype an entity that is marked as
final that exists in the metadata folder in Guidewire
Studio™.
• If you attempt to subtype an entity that is marked as
final that exists in the extensions folder in Studio.

generateInternallyIfAbsent Internal. Do not use. false

ignoreForEvents The ignoreForEvents attribute indicates whether other enti‐ false


ties pass over the instant entity when determining the origin
of an event. If the value of ignoreForEvents is true,
PolicyCenter ignores the entity in this context.
If the <events> element is not present in an entity, that entity
does not generate events. Moreover, that entity does not gen‐
erate events when you create, modify, or delete it. Thus, it
makes no sense for PolicyCenter to examine either that entity
or entities that reference it when the product searches for the
source of an event.

178 chapter 15: The PolicyCenter data model


Guidewire PolicyCenter 9.0.6 Configuration Guide

<entity> attribute Description Default


Nonetheless, even if an entity generates no events, whenever
you modify it, PolicyCenter still examines that entity and all
entity instances that reference it. The scope of this examina‐
tion encompasses the non‐event‐generating entity as well as
arrays, foreign keys, and edge foreign keys that reference it. If
PolicyCenter finds an entity instance that both generates
events and references the modified, non‐event‐generating en‐
tity, the product generates a Changed event for that entity in‐
stance. This examination and event generation process results
in unnecessary and long chain queries.
Guidewire offers two solutions to the resultant performance
challenge. You can avoid the examination and event genera‐
tion altogether if you set the ignoreForEvents attribute to
true on the non‐event‐generating entity. In this case,
PolicyCenter ignores the non‐event‐generating entity as well
as references to it when an event occurs.
As an alternative, you can avoid the examination and event
generation in some cases while allowing the process in others.
To effect this selective avoidance, set the ignoreForEvents
attribute to true not on the non‐event‐generating entity.
Rather, set it to true only on event‐generating entity instan‐
ces both that reference the entity and that you want
PolicyCenter to ignore. Such referencing entity instances
might be arrays, foreign keys, or edge foreign keys.
In this case, when you modify the non‐event‐generating enti‐
ty, PolicyCenter does not ignore the entity altogether. When
you modify the entity, event‐generating entity instances that
reference the entity and on which the ignoreForEvents at‐
tribute is false still generate events. Instead, PolicyCenter ig‐
nores only the referencing entity instance on which you set
the ignoreForEvents attribute to true.
Thus, if you want no events triggered at all when you modify a
non‐event‐generating entity, set the ignoreForEvents attrib‐
ute on that entity to true. If you want some events avoided
and some triggered, take this step only on event‐generating
entities that reference the non‐event‐generating entity and
that you want to ignore. Set the ignoreForEvents attribute to
true as appropriate to ensure optimal performance.

instrumentationTable Internal. false

loadable If true, you can load the entity through staging tables. true

lockable Internal. If set to true, PolicyCenter adds a lock column false


(lockingcolumn) to the table for this entity. PolicyCenter uses
this to acquire an update lock on a row. The most common
use is on objects in which it is important to implement safe or‐
dering of messages. In that case, the entity that imposes the
safe ordering needs to be lockable.
IMPORTANT Guidewire strongly recommends that you do not
use this locking mechanism.
overwrittenInStagingTable Internal. If true and the entity is loadable, the loader process false
auto‐populates the staging table during import.
IMPORTANT If set to true, do not attempt to populate the ta‐
ble yourself, because the loader import process overwrites
this table.
platform Internal. Do not use. The only real effect is to change the loca‐ false
tion in which the table appears in a data distribution report.

The PolicyCenter data model 179


Guidewire PolicyCenter 9.0.6 Configuration Guide

<entity> attribute Description Default


priority The priority of the corresponding subtype key. This value is ‐1
meaningful only for entities participating in a subtype hierar‐
chy, which can be either the <subtype> entities or the root
<entity>.

readOnly Optional. The typical use of read‐only entities is for tables of None
reference data that you import as administrative data and
then never touch again.
You can add a read‐only entity only to a bundle that has the
allowReadOnlyBeanChanges() flag set on its commit options.
That means that inserting, modifying or deleting a read‐only
entity requires one of these special bundles.
You cannot set bundle commit options from Gosu. Therefore,
you cannot modify these entities from Gosu, unless some
Gosu‐accessible interface gives you a special bundle. The ad‐
ministrative XML import tools use such a special bundle. How‐
ever, Guidewire uses these tools internally only in the
PolicyCenter product model.
setterScriptability See “Data objects and scriptability” on page 172. None
subpackage Subpackage to which the class corresponding to this entity be‐ None
longs.
table Required. The name of the database table in which None
PolicyCenter stores the data for this entity. PolicyCenter auto‐
matically prefixes table names with pc_ for base entities and
pcx_ for extension entities.
Guidewire recommends the following table naming conven‐
tions:
• Do not begin the table name with any product‐specific
extension.
• Use only unaccented, lowercase Roman letters and the
underscore character.
• Prefix the table name with test_ if you use the table
solely for testing.
• Because PolicyCenter automatically prefixes extension
table names with pcx_, if you run into limits on the length
of the table name, you can consider removing the _Ext
suffix from the table name.
Guidewire enforces the following restrictions on the maxi‐
mum allowable length of the table name:
• loadable="true" — maximum of 25 characters
• loadable="false" — maximum of 26 characters
temporary Internal. If true, then this table is a temporary table that false
PolicyCenter uses only during installation or upgrade.
PolicyCenter deletes all temporary tables after it completes
the installation or the upgrade.
type Required. See “Overview of data entities” on page 165 for a None
discussion of data entity types.
typelistTableName If you create a non‐final entity, then PolicyCenter automatical‐ None
ly creates a typelist to keep track of the subtypes of that enti‐
ty. That typelist has an associated database table. If you do
not specify a value for this attribute, then PolicyCenter uses
the name of the entity as the table name for the subtype
typelist.

180 chapter 15: The PolicyCenter data model


Guidewire PolicyCenter 9.0.6 Configuration Guide

<entity> attribute Description Default


However, PolicyCenter places a restriction of 25 characters on
the length of the database table name. You use this attribute
to specify the database table name for the typelist if an entity
name is too long to become a valid typelist table name.
It is not valid to use this attribute with entity types marked as
final.
validateOnCommit Internal. Do not use. If true, PolicyCenter validates this entity true
during a commit of a bundle that contains this entity.

IMPORTANT Do not modify internal entity attributes. This instruction applies even in the case of
custom entities.

Subelements of <entity>
The <entity> element contains the following subelements.

<entity> subelement Description


array See “<array>” on page 193.
checkconstraint Internal.
column See “<column>” on page 195.
customconsistencycheck Internal.
datetimeordering Internal.
dbcheckbuilder Internal.
edgeForeignKey See “<edgeForeignKey>” on page 200.
events Indicates that the entity raises events and that the entity is aware of events. See “<events>” on
page 203.
foreignkey See “<foreignkey>” on page 204.
fulldescription See “<fulldescription>” on page 206.
implementsEntity See “<implementsEntity>” on page 206.
implementsInterface See “<implementsInterface>” on page 208.
index See “<index>” on page 208.
jointableconsistencycheck Internal.

monetaryamount Handles monetary amounts. The <monetaryamount> subelement is a compound data type that
stores its values in two separate database columns: a <money> column type, and a typekey to
the Currency typelist.
onetoone See “<onetoone>” on page 209.
remove-index See “<remove‐index>” on page 211.
searchColumn See “<entity> elements and related data object types” on page 177
searchTypekey Defines a search denormalization typekey in the database. The denormalization copies the val‐
ue of a column on another table into a typekey field on the denormalizing table. You must link
the tables through a foreign key. The purpose of this denormalization is to avoid costly joins in
performance critical searches.
tableAugmenter Internal.
typekey See “<typekey>” on page 212.

The PolicyCenter data model 181


Guidewire PolicyCenter 9.0.6 Configuration Guide

<entity> subelement Description


validatetypekeyinset Internal.
validatetypekeynotinset Internal.

IMPORTANT Do not modify internal entity subelements even in the case of custom entities.

The <searchColumn> subelement

The <searchColumn> subelement on <entity> defines a search denormalization column in the database. The
denormalization copies the value of a column on another table into a column on the denormalizing table. You must
link the tables through a foreign key. The purpose of this denormalization is to avoid costly joins in performance-
critical searches.
The use of search denormalization columns adds overhead to updates, as does any denormalization. Guidewire
recommends that you only use these columns if there is an identifiable performance problem with a search that is
directly related to the join between the two tables
Note: It is possible to have a <searchColumn> sublement on the <extension> and <subtype>
elements as well.
The <searchColumn> element contains the following attributes.

<searchColumn> attribute Description Default


columnName Name to use for the database column corresponding to this property. If None
you do not specify a value, then PolicyCenter uses the name value in‐
stead.
The columnName attribute must be no more than 30 characters in
length. It allows only unaccented Roman letters, numbers, and the un‐
derscore character. The first character of the columnName attribute
must be a letter. Although the underscore character is allowable here,
Guidewire discourages its use.
deprecated If true, then PolicyCenter marks the item as deprecated in the Data false
Dictionary and places a Deprecated annotation on it in the Guidewire
Studio API Reference.
If you deprecate an item, use the description to explain why.
For more information, see “Data entity subelements” on page 192.
desc Description of the intended purpose of this column. None
name Required. Name of the column on the table and the field on the entity. None
The name value maps to the accessor and mutator methods of a field on
the entity, not the actual private member field. For example, name
maps to setName and getName, not the private _name member field.
Column names must contain letters only. A column name cannot con‐
tain an underscore.
sourceColumn Required. Name of the column on the source entity, whose value this None
column copies. The sourceColumn must not name a localized column.
sourceForeignKey Required. Name of a foreign key field on this entity, which refers to the None
source entity for this search denormalization column. The
sourceForeignKey must not be importable against existing objects.

sourceSubtype Optional name of the particular subtype on which the source column is None
defined. If not specified, then PolicyCenter assumes that the source
column to exist on the entity referred to by the source object. However,
you must specify this value if the sourceColumn is on a subtype of the
entity referred to by sourceForeignKey.

182 chapter 15: The PolicyCenter data model


Guidewire PolicyCenter 9.0.6 Configuration Guide

For example, suppose that you set the following attribute definitions:
• searchColumn – MyDenormColumn
• sourceForeignKey – Source
• sourceColumn – SourceField
This declaration says:
Copy the value of SourceField on the object pointed to by the foreign key named Source into the field named
MyDenormColumn. PolicyCenter automatically populates the column as part of bundle commit, staging table load,
and database upgrade.
If you need to denormalize a field on a subtype of the entity referred to by the foreign key, then you can specify the
optional sourceSubtype attribute.
As with linguistic denormalization columns, you cannot access the value of these search denormalization columns in
memory. The value is only available in the database. Thus, you can only access the value through a database query.
It is possible to make a query against a search denormalization column that is a denormalization of a linguistic
denormalization column. In that case, the query generator knows not to wrap the column values in the linguistic
denormalization function. This preserves the optimization that linguistic denormalization columns provide.
It is important to understand that search denormalization columns specify one column only — the column that you
specify with the sourceColumn attribute. So, if you want to denormalize both a column and its linguistic
denormalization, then you need two separate search denormalization columns. However, in this case, you typically
would just want to denormalize the linguistic denormalization column. You would only want to denormalize the
source column if you wanted to support case-sensitive searches on it.
Search denormalization columns can only specify <column> or <typekey> fields.

<extension> elements and related data object types


The <extension> XML root element defines extension data object types. An extension data object type extends an
already existing data object type or entity. Guidewire defines extensions in data model metadata files.

See also
• For information on how to extend the base data objects, see “Modifying the base data model” on page 225.

Attributes of <extension>
The <extension> element contains the following attributes.

<extension> attrib‐ Description Default


ute
entityName Required. This value must match the file name of the entity that it extends. None
PolicyCenter generates an error at resource verification if the value that you set for the
entityName attribute in an extension does not match the file name.

Subelements of <extension>
The <extension> element contains the following subelements.

<extension> subelement Description


array See “<array>” on page 193.
array-override Use to override, or flip, the value of the triggersValidation attribute of an <array> element
definition on a base data object. See “Working with attribute and element overrides” on page
231 for details.
column See “<column>” on page 195.

The PolicyCenter data model 183


Guidewire PolicyCenter 9.0.6 Configuration Guide

<extension> subelement Description


column-override Use to override certain very specific attributes of a base data object. See “Working with attribute
and element overrides” on page 231 for details.
description A description of the purpose and use of the entity.
edgeForeignKey See “<edgeForeignKey>” on page 200.
edgeForeignKey- Use to override certain very specific attributes of a base data object.
override

events See “<events>” on page 203.


foreignkey See “<foreignkey>” on page 204.
foreignkey-override Use to override, or flip, the value of the triggersValidation attribute of a <foreignkey> ele‐
ment definition on a base data object. See “Working with attribute and element overrides” on
page 231 for details.
implementsEntity See “<implementsEntity>” on page 206.
implementsInterface See “<implementsInterface>” on page 208.
index See “<index>” on page 208.
internalonlyfields Internal.
monetaryamount Handles monetary amounts. The <monetaryamount> subelement is a compound data type that
stores its values in two separate database columns: a <money> column type and a typekey to the
Currency typelist.

onetoone See “<onetoone>” on page 209.


onetoone-override Use to override, or flip, the value of the triggersValidation attribute of a <onetoone> element
definition on a base data object. See “Working with attribute and element overrides” on page
231 for details.
remove-index See “<remove‐index>” on page 211.
searchColumn See “<entity> elements and related data object types” on page 177
searchTypekey Defines a search denormalization typekey in the database. The denormalization copies the value
of a column on another table into a typekey field on the denormalizing table. You must link the
tables through a foreign key. The purpose of this denormalization is to avoid costly joins in per‐
formance critical searches.
typekey See “<typekey>” on page 212.
typekey-override Use to override certain specific attributes, or fields, of a <typekey> element definition on a base
data object. See “Working with attribute and element overrides” on page 231 for details.

<nonPersistentEntity> elements and related data object types


The <nonPersistentEntity> XML root element defines non-persistent entity data object types. A non-persistent
entity data object type defines a temporary entity instance or object. PolicyCenter creates and uses this object only
during the time that the PolicyCenter server is running. When the server shuts down, PolicyCenter discards the
object data. It is not possible to commit a non-persistent entity object to the database.
Guidewire defines non-persistent entities in data model metadata files.
Note: You cannot subtype a persistent entity with a non-persistent entity.

Guidewire recommendations for non‐persistent entities


As a general rule, Guidewire recommends that you do not create new non-persistent entities. In addition, do not
extend existing non-persistent entities unless instructed to do so. For example, the base configuration contains non-
persistent entities that you can extend to specify new search criteria.
184 chapter 15: The PolicyCenter data model
Guidewire PolicyCenter 9.0.6 Configuration Guide

A major issue with non-persistent entities is that they do not interact well with data bundles. For example, passing a
non-persistent entity instance to a PCF page is generally a bad idea because it generally does not work in the manner
that you expect.
A non-persistent entity instance has to live in a bundle and can only live in one bundle. Therefore, passing it to one
context removes it from the other context. Even worse, it is possible that in passing the non-persistent entity instance
from one context to another, the object loses any nested arrays or links associated with it. Thus, it is possible to lose
parts of the entity graph as the non-persistent entity instance moves around.
In situations where you want the behavior of a non-persistent entity, use a Gosu class instead. For example:
• If you want the behavior of a non-persistent entity in web services, create a Gosu class. Then, expose the class as
a web service. Do not rely on non-persistent entities and entity serialization.
• If you want a field that behaves as a column, specify a data type through the use of annotations. For example, you
could use this technique for nonnegativeinteger column behavior. After specifying the data type, add the
wanted data type behavior to properties on Gosu classes. For information on how to associate data types with
object properties using the annotation syntax, see “Defining a data type for a property” on page 271.

Attributes of <nonPersistentEntity>

The <nonPersistentEntity> element contains the following attributes.

<nonPersistentEntity> at‐ Description De‐


tribute fault
abstract If true, you cannot an create instance of the entity type at runtime. Instead, you false
must declare a subtype entity with abstract=false, which you can instantiate. Any
of the generated code is abstract.
desc A description of the purpose and use of the entity. None
displayName Optional. Creates a more human‐readable form of the entity name. You can access None
this name using the following:
entity.DisplayName
If you do not specify a value for the DisplayName attribute, then the
entity.DisplayName method returns the value of the entity attribute, instead. If you
subtype an entity that has a specified display name, then the entity.DisplayName
method returns the name of the subtype key.
entity Required. The name of the entity. You use this name to access the entity in data None
views, rules, and other areas within PolicyCenter.
exportable Unused.
extendable If true, it is possible to extend this entity. true

final If true, you cannot subtype the entity. If false, you can define subtypes using this true
entity as the supertype.
platform Internal. Do not use. The only real effect is to change the location in which the table false
appears in a data distribution report.
priority The priority of the corresponding subtype key. This value is meaningful only for enti‐ -1
ties participating in a subtype hierarchy, which can be either the <subtype> entities
or the root <entity>.
typelistTableName If you create a non‐final entity, then PolicyCenter automatically creates a typelist to None
keep track of the subtypes of that entity. That typelist has an associated database ta‐
ble. If you do not specify a value for this attribute, then PolicyCenter uses the name
of the entity as the table name for the subtype typelist.
However, PolicyCenter places a restriction of 25 characters on the length of the data‐
base table name. You use this attribute to specify the database table name for the
typelist if an entity name is too long to become a valid typelist table name.
It is not valid to use this attribute with entity types marked as final.

The PolicyCenter data model 185


Guidewire PolicyCenter 9.0.6 Configuration Guide

Subelements of <nonPersistentEntity>
The <nonPersistentEntity> element contains the following subelements.

<nonPersistentEntity> subele‐ Description


ment
array See “<array>” on page 193.
column See “<column>” on page 195.
edgeForeignKey See “<edgeForeignKey>” on page 200.
foreignkey See “<foreignkey>” on page 204.
fulldescription See “<fulldescription>” on page 206.
implementsEntity See “<implementsEntity>” on page 206.
implementsInterface See “<implementsInterface>” on page 208.
monetaryamount Handles monetary amounts. The <monetaryamount> subelement is a compound data
type that stores its values in two separate database columns: a <money> column type
and a typekey to the Currency typelist.
onetoone See “<onetoone>” on page 209.
typekey See “<typekey>” on page 212.

<subtype> elements and related data object types


The <subtype> XML root element defines an entity type that is a subtype of another entity. The subtype entity has
all of the fields and elements of its supertype. The subtype entity can also have additional fields and elements.
Guidewire defines subtype entities in the data model metadata files.
PolicyCenter does not associate a separate database table with a subtype. Instead, PolicyCenter stores all subtypes of
a supertype in the table of the supertype and resolves the entity to the correct subtype based on the value of the
Subtype field. To accommodate this, PolicyCenter stores all fields of a subtype in the database as nullable columns
—even the ones defined as non-nullable. However, if you define a field as non-nullable, then the PolicyCenter
metadata service enforces this for all data operations.
You can only define a subtype for any entity that has its final attribute set to false. PolicyCenter automatically
creates a Subtype field for non-final entities.

Attributes of <subtype>
The <subtype> element contains the following attributes:

<subtype> attrib‐ Description De‐


ute fault
abstract If true, you cannot create an instance of the entity type at runtime. Instead, you must de‐ false
clare a subtype entity with abstract=false, which you can instantiate. Any of the generat‐
ed code is abstract.
desc A description of the purpose and use of the subtype. None
displayName Optional. Occasionally in the PolicyCenter interface, you want to display the subtype name None
of subtyped entity instances. Use the displayName attribute to specify a String to display
as the subtype name. You can access this name using the following:
entity.DisplayName
If you do not specify a value for the displayName attribute, then PolicyCenter displays the
name of the entity. The entity name is often not user‐friendly. For a description of the
displayName attribute, see “<entity> elements and related data object types” on page 177.

entity Required.

186 chapter 15: The PolicyCenter data model


Guidewire PolicyCenter 9.0.6 Configuration Guide

<subtype> attrib‐ Description De‐


ute fault
final If true, you cannot subtype the entity. If false, you can define subtypes using this entity as false
the supertype.
platform Internal. Do not use. The only real effect is to change the location in which the table ap‐ false
pears in a data distribution report.
priority The priority of the corresponding subtype key. This value is meaningful only for entities -1
participating in a subtype hierarchy, which can be either the <subtype> entities or the root
<entity>.

readOnly Optional. The typical use of read‐only entities is for tables of reference data that you import None
as administrative data and then never touch again.
You can add a read‐only entity only to a bundle that has the allowReadOnlyBeanChanges()
flag set on its commit options. That means that inserting, modifying or deleting a read‐only
entity requires one of these special bundles.
You cannot set bundle commit options from Gosu. Therefore, you cannot modify these en‐
tities from Gosu, unless some Gosu‐accessible interface gives you a special bundle. The ad‐
ministrative XML import tools use such a special bundle. However, Guidewire uses these
tools internally only in the PolicyCenter product model.
setterScriptability See “Data objects and scriptability” on page 172 for information. None
supertype Required.

Subelements of <subtype>
The <subtype> element contains the following subelements.

<subtype> subelement Description


array See “<array>” on page 193.
checkconstraint Internal.
column See “<column>” on page 195.
customconsistencycheck Internal.
datetimeordering Internal.
dbcheckbuilder Internal.
edgeForeignKey See “<edgeForeignKey>” on page 200.
events See “<events>” on page 203.
foreignkey See “<foreignkey>” on page 204.
fulldescription See “<fulldescription>” on page 206.
implementsEntity See “<implementsEntity>” on page 206.
implementsInterface See “<implementsInterface>” on page 208.
index See “<index>” on page 208.
jointableconsistencycheck Internal.

monetaryamount Handles monetary amounts. The <monetaryamount> subelement is a compound data type that
stores its values in two separate database columns: a <money> column type, and a typekey to
the Currency typelist.
onetoone See “<onetoone>” on page 209.
searchColumn See “<entity> elements and related data object types” on page 177.

The PolicyCenter data model 187


Guidewire PolicyCenter 9.0.6 Configuration Guide

<subtype> subelement Description


searchTypekey Defines a search denormalization typekey in the database. The denormalization copies the val‐
ue of a column on another table into a typekey field on the denormalizing table. You must link
the tables through a foreign key. The purpose of this denormalization is to avoid costly joins in
performance critical searches.
tableAugmenter Internal.
typekey See “<typekey>” on page 212.
validatetypekeyinset Internal.
validatetypekeynotinset Internal.

Subtypes and typelists


After you define a new subtype, PolicyCenter automatically adds that entity type to the associated entity typelist.
This is true, even if PolicyCenter marks that typelist as final.
For example, suppose that you define an Inspector entity as a subtype of Person.

<?xml version="1.0"?>
<subtype xmlns="http://guidewire.com/datamodel" desc="Professional inspector" displayName="Inspector"
entity="InspectorExt"
supertype="Person">
<column name="InspectorLicenseExt" type="varchar" desc="Inspector's business license number">
<columnParam name="size" value="30"/>
</column>
</subtype>

Notice that while InspectorExt is subtype of Person, Person, itself, is a subtype of Contact. PolicyCenter
automatically adds the new InspectorExt type to the Contact typelist. This is true, even though PolicyCenter
marks the Contact typelist as final.
To see this change:
• In the PolicyCenter Data Dictionary, you must restart the application server.
• In the Contact typelist in Studio, you must restart Studio.

See also
• “Defining a subtype” on page 240

<viewEntity> elements and related data object types


The <viewEntity> XML root element defines view entity data object types. A view entity data object type is a
logical view of entity data. You can use a view entity to enhance performance during the viewing of tabular data. A
view entity provides a logical view of data for an entity of interest to a list view. A view entity can include paths
from the root or primary entity to other related entities.
For example, from the DesktopActivityView, you can specify a column with a Job.JobNumber value. The
Activity entity is the primary entity of the DesktopActivityView. The Activity entity has a corresponding view
entity called ActivityView.
Unlike a standard entity, a view entity does not have an underlying database table. PolicyCenter does not persist
view entities to the database. Instead of storing data, a view entity restricts the amount of data that a database query
returns. A view entity does not represent or create a materialized view, which is a database table that caches the
results of a database query.
Queries against a view entity type are actually run against the normal entity table in the database, as specified by the
primaryEntity attribute of the view entity definition. The query against a view entity automatically adds any joins
necessary to retrieve view entity columns if they include a bean path. However, access to view entity columns is not
possible when constructing the query.
A view entity improves the performance of PolicyCenter on frequently used pages that list entities. Like other
entities, you can subtype a view entity.
188 chapter 15: The PolicyCenter data model
Guidewire PolicyCenter 9.0.6 Configuration Guide

For example, the My Activities page uses a view entity, the ActivityDesktopView, which is a subtype of the
ActivityView.
Because PolicyCenter can export view entity types, it generates SOAP interfaces for them.
Note: If you create or extend a view entity that references a column that is of
type="currencyamount", then you must handle the view entity extension in a particular manner.
Guidewire defines this object in the data model metadata files as the <viewEntity> XML root element.

Attributes of <viewEntity>

The <viewEntity> element contains the following attributes:

<viewEntity> attrib‐ Description Default


ute
abstract If true, you cannot an create instance of the entity type at runtime. Instead, you must de‐ false
clare a subtype entity with abstract=false, which you can instantiate. Any of the generated
code is abstract.
desc A description of the purpose and use of the entity. None
displayName Optional. Creates a more human‐readable form of the entity name. You can access this name None
using the following:
viewEntity.DisplayName
If you do not specify a value for the DisplayName attribute, then the entity.DisplayName
method returns the value of the entity attribute, instead. If you subtype an entity that has a
specified display name, then the entity.DisplayName method returns the name of the sub‐
type key.
entity Required. Name of this viewEntity object. None
exportable Unused.
extendable If true, it is possible to extend this entity. true

final If true, the entity definition is final and you cannot define any subtypes for it. If false, then true
you can define a subtype using this entity as the supertype.
platform Internal. Do not use. The only real effect is to change the location in which the table appears false
in a data distribution report.
primaryEntity Required. The primary entity type for this viewEntity object. The primary entity must be None
keyable. See “Data entities and the application database” on page 169 for information on
keyable entities.

priority For supertypes and subtypes, the priority of the corresponding subtype key. -1

showRetiredBeans Whether to show retired beans in the view. None


supertypeEntity Optional. The name of supertype of this entity. None
typelistTableName If you create a non‐final entity, then PolicyCenter automatically creates a typelist to keep None
track of the subtypes of that entity. That typelist has an associated database table. If you do
not specify a value for this attribute, then PolicyCenter uses the name of the entity as the
table name for the subtype typelist.
However, PolicyCenter places a restriction of 25 characters on the length of the database ta‐
ble name. You use this attribute to specify an alternate database table name for the typelist if
an entity name is too long to become a valid typelist table name.
It is not valid to use this attribute with entity types marked as final.

Subelements of <viewEntity>

The <viewEntity> elements contain the following subelements:

The PolicyCenter data model 189


Guidewire PolicyCenter 9.0.6 Configuration Guide

<viewEntity> subele‐ Description


ment
computedcolumn Specifies a column with row values that Guidewire computes while querying the database. For
example, the values of a computed column might be the sum of the values from two database
columns (col1 + col2).
computedtypekey Specifies a typekey that has some type of transformation applied to it during querying from the
database.
fulldescription See the discussion following the table.
implementsInterface See “<implementsInterface>” on page 208.
viewEntityColumn Represents a column in a viewEntity table
viewEntityLink Uses to access another entity through a foreign key. Typically, you use this value within the
PolicyCenter interface to create a link to that entity.
viewEntityName Represents an entity name column in a viewEntity table. An entity name is a string column that
contains the name of an entity that is suitable for viewing in the PolicyCenter interface.

viewEntityTypekey Represents a typekey column in a viewEntity table.

The Data Dictionary uses the fulldescription subelement. The following example illustrates how to use this
element:

<fulldescription>
<![CDATA[<p>Aggregates the information needed to display one activity row (base entity for all other
activity views).</p>]]>
</fulldescription>

The other subelements all require both a name and path attribute. The following code illustrates this:

<viewEntityName name="RelActAssignedUserName" path="RelatedActivity.AssignedUser"/>

Specify the path value relative to the primaryEntity on which you base the view.
The computedcolumn takes a required expression attribute and an additional, optional function attribute. The
following is an example of a computedcolumn:

<computedcolumn name="Amount" expression="${1}" paths="LineItems.Amount" function="SUM"/>

The expression for this column can take multiple column values ${column_num} passed from the PolicyCenter
interface. For example, a valid expression is ${1} - ${2}, where ${1} represents the first column and ${2}
represents the second column. The function value must be an SQL function that you can apply to this expression.
The following are legal values:
• SUM
• AVG
• COUNT
• MIN
• MAX
Note: If the SQL function aggregates data, PolicyCenter applies an SQL group automatically.

<viewEntityExtension> elements and related data object types


The <viewEntityExtension> XML root element defines view entity extension data object types. You use the view
entity extension entity to extend the definition of a viewEntity entity. See “<viewEntity> elements and related data
object types” on page 188 for more information on view entities. Guidewire defines view entity extension data
object types in the data model metadata files.
190 chapter 15: The PolicyCenter data model
Guidewire PolicyCenter 9.0.6 Configuration Guide

Attributes of <viewEntityExtension>
The <viewEntityExtension> element contains the following attributes:

<viewEntityExtension> attrib‐ Description Default


ute
entityName Required. This value must match the file name of the viewEntityExtension that it None
extends.
PolicyCenter generates an error at resource verification if the value set that you set
for the entityName attribute for a viewEntityExtension does not match the file
name.

Subelements of <viewEntityExtension>
The <viewEntityExtension> element contains the following subelements:

<viewEntityExtension> sub‐ Description


element
computedcolumn Specifies a column with row values that Guidewire computes while querying the database.
For example, the values of a computed column might be the sum of the values from two
database columns (col1 + col2).
computedtypekey Specifies a typekey that has some type of transformation applied to it during querying from
the database.
description A description of the purpose and use of the entity.
viewEntityColumn Represents a column in a viewEntity table. The viewEntityColumn element contains a
path attribute that you use to define the entity path for the column:
• The path attribute definition cannot traverse arrays.
• The path attribute is always relative to the primary entity on which you base the view.
Note: If you reference a column of type currencyamount, you must also define the
currencyProperty specified in the original column definition on the viewEntity entity. See
“Extending an existing view entity” on page 243 for an example of this.
viewEntityLink Uses to access another entity through a foreign key. Typically, you use this value within the
PolicyCenter interface to create a link to that entity.
viewEntityName Represents an entity name column in a viewEntity table. An entity name is a string column
that contains the name of an entity that is suitable for viewing in the PolicyCenter interface.
viewEntityTypekey Represents a typekey column in a viewEntity table.

Important caution
Guidewire strongly recommends that you not create a view entity extension—viewEntityExtension—that causes
traversals into revisioned (effdated) data. Doing so has the possibility of returning duplicate rows if any
revisioning in the traversal path splits an entity.
Instead, try one of the following:
• Denormalize the desired data onto a non-effdated entity.
• Add domain methods to the implementation of the View entity.

The PolicyCenter data model 191


Guidewire PolicyCenter 9.0.6 Configuration Guide

Data entity subelements


This topic describes the subelements that you can use in metadata definition files. These subelements are:
• <array>
• <column>
• <edgeForeignKey>
• <events>
• <foreignkey>
• <fulldescription>
• <implementsEntity>
• <implementsInterface>
• <index>
• <onetoone>
• <remove-index>
• <tag>
• <typekey>

Subelements for internal use only


Do not use the following entity subelements. Guidewire uses these subelements for internal purposes only.
• <aspect>
• <checkconstraint>
• <customconsistencycheck>
• <datetimeordering>
• <dbcheckbuilder>
• <jointableconsistencycheck>
• <tableAugmenter>
• <validatetypekeyinset>
• <validatetypekeynotinset>

The deprecated attribute


The deprecated attribute applies to the following subelements:
• <array>
• <column>
• <componentref>
• <edgeForeignKey>
• <foreignkey>
• <onetoone>
• <searchColumn>
• <typekey>
The deprecated="true" attribute does not alter the database in any way. Instead, the deprecated attribute marks a
data field as deprecated in the Data Dictionary and places a Deprecated annotation on the field in the Guidewire
Studio API Reference. The deprecated attribute supports organizations that want to remove a field in a two-phase
process.
In the first phase, you add the deprecated attribute to the field subelement. Studio indicates the field is deprecated
whenever Gosu code references the field. During this first phase, developers work to remove the deprecated field
from their code. The second phase occurs after developers remove all occurrences of the deprecated field.
In the second phase, you drop the field from the entity definition. In some cases, Guidewire will drop the column
from the database automatically to synchronize the physical database with your revised data model. In most cases
192 chapter 15: The PolicyCenter data model
Guidewire PolicyCenter 9.0.6 Configuration Guide

however, the DBA must alter the database with SQL statements run against the database to synchronize the database
with your revised data model.
Guidewire generally recommends against using the deprecated attribute and the two-phase removal process. If you
deprecate a field, Studio signals to the development team that the field is no longer used. The DBA does not receive
this information. Over time, with a number of deprecated fields, the DBA manages an ever larger amount of unused
information in the physical database. To avoid managing unused data, Guidewire strongly recommends that you
keep your physical database and the data model of your application synchronized by dropping unused fields instead
of deprecating them.

<array>
An array defines a set of additional entities of the same type to associate with the main entity. For example, a
Policy entity includes an array of Document entities.

Attributes of <array>
The <array> element contains the following attributes:

<array> attribute Description De‐


fault
arrayentity Required. The name of the entity that makes up the array. None
arrayfield Optional. Name of the field in the array table that is the foreign key back to this table. How‐ None
ever, you do not need to define a value if the array entity has exactly one foreign key back to
this entity.
Note that even if you define only one foreign key explicitly, additional foreign keys may be
created implicitly. For example, CreateUserID is automatically added to an editable entity.
In that case, arrayfield would be required because there is more than one foreign key.
cascadeDelete If true, then if you delete the array container, then PolicyCenter deletes (or retires) the ar‐ false
ray elements also.
deprecated If true, then PolicyCenter marks the item as deprecated in the Data Dictionary and places a false
Deprecated annotation on it in the Guidewire Studio API Reference.
If you deprecate an item, use the description to explain why.
See The deprecated attribute for more information.
desc A description of the purpose and use of the array. None
exportable Unused.
getterScriptability See “Data objects and scriptability” on page 172 for information. all

ignoreForEvents Determines whether PolicyCenter generates an event if a user modifies the <array> ele‐ false
ment in any way. Such modifications include adding an entity to, changing an entity in, and
removing an entity from the <array> element. If the ignoreForEvents attribute is set to
true, PolicyCenter will not generate an event.
For more information, see ignoreForEvents in “<entity> elements and related data object
types” on page 177.
name Required. The name of the property corresponding to this array. None
owner If true, then this entity owns the objects in the array. The owner attribute has the following false
behavior:
• If true (an owned array), then the method isFieldChanged returns true if a child
element of the array has changed. If false (a non-owned array), then the method
isFieldChanged returns false if a child element of the array has changed. In either

The PolicyCenter data model 193


Guidewire PolicyCenter 9.0.6 Configuration Guide

<array> attribute Description De‐


fault
case, isFieldChanged returns true if any child elements are added to or removed from
the array, regardless of the value of the owner attribute.
• If true, then if you delete the owning object, then PolicyCenter deletes (or retires) the
array items, as well. In this case, PolicyCenter deletes the array items notwithstanding a
value of false for the cascadeDelete attribute.
• If true, then if you update the contents of the array, then PolicyCenter considers the
owner as updated as well. This behavior can result in side effects. For example,
notwithstanding a value of false for the triggersValidation attribute, the behavior
can trigger validation.
• If true, then child array elements are copied along with the parent when the parent
copied, such as with the copy method.
• If true, the effects of the owner attribute override the effects of false values for the
cascadeDelete and triggersValidation attributes.
Note: The owner attribute must have a value of true if the corresponding array permits
concurrent changes to its values. PolicyCenter applies an optimistic locking approach for
concurrent changes to array values. A true value for the owner attribute results in
PolicyCenter notifying the array of concurrent changes or additions to the array children.
The notification is in the form of a concurrent data change exception (CDCE) in the user
interface.
requiredmatch One of the following values None
• all – There must be at least one matching row in the array for every row from this table.
For example, there must be at least one check payee for every check.
• none – There is no requirement for matching rows.
• nonretired – There must be at least one matching row for every non‐retired row from
this table.
setterScriptability See “Data objects and scriptability” on page 172 for information. all

triggersValidation Whether changes to the entity pointed to by this array trigger validation. Changes to the false
array that trigger validation include:
• The addition of an object to the array
• The removal of an object from the array
• The modification of an object in the array
See the discussion on this attribute that follows this table.

If set to true, the triggersValidation attribute can trigger additional PolicyCenter processing. Exactly what
happens depends on several different factors:
• If the parent entity for the array is validatable, then any modification to the array triggers the execution of the
Preupdate and Validation rules on the parent entity. Validation occurs whenever PolicyCenter attempts to commit
a bundle that contains the parent entity. For an entity to be validatable, it must implement the Validatable
delegate.
• If the parent entity has preupdate rules, but no validation rules, then PolicyCenter executes the preupdate rules on
the commit bundle. This is the case only if configuration parameter UseOldStylePreUpdate is set to true,
which is the default. If UseOldStylePreUpdate is set to false, PolicyCenter invokes the IPreUpdateHandler
plugin on the commit bundle instead. Then, PolicyCenter executes the logic defined in the plugin on the commit
bundle.
• If the parent entity has validation rules, but no preupdate rules, then PolicyCenter executes the validation rules on
the commit bundle.
• If the parent entity has neither preupdate nor validation rules then the following occurs:
1. In the case of UseOldStylePreUpdate=true, PolicyCenter does nothing.
2. In the case of UseOldStylePreUpdate=false, PolicyCenter calls the IPreUpdateHandler plugin on the
commit bundle.

194 chapter 15: The PolicyCenter data model


Guidewire PolicyCenter 9.0.6 Configuration Guide

Subelements of <array>
The <array> element contains the following subelements:

<array> subelement Description


array-association This subelement contains the following attributes:
• hasContains (default = false)
• hasGetter (default = true)
• hasSetter (default = false)
• valueField (default = ID)
It also contains the following subelements of its own, each of which can exist, at most, one time:
• constant-map
• subtype-map
• typelist-map
See “Typelist mapping associative arrays” on page 219 for more information.
fulldescription See “<fulldescription>” on page 206.
link-association This subelement contains the following attributes:
• hasGetter (default = true)
• hasSetter (default = false)
• valueField (default = ID)
It also contains the following subelements of its own, each of which can exist, at most, one time:
• constant-map
• subtype-map
• typelist-map
See “Subtype mapping associative arrays” on page 217 for more information.
tag See “<tag>” on page 212.

<column>
The <column> element defines a single-value field in the entity.
Note: For a discussion of <column-override>, see “Working with attribute and element overrides” on
page 231 for details.

Attributes of <column>
The <column> element contains the following attributes:

<column> attribute Description Default


allowInitialValueForUpgrade Internal use. false

autoincrement The name of a database sequence used as the source of values for the None
column. This attribute is applicable only for integer columns, and only
for implementations where PolicyCenter relies on the database for the
sequence. Do not use the same sequence in more than one
autoincrement column. There can be at most one autoincrement col‐
umn per table.
columnName Optional. If specified, PolicyCenter uses this value as the column name None
of the corresponding database column. If you do not specify a
columnName value, then PolicyCenter uses the value of the name attrib‐
ute for the database column name.
The columnName attribute must be no more than 30 characters in
length. It allows only unaccented Roman letters, numbers, and the un‐
derscore character. The first character of the columnName attribute
must be a letter. Although the underscore character is allowable here,
Guidewire discourages its use.

The PolicyCenter data model 195


Guidewire PolicyCenter 9.0.6 Configuration Guide

<column> attribute Description Default


IMPORTANT All column names on a table must be unique within that
table. Otherwise, Guidewire Studio™ displays an error if you verify the
resource and the application server fails to start.
createhistogram Whether to create a histogram on the column during an update to the false
database statistics.
Note: It is possible to override this attribute on an existing column in an
extension (*.etx) file using the <column-override> element. You can
use the override to turn off an existing histogram or to create one that
did not previously exist.
This change does not take effect during an upgrade. The change occurs
only if you regenerate statistics for the affected table by using the
Guidewire maintenance_tools command.
See also
• “Working with attribute and element overrides” on page 231
• System Administration Guide
default Default value given to the field during new entity creation. None
deprecated If true, then PolicyCenter marks the item as deprecated in the Data false
Dictionary and places a Deprecated annotation on it in the Guidewire
Studio API Reference.
If you deprecate an item, use the description to explain why.
For more information, see “Data entity subelements” on page 192.
desc A description of the purpose and use of the field. None
exportable Unused.
getterScriptability See “Data objects and scriptability” on page 172 for information. all

ignoreforevents If you change (or add, or remove) an entity X that does not generate false
events, then PolicyCenter searches for all event‐generating entity in‐
stances that specify X. If PolicyCenter finds any of these event‐
generating entity instances, it generates Changed events for those enti‐
ty instances.
To determine what entities reference a non‐event‐generating entity,
PolicyCenter examines the foreign keys and arrays that point to the en‐
tity. However, if you set ignoreForEvents to true on an entity that ref‐
erences the non‐event‐generating entity, then PolicyCenter ignores
that link as it determines what entities specify another entity.
• At the entity level, the ignoreForEvents attribute means changes
to (or addition or removal of) this entity do not cause Changed
events to fire for any other entity.
• At the column level, the ignoreForEvents attribute means changes
to this column do not cause the application to generate events.
loadable If true, you can load the field through staging tables. A staging table true
can contain a column mapping to the field.
loadedByCallback Internal. If true, then the loading code does not use a default value or false
report a warning if the column is nullable without a default.
name Required. The name of the column on the table and the field, or prop‐ None
erty, on the entity. PolicyCenter uses this value as the column name
unless you specify a columnName attribute. Use this name to access the
column in data views, rules, and other areas within PolicyCenter.
IMPORTANT All column names on a table must be unique within that
table. Otherwise, Studio displays an error if you verify the resource and
the application server fails to start.
nullok Whether the column can contain null values. true

196 chapter 15: The PolicyCenter data model


Guidewire PolicyCenter 9.0.6 Configuration Guide

<column> attribute Description Default


In general, this attribute is always true, as many tables include columns
that do not require a value at different points in the process.
overwrittenInStagingTable Internal. If true and the entity is loadable, the loader process auto‐ false
populates the staging table during import.
IMPORTANT If set to true, do not attempt to populate the table your‐
self as the loader import process overwrites this table.
required Whether the column is required to be non‐null upon initial construc‐ false
tion of instances of the entity. See the Gosu Reference Guide.
scalable Whether this value scales as the effective and expired dates change. false
This attribute applies only to number‐type values. For example, you
cannot scale a varchar. Also, it only applies to effective dated types.
setterScriptability See “Data objects and scriptability” on page 172 for information. all

soapnullok Unused.
supportsLinguisticSearch Applies only to columns of varchar‐based data types. false
• If true, case insensitive searches can be performed on the
denormalized version of the column.
• If false, searches are binary and cannot be performed on a
denormalized version of the column.
You cannot use this attribute with an encrypted column.
The setting of this attribute does not affect locale or language used in
searches.
See also
• “Including data from subentities” on page 144
• Globalization Guide
type Required. Data type of the column, or field. In the base configuration, None
Guidewire defines a number of data types and stores their metadata
definition files (*.dti) in under configuration→config→datatypes.
Each metadata definition file name is the name of a specific data type.
You use one of these data types as the type attribute on the <column>
element. Thus, the list of valid values for the type attribute is the same
as the set of .dti files in the application datatypes folders.
Each metadata definition also defines the value type for that data type.
The value type determines how PolicyCenter treats that value in mem‐
ory.
The name of the data type is not necessarily the same as the name of
its value type. For example, for the bit data type, the name of the data
type is bit and the corresponding value type is java.lang.Boolean.
Similarly, the data type varchar has a value type of java.lang.String.
The datetime data type is a special case. PolicyCenter persists this data
type in the application database using the database data type
TIMESTAMP. This corresponds to the value type java.util.Date. In
other words:
• PolicyCenter represents a column whose type is datetime in
memory as instances of java.util.Date.
• PolicyCenter stores this type of value in the database as TIMESTAMP.
Note: Guidewire does not support the unlimiteddecimal data type
in a persistent data model configuration.
See also
• “Data types” on page 269
• “Customizing base configuration data types” on page 273
• “Define a new data type” on page 277

The PolicyCenter data model 197


Guidewire PolicyCenter 9.0.6 Configuration Guide

Subelements of <column>
The <column> element contains the following subelements:

<column> subelement Description Default


columnParam See “<columnParam> subelement” on page 198. None
fulldescription See “<fulldescription>” on page 206. None
localization See “<localization> subelement” on page 199. None
tag See “<tag>” on page 212. None

<columnParam> subelement
You use the <columnParam> element to set parameters that a column type requires. The type attribute of a column
determines which parameters you can set or modify by using the <columnParam> subelement. You can determine the
list of parameters that a column type supports by looking up the type definition in its .dti file.
For example, if you have a mediumtext column, you can determine the valid parameters for that column by
examining file mediumtext.dti. This file indicates that you can modify the following attributes of a mediumtext
column:
• encryption
• logicalSize
• trimwhitespace
• validator
Because you cannot modify the base configuration data type declaration files, you cannot see these files in
Guidewire Studio. To view these files, navigate to the directory modules/configuration/config/datatypes.
The following example, from Account.eti in PolicyCenter, illustrates how to use this subelement to define certain
column parameters.

<?xml version="1.0"?>
<entity xmlns="http://guidewire.com/datamodel"
desc="An account is ..."
entity="Account"
...
table="account"
type="retireable">
...
<column desc="Business and Operations Description."
name="BusOpsDesc"
type="varchar">
<columnParam name="size" value="240"/>
</column>
...
</extension>

Parameters that you can define by using <columnParam>


The following list describes the parameters that you can define by using <columnParam>, depending on which
parameters are listed as valid in the .dti file of the data type.

Parameter Description
countryProperty Name of a property on the owning entity that returns the country to use for localizing the data
format for this column.

198 chapter 15: The PolicyCenter data model


Guidewire PolicyCenter 9.0.6 Configuration Guide

Parameter Description
createSpatialIndex Applies to columns with a spatial point data field. If the createSpatialIndex parameter has
the default value of true in a column of an extension or custom entity, PolicyCenter creates an
index for spatial point data. If the parameter has a value of false, PolicyCenter does not create
such an index. In this case, PolicyCenter avoids creating an index regardless of whether the pa‐
rameter is in a <columnParam> subelement of a <column> element or a <column-override>
element.
currencyProperty Name of a property on the owning entity that returns the currency for this column.
encryption Whether PolicyCenter stores this column in encrypted format. This only applies to text‐based
columns.
Guidewire allows indexes on encrypted columns, or fields. However, because Guidewire stores
encrypted fields as encrypted in the database, you must encrypt the input string and search for
an exact match to it.
exchangeRateProperty Name of a property on the owning entity that returns the exchange rate to use during currency
conversions.
extensionProperty The name of a property on the owning entity whose value contains the phone extension.
logicalSize The size of this field in the PolicyCenter interface. You can use this value for String columns
that do not have a maximum size in the database, such as CLOB objects. If you specify a value
for the size parameter, then the logicalSize value must be less than or equal to the value of
that parameter.
phonecountrycodeProperty The name of a property on the owning entity whose value contains the country with which to
validate and format values.
precision The precision of the field. Precision is the total number of digits in the number. The precision
parameter applies only if the data type of the field allows a precision attribute.
scale The scale of the field. Scale is the number of digits to the right of the decimal point. The scale
parameter applies only if the data type of the field allows a scale attribute.
secondaryAmountProperty Name of a property on the owning entity that returns the secondary amount related to this cur‐
rency amount column.
size Integer size value for columns of type TEXT and VARCHAR. This parameter specifies the maxi‐
mum number of characters, not bytes, that the column can hold.
WARNING The database upgrade utility automatically detects definitions that lengthen or short‐
en a column. For shortened columns, the utility assumes that you wrote a version check or oth‐
erwise verified that the change does not truncate existing column data. For both Oracle and
SQL Server, if shortening a column causes the truncation of data, the ALTER TABLE statement in
the database fails and the upgrade utility fails.
trimwhitespace Applies to text‐based data types. If true, then PolicyCenter automatically removes leading and
trailing white space from the data value.
validator The name of a ValidatorDef in fieldvalidators.xml. See “<ValidatorDef>” on page 285.

See also
• See “Overriding data type attributes” on page 232 for an example of using a nested <columnParam> subelement
within a <column-override> element to set the encryption attribute on a column.

<localization> subelement
For a discussion of the column <localization> element with examples on how to use it, see the Globalization
Guide.

Attributes of <localization>
The <localization> element contains the following attributes:
The PolicyCenter data model 199
Guidewire PolicyCenter 9.0.6 Configuration Guide

<localization> attrib‐ Description Default


ute
extractable Whether the localized data entity is marked as Extractable for archiving. false

nullok Required. Whether null values are allowed. None


overlapTable Whether the localized data entity implements the OverlapTable delegate and is marked false
as OverlapTable for archiving.
tableName The table name of the localized data table. None
unique Required. Whether values must be unique. false

<edgeForeignKey>
You use the <edgeForeignKey> element to define a reference to another entity, in a manner similar to the
“<foreignkey>” on page 204 element. However, you use an edge foreign key in place of a standard foreign key to
break a cycle of foreign keys in the data model. Guidewire defines this element in the data model metadata files as
the <edgeForeignKey> XML subelement.

The data model and circular references


A chain of foreign keys can form a cycle, also known as a circular reference, in the data model. As an example of a
circular reference, entity type A has a foreign key to entity type B, and B has a foreign key to A. Circular references
can occur with more extensive chains of foreign keys, such as A refers to B, which refers to C, which refers to A.
The PolicyCenter data model does not permit circular foreign keys reference, because PolicyCenter cannot
determine a safe order for committing the entity instances in a circular reference to the database.
For example, entity types A and B have foreign key references to each other. The foreign keys create a circular
reference. Suppose that a bundle contains a new instance of A and a new instance of B. The circular reference would
cause a foreign key constraint to fail upon committing the bundle. If PolicyCenter commits A before B is committed
and in the database, a constraint failure occurs on the foreign key from A to B. The converse order of committing B
before A causes a similar failure.
An edge foreign key in place of a standard foreign key resolves circular references so PolicyCenter can determine a
safe order for committing the entity instances within a cycle. An edge foreign key from A to B introduces a new,
hidden associative entity with a foreign key to A and a foreign key to B. The edge foreign key associates A and B
without establishing foreign keys in the database directly between them. With an edge foreign key, PolicyCenter can
safely first commit new object A, then new object B, and finally the edge foreign key instance.

Edge foreign keys in entity database tables


Unlike a standard foreign key, an edge foreign key does not correspond to an actual column in the database table of
an entity type. Nor does an edge foreign key implement a database foreign key constraint. However, the
PolicyCenter Data Dictionary labels edge foreign keys as standard foreign keys. In Gosu code, you access edge
foreign keys in the same manner that you access standard foreign keys.

Edge foreign keys and associative database tables


An edge foreign key creates an associative table in the database. An associative table is essentially a table of foreign
keys relationships. An associative table associates other database tables with each other but holds no other essential
business data itself.
In PolicyCenter, the associative table that implements an edge foreign key has two columns:
• OwnerID
• ForeignEntityID
If entity instance A has an edge foreign key to entity type B, PolicyCenter creates a row in the edge foreign key
table. The value in the row for OwnerID points to A and the value for ForeignEntityID points to B.
200 chapter 15: The PolicyCenter data model
Guidewire PolicyCenter 9.0.6 Configuration Guide

Every time you traverse, or dereference, the edge foreign key, PolicyCenter loads the join array.
• If the array is of size 0, then the value of the edgeForeignKey is null.
• If the array is of size 1, the PolicyCenter follows the ForeignEntityID on the row.

IMPORTANT When you change a foreign key to an edge foreign key, you must write an upgrade
trigger to populate the edge table for existing data. Otherwise, the associative edge table will remain
empty even upon a database upgrade. Moreover, when you reference the edge foreign key, you will
receive a null value.

Edge foreign keys in Gosu


In Gosu code, edge foreign keys work in a manner similar to standard foreign keys. Just like a standard foreign key,
you can query an edge foreign key and get and set its attributes.

Edge foreign keys and performance


An edge foreign key has more performance issues than a standard foreign key, because PolicyCenter must manage a
separate table for the relationship. Queries must join an extra table. Nullability constraints in the database do not
work with edge foreign keys, so you must enforce nullability constraints with extra Gosu code the you develop.

Edge foreign keys and archiving


If you add an edge foreign key to an entity that is part of the archive domain graph, set the extractable attribute on
the edge foreign key to true. The value true causes PolicyCenter to add the Extractable delegate to the
associative table generated for the edge foreign key. If the extractable attribute of an edge foreign key on an entity
that is part of the archive domain graph is not set to true, the server will not start. In addition, the entity type that
the edge foreign key relates to must implement the Extractable delegate.

See also
• “The PolicyCenter archive domain graph” on page 311

When to use edge foreign keys


Use an edge foreign key only to avoid circular foreign key references in the data model. Circular foreign key
references can prevent PolicyCenter from determining a safe order for committing the entity instances in a circular
reference to the database.
Use an edge foreign key instead of a standard foreign key in the following situations:
• An entity type has self-referencing foreign keys, including foreign keys between subtypes.
• A Group entity must specify its parent group.
• Entity type A has a foreign key to B, and entity type B has a foreign key to A.
• Cycles that involve more that two entity types.
• The primary member of an array requires a foreign key to its owner.
Note: <edgeForeignKey> is a valid subelement for all entity types, including entity extension types.

Attributes of <edgeForeignKey>
The <edgeForeignKey> element contains the following attributes.

<edgeForeignKey> attribute Description Default


createhistogram Whether to create a histogram on the column during an update to the data‐ false
base statistics.

The PolicyCenter data model 201


Guidewire PolicyCenter 9.0.6 Configuration Guide

<edgeForeignKey> attribute Description Default


Note: It is possible to override this attribute on an existing column in an ex‐
tension (*.etx) file using the <column-override> element. You can use the
override to turn off an existing histogram or to create one that did not previ‐
ously exist.
This change does not take effect during an upgrade. The change occurs only if
you regenerate statistics for the affected table by using the Guidewire
maintenance_tools command.
See also
• “Working with attribute and element overrides” on page 231
• System Administration Guide
deprecated If true, then PolicyCenter marks the item as deprecated in the Data Diction‐ false
ary and places a Deprecated annotation on it in the Guidewire Studio API Ref‐
erence.
If you deprecate an item, use the description to explain why.
For more information, see “Data entity subelements” on page 192.
desc A description of the purpose and use of the edge foreign key. None
edgeTableEntityName The name of the edge table entity. If you do not specify one, then None
PolicyCenter creates one automatically using the edgeTableName with the first
letter capitalized.
edgeTableName Required. The name of the edge, or join array, table to create. None
exportable Unused.
exportasid Unused.
extractable Whether the edge entity is marked Extractable for archiving. false

fkentity Required. The entity to which this foreign key points. None
getterScriptability See “Data objects and scriptability” on page 172 for information. all

ignoreforevents If you change (or add, or remove) an entity X that does not generate events, false
then PolicyCenter searches for all event‐generating entity instances that speci‐
fy X. If PolicyCenter finds any of these event‐generating entity instances, it
generates Changed events for those entity instances.
To determine what entities reference a non‐event‐generating entity,
PolicyCenter examines the foreign keys and arrays that point to the entity.
However, if you set ignoreForEvents to true on an entity that references the
non‐event‐generating entity, then PolicyCenter ignores that link as it deter‐
mines what entities specify another entity.
• At the entity level, the ignoreForEvents attribute means changes to (or
addition or removal of) this entity do not cause Changed events to fire for
any other entity.
• At the column level, the ignoreForEvents attribute means changes to this
column do not cause the application to generate events.
importableagainstexistingobject If true and the entity is importable, or loadable, then the value in the staging true
table can be a reference to an existing object. This reference is the publicID
of a row in the source table for the referenced object.
loadable If true, then PolicyCenter creates a staging table for the edge table. false

loadedByCallback Internal. If true, then the loading code does not use a default value or report a false
warning if the column is nullable without a default.
name Required. Specifies the name of the property on the entity. None
nullok Whether the column can contain null values. This value is meaningless for true
edgeForeignKey objects.

202 chapter 15: The PolicyCenter data model


Guidewire PolicyCenter 9.0.6 Configuration Guide

<edgeForeignKey> attribute Description Default


overlapTable Whether the edge entity implements the OverlapTable delegate and is false
marked OverlapTable for archiving.
overwrittenInStagingTable Internal. If true and the edge table is loadable, the loader process auto‐ false
populates the staging table during import.
IMPORTANT If set to true, do not attempt to populate the table yourself, as
the loader import process overwrites this table.
setterScriptability See “Data objects and scriptability” on page 172 for information. all

soapnullok Unused.

Subelements of <edgeForeignKey>
<edgeForeignKey> subelement Attributes Description
fulldescription None See “<fulldescription>” on page 206.
tag None See “<tag>” on page 212.

<events>
If the <events> element appears within an entity, that entity and its descendant entities raise events. The names of
the standard events are XXAdded, XXChanged, and XXRemoved, where XX is the name of the entity declaring the
<events> element. A subtype or descendant of an event-aware entity can override the names of the standard events
by declaring its own <events> element. The descendant can also add additional events.
If the <events> element does not appear in an entity or any of its ancestors, that entity does not raise any events.
Note: This element is not valid for a nonPersistentEntity.
Guidewire defines this element in the data model metadata files as the <events> XML subelement. There can be at
most one <events> element in an entity. However, you can specify additional events through the use of <event>
subelements. For example:

<events>
<event>
...
</events>

Note: PolicyCenter automatically adds the EventAware delegate to any entity that contains the
<events> element. This addition makes such an entity aware of events that it raises and that other
entities raise.

Attributes of <events>
There are no attributes on the <events> element.

Subelements of <events>
The <events> element contains the following subelements.

<events> sub‐ Description


element
event Defines an additional event to fire for the entity. Use multiple <event> elements to specify multiple events.
This subelement contains the following attributes:
• description (required = true)
• name (required = true)
The <event> element requires each of these attributes.
The PolicyCenter data model 203
Guidewire PolicyCenter 9.0.6 Configuration Guide

<events> sub‐ Description


element
Note that the event name is exposed as a public static constant field. For example, you might have an event
named PersonalDataPurge on the ABContact data entity. Such an event is exposed publicly as a constant
field on the ABContact class. The public class‐level String constant is
ABContact.PERSONALDATAPURGE_EVENT.

<foreignkey>
The <foreignkey> element defines a foreign key reference to another entity.

Attributes of <foreignkey>
The <foreignkey> element contains the following attributes.

<foreignkey> attribute Description Default


archivingOwner By default, a foreign key implies a relationship that the link target owns the target
source of the foreign key. Use the archivingOwner attribute to change the
direction of this ownership relationship.
This attribute can be set to one of the following:
• none – There is no ownership relationship between the source and the
target of the link.
• source – The source of the foreign key owns the link.
• target – The target of the foreign key owns the link.
columnName Optional. If specified, PolicyCenter uses this value as the column name of the None
corresponding database column. If you do not specify a columnName value,
then PolicyCenter uses the value of the name attribute for the database col‐
umn name.
The columnName attribute must be no more than 30 characters in length. It al‐
lows only unaccented Roman letters, numbers, and the underscore character.
The first character of the columnName attribute must be a letter. Although the
underscore character is allowable here, Guidewire discourages its use.
Note: As a common and recommended practice, use the suffix ID for the col‐
umn name. For example, for a foreign key with the name Policy, set the
columnName to PolicyID.
Guidewire does not require that you use an ID suffix on names of foreign key
columns. However, Guidewire strongly recommends that you adopt this prac‐
tice to help you analyze the database and identify foreign keys.
IMPORTANT All column names on a table must be unique in that table. Other‐
wise, Guidewire Studio™ displays an error if you verify the resource, and the
application server fails to start.
createConstraint If true, the database creates a foreign key constraint for this foreign key. true

createbackingindex If true, the database automatically creates a backing index on the foreign key. true
If set to false, the database does not create a backing index.
createhistogram Whether to create a histogram on the column during an update to the data‐ false
base statistics.
Note: It is possible to override this attribute on an existing column in an ex‐
tension (*.etx) file using the <column-override> element. You can use the
override to turn off an existing histogram or to create one that did not previ‐
ously exist.
This change does not take effect during an upgrade. The change occurs only if
you regenerate statistics for the affected table by using the Guidewire
maintenance_tools command.
See also
• “Working with attribute and element overrides” on page 231

204 chapter 15: The PolicyCenter data model


Guidewire PolicyCenter 9.0.6 Configuration Guide

<foreignkey> attribute Description Default


• System Administration Guide
deprecated If true, then PolicyCenter marks the item as deprecated in the Data Diction‐ false
ary and places a Deprecated annotation on it in the Guidewire Studio API Ref-
erence.
If you deprecate an item, use the description to explain why.
For more information, see “Data entity subelements” on page 192.
desc A description of the purpose and use of the field. None
existingreferencesallowed If the following attributes are set to false, which is not the default: true
• loadable
• importableagainstexistingobject
then, the value in the staging table can only be a reference to an existing ob‐
ject.
exportable Unused.
exportasid Unused.
fkentity Required. The entity to which this foreign key refers. None
getterScriptability See “Data objects and scriptability” on page 172 for information. all

ignoreforevents If you change (or add, or remove) an entity X that does not generate events, false
then PolicyCenter searches for all event‐generating entity instances that speci‐
fy X. If PolicyCenter finds any of these event‐generating entity instances, it
generates Changed events for those entity instances.
To determine what entities reference a non‐event‐generating entity,
PolicyCenter examines the foreign keys and arrays that point to the entity.
However, if you set ignoreForEvents to true on an entity that references the
non‐event‐generating entity, then PolicyCenter ignores that link as it deter‐
mines what entities specify another entity.
• At the entity level, the ignoreForEvents attribute means changes to (or
addition or removal of) this entity do not cause Changed events to fire for
any other entity.
• At the column level, the ignoreForEvents attribute means changes to this
column do not cause the application to generate events.
importableagainstexistingobject If true and the entity is importable (loadable), then the value in the staging true
table can be a reference to an existing object. (This is the publicID of a row in
the source table for the referenced object.)
includeIdInIndex If true, then include the ID as the last column in the backing index for the for‐ false
eign key.
This is useful if the access pattern in one or more important queries is to join
to this table through the foreign key. You can then use the ID to probe into a
referencing table. The only columns that you need to access from the table
are this foreign key, and the retired and ID columns.
In that case, adding the ID column to the index creates a covering index and
eliminates the need to access the table.
loadable If true, you can load the field through staging tables. A staging table can con‐ true
tain a column for the public ID of the referenced entity.
loadedByCallback Internal. If true, then the loading code does not use a default value or report a false
warning if the column is nullable without a default.
name Required. Specifies the name of the property on the entity. None
nonEffDated Internal. This applies only to a foreign key that points to an effdated entity. If false
a foreign key points to an effdated entity and this attribute is true, then
PolicyCenter creates a real foreign key between the source and target entities.

The PolicyCenter data model 205


Guidewire PolicyCenter 9.0.6 Configuration Guide

<foreignkey> attribute Description Default


nullok Whether the field can contain null values. true

overwrittenInStagingTable Internal. If true (and the table is loadable), it indicates that the loader process false
auto‐populates the staging table during import.
IMPORTANT If set to true, do not attempt to populate the table yourself be‐
cause the loader import process overwrites this table.
required Whether the foreign key is required to be non‐null upon initial construction of false
instances of the entity. See the Gosu Reference Guide.
setterScriptability See “Data objects and scriptability” on page 172 for information. all

soapnullok Unused.
triggersValidation Whether changes to the entity referred to by this foreign key trigger valida‐ false
tion.

Subelements of <foreignkey>
The <foreignkey> element contains the following subelements.

<foreignkey> subelement Attributes Description


fulldescription None See “<fulldescription>” on page 206.
tag None See “<tag>” on page 212.

<fulldescription>
PolicyCenter uses the fulldescription subelement to populate the Data Dictionary. For example:

<fulldescription>
<![CDATA[<p>Aggregates the information needed to display one activity row
(base entity for all other activity views).</p>]]>
</fulldescription>

<implementsEntity>
The <implementsEntity> subelement specifies that an entity implements the specified delegate. Guidewire calls an
entity an implementor of a delegate if the entity specifies the delegate in a <implementsEntity> subelement.
IMPORTANT Do not change the delegate that a Guidewire base entity implements by creating an
extension entity that includes an “<implementsEntity>” on page 206 subelement. PolicyCenter
generates an error if you do.

If a delegate definition includes the optional requires attribute, then the implementor must provide an adapter
attribute on its <implementsEntity> subelement. The adapter attribute specifies the name of a Java or Gosu type
that implements the interface that the delegate definition specifies in its own requires attribute.
For example, the PolicyCenter base configuration defines a Cost delegate as follows:

<?xml version="1.0"?>
<delegate ... name="Cost" requires="gw.api.domain.financials.CostAdapter">
...
</delegate>

The base configuration defines a BACost entity that includes an <implementsEntity> subelement, which specifies
delegate with name="Cost". Therefore, the BACost entity is an implementor of the Cost delegate.

<?xml version="1.0"?>
<entity ... entity="BACost" ... >

206 chapter 15: The PolicyCenter data model


Guidewire PolicyCenter 9.0.6 Configuration Guide

...
<implementsEntity name="Cost" adapter="gw.lob.ba.financials.BACostAdapter" />
...
</entity>

The Cost delegate requires an implementation of the CostAdapter interface. So in its adapter attribute, the BACost
entity specifies a BACostAdapter class, which implements the CostAdapter interface that the Cost adapter specifies
in its requires attribute. The following diagram illustrates the relationship between the Cost delegate and the
BACostAdapter adapter class:

Delegate / Adapter Relationship Example

Cost CostAdapter
Delegate Interface

BACost BACostAdapter
Delegate Entity Interface
Implementor / Implementor
Indirect Interface
Implementor

Follow these rules for defining entities that implement delegates:


• If you specify a value for the requires attribute in a delegate, then implementers of the delegate must specify an
adapter attribute in their definitions. The adapter attribute must specify the name of a Java or Gosu type that
implements the interface specified by the requires attribute in delegate definition.
• If you do not specify a value for the requires attribute in a delegate, then implementers of the delegate must not
specify an adapter attribute their definitions.

The Extractable Delegate

Entities that are part of the archive domain graph must implement the Extractable delegate. For example, if you
create a custom subtype of Contact, then the custom subtype must implement the Extractable delegate.
If you add an edge foreign key to an entity that is part of the archive domain graph, set the extractable attribute on
the edge foreign key to true. The value true causes PolicyCenter to add the Extractable delegate to the
associative table generated for the edge foreign key.

Attributes of <implementsEntity>

The <implementsEntity> element contains the following attributes.

<implementsEntity> subelement Description


name Required. The name of the delegate that this entity must implement.

Subelements of <implementsEntity>

There are no subelements on the <implementsEntity> subelement.

The PolicyCenter data model 207


Guidewire PolicyCenter 9.0.6 Configuration Guide

<implementsInterface>
The <implementsInterface> subelement specifies that an entity implements the specified interface. This element
defines two attributes: an interface (iface) attribute and an implementation (impl) attribute.
For example, the PolicyCenter base configuration defines the BACost entity with the following
<implementsInterface> subelement:

<entity ... entity="BACost" ...>


...
<implementsInterface
iface="gw.lob.ba.financials.BACostMethods"
impl="gw.lob.ba.financials.BACostMethodsImpl"/>
</entity>

The BACostMethods interface has getter methods that any class that implements this interface must provide. The
getter methods are coverage, state, and vehicle. By including the <implementsInterface> subelement, the BACost
entity lets you use getter methods on instances of the BACost entity in Gosu code.

var cost : BACost


var cov = cost.Coverage
var state = cost.State
var vehicle = cost.Vehicle

Attributes of <implementsInterface>

The <implementsInterface> element contains the following attributes.

<implementsInterface> attribute Description

iface Required. The name of the interface that this data object must implement.
impl The name of the class or subclass that implements the specified interface, if any. Valid
only when declared on abstract entities or delegates.

Subelements on <implementsInterface>

There are no subelements on the <implementsInterface> subelement.

<index>
The <index> element defines an index on the database table used to store the data for an entity. Guidewire defines
this element in the data model metadata files as the <index> XML subelement. This element contains a required
subelement, which is <indexcol>.
The <index> element instructs PolicyCenter to create an index on the physical database table. This index is in
addition to those indexes that PolicyCenter creates automatically.
An index improves the performance of a query search within the database. It consists of one or more fields that you
can use together in a single search. You can define multiple <index> elements within an entity, with each one
defining a separate index. If a field is already part of one index, you do not need to define a separate index
containing only that field.
For example, PolicyCenter frequently searches non-retired accounts for one with a particular account number.
Therefore, the Account entity defines an index containing both the Retired and AccountNumber fields. However,
another common search uses just AccountNumber. Since that field is already part of another index, a separate index
containing only AccountNumber is unnecessary.
A column used in an index cannot have a length of more than 1000 characters.

208 chapter 15: The PolicyCenter data model


Guidewire PolicyCenter 9.0.6 Configuration Guide

IMPORTANT In general, the use of a database index has the possibility of reducing update
performance. Guidewire recommends that you add a database index with caution. In particular, do not
attempt to add an index on a column of type CLOB or BLOB. If you do so, PolicyCenter generates an
error message upon resource verification.

Attributes of <index>
The <index> element contains the following attributes.

<index> attribute Description Default


desc A description of the purpose and use of the index. None
expectedtobecovering If true, it indicates that the index covers all the necessary columns for a table that is to be false
used for at least one operation, for example, search by name.
Thus, if true, it indicates that there is to be no table lookup. In this case, use the desc
attribute to indicate which operation that is.
name Required. The name of the index. The first character of the name must be a letter. The None
maximum length for an index name is 18 characters.
IMPORTANT For <subtype> definitions, all index names must be unique between the sub‐
type and supertype. In other words, do not duplicate an index name between the subtype
definition in the extensions folder and its supertype in the metadata folder. Otherwise,
PolicyCenter generates an error on resource verification.
trackUsage If true, track the usage of this index. true

unique Whether the values of the index are unique for each row. false

verifyInLoader If true, then PolicyCenter runs an integrity check for unique indexes before loading data true
from the staging tables.

Subelements of <index>
The <index> element contains the following subelements.

<index> sub‐ Description De‐


element fault
forceindex Use to force PolicyCenter to create an index if running against a particular database. None
This subelement is useful because the index generation algorithm can throw away some declared in‐
dexes as being redundant. In some cases, PolicyCenter can require one or more of those indexes to
work around an optimization problem.
This subelement contains the following attributes:
• oracle – If true, force the creation of an index if running against an Oracle database.
• sqlserver – If true, force the creation of an index if running against a Microsoft SQL Server
database.
indexcol Required. Defines a field that is part of the index. You can specify multiple <indexcol> elements to None
define composite indexes. This subelement contains the following attributes:
• keyposition – Required. The position of the field within the index. The first position is 1.
• name – Required. The column name of the field. This name can be a column, foreignkey, or
typekey defined in the entity.
• sortascending – If true, the default, then the sort direction is ascending. If false, then the sort
direction is descending.
The column cannot have a length of more than 1000 characters.

<onetoone>
The <onetoone> element defines a single-valued association to another entity that has a one-to-one cardinality.
Guidewire defines this element in the data model metadata files as the <onetoone> XML subelement. A one-to-one
The PolicyCenter data model 209
Guidewire PolicyCenter 9.0.6 Configuration Guide

element functions in a similar manner to a foreign key in that it makes a reference to another entity. However, its
purpose is to provide a reverse pointer to an entity or object that is pointing at the <onetoone> entity, through the
use of a foreign key.
For example, entity A has a foreign key to entity B. You can associate an instance of B with at most one instance of
A. Perhaps, there is a unique index on the foreign key column. This then defines a one-to-one relationship between
A and B. You can then declare the <onetoone> element on B, to provide simple access to the associated A. In
essence, using a one-to-one element creates an array-of-one, with, at most, one element. Zero elements are also
possible.
Note: PolicyCenter labels one-to-one elements in the Guidewire Data Dictionary as foreign keys. You
access these elements in Gosu code in the same manner as you access foreign keys.

Attributes of <onetoone>
The <onetoone> element contains the following attributes.

<onetoone> attribute Description Default


cascadeDelete If true, then PolicyCenter deletes the entity to which the <onetoone> element points if false
you delete this entity.
deprecated If true, then PolicyCenter marks the item as deprecated in the Data Dictionary and places false
a Deprecated annotation on it in the Guidewire Studio API Reference.
If you deprecate an item, use the description to explain why.
For more information, see “Data entity subelements” on page 192.
desc A description of the purpose and use of the field. None
exportable Unused.
fkentity Required. The entity to which this foreign key points. None
getterScriptability See “Data objects and scriptability” on page 172 for information. all

ignoreForEvents If the ignoreForEvents attribute is false, PolicyCenter regards the <onetoone> element false
as being present when generating events. In this case, the product does not generate
events for the entity to which the fkentity attribute points.
If the ignoreForEvents attribute is true, PolicyCenter ignores the presence of the
<onetoone> element when generating events. This behavior results in PolicyCenter gener‐
ating events for the entity to which the fkentity attribute points.
IMPORTANT Do not confuse the definition of the ignoreForEvents attribute for the
<onetoone> element with the definition of the attribute of the same namesake in
<entity> and <array> elements. Although they share the same name, the two
ignoreForEvents attributes are near opposites in effect.

linkField Optional. Specifies the foreign key field that points back to this object. None
name Required. Specifies the name property on the entity. None
nullok Whether the field can contain null values. true

owner If true, this entity owns the linked object (the object to which the <onetoone> element false
points):
• If you delete the owning object, then PolicyCenter deletes the linked object as well.
• If you update the object pointed to by the <onetoone> element, then PolicyCenter
considers the owning object updated as well.
setterScriptability See “Data objects and scriptability” on page 172 for information. all

triggersValidation Whether changes to the entity pointed to by this entity trigger validation. false

Subelements of <onetoone>
The <onetoone> element contains the following subelements.
210 chapter 15: The PolicyCenter data model
Guidewire PolicyCenter 9.0.6 Configuration Guide

<onetoone> subelement Description Default


fulldescription See “<fulldescription>” on page 206. None
tag See “<tag>” on page 212. None

<remove‐index>
The <remove-index> element defines the name of a database index that you want to remove from the data model. It
is valid for use with the following data model elements:
• <entity>
• <extension>
You can use this element to safely remove a non-primary key index if it is one of the following:
• non-unique
• unique and contains an ID column
Guidewire performs metadata validation to ensure that the <remove-index> element removes only those indexes
that fall into one of these categories.
Note: Adding, removing, or changing indexes results in changes to server performance. Before
making modifications to indexes, consult with your database administrator or Guidewire
representative. Include performance testing in your modification plan.
Note: The <remove-index> element does not remove spatial point indexes. To remove a spatial point
index for an extension entity, override a spatial point <column> element with a createSpatialIndex
parameter having a value of false.
See “Overriding data type attributes” on page 232 for an example of using a nested <columnParam>
subelement within a <column-override> element to set an attribute on a column. Use the same
pattern to set the createSpatialIndex parameter to false and to remove a spatial point index for an
extension entity. See also “<columnParam> subelement” on page 198 for a description of the
createSpatialIndex parameter.

The index is non‐unique


You can safely remove a non-primary key index with the unique attribute set to false. In general, these are indexes
that Guidewire provides for performance enhancement. It is safe to remove these kinds of indexes.

The index is unique and contains an ID column


You can safely remove a non-primary key index with the unique attribute set to true if that index also includes ID
as a key column. An ID column is already unique by itself, and so a multicolumn index that includes the ID column
does not enforce a uniqueness condition. Thus, it is safe to remove these kinds of indexes.
For example, the WorkItem entity contains the following index definition:

<index desc="Covering index to speed up checking-out of work items and they involve search on status"
name="WorkItemIndex2" unique="true">
<indexcol keyposition="1" name="status"/>
<indexcol keyposition="2" name="Priority" sortascending="false"/>
<indexcol keyposition="3" name="CreationTime"/>
<indexcol keyposition="4" name="ID"/>
</index>

Although the unique attribute is set to true, you can safely remove this index because the index definition contains
an ID column; in this example, keyposition="4".

Attributes of <remove‐index>
The <remove-index> element contains the following attributes.
The PolicyCenter data model 211
Guidewire PolicyCenter 9.0.6 Configuration Guide

<remove-index> attribute Description Default


name Name of the index to remove. The index name is defined by the <index> element. None

Modifying an index

In many cases, you want to modify an existing database index. In that case, use the <remove-index> element to
remove the index, and then add a new index with the same name that contains the desired characteristics.

<tag>
The <tag> element defines a data model annotation. This allows you to define your own metadata to add to the data
model.
The file PolicyCenter/modules/configuration/config/metadata/tags.lst specifies the list of valid tags that
you can use. To add a new tag, edit this file, and then add the tag name on a new line.
At most one of each tag can exist on a field at one time. Extensions can add, but not override, tags on existing fields.
To retrieve this data at run time, use the DatamodelTags property on IEntityPropertyInfo, the metadata object for
entity properties. For example:

// On the entity info metadata, get the metadata for the properties on this entity.
// This type is an iterator of objects of type IEntityPropertyInfo.
var props = User.Type.EntityProperties

// Get the property info object by its name.


var theProp = props.toList().firstWhere( \ propertyInfo -> propertyInfo.ColumnName == "Language")

// Get the data model tags, which has the type java.util.Map
var myTags = theProp.DatamodelTags

// Get a specific tag


var theTag = myTags["NameOfTag"]

Attributes of <tag>

The <tag> element contains the following attributes.

<tag> attribute Description Default


name Required. The name of the tag. None
value The value of the tag. None

Use of the <tag> Subelement in Archiving

One of the common uses for the <tag> subelement is adding the element to a foreign key to assist in resolving
certain archive domain graph issues. See “Defining a cross-domain tag” on page 329 for details.

<typekey>
The <typekey> element defines a field for which a typelist defines the values. Guidewire defines this element in the
data model metadata files as the <typekey> XML subelement.
Note: For information on typelists, typekeys, and keyfilters, see “Working with typelists” on page
289.

Attributes of <typekey>

The <typekey> element contains the following attributes.


212 chapter 15: The PolicyCenter data model
Guidewire PolicyCenter 9.0.6 Configuration Guide

<typekey> attribute Description Default


columnName Optional. If specified, PolicyCenter uses this value as the column name of the corre‐ None
sponding database column. If you do not specify a columnName value, then
PolicyCenter uses the value of the name attribute for the database column name.
The columnName attribute must be no more than 30 characters in length. It allows on‐
ly unaccented Roman letters, numbers, and the underscore character. The first char‐
acter of the columnName attribute must be a letter. Although the underscore charac‐
ter is allowable here, Guidewire discourages its use.
IMPORTANT All column names on a table must be unique within that table. Other‐
wise, Guidewire Studio™ displays an error if you verify the resource and the applica‐
tion server fails to start.
createhistogram Whether to create a histogram on the column during an update to the database sta‐ false
tistics.
Note: It is possible to override this attribute on an existing column in an extension
(*.etx) file using the <column-override> element. You can use the override to turn
off an existing histogram or to create one that did not previously exist.
This change does not take effect during an upgrade. The change occurs only if you
regenerate statistics for the affected table by using the Guidewire
maintenance_tools command.
See also
• “Working with attribute and element overrides” on page 231
• System Administration Guide
default The default value given to the field during new entity creation. None
deprecated If true, then PolicyCenter marks the typekey as deprecated in the Data Dictionary false
and places a Deprecated annotation on it in the Guidewire Studio API Reference.
If you deprecate a typekey, use the description attribute (desc) to explain why.
For more information, see “Data entity subelements” on page 192.
desc A description of the purpose and use of the field. None
exportable Unused.
getterScriptability See “Data objects and scriptability” on page 172 for information. None
loadable If true, then you can load the field through staging tables. A staging table can contain true
a column, as a String, for the code of the typekey.
loadedByCallback Internal. If true, then the loading code does not use a default value or report a warn‐ false
ing if the column is nullable without a default.
name Required. Specifies the name of the property on the entity None
nullok Whether the field can contain null values. true

overwrittenInStagingTable Internal. If true and the typekey is loadable, the loader process auto‐populates the false
typekey in the staging table during import.
IMPORTANT If set to true, do not attempt to populate the typekey yourself because
the loader import process overwrites this typekey.
required Whether the typekey is required to be non‐null upon initial construction of instances false
of the entity. See the Gosu Reference Guide.
setterScriptability See “Data objects and scriptability” on page 172 for information. None
soapnullok Unused.
typefilter The name of a filter associated with the typelist. See “Static filters” on page 300 for None
additional information.
typelist Required. The name of the typelist from which this field gets its value. None
See also
• “Working with typelists” on page 289.

The PolicyCenter data model 213


Guidewire PolicyCenter 9.0.6 Configuration Guide

Subelements of <typekey>
The <typekey> element contains the following subelements.

<typekey> subele‐ Description Default


ment
keyfilters Defines one or more <keyfilter> elements. There can be at most one <keyfilters> None
element in an entity. See “Dynamic filters” on page 305 for additional information.
fulldescription See “<fulldescription>” on page 206. None
tag See “<tag>” on page 212. None

Subelements of <keyfilters>
The <keyfilters> element contains the following subelements.

<keyfilters> subele‐ Description Default


ment
<keyfilter> Specifies a keyfilter to use to filter the typelist. This element requires the <name> attribute. None
This attribute defines a relative path, navigable through Gosu dot notation, to a physical data
field. Each element in the path must be a data model field.
Note: You can include multiple <keyfilter> elements to specify multiple keyfilters.

214 chapter 15: The PolicyCenter data model


chapter 16

Working with associative arrays

This topic describes the different types of associative arrays that Guidewire provides as part of the base data model
configuration.

Related concepts

“Overview of associative arrays” on page 215


“Subtype mapping associative arrays” on page 217
“Typelist mapping associative arrays” on page 219

Overview of associative arrays


An associative array provides a mapping between a set of keys and values that the keys represent. A common
example of such a mapping is a telephone book. A telephone book maps names of people in a jurisdiction to
telephone numbers. Another common example is a dictionary. A dictionary maps terms to their definitions.
To expand on this concept, a telephone book contains a set of names. Each name in the set is a key, and each
associated telephone number is a value. Using array-like notation, you can write:

telephonebook[peter] = 555-123-1234
telephonebook[shelly] = 555-234-2345
...

Note: When you modify an array such that it is an associative array, the array continues to exhibit its
original properties as an indexed array. You can use an associative array just as you would an indexed
array. For example, you can use an associative array in for loops.
PolicyCenter uses associate arrays to expose array values as a type-safe map within Gosu code. The following
example uses a typekey from a State typelist as a mapping index for an associative array of state capitals:

State typekey index Maps to...


Capital[State.TC_AL] Montgomery

Capital[State.TC_AK] Juneau

Capital[State.TC_AZ] Phoenix

Capital[State.TC_AR] Little Rock

Working with associative arrays 215


Guidewire PolicyCenter 9.0.6 Configuration Guide

Two tasks are required to work with an associative array in Gosu:


• Exposing the key set to the type system
• Calculating the value from the key

Associative array mapping types


An associative array must have a key that maps to a value. The mapping type describes what PolicyCenter uses as
the key and what value that key returns.

Mapping type Key Value More information


Subtype mapping Entity subtype Implicit subtype field on an entity “Subtype mapping associative arrays” on page 217
Typelist mapping Typelist Typekey field on the entity “Typelist mapping associative arrays” on page 219

To implement an associative array, add one of the following elements to an <array> element in the data type
definition file. The number of results that each returns—the cardinality of the result set—depends on the element
type.

<link-association> Returns at most one element. The return type is an object of the type of the array.
<array-association> Returns an array of results that match the value. The number of results can be zero, one, or more.

Each <array> element in a data type definition file can have zero or one of each of these elements.
As an example, in the ClaimCenter Claim definition file (configuration→config→Metadata→Entity→Claim.eti), you see
the following XML (simplified for clarity):

<entity xmlns="http://guidewire.com/datamodel"
entity="Claim"
table="claim"
type="retireable">
...
<array arrayentity="ClaimMetric"
desc="Metrics related to this claim."
exportable="false"
ignoreforevents="true"
name="ClaimMetrics"
triggersValidation="false">
<link-association>
<subtype-map/>
</link-association>
<array-association>
<typelist-map field="ClaimMetricCategory"/>
</array-association>
</array>
...
</entity>

See also
• “Subtype mapping associative arrays” on page 217.
• “Typelist mapping associative arrays” on page 219.

Scriptability and associative arrays


It is possible to set the following attributes on each <link-association> and <array-association> element:
• hasGetter
• hasSetter
For example:
216 chapter 16: Working with associative arrays
Guidewire PolicyCenter 9.0.6 Configuration Guide

<link-association hasGetter="true" hasSetter="true">


<typelist-map field="TAccountType"/>
</link-association>

For these attributes:


• If hasGetter is true, you can read the property.
• If hasSetter is true, you can update the property.
Note: If you do not specify either of these attributes, PolicyCenter defaults to hasGetter="true".

See also
• “Data objects and scriptability” on page 172.

Setting array member values


There are several restrictions on setting associative array member values, including:
• You can use a query builder expression to retrieve a specific entity instance. However, the result of the query is
read-only. You must add the retrieved entity to a bundle to be able to manipulate its fields. To work with bundles,
use one of the following:

var bundle = gw.transaction.Transaction.getCurrent()


gw.transaction.Transaction.runWithNewBundle(\ bundle -> ) //Use this version in the Gosu tester

• You can set array values only on fields that are database-backed fields, not on fields that are derived properties.
To determine which fields are derived, consult the PolicyCenter Data Dictionary.

See also
• Gosu Reference Guide

Subtype mapping associative arrays


Use subtype mapping to access array elements based on their subtype. This type of associative array divides the
elements of the array into multiple partitions. Each of these partitions contains array elements of only a particular
object subtype.
For example, in PolicyCenter, you can define an associative array called JobTypes on the Policy object. In the
Policy definition file (configuration→config→Metadata→Entity→Claim.eti), you can add the <array> element from the
following example XML:

<entity xmlns="http://guidewire.com/datamodel"
entity="Policy"
table="policy"
type="retireable">
...
<array arrayentity="Job"
desc="Types of jobs pertaining to a policy."
exportable="false"
ignoreforevents="true"
name="JobTypes">
<link-association>
<subtype-map/>
</link-association>
</array>
...
</entity>

The JobTypes array contains a number of objects. Each of these objects is a subtype of a Job object. The data model
defines the associative array using the <link-association> element. A link association returns at most one
element. The return type is an object of the type of the array. In this case, the return type is an object of type Job or,
more specifically, one of its subtypes.
Working with associative arrays 217
Guidewire PolicyCenter 9.0.6 Configuration Guide

The Pol