Version 3.10 Integration Guide · Chapter 1 Introduction 2 RCT Field Inspection Transfer Version...

133
RCT Field Inspection Transfer Version 3.10 Integration Guide

Transcript of Version 3.10 Integration Guide · Chapter 1 Introduction 2 RCT Field Inspection Transfer Version...

RCT Field Inspection Transfer Version 3.10

Integration Guide

ii RCT Field Inspection Transfer Version 3.10 Integration Guide

Copyright © 2008 Marshall & Swift / Boeckh, LLC and its licensors.

All rights reserved. No part of this publication may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopy, recording, or storage in a retrieval system, without the prior written permission of MSB.

The information contained in this publication has been obtained from sources generally believed to be reliable. However, MARSHALL & SWIFT / BOECKH (MSB) MAKES NO REPRESENTATION OR WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, AS TO THE ACCURACY OR CONTENT OF THE INFORMATION, NOR DOES MSB WARRANT ITS MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Under no circumstances will MSB be liable for direct, indirect, special, consequential or incidental damages (including lost profits), even if MSB has been advised of the possibility of such damages, caused directly or indirectly by errors or omissions in the information.

California Canada New Jersey

350 S. Grand Ave 2700 Matheson Blvd East 505 Lawrence Square Blvd South

Suite 3400 East Tower, Suite 703 Lawrenceville, NJ 08648

Los Angeles, CA 90017 Mississauga, Ontario L4W 4V9

(800) 421-8042

(213) 683-9000

800.661.3619

905.282.0110

800.420.9666

609.689.9366

Fax: (213) 683-9010 Fax 905.282.1991 Fax 609.689.6700

Texas Wisconsin

1828 E. Southeast Loop 323 2885 South Calhoun Rd.

Suite 202 P.O. Box 510291

Tyler, TX 75701 New Berlin, WI 53151-0291

888-337-9665

903-596-7018

800.285.1288

262.780.2800

Fax: 903-596-7670 Fax 414.780.0306

http://www.msbinfo.com/

Revision 12/2008

RCT Field Inspection Transfer Version 3.10 Integration Guide iii

Contents

Chapter 1 Introduction 1 Introduction to Field Information Transfer (FIT)............................................................... 1

Who Should Read this Guide?.................................................................................. 1 Documentation Package ......................................................................................... 1 FIT Web Service Help............................................................................................. 2 What’s New in This Version ..................................................................................... 2

Field Information Transfer Basics .................................................................................. 3 Chapter 2 Interactive Mode 5

Overview of Interactive Web Services ............................................................................ 5 About Valuations ................................................................................................... 5 RCT Material Knowledge Tables ............................................................................... 5 Inspection Company Setup ..................................................................................... 6 Security ............................................................................................................... 7 InspectionService .................................................................................................. 7 ConfigurationService.............................................................................................. 7 ReferenceService................................................................................................... 8

InspectionService Web Methods .................................................................................... 8 Preview................................................................................................................ 8 Commit...............................................................................................................10 Export ................................................................................................................10 AddAttachment ....................................................................................................11 GetAttachmentInformation ....................................................................................11 DeleteAttachment.................................................................................................12 SeamlessSelection................................................................................................12

ConfigurationService Web Methods...............................................................................13 GetInspectionQuestion ..........................................................................................13 GetInspectionSettings ...........................................................................................14

ReferenceService Web Methods....................................................................................14 GetMsMaterialDetail ..............................................................................................14 GetMsMaterialDetailList .........................................................................................14 GetHvStdMaterialDetail .........................................................................................14 GetHvStdMaterialDetailList.....................................................................................15 GetHvAdvMaterialDetail .........................................................................................15 GetHvAdvMaterialDetailList ....................................................................................15 GetMmhMaterialDetail ...........................................................................................15 GetMmhMaterialDetailList ......................................................................................16 GetSeamlessSelectionQuestions .............................................................................16 Exception Handling ...............................................................................................16

Chapter 3 Object Model 18 Introduction ..............................................................................................................18 FIT Classes ...............................................................................................................18 FIT Enumerations.......................................................................................................58

Chapter 4 Material Codes 76 Overview of Material Codes .........................................................................................76

Material Reference List ..........................................................................................76

Contents

iv RCT Field Inspection Transfer Version 3.10 Integration Guide

Material Systems and Subsystems.......................................................................... 76 Chapter 5 Batch Mode 78

Overview of Batch Processing...................................................................................... 78 Batch Processing ....................................................................................................... 78

FTP Site.............................................................................................................. 79 E-mail Notification................................................................................................ 79 The Batch File ..................................................................................................... 79 Batch Result........................................................................................................ 81 Samples ............................................................................................................. 82

Chapter 6 Microsoft .NET Clients 86 Overview ................................................................................................................. 86

WSDLs ............................................................................................................... 86 Developing a WSE-Enabled Web Service Client .............................................................. 86

Chapter 7 Java Clients 92 Overview ................................................................................................................. 92 WebSphere J2EE Client .............................................................................................. 92

Web Services ...................................................................................................... 92 Developing a J2EE FIT Web Service Client ..................................................................... 95

Generating a FIT Web Service Client ....................................................................... 95 Setting up the EndPoint URL.................................................................................. 97 Setting up WS-Addressing..................................................................................... 98 Setting up WS-Security UsernameToken ................................................................. 99 Limitations.........................................................................................................107

Axis2 J2SE Client......................................................................................................107 Web Services...........................................................................................................107 Developing an Axis2 J2SE FIT Web Service Client..........................................................110

Generating a FIT Web Service Client ......................................................................115 Setting up a Client Configuration...........................................................................115 Setting up WS-Addressing....................................................................................121 Setting up WS-Security UsernameToken ................................................................121 Setting up MTOM for Attachments .........................................................................123 Creating a Service Port Stub Instance ....................................................................123 Using a Service Port Stub Instance ........................................................................124 Limitations.........................................................................................................127

Appendix A Revision History 128

RCT Field Inspection Transfer Version 3.10 Integration Guide 1

Chapter 1 Introduction

Introduction to Field Information Transfer (FIT) MSB’s FIT product enables inspection companies to calculate and deliver inspection data to a carrier’s RCT Express archive. RCT (Residential Component Technology) is MSB’s residential valuation platform. FIT is used to calculate a valuation using carrier-specific cost and preference settings. FIT uses the RCT calculation engine to produce replacement costs.

Using FIT, inspection data such as underwriting questions and photos can be delivered electronically as attachments to a carrier’s RCT Express site along with building data and reconstruction cost. FIT will associate an Inspection record with a pre-existing agent-entered valuation on the carrier site and create an updated version of the valuation based on delivery options specified by the carrier. For example, a FIT inspection delivery can create a new version of the valuation where exterior data observed by the inspector is merged with interior data collected by the agent from the homeowner to produce an updated version of the valuation. Data from the original agent-entered estimate, the original inspection record as delivered by the inspection company and the newly updated merged record are all stored in the Express archive providing a complete history available for review by agents and underwriters.

FIT can be used in interactive and batch modes. Interactive mode consists of a set of interactive web services. Batch mode involves uploading data from several inspections to FTP folders for scheduled processing during configured time slots.

If you have not yet purchased this product, please contact your account representative and ask about our FIT demo environment.

Who Should Read this Guide? This guide is intended for software developers who are familiar with the following:

• Object-oriented programming

• Web services on Java or .NET platform

• XML-based technologies

• WS-Security

Documentation Package The following items supplement this document:

• InspectionClient.zip contains .NET sample code.

• FITObjectModel.vsd contains the MS, MMH and High Value object models.

Chapter 1 Introduction

2 RCT Field Inspection Transfer Version 3.10 Integration Guide

FIT Web Service Help Each RCT Express site has a web page (index.aspx) that provides links to the FIT web service URLs, web service WSDL files for different platforms, schema files for batch mode, sample .Net client code and this integration guide.

Here’s a sample URL to an index page

https://{clientname}.msbexpress.net/rct/inspection/index.aspx

Note: Replace {clientname} with your company name.

What’s New in This Version

Seamless Selection Web Method Enhancement Seamless Selection provides a methodology for an Inspection Company to automatically determine the appropriate valuation type (Main Street or High Value) to use by answering a few simple questions. The existing SeamlessSelection web method has been enhanced by adding four additional questions to the current Seamless Selection decision criteria: Deluxe Appointments Throughout?, Elaborate Ceilings?, One or More Elegant Staircases?, and One or More Special-Purpose Rooms or Detached Structures. The expansion of the questions enhances the ease of use and refines the internal criteria used to make the decision and increases the overall accuracy of the decision.

The SeamlessSelection web method signature in the Inspection Service is changed due to the enhancement. MSB suggests that inspection companies modify their existing FIT integration programs to use the latest SeamlessSelection web method before upgrading to this version.

The previous version of the SeamlessSelection method signature will NOT be supported by MSB going forward.

A new GetSeamlessSelectionQuestions web method in the Reference Service is introduced in this version to help Inspection Companies better understand these Seamless Selection questions. Return of the question keys by this method should be used as part of the inputs of the SeamlessSelection web method.

Preview Web Method Enhancement This enhancement will allow FIT Inspection Service’s Preview web method to support High Value Advanced to override High Value Standard records and vice versa.

In a rare situation involving a FIT delivery with a change in valuation type, Hazard data will not be carried over from a preexisting mainstreet version to a new High Value iteration created via the FIT inspection delivery. In this case the Hazard lookup can be rerun to associate the Hazard data with the current High Value iteration of the valuation. Please note that when a FIT inspection delivery does not involve a change in valuation type, the Hazard data from the earlier iteration of the valuation will continue to be accessible from the current iteration of the valuation.

Field Information Transfer Basics

RCT Field Inspection Transfer Version 3.10 Integration Guide 3

The following table shows the available valuation type override permissions:

House Type MS MMH HVS HVA

MS Existing Existing Existing

MMH

HVS Existing Existing New to this version

HVA Existing New to this version Existing

Field Information Transfer Basics 1. Always supply the most risk-specific information possible, and at minimum the 14 basic pieces

of information listed below when creating a valuation whether you are using an Express site or ExpressLync. When using data from the MSB knowledge table or RCT defaults we recommend that you display that information to your users and have them validate or update it as required.

The 14 basic pieces of information include the following:

Zip Code *Exterior Walls

Number of Families *Roof

Year Built *Number of Kitchens

Style *Number of Bathrooms

Number of Stories *Heating & Cooling

Total Living Area Fireplaces & Wood Stoves

*Foundation Type Garages & Carports

* Suggested Required Material Systems

2. When submitting a preview valuation in FIT, if the data is not supplied in the aggregate for one of the material systems or subsystems listed below, the MSB knowledge tables will automatically supply values based on the required inputs. However, if data is included for a material system or subsystem, ExpressLync will not load values from the knowledge tables for the material system or subsystem.

MSB Knowledge Table Entries:

Foundation Type Interior Wall Framing

Foundation Materials Partitions

Basement Information Wall Coverings

Floor Structure Partition Specialties

Roof Structure Ceiling

Framing Floor Covering

Chapter 1 Introduction

4 RCT Field Inspection Transfer Version 3.10 Integration Guide

Exterior Frame Walls Electrical

Windows Kitchen

Exterior Doors Baths

Roof Style/Slope Staircases

Roof Shape Heating/Air Conditioning

Roof Cover

3. If you elect not to supply certain information in the aggregate, some RCT defaults will be applied. Defaults in RCT vary depending on selections that your company has made regarding the configuration of your RCT Express site and/or other information you supply regarding the risk.

4. FIT reference services for Main Street and High Value can be used to display dropdown lists of material selections for users. This allows you to always display the most current list of material selections available in RCT without having to maintain your own lists of materials.

5. There are a few differences between Main Street and High Value aggregates. You cannot use the same aggregate interchangeably for both Main Street and High Value homes.

6. Foundation information for Main Street homes is passed in a unique class (FoundationBasementInfo). This class is not used for High Value homes.

7. Foundation information for High Value homes is passed as material selections for a section.

RCT Field Inspection Transfer Version 3.10 Integration Guide 5

Chapter 2 Interactive Mode

Overview of Interactive Web Services FIT interactive mode consists of the following Web services:

• InspectionService

• ConfigurationService

• ReferenceService

Together, these services allow you to calculate and submit inspection data for different types of homes. Both Exterior and In-Out (interior and exterior) inspection types are supported.

Note:

The Exterior inspection type is not supported for high value homes.

About Valuations A valuation type is a broad, general category that represents the generic construction of a home. FIT currently supports three valuation/house types. These include main street, mobile manufactured and high value homes. To enter the property characteristics for high value homes, you can use either the standard or advanced entry method.

• Main Street Home - A traditional home built on-site.

• Mobile Manufactured Home - A home built on a steel chassis and fitted with wheels that is manufactured in a factory and then transported to the home site for permanent placement.

• High Value Home (Standard Entry) - A high value home built on-site. If you use the standard entry method, you only need to add foundation/basement materials to the section/wing. All other materials should be added to the building. The system uses Knowledge Tables to apply the materials you add to the building to all sections of the house (main home and each wing).

• High Value Home (Advanced Entry) - A high value home built on-site. If you use the advanced entry method, the system does not use Knowledge Table data. You must enter materials for each section of the house (main home and each wing).

All the Web methods in the InspectionService can be executed for all the supported valuation types.

RCT Material Knowledge Tables RCT uses knowledge tables to let you enter the property characteristics that you know and the system determines the other materials used in the home based on the property characteristics that you enter. The RCT system applies material information from the knowledge tables when a valuation is created or updated if the minimum required parameters are provided. Materials that

Chapter 2 Interactive Mode

6 RCT Field Inspection Transfer Version 3.10 Integration Guide

can be used in the construction of a home are grouped into categories called material systems. Exterior walls, attached structures, and heating and cooling are examples of material systems.

Knowledge Table data is added by material system. If you add one or more materials for a material system, you must add all other materials for that material system. The RCT Knowledge engine will not apply data to a material system if some materials have already been added to it.

Notes:

When using the high value standard entry method, only foundation/basement materials need to be added to the section/wing. All other components are added to the building. The system uses Knowledge Table data to apply the values you enter for the building to all sections (main home and any wings) of the house.

No Knowledge Table data is loaded for the high value advanced entry method.

Inspection Company Setup Inspection companies can submit inspection data to several carriers. Each carrier will have their own set of FIT Web services. The inspection company needs to know the URL of the carrier’s FIT Web service to upload data to the correct RCT Express archive.

To use FIT, the inspection company needs to be set up as a business partner with MSB. Contact your MSB account representative to verify that this step has been completed. Next, the carrier administrator needs to set up the inspection company as a business partner on their RCT Express system to enable the inspection company to submit inspection data. When a carrier administrator sets up an inspection company an e-mail is automatically sent to the inspection company with a user name and password to be used for all FIT Web method calls. An e-mail is also sent when a carrier deactivates an inspection company. Once an inspection company has been deactivated it cannot submit inspections to the carrier site.

The carrier administrator also sets up the configuration that the inspection company will use when submitting inspection data. This configuration includes the required list of underwriting questions (also referred to as inspection questions), the minimum number of attachments required, and the delivery option to be used (when committing inspection data) for the specific house type and inspection type combination.

FIT supports four delivery options: Archive, Overwrite, Merge and None.

Archive - The inspection version is placed in history and the current version of the policy is not updated.

Overwrite - A new policy version is created by copying the inspection version. The current version of the policy is then updated to point to the newly created policy version. The prior current policy version is moved to history. If the prior policy version was ‘InPreparation’ status it is marked ‘Superseded’.

Merge - The exterior inspection data from the inspection version is combined with the interior version data from the most recent complete version and a merged policy version is created. The current version of the policy is then updated to point to the merged policy version. The prior current policy version is moved to history. If the prior policy version was ‘InPreparation’ status it is marked ‘Superseded’.

Note: You cannot use the merge delivery option for high value homes because they require an internal inspection.

None - This delivery option lets the carrier company disallow certain inspection type/house type combinations from an inspection company. For example, if an inspection company has been contracted to do only main street home inspections, the delivery option for high value homes should be set to None.

Overview of Interactive Web Services

RCT Field Inspection Transfer Version 3.10 Integration Guide 7

The carrier administrator will set up the delivery option based on the carrier’s underwriting work processes.

Security The FIT Web services use WS-Security UsernameToken to let the Web service consumer supply a Username Token and a password to authenticate their identity. WS-Security UsernameToken Profile is an industry standard for Web service authentication published by the Organization for the Advancement of Structured Information Standards (OASIS). The FIT Web services use Web Services Enhancements 3.0, Microsoft’s implementation of WS-Security. The FIT Web services will interoperate with other Web service platforms that have a WS-Security-compliant implementation.

The client application that invokes the Web methods should place the user name provided to you by your MSB account representative in a WS-Security UsernameToken element. The password should be set in the WS-Security Password element and the element’s type attribute should be set to "PasswordDigest." This token should be added to the SOAP request for the Web method. If the credentials are valid, the client application is granted access to the Web method; otherwise, a SecurityFault exception is thrown.

For detailed information and examples of how to invoke the FIT Web services using the .NET and Java platforms, see Chapter 6, Microsoft .NET Clients and Chapter 7, Java Clients respectively. Also see the .NET sample code provided with this document.

InspectionService The InspectionService provides Web methods to submit inspection data and attachments to the carrier’s RCT Express system. For detailed descriptions, see InspectionService Web Methods.

The InspectionService includes the following Web methods:

• Preview

• Commit

• Export

• AddAttachment

• GetAttachmentInformation

• DeleteAttachment

• SeamlessSelection

ConfigurationService The ConfigurationService provides Web methods to retrieve the carrier’s configuration for underwriting questions, attachments, delivery option, etc. For detailed descriptions, see ConfigurationService Web Methods.

The ConfigurationService includes the following Web methods:

• GetInspectionQuestionConfiguration

• GetInspectionSettings

Chapter 2 Interactive Mode

8 RCT Field Inspection Transfer Version 3.10 Integration Guide

ReferenceService The ReferenceService provides Web methods to retrieve material codes for different house types. For more information, see Material Codes. For detailed descriptions, see ReferenceService Web Methods. In addition, ReferenceService’s GetSeamlessSelectionQuestions web method can retrieve a list of available Seamless Selection related questions.

The ReferenceService includes the following Web methods:

• GetMsMaterialDetail

• GetMsMaterialDetailList

• GetHvStdMaterialDetail

• GetHvStdMaterialDetailList

• GetHvAdvMaterialDetail

• GetHvAdvMaterialDetailList

• GetMmhMaterialDetail

• GetMmhMaterialDetailList

• GetSeamlessSelectionQuestions

InspectionService Web Methods

Preview Returns: Object that contains inspection data, valuation data and underwriting question

warnings.

Data Type: InspectionPreviewAggregate

Description: The Preview method allows an inspection company to submit inspection and valuation data to be verified and computed against the carrier’s cost settings without delivering the inspection data to the carrier site. The Preview method can be called repeatedly to update the inspection version until the desired replacement cost is achieved.

If the policy does not exist, it is created. If the method succeeds, an inspection (recordType ‘INS’) version is created and the inspection data is stored in it. At this point, the current version of the policy is not updated. The inspection version is not visible to the carrier from their RCT Express system. The method computes the valuation total and returns it along with the saved valuation and inspection data. All the required underwriting questions have to be included in the inspection data. If questions are missing, an exception is generated. If questions have invalid answers, an exception or warning is generated based on the InvalidAnswerValidationLevel property of the inspection question. The list of required questions for the carrier can be retrieved using the Configuration Web Service.

The method loads the default material Knowledge Table data based on the valuation type. If no sections are specified in the valuation aggregate, an exception is generated.

InspectionService Web Methods

RCT Field Inspection Transfer Version 3.10 Integration Guide 9

If the inspection company is not permitted to submit inspection data (delivery option set to ‘None’) for the house type/inspection type combination, then an exception will be generated.

Parameters:

Data Type Description

inspectionAggregate InspectionAggregate The object that contains all the inspection and valuation data to create the inspection version.

The valuation aggregate can hold valuation objects of different types. Use MainStreetValuation, MMHValuation, HighValueStandardValuation, or HighValueAdvancedValuation depending on the valuation type for the home.

MSB recommends that you enter as much information as possible. These are the minimum required fields:

• Policy Number

• PropertyAddress State

• PropertyAddress ZipOrPostalCode

• Building HomeStyle

• Section Wing

• Section Number

• Section YearBuilt

• Section TotalLivingArea

• Section LivingAreaEntryMethod

• InspectionDate

• InspectionType

• InspectionQuestions

Chapter 2 Interactive Mode

10 RCT Field Inspection Transfer Version 3.10 Integration Guide

Commit Returns: Object that contains inspection and valuation data.

Data Type: InspectionAggregate

Description: The Commit method makes the previously submitted inspection data (using the Preview web method) preserved to history and delivers the inspection data along with attachments to the carrier’s site. The inspection data is committed to the RCT Express system using the delivery option configured for the inspection company for the house type and inspection type combination. The method returns either the inspection or merged POL version based on the carrier’s configuration.

All attachments should be added prior to calling the Commit method. If the number of attachments added is less than the minimum number of required attachments the Commit method will fail. The minimum number of required attachments can be retrieved using the Configuration Web Service.

If no inspection version has been created by the calling inspection company for the policyNumber specified, an exception will be generated.

Parameters:

Data Type Description

policyNumber String The policy number of the policy that needs to be committed.

Export Returns: Object that contains inspection and valuation data.

Data Type: InspectionAggregate

Description: The Export method exports the last inspection version created by the calling inspection company for the specified policy number if there is no committed version. If committed policy version exists and carrier’s site is configured to allow the inspection partner to retrieve the merged POL version, the method will return the merged POL version to the inspection company.

If the policy number does not exist or no inspection version exists for the policy an exception is generated.

Parameters:

Data Type Description

policyNumber String The policy number of the policy that needs to be exported.

InspectionService Web Methods

RCT Field Inspection Transfer Version 3.10 Integration Guide 11

AddAttachment Returns: Object that contains the saved attachment information.

Data Type: AttachmentInformation

Description: The AddAttachment method is used to add attachments to the inspection version. The method should be called for each attachment available. All attachments need to be added prior to calling the Commit method. The returned object contains a unique FileId that can be used to identify (delete) the attachment.

Parameters:

Data Type Description

policyNumber string The policy number of the policy to which the attachment should be added.

attachmentInformation AttachmentInformation The attachment information object containing the filename, file type, title, base64 encoded data, etc., of the attachment that needs to be added.

Required fields:

• Data

• FileName

• FileType

GetAttachmentInformation Returns: List of objects that contain the attachment information.

Data Type: AttachmentInformation[]

Description: The GetAttachmentInformation method is used to retrieve the attachment information for all the attachments that have been added to the inspection version of a policy.

If no inspection version exists for the policy or if the method is called after committing the inspection data an exception will be generated. The method returns null if no attachments have been added to the inspection version.

Parameters:

Data Type Description

policyNumber string The policy number of the policy whose attachments you want to retrieve.

Chapter 2 Interactive Mode

12 RCT Field Inspection Transfer Version 3.10 Integration Guide

DeleteAttachment Returns:

Data Type: void

Description: The DeleteAttachment method is used to delete an already added attachment from the inspection version. Provide the FileId of the AttachmentInformation object to identify the attachment that should be deleted.

If no inspection version exists for the policy or if the method is called after committing the inspection data, an exception is generated. An exception is also generated if no matching attachment is found.

Parameters:

Data Type Description

policyNumber string The policy number of the policy whose attachment you want to delete.

attachmentInformation AttachmentInformation The attachment information object containing the unique FileId of the attachment that needs to be deleted.

Required fields:

• Id

SeamlessSelection Returns: The house type for the valuation.

Data Type: ValuationType

Description: The SeamlessSelection method tests the data passed to the method against a set of criteria (configured on the carrier’s RCT Express site) to determine the appropriate house type for the valuation. This method should be called prior to calling the Preview Web method to decide if the valuation data should be submitted as a main street or high value valuation.

Parameters:

Data Type Description

ZipOrPostalCode String The zip or postal code where the home is located.

YearBuilt Short The year the home was built.

LivingArea Integer The total living area for the main building and all sections or wings in the home.

EstimatedMarketValue Integer The estimated market value for the home in dollars.

ConfigurationService Web Methods

RCT Field Inspection Transfer Version 3.10 Integration Guide 13

Data Type Description

SeamlessSelectionAnswerList Array Key & Value pair array list to allow inspection company to provide answers to the questions.

Examples of Question Keys:

• FancyKitchenBath

• ElaborateRoof

• MegaGarage

• DeluxeAppointmentsThroughout

• ElaborateCeilings

• ElegantStaircases

• SpecialPurposeRoomsOrDetachedStructures

Answers to these questions should be Boolean type.

Use the GetSeamlessSelectionQuestions web method to get detail definitions on the above questions.

ConfigurationService Web Methods

GetInspectionQuestion Returns: List of objects that contain the underwriting/inspection question configuration.

Data Type: InspectionQuestionConfiguration[]

Description: The GetInspectionQuestion method returns the list of required inspection questions as configured by the carrier administrator. Along with the question, all potential answers for the question are returned as well. These questions are set up for all the inspection companies used by the carrier and cannot be customized for specific inspection companies.

Parameters: None

Chapter 2 Interactive Mode

14 RCT Field Inspection Transfer Version 3.10 Integration Guide

GetInspectionSettings Returns: List of objects that contain the underwriting/inspection question configuration.

Data Type: InspectionSettings[]

Description: The GetInspectionSettings method returns configuration information such as delivery option, minimum number of attachments, etc. as configured by the carrier administrator for the calling inspection company.

Parameters: None

ReferenceService Web Methods

GetMsMaterialDetail Returns: Detailed material information for the specified material ID.

Data Type: MaterialSystem

Description: The GetMsMaterialDetail method returns attributes for the specified material ID: material name, min. value, max. value, and unit of entry.

Parameters:

Data Type Description

MaterialIdIn String Identifies the component or material.

GetMsMaterialDetailList Returns: Detailed material information.

Data Type: MaterialSystemList

Description: The GetMsMaterialDetailList method returns a list of materials grouped by material systems and material subsystems. These materials can be used in a main street home.

Parameters:

Data Type Description

NoInput N/A N/A

GetHvStdMaterialDetail Returns: Detailed material information for the specified material ID.

Data Type: MaterialSystem

Description: The GetHvStdMaterialDetail method returns attributes for the specified material ID: material name, min. value, max. value, and unit of entry.

Parameters:

Data Type Description

MaterialIdIn String Identifies the component or material.

ReferenceService Web Methods

RCT Field Inspection Transfer Version 3.10 Integration Guide 15

GetHvStdMaterialDetailList Returns: Detailed information for all materials.

Data Type: MaterialSystemList

Description: The GetHvStdMaterialDetailList method returns a list of materials grouped by material systems and material subsystems. These materials can be used in a high value home that uses the standard entry method.

Parameters:

Data Type Description

NoInput N/A N/A

GetHvAdvMaterialDetail Returns: Detailed material information for the specified material ID.

Data Type: MaterialSystem

Description: The GetHvAdvMaterialDetail method returns attributes for the specified material ID: material name, min. value, max. value, and unit of entry.

Parameters:

Data Type Description

MaterialIdIn String Identifies the component or material.

GetHvAdvMaterialDetailList Returns: Detailed material information.

Data Type: MaterialSystemList

Description: The GetHvAdvMaterialDetailList method returns a list of materials grouped by material systems and material subsystems. These materials can be used in a high value home that uses the advanced entry method.

Parameters:

Data Type Description

NoInput N/A N/A

GetMmhMaterialDetail Returns: Detailed material information for the specified material ID.

Data Type: MaterialSystem

Description: The GetMmhMaterialDetail method returns attributes for the specified material ID: material name, min. value, max. value, and unit of entry.

Parameters:

Data Type Description

MaterialIdIn String Identifies the component or material.

Chapter 2 Interactive Mode

16 RCT Field Inspection Transfer Version 3.10 Integration Guide

GetMmhMaterialDetailList Returns: Detailed material information.

Data Type: MaterialSystemList

Description: The GetMmhMaterialDetailList method returns a list of materials grouped by material systems and material subsystems. These materials can be used in a mobile manufactured home.

Parameters:

Data Type Description

NoInput N/A N/A

GetSeamlessSelectionQuestions Returns: A list of seamless selection questions

Data Type: SeamlessSelectionQuestionList

Description: The GetSeamlessSelectionQuestions method returns a list of seamless selection questions with question key (to be used in Inspection Service’s SeamlessSelection web method), the Title (brief descriptive question) and Description (detailed explanation of the question).

Parameters:

Data Type Description

NoInput N/A N/A

Exception Handling The Web services communicate errors through SOAP exceptions, mainly using the SOAP fault detail element to convey exception information in XML format.

The ExceptionInformation model object is used to convey any errors returned from a Web method call. This object is similar in behavior to .NET’s System.Exception or Java’s java.lang.Exception (jdk1.4 and later), where the exceptions are chained.

In short, exception chaining reflects the actual method calling sequence when a severe error is detected by storing an instance of the exception class for each method call. This allows the programmer to store essential information pertaining to the error situation in each instance of the exception class.

The ExceptionInformation model object is the base class from which other types of ExceptionInformation are derived. Currently, the other derived class is the InspectionQuestionValidationExceptionInformation.

An InspectionQuestionValidationExceptionInformation model object contains validation exception information when the inspection questions submitted by the user fail validation during the Preview Web method. Currently, no other Web method (other than Preview) throws InspectionQuestionValidationExceptionInformation.

The InspectionQuestionValidationExceptionInformation has a Property “ValidationResult” which contains information on inspection question validation failures.

ReferenceService Web Methods

RCT Field Inspection Transfer Version 3.10 Integration Guide 17

RCT Field Inspection Transfer Version 3.10 Integration Guide 18

Chapter 3 Object Model

Introduction The FIT Web methods accept strongly typed objects for data transfer. Due to the use of strongly typed objects, the WSDL provided for the Web services will aid you in programming against the services. This chapter provides a comprehensive list of all the classes and enumerations that are used by the Web methods for data transfer. The object model is available as a Visio file (FITObjectModel.vsd) along with this product documentation.

FIT Classes This section lists all the classes within the FIT object model. The FIT object model is a superset of the ExpressLync object model. (ExpressLync is an MSB product that allows carriers to upload valuation data using Web services.) The ExpressLync object model is used to represent all the building valuation data.

There are different sets of valuation, building, and section classes for main street, mobile-manufactured and high value homes. Additionally, for high value homes there are different sets of classes for the standard and advanced entry methods. For example, the MainstreetSection class should be used for a main street home section. The HighValueAdvancedSection class should be used for a high value home that uses the advanced entry method.

The carrier’s RCT Express client configuration settings determine whether you are using standardized costs or nonstandardized costs. There are different sets of classes for standardized costs and nonstandardized costs. For example, when using standardized cost, the primary structure cost results are returned in a PrimaryStructureStandardizedCost object. When using nonstandardized cost, the primary structure cost results are returned in a PrimaryStructureNonStandardizedCost object.

Note: The CalculatableValuation, CalculationResult, CustomItem, HazardResponseDetail and ValuationAggregate classes have tool-generated member names such as Item, Item1, etc. These members can hold objects of different types so they do not have a specific name assigned to them. Depending on the tool used to generate the proxy class from the WSDL, the name of these members will differ. On the .NET platform, such members are given names such as Item, Item1, etc. The item members contain only one instance of any type. Refer to the sample code in the ValuationAggregate section to see how to identify the type contained within the item members.

FIT Classes

RCT Field Inspection Transfer Version 3.10 Integration Guide 19

InspectionAggregate System.Object InspectionAggregate

This is an aggregate class that holds the valuation and inspection data.

Member Description Data Type Read Only

ValuationAggregate Reference to an object that holds valuation data for the home being inspected.

ValuationAggregate

InspectionData Reference to an object that holds inspection specific data for the home being inspected.

InspectionData

InspectionPreviewAggregate System.Object InspectionAggregate InspectionPreviewAggregate

This is an aggregate class that holds valuation data, inspection data and inspection question warnings.

Member Description Data Type Read Only

InspectionQuestionsValidationWarnings Holds any warnings generated when the inspection questions are validated against the carrier’s configuration.

ValidationResult

InspectionData System.Object InspectionData

This class holds all the inspection specific data.

Member Description Data Type Read Only

InspectionDate The date the inspection was performed. Date

InspectorId An identifier assigned to the inspector. string

InspectorName The name of the inspector who performed the inspection.

string

InspectionType The Type of inspection. Inspections can be Exterior only or Interior and Exterior (InOut). High value homes can only have an inspection type of InOut.

InspectionTypes

InspectorComment Any comments from the inspector. string

InspectionQuestions List of underwriting questions and answers that the inspector could answer for the inspected property.

InspectionQuestion[]

Chapter 3 Object Model

20 RCT Field Inspection Transfer Version 3.10 Integration Guide

InspectionQuestion System.Object InspectionQuestion

Represents an underwriting/inspection question and answer.

Member Description Data Type Read Only

Code The system defined value that represents an inspection question.

string

Text The textual description of the question. string

CannotDetermineReason The reason why the question could not be answered.

string

Answers Either holds the list of system-supplied answers for the question or answers from the inspector.

InspectionAnswer[]

InspectionQuestionConfiguration System.Object InspectionQuestion InspectionQuestionConfiguration

Represents a class that holds configuration data for the underwriting/inspection question and answer.

Member Description Data Type Read Only

Usage Indicates if the inspection question is required to be answered by the inspector. This member is set by the carrier administrator through the RCT Express Admin screen.

InspectionQuestionUsage X

InvalidAnswerValidationLevel Indicates the system behavior when an invalid answer is provided. If the validation level is set to ‘Error’ and an invalid answer is submitted, an exception is generated and the Preview method fails. If the validation level is set to ‘Warning’, and an invalid answer is submitted, a warning is generated and the Preview method succeeds. This member is set by the carrier administrator through the RCT Express Admin screen.

ValidationLevels X

UserDefinedAnswerAllowed This member indicates that an inspection question can be configured by the carrier to have an answer outside the system-specified list of answers.

bool X

FIT Classes

RCT Field Inspection Transfer Version 3.10 Integration Guide 21

InspectionAnswer System.Object InspectionAnswer

Represents an underwriting/inspection answer.

Member Description Data Type Read Only

Text Holds the textual answer to the inspection question.

string

Attachment System.Object AttachmentInformation Attachment

Represents an attachment that can be uploaded to be associated with an inspection version.

Member Description Data Type Read Only

Data A byte array that holds the base64 encoded attachment data. The server is configured to use Message Transmission Optimization Mechanism (MTOM) to optimize the transmission of the attachment data. If the client platform does not support MTOM the attachment data will be transmitted as base64 encoded data within the SOAP message.

Byte[]

AttachmentInformation System.Object AttachmentInformation

Represents the attachment information without the attachment data.

Member Description Data Type Read Only

Id A unique identifier for the attachment. Integer

FileName The filename to be used for saving the attachment. No path should be specified in this field, only the name of the file.

String

FileType The file type of the attachment. The supported types are bmp, jpg, gif, and pdf.

FileTypes

Title The title for the attachment. The attachment title shows up in the inspection report.

String

Description Any description for the attachment. String

Chapter 3 Object Model

22 RCT Field Inspection Transfer Version 3.10 Integration Guide

DeliverySettings System.Object DeliverySettings

Represents the settings used when an inspection company commits its inspection data.

Member Description Data Type Read Only

DeliveryOptions This setting determines how the inspection version will be delivered to the carrier’s Express site. Please refer to the DeliveryOptions enum for more details.

DeliveryOptions X

MinimumAttachments The number of minimum attachments required to be added to an inspection version before it can be successfully committed.

Integer X

ExceptionInformation System.Object ExceptionInformation

This class represents an exception thrown from any of the Web service methods. This is basically a wrapper class for System.Exception since it cannot be serialized across the wire.

Member Description Data Type Read Only

TypeName Gets the runtime type name of the current object instance that raised the exception.

String X

Source Gets the name of the application or the object that caused the error.

String X

Message Gets the error message that explains the reason for the exception.

String X

HelpLink Gets a link to the help file associated with this exception. If it returns null or an empty string, there is no link associated.

String X

ServerStackTrace Gets a string representation of the frames on the call stack at the time the current exception was thrown. It returns a string that describes the contents of the call stack, with the most recent method call appearing first. If it returns a null or an empty string, there is no stack trace returned.

String X

InnerExceptionInformation Gets the ExceptionInformation instance that caused the current exception. An instance of ExceptionInformation that describes the error that caused the current exception. If it returns null, the current exception is the last exception in the chain.

ExceptionInformation X

FIT Classes

RCT Field Inspection Transfer Version 3.10 Integration Guide 23

InspectionQuestionValidationExceptionInformation System.Object ExceptionInformation InspectionQuestionValidationExceptionInformation

This class represents an exception thrown from the Preview method when the inspection question validation fails.

Member Description Data Type Read Only

ValidationResult Contains the list of inspection questions that caused the validation failure.

ValidationResult X

InspectionSettings System.Object InspectionSettings

This class associates the delivery settings used when committing inspection data with the house and inspection type of an inspection.

Member Description Data Type Read Only

HouseType The house type (main street, high value, etc.) for which the delivery settings are valid.

HouseType X

InspectionType The type of inspection for which the delivery settings are valid.

InspectionType X

DeliverySettings The delivery settings associated with the house type and inspection type in this object instance.

DeliverySettings X

ValidationResult System.Object ValidationResult

This class holds the result of validating the inspection questions against the carrier’s configuration during the call to the Preview Web method.

Member Description Data Type Read Only

MissingQuestions The list of questions that are marked as required by the carrier but were not answered by the inspector.

InspectionQuestion[]

InvalidQuestionAndAnswer The list of questions that had an invalid question code or an invalid answer. An invalid answer is an answer that does not match one of the system-defined answers for the question.

InspectionQuestion[]

Chapter 3 Object Model

24 RCT Field Inspection Transfer Version 3.10 Integration Guide

Address System.Objects Address

Represents an address. The class can be used for the property and mailing addresses of a valuation.

Member Description Data Type Read Only

Address1 The street address. String

Address2 Additional address information. String

City The city. String

StateOrProvince The state or province. String

ZipOrPostalCode The zip or postal code. String

Adjustment System.Object Adjustment

Represents adjustments that can be applied to a valuation to increase or decrease all the computed costs in the valuation.

Member Description Data Type Read Only

GeneralPercentage Adjustment factor that allows you to increase or decrease all costs in the valuation. The adjustment can be expressed as a positive or negative percentage. Input a percentage between -99% and 99%.

Decimal

DepreciationChoice You can depreciate a valuation either by specifying an effective age or a total percentage. The depreciation will apply to both the home and attached structures. When using the depreciation percentage approach, specify a percentage in the DepreciationPercentage member. If you prefer EffectiveAge, enter a number in the DepreciationEffectiveAge member.

DepreciationChoice

DepreciationPercentage Percentage to depreciate the value of the home. Input a percentage between 0 and 100.

Decimal

DepreciationEffectiveAge The actual age less the age that has been taken off by face-lifting, structural reconstruction, removal of functional inadequacies, modernization of equipment, etc. The system automatically computes a depreciation percentage from the effective age of the home. Input a value between 0 and 80.

Integer

WageType The type of wages to use in computing the value of the home.

WageType

WageTypeSpecified Flag to indicate if WageType has been provided.

Bool

FIT Classes

RCT Field Inspection Transfer Version 3.10 Integration Guide 25

AdjustmentParameters System.Object AdjustmentParameters

Represents a helper class for the NonStandardizedCostAdjustment class.

Member Description Data Type Read Only

IncludeForValuation When set to false, cost for Debris Removal, General Contractor Overhead and Profit, and Architect Fee are not computed. Set the flag to true to compute these costs using MSB’s standard values.

Bool

Percentage IncludeForValuation must be set to true for the Percentage field to be used. Input a percentage between 0 and 100 to override MSB’s default values and set your own percentage for Debris Removal, General Contractor Overhead and Profit, and Architect Fee.

Decimal

Cap IncludeForValuation must be set to true for the Cap field to be used. Input a dollar amount to set the maximum Debris Removal, General Contractor Overhead and Profit, and Architect Fee amount.

Integer

Examples The following table lists examples of how to use the above fields to set architect’s fees. You can follow similar steps to set contractor overhead and profit and debris removal.

If you want to… Do this…

Use the standard MSB values for architect’s fees, 1. Set IncludeForValuation to True.

2. Do not set a value for Percentage.

3. Do not set a Cap value.

Set your own architect’s fees and set a maximum dollar amount for architect’s fees,

1. Set IncludeForValuation to True.

2. Set a value for Percentage.

3. Set a Cap value.

Set your own architect’s fee percentage, 1. Set IncludeForValuation to True.

2. Set a value for Percentage.

3. Do not set a Cap value.

Use the standard MSB architect’s fees, and set a maximum dollar amount for architect’s fees,

1. Set IncludeForValuation to True.

2. Do not set a value for Percentage.

3. Set a Cap value.

Exclude architect’s fees from the valuation, 1. Set IncludeForValuation to False.

2. Do not set a value for Percentage.

3. Do not set a Cap value.

Chapter 3 Object Model

26 RCT Field Inspection Transfer Version 3.10 Integration Guide

BasementInfo System.Object BasementInfo

This class holds basement information for a main street home.

Member Description Data Type Read Only

Type The type of basement that is under the first floor of the home.

BasementType

PercentFinished The total percentage of the basement that is finished.

Byte

FinishType The basement finish type (standard or custom).

BasementFinishType

BreakdownCost System.Object BreakdownCost

Lets you specify the breakdown of labor, equipment, and material cost for a custom item used within the section of a home.

Member Description Data Type Read Only

LaborCost The total labor cost for the custom item. Decimal

EquipmentCost The total equipment cost for the custom item.

Decimal

MaterialCost The total material cost for the custom item. Decimal

BreakdownCostInt System.Object BreakdownCostInt

Represents the breakdown of labor, equipment, and material cost for a building system.

Member Description Data Type Read Only

LaborCost The total labor cost for a building system. Integer X

EquipmentCost The total equipment cost for a building system.

Integer X

MaterialCost The total material cost for a building system. Integer X

FIT Classes

RCT Field Inspection Transfer Version 3.10 Integration Guide 27

Building System.Object Building

This class represents a building/home that is being valued.

Member Description Data Type Read Only

SiteAccess The type of access available to the home location.

SiteAccess

HomeStyle The type of residence being valued. HomeStyle

BuildingSystemCost System.Object BreakdownCostInt BuildingSystemCost

The calculated cost data is grouped into categories called building systems (e.g., site work, foundations, roofing, etc.). This class represents cost data for a building system.

Member Description Data Type Read Only

System Identifies the Building System. BuildingSystem X

CalculatableValuation System.Object Valuation CalculatableValuation

This is the base class of all valuations whose value can be computed.

Member Description Data Type Read Only

CalculationResult Reference to the CalculationResult object. CalculationResult X

Preferences Reference to the Preferences object. Preferences

Item Set this member to reference an instance of the Adjustment or NonStandardizedCostAdjustment class. When using standardized cost, reference the Adjustment class object. When using nonstandardized cost, reference the NonStandardizedCostAdjustment class object.

Adjustment

Chapter 3 Object Model

28 RCT Field Inspection Transfer Version 3.10 Integration Guide

CalculationResult System.Object CalculationResult

This class holds all the calculated data for a valuation.

Member Description Data Type Read Only

CalcUser The login of the user who performed the last calculate operation.

String X

CalcDate The date and time when the valuation was last calculated.

DateTime X

CostDataVersion The version of the MSB cost data used to compute the value of the home.

CostDataVersionType X

BuildingSystemCost Reference to the BuildingSystemCost object. BuildingSystemCost X

Item Reference to either the PrimaryStructureStandardizedCost or the PrimaryStructureNonStandardizedCost object.

PrimaryStructureCost X

ComboResult System.Object ComboResult

This is an aggregate class returned from the combo service methods. It holds a valuation object and a list of warnings from standardizing an address and evaluating hazards.

Member Description Data Type Read Only

Valuation This is a reference to a valuation aggregate object that can hold valuations of different types. The item member of the class will be a reference to the HighValueStandardValuation or HighValueAdvancedValuation object.

ValuationAggregate X

Warning List of warnings returned from standardizing addresses or evaluating hazards.

StringList X

FIT Classes

RCT Field Inspection Transfer Version 3.10 Integration Guide 29

Comment System.Object Comment

This class usually holds remarks added by insurance agents, underwriters, etc., about the valuation.

Member Description Data Type Read Only

Type The type of comment is a client-configured setting. Two different types of comments can be configured per client, e.g., agent, underwriter. This member identifies the comment type as per the client setting.

String

Value The comment from the agent, underwriter, etc. The comment may contain a maximum of 511 alphanumeric characters.

String

Component System.Object Component

This class represents a material that can be added to a section of a house. RCT Knowledge Table data is added by material system. Therefore, if you add one material to a material system, you should add all relevant materials for that material system. The RCT engine does not create Knowledge Table data when parts of a material system are entered. The material data is determined based upon the zip code (postal code in Canada), number of families, and style together with the year built, construction type, and total living area.

Member Description Data Type Read Only

Material The ID of the material or component. There can only be a single occurrence of a given component/material within a building or section.

String

Amount The total amount of the component/material. You can input a percentage, count or number of items, linear feet or square feet of a material. Unit is determined by the material’s unit of entry.

Decimal

Chapter 3 Object Model

30 RCT Field Inspection Transfer Version 3.10 Integration Guide

Cost System.Object Cost

The base class that holds cost results for the primary and detached structures of a house.

Member Description Data Type Read Only

InsurableReplacementCost The total replacement cost after policy exclusions have been taken into account.

Note: RCT does not itemize exclusions separately. They are incorporated within TotalReplacementCost so this field will always be identical to TotalReplacementCost.

Integer X

InsuredValue Contains the InsurableReplacementCost less Depreciation.

Integer X

Depreciation The total depreciation amount for the home. Integer X

Subtotal The sum of EquipmentCost, LaborCost, and MaterialCost calculated for the primary structure.

Integer X

Adjustment The adjustment amount computed using the general adjustment factor.

Integer X

ActualCashValue InsurableReplacementCost less Depreciation. Integer X

CostDataVersionType System.Object CostDataVersionType

Represents the cost data version used to calculate the value of the house. MSB releases updated cost data every quarter.

Member Description Data Type Read Only

Id Identifies the version of the cost data used for loading defaults and performing calculations on the current valuation.

String X

Description A short description of the cost data version. String X

Date The release date of the cost data. Date X

FIT Classes

RCT Field Inspection Transfer Version 3.10 Integration Guide 31

CustomItem System.Object CustomItem

The custom item class allows you to add costs for items found in the home that are not directly available within the RCT system.

Member Description Data Type Read Only

Description A brief description of the custom item you are entering.

String

Comment Allows you to provide remarks about the custom item.

String

Quantity The actual number of custom items. This number is used to calculate the total cost.

Decimal

UnitOfMeasure The unit of measure for the custom item you are entering.

Unit

Location Allows you to specify where in the data entry report (which building system) you want the custom item to appear.

BuildingSystem

DetachedStructureCost System.Object Cost DetachedStructureCost

The base class that holds cost results for the detached structures of a house.

Member Description Data Type Read Only

PercentOfPrimaryStructureIRC Detached structure insurable replacement cost as a percent of primary structure insurable replacement cost.

Decimal X

DetachedStructureNonStandardizedCost System.Object Cost DetachedStructureCost DetachedStructureNonStandardizedCost

The class that holds cost results for the detached structures of a house when not using standardized cost. The class does not include any members but is provided to make the object model consistent for primary structure and detached structures costs.

Member Description Data Type Read Only

None

Chapter 3 Object Model

32 RCT Field Inspection Transfer Version 3.10 Integration Guide

DetachedStructureStandardizedCost System.Object Cost DetachedStructureCost DetachedStructureStandardizedCost

The class that holds cost results for the detached structures of a house when using standardized cost.

Member Description Data Type Read Only

DebrisRemoval Sum of debris removal costs calculated for the detached structures.

Integer X

SubtotalAfterDebrisRemoval SubtotalCost less DebrisRemoval. Integer X

FloorToFloorHeight System.Object FloorToFloorHeight

Represents the distance from the top of a floor to the top of the next floor.

Member Description Data Type Read Only

Percentage The percentage of the home that the height applies to. The total percentage of all instances of the FloorToFloorHeight class that are added to a section must equal 100%.

Integer

Height Actual wall height in feet between 7.0 and 40.0.

Decimal

FramingBreakdown System.Object FramingBreakdown

This class holds the framing information for a main street home section. The class allows you to specify several framing types that are used within the home along with their associated percentages. The total of all framing percentages should be 100%.

Member Description Data Type Read Only

Type The type of framing used to build the section of the home.

FramingType

Percent The percentage of the section that uses the framing type specified in the Type member above.

Byte

FIT Classes

RCT Field Inspection Transfer Version 3.10 Integration Guide 33

FoundationBasementInfo System.Object FoundationBasementInfo

This class holds foundation and basement information for a main street home.

Member Description Data Type Read Only

SlabPct The total percentage of the first floor of the residence that is built on a slab on grade.

Byte

CrawlSpacePct The total percentage of the first floor of the residence that has a crawl space below.

Byte

BasementPct The total percentage of the first floor of the home that has a basement below.

Byte

PiersRaisedPct The total percentage of the first floor of the home that is built on a pier or raised foundation.

Byte

HillsideSlope The approximate degree of steepness of the terrain covered by the suspended portion of the home.

HillSideSlope

SuspendedOverHillsidePct The percentage of the home that is suspended over a sloped terrain.

Byte

BasementInfo Reference to the BasementInfo object. BasementInfo

FoundationBreakdown System.Object FoundationBreakdown

This class holds the foundation information for the section of a main street home. The class allows you to specify several foundation types that are used within the home along with their associated percentages. The total of all foundation percentages should be 100%.

Member Description Data Type Read Only

Type The type of foundation used to build the section of the home.

FoundationType

Percent The percentage of the section that uses the foundation type specified in the Type member above.

Byte

Chapter 3 Object Model

34 RCT Field Inspection Transfer Version 3.10 Integration Guide

HazardInfo System.Object HazardInfo

This is an aggregate class that holds information on the hazard requests and the list of all the hazard results.

Member Description Data Type Read Only

Request Reference to a HazardRequest object. HazardRequest

Result Reference to a HazardResponseDetail object. HazardResponseDetailList X

HazardResponseDetail System.Object HazardResponseDetail

Contains the hazard results generated by the hazard provider for each of the hazard requests.

Member Description Data Type Read Only

Type The type of hazard for which the result has been generated.

HazardType X

Name The name of the hazard. String X

Item The results from generating the hazard. Based on the type of hazard being generated, this member holds either a decimal value or a string value. For example, if the hazard type is brush, the item member contains the distance to the nearest high or very high fuel location.

Object X

HazardRequest System.Object HazardRequest

Represents a class that holds requests on all the hazard types that need to be generated.

Member Description Data Type Read Only

Type The type of hazard to generate. HazardTypeArray

FIT Classes

RCT Field Inspection Transfer Version 3.10 Integration Guide 35

HighValueAdvancedBuilding System.Object Building HighValueAdvancedBuilding

Represents a high value home that uses the advanced entry method. When using the advanced entry method, all components have to be added to the section/wing. No components are added to the building. A high value home using the advanced entry method can have an unlimited number of sections added to its building.

Member Description Data Type Read Only

Section List of all HighValueAdvancedSection objects for this home.

HighValueAdvancedSectionList

HighValueAdvancedSection System.Object Section HighValueSection HighValueAdvancedSection

This class holds a section for a high value home that uses the advanced entry method. When using the advanced entry method, no Knowledge Table data is applied. You need to add components for each section (main home and each wing) of the home.

Member Description Data Type Read Only

Type Allows you to specify the type of section, for example, whole house, vertical or horizontal, basement, garage, etc. For the main home section of a house, not all section types are valid. The valid section types for a main home section are WholeHouse, VerticalSection, HorizontalGroundFloor, HorizontalUpperFloor.

SectionType

Coverage For individual sections, you can specify whether the cost for that section is part of Coverage A or Coverage B in the policy.

CoverageType

Chapter 3 Object Model

36 RCT Field Inspection Transfer Version 3.10 Integration Guide

HighValueAdvancedValuation System.Object Valuation CalculatableValuation HighValueValuation HighValueAdvancedValuation

This is the valuation class for a high value home that uses the advanced entry method. When you use the advanced wing entry method, the system does not use Knowledge Table data. You need to add components for each section (main home and each wing) of the home.

Member Description Data Type Read Only

Building Reference to the HighValueAdvancedBuilding object.

HighValueAdvancedBuilding

HighValueCustomItem System.Object CustomItem HighValueCustomItem

Represents a custom item that can be added to a high value home.

Member Description Data Type Read Only

UnitCost The unit cost for a custom item can be specified by providing either the total unit cost or the breakdown (labor, equipment, and material) cost.

This member lets you specify the total per unit cost for the custom item. Input a decimal number from 0 to 10,000,000.

Decimal

BreakdownCost Reference to a BreakdownCost object. The members of the BreakdownCost object should be set to the labor, equipment, and material cost for the custom item.

BreakdownCost

CoverageType For individual custom items, you can specify whether the cost for the item is part of Coverage A or Coverage B in the policy.

CoverageType

FIT Classes

RCT Field Inspection Transfer Version 3.10 Integration Guide 37

HighValueSection System.Object Section HighValueSection

A section class that holds attributes common to both the high value standard and advanced house types.

Member Description Data Type Read Only

MeasuredPerimeter The actual ground perimeter of the section in linear feet.

Integer

FloorToFloorHeight List of all FloorToFloorHeight objects for this section.

FloorToFloorHeightList

Component List of all component objects to be included in this section.

ComponentList

HighValueStandardBuilding System.Object Building HighValueStandardBuilding

Represents a high value home that uses the standard entry method. When using the standard entry method, only foundation/basement components need to be added to the section/wing. All other components are added to the building. A high value home using the standard entry method can have up to ten sections added to its building.

Member Description Data Type Read Only

Section List of all HighValueStandardSection objects for this home.

HighValueStandardSectionList

Component List of component objects to be included in this building.

ComponentList

Chapter 3 Object Model

38 RCT Field Inspection Transfer Version 3.10 Integration Guide

HighValueStandardSection System.Object Section HighValueSection HighValueStandardSection

This class holds a section for a high value home that uses the standard entry method. When using the standard entry method, only foundation/basement components are added to the individual sections. The system uses Knowledge Tables to apply the values you enter for the building to all sections (main home and any wings) of the house.

Member Description Data Type Read Only

PerimeterChoice Lets you specify whether the perimeter of a home is being entered or if the system should compute it based on the shape of the home.

PerimeterChoice

Shape Allows you to specify the shape of the home. The system automatically calculates the perimeter based on the shape of the home specified.

SectionShape

HighValueStandardValuation System.Object Valuation CalculatableValuation HighValueValuation HighValueStandardValuation

This is the valuation class for a high value home that uses the standard entry method. When you use the standard entry method, the system uses Knowledge Tables that apply the materials you enter for the building to all sections (main home and any wings) of the home.

Member Description Data Type Read Only

Building Reference to the HighValueStandardBuilding object.

HighValueStandardBuilding

HighValueValuation System.Object Valuation CalculatableValuation HighValueValuation

This is the base valuation class for all high value homes that use the standard or advanced entry method.

Member Description Data Type Read Only

CustomItem List of all HighValueCustomItem objects that need to be included in this valuation.

HighValueCustomItemList

FIT Classes

RCT Field Inspection Transfer Version 3.10 Integration Guide 39

InsuredCustomer System.Object InsuredCustomer

Contains information about the customer that owns the house being valued.

Member Description Data Type Read Only

FullName The name of the owner of the residence being valued.

String

SecondFullName The name of a second owner of the residence being valued.

String

HomePhone The home phone number for the insured of the property being valued.

String

WorkPhone The work phone number for the insured of the property being valued.

String

MailingAddressSameAsPropertyAddress Indicates that the mailing address is the same as the property address.

Bool

MailingAddress The insured’s address, if different from the property being valued.

Address

LatLongPair System.Object LatLongPair

Represents the latitude and longitude for the property being valued.

Member Description Data Type Read Only

Latitude The angular distance north or south from the earth's equator.

Decimal

Longitude The angular distance east or west from the earth’s zero meridian.

Decimal

Chapter 3 Object Model

40 RCT Field Inspection Transfer Version 3.10 Integration Guide

LengthWidth System.Object LengthWidth

This class is used to specify the length and width of a section when using the LengthxWidth living area entry method.

Member Description Data Type Read Only

Length The length of the section of the home. Decimal

Width The width of the section of the home. Decimal

Example

If the home has more than one section (for example, a main section and one a wing), measure each section separately. Do not measure them as one section.

MainstreetBuilding System.Object Building MsMmhBuilding MainstreetBuilding

Represents a main street building. A main street building can have up to three sections added to it.

Member Description Data Type Read Only

NumberOfFamilies The number of family units (one family, two family, three family, or four family) in the residence.

Byte

Section List of all MainstreetSection objects for this home.

MainstreetSectionList

FIT Classes

RCT Field Inspection Transfer Version 3.10 Integration Guide 41

MainstreetSection System.Object MsMmhSection MainstreetSection

This class holds a section for a main street home.

Member Description Data Type Read Only

FoundationAndBasement Reference to the FoundationBasementInfo object.

FoundationBasementInfo

Shape Allows you to specify the shape of the home. The system automatically calculates the perimeter based on the shape of the home specified.

SectionShape

CathedralCeilingPct The percentage of the ceiling that angles upward from the walls to the peak, following the roof’s pitch. Do not include tray ceilings.

Byte

ElaborateRoof Set to true if the roof has combinations of several styles that creates several peaks and valleys, or includes several dormers.

Bool

FloorToFloorHeight List of all FloorToFloorHeight objects for this section.

FloorToFloorHeightList

Framing List of all FramingBreakdown objects for this section.

FramingBreakdownList

Foundation List of all FoundationBreakdown objects for this section.

FoundationBreakdownList

MainStreetValuation System.Object Valuation CalculatableValuation MsMmhValuation MainStreetValuation

This is the valuation class for a main street home.

Member Description Data Type Read Only

Building Reference to the MainstreetBuilding object.

MainstreetBuilding

Chapter 3 Object Model

42 RCT Field Inspection Transfer Version 3.10 Integration Guide

MaterialDetail System.Object MaterialDetail

Represents detailed information about a material.

Member Description Data Type Read Only

Id The unique identifier for the material/component.

String X

Min The minimum allowable amount for the material/component.

Integer X

Max The maximum allowable amount for the material/component.

Integer X

UnitOfEntry The unit of entry (e.g., square feet, percentage, count) for the material/component.

MaterialUnit X

Value The description of the material/component.

String X

MaterialSubsystem System.Object MaterialSubsystem

Represents a material subsystem. A material subsystem is a subcategory of material systems used to group materials into categories. For example, material systems include components such as exterior walls, attached structures, and heating and cooling. Within the heating and cooling material system are material subsystems such as air conditioning, heating, and others.

Member Description Data Type Read Only

Name The name of the subsystem. String X

Material List of MaterialDetail objects for this subsystem.

MaterialDetailList X

Id The unique identifier for the subsystem. Integer X

FIT Classes

RCT Field Inspection Transfer Version 3.10 Integration Guide 43

MaterialSystem System.Object MaterialSystem

The materials used for a home are grouped into categories for ease of data entry, e.g., exterior walls, roof, HVAC, etc. These categories are called material systems. This class is used by the Reference service to return a list of material systems and detailed material information for all materials that can be added to these systems.

Member Description Data Type Read Only

Subsystem List of MaterialSubsystem objects for this material system

MaterialSubsystemList X

MmhBuilding System.Object Building MsMmhBuilding MmhBuilding

Represents an MMH building. An MMH building can have only one section added to it.

Member Description Data Type Read Only

Section List of all MmhSection objects for this home.

MmhSectionList

MmhFoundationBasementInfo System.Object FoundationBasementInfo MmhFoundationBasementInfo

This class holds foundation and basement information for a mobile manufactured home.

Member Description Data Type Read Only

BasementPct The total percentage of the first floor of the home that has a basement below.

Byte

PiersRaisedPct The total percentage of the first floor of the home that is built on a pier or raised foundation.

Byte

BasementInfo Reference to the BasementInfo object. BasementInfo

Chapter 3 Object Model

44 RCT Field Inspection Transfer Version 3.10 Integration Guide

MmhFramingBreakdown This class holds the framing information for a mobile manufactured home section. The class allows you to specify several framing types along with their associated percentages that are used within the home. The total of all framing percentages should be 100%.

Member Description Data Type Read Only

Type The type of framing used to build the section of the home.

MmhFramingType

Percent The percentage of the section that uses the framing type specified in the Type member above.

Byte

MmhSection System.Object MsMmhSection MmhSection

This class holds a section for a mobile manufactured home.

Member Description Data Type Read Only

FoundationAndBasement Reference to the MmhFoundationBasementInfo object.

MmhFoundationBasementInfo

HingedRoof Set to true if the roof is hinged for transportation under bridges for delivery.

Bool

Framing List of all MmhFramingBreakdown objects for this section.

MmhFramingBreakdownList

MMHValuation System.Object Valuation CalculatableValuation MsMmhValuation MMHValuation

This is the valuation class for a mobile manufactured home.

Member Description Data Type Read Only

Building Reference to the MmhBuilding object. MmhBuilding

FIT Classes

RCT Field Inspection Transfer Version 3.10 Integration Guide 45

MSFloorToFloorHeight System.Object FloorToFloorHeight MSFloorToFloorHeight

Represents the distance from the top of a floor to the top of the next floor for a main street home.

Member Description Data Type Read Only

Percentage The percentage of the home that the height applies to. The total percentage of all instances of the MSFloorToFloorHeight class that are added to a section must equal 100%.

Integer

Height Wall height in feet. Choices are limited to 8, 9, and 10 feet.

MainStreetWallHeight

MsMmhBuilding System.Object Building MsMmhBuilding

This is the base building class for a main street and mobile manufactured home building.

Member Description Data Type Read Only

Component List of component objects to be included in this building.

ComponentList

MsMmhCustomItem System.Object CustomItem MsMmhCustomItem

Represents a custom item that can be added to a main street or mobile-manufactured home.

Member Description Data Type Read Only

BreakdownCost Reference to a BreakdownCost object. The members of the BreakdownCost object should be set to include the labor, equipment, and material cost for the custom item.

BreakdownCost

Chapter 3 Object Model

46 RCT Field Inspection Transfer Version 3.10 Integration Guide

MsMmhSection System.Object MsMmhSection

This section class holds attributes common to a main street and mobile manufactured home.

Member Description Data Type Read Only

PerimeterChoice Lets you specify whether the perimeter of a home is being entered or if the system should compute it based on the shape of the home.

PerimeterChoice

MeasuredPerimeter The actual ground perimeter of the section in linear feet.

Integer

LengthAndWidth Reference to the LengthWidth object used when the LengthxWidth living area entry method is used.

LengthWidth

LivingAreaEntryMethod You can specify the total living area for a section or let the system calculate the living area. This member allows you to specify the type of entry method desired.

LivingAreaEntryMethod

MsMmhValuation System.Object Valuation CalculatableValuation MsMmhValuation

This is the base valuation class for a main street and mobile manufactured home.

Member Description Data Type Read Only

MsMmhCustomItem List of all MsMmhCustomItem objects that need to be included in this valuation.

MsMmhCustomItemList

FIT Classes

RCT Field Inspection Transfer Version 3.10 Integration Guide 47

NonStandardizedCostAdjustment System.Object Adjustment NonStandardizedCostAdjustment

Clients using the RCT system can use standardized or nonstandardized cost to compute the value of a house. When standardized cost is used, the calculated totals will reflect a uniform set of costs for architect fees, general contractor overhead and profit, and debris removal. When nonstandardized cost is used, the client has the flexibility to specify adjustments to architect's fees, general contractor overhead and profit, and debris removal. These adjustments impact the valuation of the home.

Member Description Data Type Read Only

ArchitectFee Reference to an AdjustmentParameters object that lets you override the default architect fees used to compute the value of the home.

AdjustmentParameters

GeneralContractorOverhead Reference to an AdjustmentParameters object that lets you override the default general contractor’s overhead used to compute the value of the home.

AdjustmentParameters

GeneralContractorProfit Reference to an AdjustmentParameters object that lets you override the default general contractor’s profit used to compute the value of the home.

AdjustmentParameters

DebrisRemoval Reference to an AdjustmentParameters object that lets you override the default debris removal amount used to compute the value of the home.

AdjustmentParameters

Preferences This class holds the default preferences for the home.

Member Description Data Type Read Only

ExcavationFlag The default excavation flag. Bool

Chapter 3 Object Model

48 RCT Field Inspection Transfer Version 3.10 Integration Guide

PrimaryStructureCost System.Object Cost PrimaryStructureCost

This class holds a detailed breakdown of the cost data for the primary structure of the home.

Member Description Data Type Read Only

LaborCost Labor cost for building the primary structure.

Integer X

EquipmentCost Equipment cost for the primary structure.

Integer X

MaterialCost Material cost for the primary structure. Integer X

SubTotal The sum of EquipmentCost, LaborCost, and MaterialCost calculated for the primary structure.

Integer X

TotalReplacementCost Expected cost of rebuilding from scratch including debris removal, architect’s fees, and general contractor overhead and profit.

Integer X

PolicyExclusions Items excluded from the policy.

Note: RCT does not itemize exclusions separately. They are incorporated within TotalReplacementCost, so this value is always 0.

Integer X

CurrentCoveragePercentOfIRC Current Coverage as a percent of primary structure InsurableReplacementCost.

Decimal X

PrimaryStructureNonStandardizedCost System.Object Cost PrimaryStructureCost PrimaryStructureNonStandardizedCost

This class holds cost data for the primary structure when standardized cost is not used.

Member Description Data Type Read Only

GeneralContractorOverhead Sum of general contractor overhead costs calculated for the primary structure.

Integer X

GeneralContractorProfit Sum of general contractor profit costs calculated for the primary structure.

Integer X

ArchitectFee Sum of architect fees calculated for the primary structure.

Integer X

DebrisRemoval Sum of debris removal costs calculated for the primary structure.

Integer X

FIT Classes

RCT Field Inspection Transfer Version 3.10 Integration Guide 49

PrimaryStructureStandardizedCost System.Object Cost PrimaryStructureCost PrimaryStructureStandardizedCost

This class holds cost data for the primary structure when standardized cost is used.

Member Description Data Type Read Only

DebrisRemoval Sum of debris removal costs calculated for the primary structure.

Integer X

SubtotalAfterDebrisRemoval SubtotalCost less DebrisRemoval. Integer X

FinishedFloorArea Finished Floor Area Integer X

TotalFloorArea Total Floor Area Integer X

Room System.Object Room

This class is used to specify the number of rooms in a section of a home when using the RoomCount living area entry method.

Member Description Data Type Read Only

Type The type of the room. RoomType

Size The size of the room. RoomSize

Number The number of rooms for the type and size specified.

Byte

Chapter 3 Object Model

50 RCT Field Inspection Transfer Version 3.10 Integration Guide

Section System.Object Section

The home being valued can be divided into a main home section and other sections or wings.

Member Description Data Type Read Only

Number The section number. The main home section must be section number 1. Duplicate section numbers are not allowed. For the standard entry method, the home is limited to 10 sections.

Byte

Name Provide a descriptive name for the home section, for example, instead of "Wing 1," use "1985 Addition." The name is ignored for section number 1 (main home).

String

YearBuilt Input the year this section of the residence was built.

Short

ConstructionType Identifies whether the section is of standard or vintage (pre-1930 or pre-1940) construction.

ConstructionType

NoOfStories The total number of stories for the residence you are valuing.

Decimal

LivingArea The total living area is the size of the home (in square feet) based upon the exterior dimensions.

Integer

The following table lists the maximum number of sections for each of the supported house types.

House Type Maximum Sections

Main Street 3

Mobile-Manufactured 1

High Value Standard Entry 10

High Value Advanced Entry Unlimited

FIT Classes

RCT Field Inspection Transfer Version 3.10 Integration Guide 51

StandardizedAddress System.Object Address StandardizedAddress

Represents a property address that has been standardized.

Member Description Data Type Read Only

Country The country where the standardized address is located.

String X

MatchCode A Geostan-specific alphanumeric coding indicating the quality of the match.

String X

BlockCode The U.S. Census block code. String X

LocationCode The Geostan coding detailing the known qualities of the location. An address location code has three characters: The first character is always an "A" indicating an address location. The second character is either an "S" indicating a location on a street range, or an "X" indicating a location on an intersection of two streets. The third character is a digit indicating other qualities about the location.

String X

LatLong Reference to the LatLongPair object. LatLongPair X

Valuation System.Object Valuation

This is the base class for different types of valuations.

Member Description Data Type Read Only

ValuationIdentifier Reference to the ValuationIdentifier object.

ValuationIdentifier

RecordType Denotes if the valuation is an estimate, a policy, or an inspection.

RecordType

PolicyStatus The status of the policy. You can only set the policy status to In Preparation or Complete. A valuation cannot be set to Complete until it is assigned a policy number, that is, it must be a policy and not an estimate and the valuation must have been calculated.

PolicyStatus X

DataSource Defines the process that created the valuation.

DataSource X

PropertyAddress Reference to the Address object for the property being valued.

Address

PropertyStandardizedAddress Reference to the StandardizedAddress object.

StandardizedAddress X

Chapter 3 Object Model

52 RCT Field Inspection Transfer Version 3.10 Integration Guide

Member Description Data Type Read Only

OwnerUser Login of the user currently assigned to handle the valuation.

String

AssignedByUser Login of the user that assigned the valuation to the OwnerUser.

String X

CreateDate The date and time when the valuation was first created.

DateTime

CreateUser Login of the user who originally created the valuation.

String

UpdateDate The date and time the valuation was last updated.

DateTime

UpdateStatusDate The date and time the status of the valuation was last updated.

DateTime

UpdateUser Login of the user who updated the valuation last.

String

PolicyEffectiveDate The date when the policy was put into effect.

DateTime

PolicyRenewalDate The date when the policy is up for renewal.

DateTime

EstimateExpirationDate The date when the estimate will expire and be removed from the system if the estimate has not been assigned a policy or record number. The expiration date is calculated by adding a client configuration number of days to the date the estimate was created.

DateTime

InsuredCustomer Reference to the InsuredCustomer object.

InsuredCustomer

Comment List of comments for the valuation. CommentList

HazardInfo Reference to the HazardInfo object. HazardInfo

LatLong Reference to the LatLongPair object. LatLongPair

Amount The current Coverage A amount for the policy (up to $999,999,999).

Integer

AccountNumber The account number or identifier assigned to the policy. Input a maximum of 20 characters.

String

FIT Classes

RCT Field Inspection Transfer Version 3.10 Integration Guide 53

ValuationAggregate System.Object ValuationAggregate

This is an aggregate class that can hold valuations of different types. The class lets the Web services consume or return different types of valuation objects, e.g., MainStreetValuation, HighValueAdvancedValuation, etc., using the same Web method signature. For example, the ExportValuationRecordId Web method returns a ValuationAggregate object. The valuation type contained within the aggregate class depends on the type of valuation being exported.

Member Description Data Type Read Only

Item Reference to either the MainStreetValuation, MMHValuation,HighValueStandardValuation, or HighValueAdvancedValuation object. The ValuationAggregate contains only one instance of any type.

Valuation

The following code sample demonstrates how to identify the type of valuation that is contained within a ValuationAggregate object in C#.NET.

/* * perform the export operation

*/

ValuationService.ValuationAggregate exportValuation = service.ExportValuationPolicyNumber(policyNumber);

//test for the type returned by the export if(exportValuation.Item.GetType().Name == "HighValueStandardValuation")

System.Console.Out.WriteLine("High Value Standard Valuation");

if (exportValuationItem.GetType().Name == "HighValueAdvancedValuation") System.Console.Out.WriteLine("High Value Advanced Valuation");

The following code sample demonstrates how to identify the type of valuation that is contained within a ValuationAggregate. This code is based on the numerous getters that Apache Axis generates for each of the data types, which may be present in the ValuationAggregate.

/* * perform the export operation

*/

ValuationAggregate exportValuation = service.exportValuationPolicyNumber(policyNumber);

//test for the type returned by the export if(exportValuation.getHVStandardValuation() != null)

System.out.printIn("High Value Standard Valuation");

if (exportValuation.getHVAdvancedValuation() != null)

System.out.printIn("High Value Advanced Valuation");

Chapter 3 Object Model

54 RCT Field Inspection Transfer Version 3.10 Integration Guide

ValuationHistory System.Object ValuationHistory

A valuation may go through many iterations or versions. This class provides summary information for all the prior versions of a valuation.

Member Description Data Type Read Only

RecordId The unique identifier that identifies the complete set of all versions of a valuation.

Integer X

PolicyNumber The policy number assigned to a valuation.

String X

VersionSummary A list of VersionSummary objects. VersionSummaryList X

ValuationIdentifier System.Object ValuationIdentifier

This class holds attributes that uniquely identify a valuation.

Member Description Data Type Read Only

RecordId The unique identifier that identifies the complete set of all versions of a valuation.

Integer

PolicyNumber The policy number assigned to a valuation.

Note: If a policy number is not supplied the valuation will be created as an estimate. The policy number can contain up to 30 letters and numbers.

String

VersionId A valuation may go through many iterations or versions. The system stores information about them so the user can refer back to earlier versions. The VersionId is the unique database identifier for an existing version of a valuation.

Integer

FIT Classes

RCT Field Inspection Transfer Version 3.10 Integration Guide 55

VersionSummary System.Object VersionSummary

Represents an iteration or version of a valuation.

Member Description Data Type Read Only

VersionId A valuation may go through many iterations or versions. The VersionId is the unique database identifier for a valuation version.

Integer X

ValuationType The type of valuation. ValuationType X

RecordType Denotes if the valuation is an estimate, a policy, or an inspection.

RecordType X

PolicyStatus The status of the policy. PolicyStatus X

Datasource Defines the process that created the valuation.

DataSource X

UpdateDate The date the version was last updated. DateTime X

InsuredFullName The name of the owner of the residence. String X

WholeBuildingCost System.Object WholeBuildingCost

Cumulative cost data for the primary structure and all detached structures of the house.

Member Description Data Type Read Only

InsurableReplacementCost The insured replacement cost for the primary structure and all detached structures.

Integer X

InsuredValue The insured value of the primary structure and all detached structures.

Integer X

Chapter 3 Object Model

56 RCT Field Inspection Transfer Version 3.10 Integration Guide

SeamlessSelectionAnswer System.Object SeamlessSelectionAnswer

Key value pair of Seamless Selection answers. Used in Inspection Service.

Member Description Data Type Read Only

Key Identifier key for the questions being answered.

Examples of Question Keys:

• FancyKitchenBath

• ElaborateRoof

• MegaGarage

• DeluxeAppointmentsThroughout

• ElaborateCeilings

• ElegantStaircases

• SpecialPurposeRoomsOrDetachedStructures

String

Value True/false answer to the question Boolean

SeamlessSelectionAnswerList System.Object SeamlessSelectionAnswerList

Array list of SeamlessSelectionAnswer.

Member Description Data Type Read Only

Answer Array element of SeamlessSelection type

SeamlessSelectionAnswer

FIT Classes

RCT Field Inspection Transfer Version 3.10 Integration Guide 57

SeamlessSelectionQuestion System.Object SeamlessSelectionQuestion

Define valid Seamless Selection question. Used in Reference Service.

Member Description Data Type Read Only

Key Identifier key for the questions being answered.

Examples of Question Keys:

• FancyKitchenBath

• ElaborateRoof

• MegaGarage

• DeluxeAppointmentsThroughout

• ElaborateCeilings

• ElegantStaircases

• SpecialPurposeRoomsOrDetachedStructures

String X

Title Brief descriptive question String X

Description Detail explanation of the question String

SeamlessSelectioQuestionList System.Object SeamlessSelectionAnswerList

Array list of SeamlessSelectionQuestion.

Member Description Data Type Read Only

Question Array element of SeamlessSelectionQuestion type

SeamlessSelectionQuestion X

Chapter 3 Object Model

58 RCT Field Inspection Transfer Version 3.10 Integration Guide

FIT Enumerations DeliveryOptions Member Description

ArchiveInspection The inspection version is archived to history and no new policy version is created. The current policy version is not updated.

OverwritePolicy The inspection version is archived to history and a new policy version is created by making a copy of the inspection version. The newly created policy version is marked with a status of ‘Complete’ and becomes the current version of the policy. If the prior current version of the policy had a status of ‘In-Prep’ its status is changed to superseded.

Merge The inspection version is archived to history and a new policy version is created by merging the exterior data from the inspection version with the interior data from the most current and complete policy version. The newly created policy version is marked with a status of ‘Complete’ and becomes the current version of the policy. If the prior current version of the policy had a status of ‘In-Prep’ its status is changed to superseded.

None This option indicates that the carrier does not permit an inspection company to submit inspections for a specific house type and inspection type combination.

FileTypes Member Description

BMP Bitmap Graphics format

GIF Graphics Interchange Format

JPG Joint Photographic Experts Group format

PDF Adobe Portable Document Format

InspectionHouseTypes Member Description

MainStreetHome A traditional home built on site.

MobileManufacturedHome A home manufactured/built elsewhere and then transported to the home site for permanent placement.

StandardHighValueHome A high value home built on-site. If you use the standard entry method, you only need to add foundation/basement materials to the section/wing. All other materials should be added to the building. The system uses Knowledge Tables to apply the materials you add to the building to all sections of the house (main home and each wing).

AdvancedHighValueHome A high value home built on-site. If you use the advanced entry method, the system does not use Knowledge Table data. You must enter materials for each section of the house (main home and each wing).

FIT Enumerations

RCT Field Inspection Transfer Version 3.10 Integration Guide 59

InspectionQuestionUsage Member Description

Required Indicates a question is required and needs to be answered by the inspector.

NotRequired Indicates an optional question that is not required to be answered by the inspector.

InspectionTypes Member Description

InOut An interior and exterior inspection.

Exterior An exterior only inspection.

ValidationLevels Member Description

Error Generates an error if an underwriting question provides an invalid answer.

Warning Generates a warning if an underwriting question provides an invalid answer.

Chapter 3 Object Model

60 RCT Field Inspection Transfer Version 3.10 Integration Guide

BuildingSystem Member Description

Sitework Holds the cost for preparing the site for construction.

Foundations Holds the cost for construction of the foundation of a home.

SlabonGrade Holds the cost of constructing the foundation on a hillside site.

Framing Holds the cost for exterior wall finishes.

Roofing Holds the cost for roof finishes, shape, style, dormers, and specialty items such as cupolas and skylights.

ExteriorWalls Holds the cost for exterior wall construction, columns, balconies, and specialty items such as skirting and trim/molding.

Partitions Holds the cost for interior partition wall construction, columns, bookcases, and specialty items such as interior doors and wall niches.

WallFinishes Holds the cost for interior wall finishes.

FloorFinishes Holds the cost for floor finishes and extra items such as molding.

CeilingFinishes Holds the cost for ceiling finishes and extra items such as molding.

ConveyingSystems Devices that move people or items from one place to another, for example, elevators and escalators.

PlumbingSystems Holds the cost for the plumbing system in the home.

HVACSystems Holds the cost for the heating and cooling system in the home.

ElectricalSystems Holds the cost for the electrical system in the home.

AttachedStructures Holds the cost for all structures that are attached to the home.

DetachedStructures Holds the cost for all structures that are detached from the home.

GeneralConditions Additional costs associated with, but not limited to, construction and licensing fees or permits, architect’s fees, inspection fees, etc.

ConstructionType Member Description

Standard Use standard (present-day) material Knowledge Table data, and calculate using standard construction type.

Vintage Use pre-1930 or pre-1940 material Knowledge Table data, and calculate using pre-1930 or pre-1940 construction type.

StandardVintage Use vintage component/material Knowledge Table data but calculate using standard (present day) construction type.

FIT Enumerations

RCT Field Inspection Transfer Version 3.10 Integration Guide 61

CoverageType Member Description

A Coverage A (Dwelling) is the part of the dwelling policy that covers the dwelling and attached additions (for example, screened porches and breezeways, attached garage, etc.). Coverage A also covers the materials and supplies for the construction, alteration, or repair of the residence.

B Coverage B (Other Structures) is the part of the dwelling policy that covers unattached structures such as a private garage or tool shed.

DataSource Member Description

BW Valuation created via ExpressLync.

DESK Valuation uploaded from desktop application.

FIT Valuation created via FIT.

MSHV Valuation created via seamless selection

RENW Valuation created via renewal process.

WEB Valuation created via the RCT Express site.

MERG Valuation created via merge process.

TES Valuation created via Tele Estimate Service.

DepreciationChoice Member Description

None Do not depreciate the value of the home.

EnteredPercentage Use the user-entered percentage to calculate the depreciation for the home.

EffectiveAge Enter the effective age and let the system compute the depreciation for the home based on the age.

Chapter 3 Object Model

62 RCT Field Inspection Transfer Version 3.10 Integration Guide

HazardType Member Description

Brushfire Select this hazard to assign a fuel risk factor to the supplied address and display the distance to the nearest high or very high fuel location.

NOTE: This command is valid only in the following states: AZ, CA, CO, NM, NV, OR, UT, and WA.

DistanceToCoast Select this hazard to display the distance to the nearest body of water along with the names of the nearest major and minor bodies of water.

NOTE: This command is valid only in the following states: AK, AL, CA, CT, DE, FL, GA, HI, IL, IN, LA, MA, MD, ME, MI, MN, MS, NC, NH, NJ, NY, OH, OR, PA, RI, SC, TX, VA, WA, and WI.

Earthquake Select this hazard to identify the nearest earthquake region and fault and display the distance to the nearest earthquake fault.

NOTE: This command is valid only in CA.

PremiumTax Select this hazard to display premium tax district information. The rules and taxing authorities vary by state.

NOTE: This command is valid only in AL, FL, GA, KY, LA, NJ, and SC.

Sinkhole Select this hazard to identify the location, size and other facts of all known sinkholes in Florida.

NOTE: This command is valid only in FL.

Windpool A windpool area is a high hurricane/flood risk area near the coast. Select this hazard to identify the closest windpool territory and if the location is in that territory.

NOTE: This hazard is valid only in AL, FL, GA, LA, MS, NC, SC, and TX.

FIT Enumerations

RCT Field Inspection Transfer Version 3.10 Integration Guide 63

HomeStyle Member Description

Story_1 A home with one story of living area. The roof structure typically has a medium slope. The attic space is limited and is not intended for living area.

Story_1point5 A residence with two levels of living area, characterized by a steep roof slope and dormers (which project from the roof and have windows on their fronts). Because of the roof design, the area of the second floor is usually 40% to 70% of the ground floor area.

Story_1point75 A residence with one full level of living area and a second level that is characterized by a steep roof slope and dormers (which project from the roof and have windows on their fronts). Because of the roof design, the area of the second floor is usually 80% of the ground floor area. Sometimes referred to as a "Salt Box."

Story_2 A residence with finished living area on two floors. The area of each floor is approximately the same. The roof structure has a medium slope. The attic space is limited and is not intended for living area.

Story_2point5 A residence with three levels of living area characterized by a steep roof slope and dormers (which project from the roof and have windows on their fronts). Because of the roof design, the area of the third floor is usually 40% to 70% of the ground floor area.

Story_2point75 A residence with two full levels of living area, and a third level that is characterized by a steep roof slope and dormers (which project from the roof and have windows on their fronts). Because of the roof design, the area of the third floor is usually 80% of the ground floor area.

Story_3 A residence with finished living area on three floors. The area of each floor is approximately the same. The roof structure has a medium slope. The attic space is limited and is not intended for living area.

Story_3point5 A residence with four levels of living area characterized by a steep roof slope and dormers (which project from the roof and have windows on their fronts). Because of the roof design, the area of the fourth floor is usually 40% to 70% of the ground floor area.

Story_3point75 A residence with three full levels of living area and a fourth level that is characterized by a steep roof slope and dormers (which project from the roof and have windows on their fronts). Because of the roof design, the area of the fourth floor is usually 80% of the ground floor area.

Story_4 A residence with finished living area on four floors. The area of each floor is approximately the same. The roof structure has a medium slope. The attic space is limited and is not intended for living area.

Story_4point5 A residence with five levels of living area characterized by a steep roof slope and dormers (which project from the roof and have windows on their fronts). Because of the roof design, the area of the fifth floor is usually 40% to 70% of the ground floor area.

Story_4point75 A residence with four full levels of living area and a fifth level that is characterized by a steep roof slope and dormers (which project from the roof and have windows on their fronts). Because of the roof design, the area of the fifth floor is usually 80% of the ground floor area.

Story_5 A residence with finished living area on five floors. The area of each floor is approximately the same. The roof structure has a medium slope. The attic space is limited and is not intended for living area.

Chapter 3 Object Model

64 RCT Field Inspection Transfer Version 3.10 Integration Guide

Member Description

BackSplit A residence that is divided front to back, with three levels of finished living area: lower level, intermediate level and upper level. The lower level is immediately below the upper level as in a two-story residence. The intermediate level, adjacent to the other levels, is built on a grade approximately one-half story higher than the lower level. Back split homes have a split roof design. Use the split level style for homes that are divided side to side.

BiLevel A residence with two levels of living area, with the lower level being completely finished and normally partially below grade (with no basement below it). The entrance is a split-foyer entrance.

BilevelRowCenter An attached single-family residence with two levels of living area, with the lower level being fully finished and normally partially below grade (with no basement below it). The entrance is a split-foyer entrance. Each bilevel rowhouse unit is one of a group of two or more units joined by common walls. Such units never have units above or below, always have individual exterior walls and never have more than two walls common with adjacent units.

A center unit is inside a row, with other units on either side. This style is especially common throughout Canada.

BilevelRowEnd An attached single-family residence that has two levels of living area with the lower level being fully finished and normally partially below grade (with no basement below it). The entrance is a split-foyer entrance. Each bilevel rowhouse unit is one of a group of two or more units joined by common walls. Such units never have units above or below, always have individual exterior walls and never have more than two walls common with adjacent units.

An end unit is at the end of a row, with only one other unit adjacent to it. This style is especially common throughout Canada.

Bungalow A small, one-story house popular in the early 20th century, typically with a front porch (either open or enclosed). The most common bungalows, including California bungalows, have wood siding or wood shingle exterior walls and wood shingle roofs. Large roof overhangs are common and walls flow front to back.

CapeCod A residence with two levels of living area characterized by a steep roof slope and dormers (which project from the roof and have windows on their fronts). Because of the roof design, the area of the second floor is usually 40% to 70% of the ground floor area.

Colonial A residence with finished living area on two floors. The area of each floor is approximately the same. The roof structure has a medium slope. The attic space is limited and is not intended for living area.

CondoCoOp This style is used to calculate the costs typically covered by a condo or co-op policy. The costs include the inside features such as partition material (for example, drywall, plaster, etc.), wall, floor, and ceiling coverings, kitchen, and baths. It does not and should not include the foundation, exterior walls, roof, framing, or detached structures.

Note: If you choose this style, do not enter any information on the exterior wall, roofing, or foundation. The only exception to this would be if you have a finished basement. You input a finished basement to the foundation material system in the main home section.

Contemporary A residence designed from combinations of square and rectangular geometric patterns, blending both interiors and exteriors. Contemporary residences typically contain multiple roof lines where roofs are flat or flat with a slight pitch (shed roof). Exteriors are often plain with little or no ornate trim, typically with extensive use of glass. The designs of these residences are more modern and less traditional. They typically have wide open interiors with fewer partitions than other traditional home styles.

FIT Enumerations

RCT Field Inspection Transfer Version 3.10 Integration Guide 65

Member Description

Cottage A small, one story cabin-like home, typically used as a seasonal home or a second dwelling on a property. Cottages generally have minimal or no foundation, instead resting on posts at the corners of the home.

FederalColonial Typically a 2-story home that is generally found in the eastern part of the United States. It is characterized by its flat roof and ornate wood trim along the exterior roof line. It is generally square in design and is typically an early 20th century or older structure. Exterior walls are normally painted wood.

Mediterranean A home in the Mediterranean style, including stucco exterior walls, typically pastel or white in color, red tile roof, arched openings and considerable use of wrought iron. Often found with arched windows and balconies.

OrnateVictorian A residence with 2-1/2 or 3 stories of living area, typical of the architectural style in the late 19th century. Ornate Victorians typically have extensive use of elaborate exterior and interior finishes and trims, including 36" of gingerbread on at least three lines of the house. They also include bay windows, turrets, tall chimneys and extensive porches. Use the Victorian style for less extensive use of finishes and trim, including typically 18" gingerbread.

QueenAnne A traditional 2-1/2-story home, usually of pre-1940 construction. Generous use of wood trim, and interior and exterior finishes, with high partition density inside.

RaisedRanch A residence with two levels of living area, with the lower level being completely finished and normally partially below grade (with no basement below it). The entrance is a split-foyer entrance.

Rambler A home with one story of living area. The roof structure typically has a medium slope. The attic space is limited and is not intended for living area.

Ranch A home with one story of living area. The roof structure typically has a medium slope. The attic space is limited and is not intended for living area.

RowHouseCenter An attached single-family residence. Each town house or row house unit is one of a group of two or more units adjoined by common walls. Such units never have units above or below, always have individual exterior walls, and never have more than two walls common with adjacent units.

A center unit is inside a row, with other units on either side.

RowHouseEnd An attached single-family residence. Each town house or row house unit is one of a group of two or more units adjoined by common walls. Such units never have units above or below, always have individual exterior walls, and never have more than two walls common with adjacent units.

An end unit is at the end of a row, with only one other unit adjacent to it.

SouthwestAdobe A home made of adobe brick, found mainly in the Southwest region of the United States. Decidedly Western in presentation with various wood beams for both support and ornamentation. Roofs are typically flat and made of brick and are usually coated with Stucco.

SplitFoyer A residence with two levels of living area, with the lower level being completely finished and normally partially below grade (with no basement below it). The entrance is a split-foyer entrance.

SplitLevel A residence that is divided side to side, with three levels of finished living area: lower level, intermediate level and upper level. The lower level is immediately below the upper level as in a two-story residence. The intermediate level, adjacent to the other levels, is built on a grade approximately one-half story higher than the lower level. Split-level residences have a split roof design. Use the back split style for homes that are divided front to back.

Chapter 3 Object Model

66 RCT Field Inspection Transfer Version 3.10 Integration Guide

Member Description

Substandard Subsidized or substandard housing that resembles barracks or other low-grade habitational structures found more often as part of a government facility or government subsidized facility. These homes have limited trim, if any, and minimal partitions. They typically comply with federal government codes but not necessarily standard building codes.

TownhouseCenter An attached single-family residence. Each town house or row house unit is one of a group of two or more units adjoined by common walls. Such units never have units above or below, always have individual exterior walls, and never have more than two walls common with adjacent units.

A center unit is inside a row, with other units on either side.

TownhouseEnd An attached single-family residence. Each town house or row house unit is one of a group of two or more units adjoined by common walls. Such units never have units above or below, always have individual exterior walls, and never have more than two walls common with adjacent units.

An end unit is at the end of a row, with only one other unit adjacent to it.

Trilevel A residence that is divided side to side, with three levels of finished living area: lower level, intermediate level and upper level. The lower level is immediately below the upper level as in a two-story residence. The intermediate level, adjacent to the other levels, is built on a grade approximately one-half story higher than the lower level. Split-level residences have a split roof design. Use the Back Split style for homes that are divided front to back.

TrilevelRowCenter An attached single-family residence with three levels of finished living area: lower level, intermediate level and upper level. The lower level is immediately below the upper level as in a two-story residence. The intermediate level, adjacent to the other levels, is built on a grade approximately one-half story higher than the lower level. Each trilevel rowhouse unit is one of a group of two or more units joined by common walls. Such units never have units above or below, always have individual exterior walls, and never have more than two walls common with adjacent units.

A center unit is inside a row, with other units on either side. This style is especially common throughout Canada.

TrilevelRowEnd An attached single-family residence with three levels of finished living area: lower level, intermediate level and upper level. The lower level is immediately below the upper level as in a two-story residence. The intermediate level, adjacent to the other levels, is built on a grade approximately one-half story higher than the lower level. Each trilevel rowhouse unit is one of a group of two or more units joined by common walls. Such units never have units above or below, always have individual exterior walls, and never have more than two walls common with adjacent units.

An end unit is at the end of a row, with only one other unit adjacent to it. This style is especially common throughout Canada.

Victorian A residence with 2-1/2 or 3 stories of living area, typical of the architectural style in the late 19th century. Victorians typically have elaborate exterior and interior finishes and trims, including 18" of gingerbread on at least three lines of the house. They also include bay windows, turrets, tall chimneys and extensive porches. For Victorians with extensive use of finishes and trims, use the Ornate Victorian Style, which typically has 36" gingerbread.

FIT Enumerations

RCT Field Inspection Transfer Version 3.10 Integration Guide 67

Material Unit Member Description

Count The unit of entry for the material is count.

Percent The unit of entry for the material is percentage.

SquareFeet The unit of entry for the material is square feet.

LinearFeet The unit of entry for the material is linear feet.

PerimeterChoice Member Description

Default Use the default shape (rectangular) to compute the perimeter.

Entered Use the user-entered value for the perimeter.

Shape Use the specified shape to compute the perimeter.

PolicyStatus Member Description

In_Preparation The valuation is in preparation.

Pending_Review The valuation is waiting for underwriter to review and approve the policy.

Complete The valuation is complete. A valuation cannot be set to complete until it is assigned a policy number, that is, it must be a policy and not an estimate and the valuation must have been calculated.

Rejected The underwriter rejected the policy.

RenewallP The valuation is in the Renewal process state.

Superseded While the valuation was in the "In-Preparation" state, it was superseded by a newer version in the history.

RecordType Member Description

EST A version intended as the basis for a quote to a customer or prospective customer.

POL A version intended as the basis for a business contract.

INS A version generated after an inspector visits a property that is intended for validating the policy.

Chapter 3 Object Model

68 RCT Field Inspection Transfer Version 3.10 Integration Guide

SectionShape Member Description

Irregular The section shape is irregular.

Rectangular_or_Slightly_Irregular The section shape is rectangular

or slightly irregular.

Square The section shape is square.

Very_Irregular The section shape is very irregular.

FIT Enumerations

RCT Field Inspection Transfer Version 3.10 Integration Guide 69

SectionType Member Description

Whole_House Includes the entire house.

Vertical_Section A vertical section of the home.

Horizontal_Ground_Floor A horizontal section on the ground floor of the home.

Horizontal_Upper_Floor A horizontal section on the upper floor of the home.

Basement The total percentage of the first floor of the residence that has basement below.

Note: To qualify as a basement, you should be able to stand up in the space. If not, it is probably a crawl space.

Basement_Daylight A daylight basement is normally built on a sloping site where the foundation walls are partially exposed to allow for the installation of windows and a door. This type of basement allows for the door to open into the yard because the basement is at ground level. The exposed portion of the basement wall typically includes a stucco and paint finish on the exterior of standard concrete or masonry wall construction.

Attached_Garage A garage directly attached to the house that does not have any living area above.

Detached_Garage A free-standing, 1-story garage with an independent structural system (for example, foundation, roof, etc.), not attached to the home.

Detached_Garage_Living_Area_Above A free-standing garage with an independent structural system (for example, foundation, roof, etc.), not attached to the home, that includes finished living area on a second floor above the garage area.

Detached_Garage_Living_Area_Attached A free-standing garage with an independent structural system (for example, foundation, roof, etc.), not attached to the home, that includes finished living area adjacently attached.

BuiltIn_Garage A garage built into the residence at the first floor or grade level, which has living area above and which has been included in the dimensions/floor area of the house (the way it would be in a split-level or bilevel home).

Bathhouse Detached structure built on a slab, usually near a swimming pool and used for changing clothes and possibly showering.

Guesthouse A free-standing structure, separate from the main home that contains a living area for visitors or guests when they stay.

Note: Costs are based upon a 1 story structure, but this option can be used for a 2 story structure.

Studio A building usually used for painting or sculpting with an above average percentage of windows.

User_Defined The section type does not match any of the predefined types.

Chapter 3 Object Model

70 RCT Field Inspection Transfer Version 3.10 Integration Guide

SiteAccess Member Description

Difficult_Access_or_Steep_Terrain Site accessibility may be difficult for people, equipment, and materials to get to, in, and around the site. Accessibility for items such as a place for workers to park their vehicles may be difficult and delivery trucks may have difficulty getting to the site. In some cases, materials may need to be unloaded into smaller vehicles and delivered up to the site, then unloaded again. This type of condition will also be found with mountain construction.

Elevator_Access Site accessibility for condos, apartments and co-op units is made through elevator access. To get people, equipment, and materials to, in, and around the site, elevators must be used. Delivery trucks must be unloaded and materials must be loaded then unloaded again from the elevator. The additional labor must be taken into account when dealing with elevator access.

Flat_Area_Easy_Access_Roads Site accessibility is easy for people, equipment, and materials to get to, in, and around the site. Accessibility for items such as a place for workers to park their vehicles, a level area for unloading and storing materials, and the ability of delivery trucks to get directly to the site is also relatively easy.

Island_Access_Long_Distance Site accessibility for people, equipment, and materials to get to, in, and around the site is by ferryboat only (1 mile or more). The down time of the workers and delivery trucks must be taken into account when dealing with island construction.

Island_Access_Short_Distance Site accessibility for people, equipment, and materials to get to, in, and around the site is by ferryboat only (1 mile or less). The down time of the workers and delivery trucks must be taken into account when dealing with island construction.

Isolated_Rural_Area The availability of people, equipment, and materials are not locally available. Remote sites are difficult to access and will increase the construction cost.

Mountain_Region Accounts for the building costs in mountain resort areas where costs are high, and site access is more challenging than standard conditions. These two factors combined comprise the Mountain Region Conditions, which accounts for the labor rates and material costs reflecting the higher demand for labor and material in addition to added challenges involved in material delivery in these areas.

Narrow_or_Hillside_Area Site accessibility may be slightly difficult for people, equipment, and materials to get to, in, and around the site. Accessibility for items such as a place for workers to park their vehicles may also be slightly difficult. Due to site slope, storage and unloading of materials requires accommodations not observed in level sites. Materials and delivery trucks may not be able to get directly to the site.

Slightly_Congested_Roads Site accessibility may be slightly difficult for people, equipment, and materials to get to, in, and around the site. Accessibility for items such as a place for workers to park their vehicles may also be slightly difficult. There may be a slightly un-level area for the unloading and storage of materials and delivery trucks may or may not be able to get directly up to site.

FIT Enumerations

RCT Field Inspection Transfer Version 3.10 Integration Guide 71

Unit Member Description

LF100 100 linear feet

SF100 Square

Count Count

CuFt Cubic foot

CuYd Cubic yard

Day Day

Each Each

Flt Flight

Lbs Pounds

LinFt Lineal foot

LumpSumCost Lump sum cost

Mos Months

SqFt Square foot

SqYd Square yard

Weeks Weeks

WageType Member Description

Reconstruction The system will calculate the cost to construct, at current prices, an exact duplicate or replica of the building using like kind and quality material, construction standards, design, layout, and quality of workmanship.

New_Construction The system will calculate the cost to replace the entire building with one of equal quality and utility.

Use_Default The system will select the most appropriate value basis, dependent on location and other related determinants.

Chapter 3 Object Model

72 RCT Field Inspection Transfer Version 3.10 Integration Guide

BasementFinishType Member Description

Standard A basement finish is considered to have a standard finish if it includes the following

• Drywall installed around the perimeter, over the insulation

• Interior drywall partitions

• Hollow core doors

• Painted drywall wall finishes

• Painted drywall ceiling

• Carpet and vinyl tile floor finishes

• Standard electrical outlets and lighting

• Standard heating system

Custom A basement is considered to have a custom finish if it includes the following

• Drywall installed around the perimeter, over the insulation

• Ample interior drywall partitions

• Solid core doors

• Partial millwork paneling and painted drywall wall finishes

• Painted drywall ceiling and linear wood ceiling

• High quality carpet floor finish

• Ample electrical outlets and lighting

• Heating and air conditioning system

BasementType Member Description

BelowGrade Below the grade basement

DaylightWalkout Walkout basement

FoundationType Member Description

Stone Stone foundation

Brick Brick foundation

Concrete Poured concrete foundation

Block Concrete block foundation

FIT Enumerations

RCT Field Inspection Transfer Version 3.10 Integration Guide 73

FramingType Member Description

Wood2x4 2x4 wood stud framing

Wood2x6 2x6 wood stud framing

Steel Steel stud framing

PostAndBeam Post & Beam is a method of framing that uses heavy framing members, posts (columns) and beams. The beams are supported by columns rather than bearing walls. This framing allows for creation of large unobstructed interior spaces. Heavy planks are used for the floor and roof.

HillsideSlope Member Description

ZeroToFifteen 0 – 15 degrees

FifteenToThirty 15 – 30 degrees

ThirtyToFortyFive 30 – 45 degrees

AboveFortyFive Greater than 45 degrees

LivingAreaEntryMethod Member Description

TotalLivingArea You calculate and enter the total living area directly. When calculating the total living area, include the area for all floors plus the area for built-in garages. DO NOT include the area for basements (which are included using the % Basement field), or porches, breezeways, decks, or one-story attached garages (which are included in Attached Structures).

LengthxWidth Provide the dimensions (length and width) for the home and let the system automatically calculate the total living area. This is the most accurate method for calculating the total living area.

RoomCount Provide the number of rooms by size (small, medium and large) and type (great room, bedrooms, etc.) and let the system automatically calculate the total living area.

MSWallheight Member Description

8 8 Feet

9 9 Feet

10 10 Feet

Chapter 3 Object Model

74 RCT Field Inspection Transfer Version 3.10 Integration Guide

MmhFramingType Member Description

Wood2x4 2x4 wood stud framing

Wood2x6 2x6 wood stud framing

RoomSize Member Description

Small Small Room Size

Medium Medium Room Size

Large Large Room Size

RoomType Member Description

DiningRooms DiningRooms

LivingRooms LivingRooms

DenStudyOffices DenStudyOffices

Bedrooms Bedrooms

HalfBaths HalfBaths

FamilyRooms FamilyRooms

EntriesFoyers EntriesFoyers

ExtraRooms ExtraRooms

MudRooms MudRooms

StorageRooms StorageRooms

LaundryUtilitiesSewing LaundryUtilitiesSewing

BreakfastNooks BreakfastNooks

BuiltinGarage BuiltinGarage

FullBaths FullBaths

GreatRoom GreatRoom

FIT Enumerations

RCT Field Inspection Transfer Version 3.10 Integration Guide 75

ValuationType Member Description

HighValueAdvancedValuation Valuation for a high value home that uses the advanced entry method.

HighValueStandardValuation Valuation for a high value home that uses the standard entry method.

MainstreetValuation Valuation for a main street home.

MMHValuation Valuation for a mobile manufactured home.

ComboOption Member Description

Calculate Calculate the valuation as part of the combo command.

Export Export the valuation as part of the combo command.

RCT Field Inspection Transfer Version 3.10 Integration Guide 76

Chapter 4 Material Codes

Overview of Material Codes Material codes identify materials that can be used within an RCT system. Some materials can be used only for specific house types while others can be used for multiple house types. Material codes are grouped into categories called material systems and subcategories called material subsystems. Exterior walls, attached structures, and heating and cooling are examples of material systems. Within the heating and cooling material system are material subsystems such as air conditioning, heating, and others.

Material Reference List The Web methods in the Reference Web service should be used to retrieve the list of material codes for different house types. The material list isn’t static but could be updated every time the carrier’s site upgrades to a new version of cost data. The minimum and maximum values returned for the materials are default MSB values. The carrier’s RCT Express site can be configured to use a different set of minimum and maximum values.

Material Systems and Subsystems Each component/material in the material reference list is unique to the combination of material system and material subsystem. Therefore, you will see some materials duplicated in this list. For example, for high value homes, drywall is listed with component IDs 35001 and 45001. Component 35001 corresponds to material system ID 6: Partition Walls/material subsystem 67 - Partitions, while component ID 45001 corresponds to material system ID 8: Ceiling Finish/material subsystem 16 - Ceilings.

RCT Field Inspection Transfer Version 3.10 Integration Guide 77

RCT Field Inspection Transfer Version 3.10 Integration Guide 78

Chapter 5 Batch Mode

Overview of Batch Processing FIT batch processing provides the ability to bundle multiple formatted records into a single input file and drop the file on an FTP site for processing on the target system. Batch processing can be used in conjunction with or instead of interactive processing to acommodate the inspection company workflow. For example, an inspection company that handles many inspections with hundreds of images to upload may choose to use the interactive preview mode to calculate valuations as they are entered and use batch processing to complete the attachment upload and commit the completed valuations nightly or weekly.

Batch processing produces an output file with a report of the success or failure of each record being processed. The output report allows users to identify problem records, make corrections, and resubmit for processing. When using FIT, a separate batch file must be created for each unique carrier site. Batch processes are typically scheduled to run during off-peak times such as the early morning hours.

Batch mode uses the inspection service Web methods. Preview, AddAttachments and Commit are the only methods permitted in batch mode. To use any of the other inspection service methods or to use the configuration or reference service, you must use the interactive Web services.

Batch Processing To perform batch processing using FIT:

1. Create a batch file.

2. Upload the batch file and any attachments to the designated drop location. The drop location is provided by the account representative.

Upload any attachments referenced in the batch to the Attachments directory within the drop location.

3. Download the batch result from the designated result directory.

After the batch has completed processing, an output file will be available in the Out folder within the inspector’s FTP root directory.

Batch Processing

RCT Field Inspection Transfer Version 3.10 Integration Guide 79

FTP Site Each inspection company will be assigned an FTP/SFTP site where batch files can be uploaded.

Folder Description

In The drop location will be the In folder located within the inspector’s FTP root directory. Any file with an .xml extension that is placed in the In folder will be processed as a FIT batch.

In/Attachments There will be an Attachments folder within the In folder (<ftp root>/in/attachments). Any files to be included as attachments must be uploaded to this directory.

Out The Out folder within the FTP root is where results from batch processing can be downloaded.

E-mail Notification If an e-mail address is supplied in the batch file, a notification will be sent when the batch begins processing and when the batch has completed processing.

The Batch File The batch file is an XML file that conforms to the schema as defined in FitBatchEnvelope.xsd and FitBatchItem.xsd. The batch schema is a fairly simple wrapper around the Preview, AddAttachment and Commit commands in the interactive service. The schema for the FIT commands is defined in the FIT Web service WSDL. The batch wrapper schemas are available from the FIT index page.

Each batch file must contain only commands destined for a single carrier; however, there is no limit to the number of commands that may be included in a single batch.

FITBatchRoot This is the root element of the batch input XML document. It consists of the element named “FITBatchRoot”, and its namespace is blank (“”) as defined in the schema “BatchEnvelope.xsd”.

Attributes

Attribute Description

Username This is the user name that will be used to log into the FIT Web service.

Password This is the password that will be used to log into the FIT Web service.

ReplyTo This is an e-mail address that will receive the batch start and end notifications. (optional)

FITServiceUrl This is the URL of the FIT Web service that the batch will be routed to, and is the same URL that would be used when accessing the FIT Web service interactively.

Child Elements

The FITBatchRoot element may contain any number of FITBatchItem elements.

Chapter 5 Batch Mode

80 RCT Field Inspection Transfer Version 3.10 Integration Guide

Sample <FITBatchRoot Username="MyUserName" Password="MyPassword"

ReplyTo="[email protected]"

FITServiceUrl="http://carrier.msbexpress.net/carriersite/inspection/inspectionservice.asmx"></FITBatchRoot>

FITBatchItem The FITBatchItem element contains the processing instructions for a single item within a batch. Each instruction within the FITBatchItem must be an operation on the same valuation record, that is, no mixing policy numbers within the FITBatchItem element. This element is defined in the schema BatchItem.xsd and, like FITBatchRoot, the namespace is blank.

Attributes

Attribute Description

FITBatchItemId (optional)

This attribute may be used as an identifier to correlate the input batch item with the output batch item result. This is important since the records are not likely to be processed in order due to the asynchronous/distributed nature of the process.

Child Elements

The FITBatchItem element may contain the following elements from the “http://www.msbinfo.com/residential/inspection/service/inspectionservice” namespace as defined in the FIT Web service WSDL, in the following order.

• Preview - The FITBatchItem may contain 0 or 1 Preview element.

• Commit - The FITBatchItem may contain 0 or 1 Commit element.

• AddAttachment - The FITBatchItem may contain any number of AddAttachment elements (0 or more).

Element Description

Preview, Commit The Preview and Commit elements are exactly those used for the FIT Web service. Refer to the FIT Web service documentation for details on these elements.

AddAttachment The AddAttachment element conforms to the schema for the FIT Web service. However, the Attachment/FileName and Attachment/Data elements are treated slightly differently when submitting a batch.

attachment/FileName The attachment/Filename element should contain the name of the file in the Attachments folder. For example, “<FileName>attachment1.jpg</FileName>” refers to an image named “attachment1.jpg” within the attachment.

The files to be attached using AddAttachment commands should be uploaded to the attachments folder before submitting the batch.

attachment/Data The attachment/Data element should be left blank. This data will be created from the referenced file as the batch executes.

Batch Processing

RCT Field Inspection Transfer Version 3.10 Integration Guide 81

Batch Result The output from batch processing will be available as a file in the Out folder after the batch has completed processing.

Each input batch file will result in one output file. The name of the output file will contain the name of the input file plus some internal batch identifier to guarantee uniqueness, for example, inputfilename-{49699BAF-045C-477B-9B82-F1E89E300761}.xml.

Output File Schema The output file is an XML document conforming to the schema defined in FITBatchResult.xsd (namespace=” http://www.msbinfo.com/residential/inspection/batch-result”).

FITBatchResult Element This is the root element of the result XML document. It has no attributes and contains one FITBatchResultItem element for each FITBatchItem in the input document.

FITBatchResultItem Element Attributes

Attribute Description

PolicyNumber The PolicyNumber of the valuation processed by the batch item.

BatchItemId This is the value of the FITBatchItemId attribute from the input FITBatchItem, if present.

Child Elements

Element Description

PreviewResult There will be one PreviewResult element if the input FITBatchItem contains a Preview element. The PreviewResult element contains one of the following:

• PreviewResponse - If the preview succeeded and there was no Commit element in the batch item. This element is from the FIT Web service schema.

• Error - If there was an error while attempting to preview.

• SeeCommitResult - If the preview succeeded but there was also a commit element. This is to reduce the amount of redundant data, since both the preview and commit responses include an export of the valuation.

AddAttachmentResult There will be one AddAttachmentResult element for each AddAttachment in the input batch item. It contains either an AddAttachmentResponse element from the FIT Webservice schema, or an error element.

CommitResult There will be one CommitResult for each Commit element from the input batch item. It contains either a CommitResponse or an error element.

Error The error element will contain any error message returned by the FIT Web service as text.

Chapter 5 Batch Mode

82 RCT Field Inspection Transfer Version 3.10 Integration Guide

Samples

Input <?xml version="1.0"?>

<FITBatchRoot Username="Me" Password="MyPwd" ReplyTo="[email protected]"

FITServiceUrl="http://rctstage2.msbexpress.net/rct3_sqa_8/inspection/inspectionservice.asmx">

<FITBatchItem BatchItemId="1">

<fs:Preview xmlns:fs="http://www.msbinfo.com/residential/inspection/service/inspectionservice">

<!—

inspection aggregate as defined by the fit inspection service goes here. However, it is quite long, so I didn’t put it here.

-->

</fs:Preview>

<fs:Commit

xmlns:fs="http://www.msbinfo.com/residential/inspection/service/inspectionservice"> <fs:policyNumber>FitBatchTest2</fs:policyNumber>

</fs:Commit>

<fs:AddAttachment xmlns:fs="http://www.msbinfo.com/residential/inspection/service/inspectionservice">

<fs:policyNumber>FitBatchTest2</fs:policyNumber>

<fs:attachment> <ns2:Id

xmlns:ns2="http://www.msbinfo.com/residential/inspection/model">10</ns2:Id>

<ns2:FileName xmlns:ns2="http://www.msbinfo.com/residential/inspection/model">attachment.jpg</ns2

:FileName>

<ns2:FileType xmlns:ns2="http://www.msbinfo.com/residential/inspection/model">JPG</ns2:FileType>

<ns2:Title

xmlns:ns2="http://www.msbinfo.com/residential/inspection/model">Harry as an infant</ns2:Title>

<ns2:Description

xmlns:ns2="http://www.msbinfo.com/residential/inspection/model">This is a pencil drawing of h. potter as a newborn.</ns2:Description>

<ns2:Data xmlns:ns2="http://www.msbinfo.com/residential/inspection/model"/>

</fs:attachment> </fs:AddAttachment>

<fs:AddAttachment

xmlns:fs="http://www.msbinfo.com/residential/inspection/service/inspectionservice"> <fs:policyNumber>FitBatchTest2</fs:policyNumber>

<fs:attachment>

<ns2:Id xmlns:ns2="http://www.msbinfo.com/residential/inspection/model">10</ns2:Id>

<ns2:FileName

xmlns:ns2="http://www.msbinfo.com/residential/inspection/model">attachment2.jpg</ns2:FileName>

Batch Processing

RCT Field Inspection Transfer Version 3.10 Integration Guide 83

<ns2:FileType

xmlns:ns2="http://www.msbinfo.com/residential/inspection/model">JPG</ns2:FileType> <ns2:Title

xmlns:ns2="http://www.msbinfo.com/residential/inspection/model">snape!</ns2:Title>

<ns2:Description xmlns:ns2="http://www.msbinfo.com/residential/inspection/model">snape takes

aim!</ns2:Description>

<ns2:Data xmlns:ns2="http://www.msbinfo.com/residential/inspection/model"/> </fs:attachment>

</fs:AddAttachment>

</FITBatchItem> </FITBatchRoot>

Output <?xml version="1.0" encoding="utf-8"?><fbr:FITBatchResult

xmlns:fbr="http://www.msbinfo.com/residential/inspection/batch-result"><fbr:FITBatchResultItem BatchItemId="1"

xmlns:fbr="http://www.msbinfo.com/residential/inspection/batch-result"

PolicyNumber="fitbatch6"> <fbr:PreviewResult>

<fbr:SeeCommitResult />

</fbr:PreviewResult> <fbr:AddAttachmentResult>

<AddAttachmentResponse

xmlns="http://www.msbinfo.com/residential/inspection/service/inspectionservice"> <AddAttachmentResult>

<Id xmlns="http://www.msbinfo.com/residential/inspection/model">17478</Id>

<FileName xmlns="http://www.msbinfo.com/residential/inspection/model">attachment.jpg</FileNam

e>

<FileType xmlns="http://www.msbinfo.com/residential/inspection/model">JPG</FileType>

<Title xmlns="http://www.msbinfo.com/residential/inspection/model">Harry as

an infant</Title> <Description

xmlns="http://www.msbinfo.com/residential/inspection/model">This is a pencil

drawing of h. potter as a newborn.</Description> </AddAttachmentResult>

</AddAttachmentResponse>

</fbr:AddAttachmentResult> <fbr:AddAttachmentResult>

<AddAttachmentResponse

xmlns="http://www.msbinfo.com/residential/inspection/service/inspectionservice"> <AddAttachmentResult>

<Id xmlns="http://www.msbinfo.com/residential/inspection/model">17479</Id>

<FileName xmlns="http://www.msbinfo.com/residential/inspection/model">attachment2.jpg</FileNa

me>

Chapter 5 Batch Mode

84 RCT Field Inspection Transfer Version 3.10 Integration Guide

<FileType

xmlns="http://www.msbinfo.com/residential/inspection/model">JPG</FileType> <Title

xmlns="http://www.msbinfo.com/residential/inspection/model">snape!</Title>

<Description xmlns="http://www.msbinfo.com/residential/inspection/model">snape takes

aim!</Description>

</AddAttachmentResult> </AddAttachmentResponse>

</fbr:AddAttachmentResult>

<fbr:CommitResult> <CommitResponse

xmlns="http://www.msbinfo.com/residential/inspection/service/inspectionservice">

<InspectionAggregate xmlns="http://www.msbinfo.com/residential/inspection/model">

<ValuationAggregate><!--snip -->

</ValuationAggregate> <InspectionData><!--snip -->

</InspectionData>

</InspectionAggregate> </CommitResponse>

</fbr:CommitResult>

</fbr:FITBatchResultItem></fbr:FITBatchResult>

Output with Errors <?xml version="1.0" encoding="utf-8"?><fbr:FITBatchResult

xmlns:fbr="http://www.msbinfo.com/residential/inspection/batch-

result"><fbr:FITBatchResultItem BatchItemId="1" xmlns:fbr="http://www.msbinfo.com/residential/inspection/batch-result"

PolicyNumber="FitBatchTest2">

<fbr:PreviewResult> <fbr:Error><![CDATA Error previewing inspection record for user 'batch mode

test 1'.

</fbr:PreviewResult> <fbr:AddAttachmentResult>

<fbr:Error><![CDATA[Error adding attachment for user 'batch mode test 1',

PolicyNumber 'FitBatchTest2'. </fbr:AddAttachmentResult>

<fbr:AddAttachmentResult>

<fbr:Error><![CDATA[System.Web.Services.Protocols.SoapException: Error adding attachment for user 'batch mode test 1', PolicyNumber 'FitBatchTest2'.

]]></fbr:Error>

</fbr:AddAttachmentResult> <fbr:CommitResult>

<fbr:Error><![CDATA[Microsoft.XLANGs.Core.XlangSoapException:

System.Web.Services.Protocols.SoapException: Error committing inspection record for user 'batch mode test 1', PolicyNumber 'FitBatchTest2'.

]]></fbr:Error>

Batch Processing

RCT Field Inspection Transfer Version 3.10 Integration Guide 85

</fbr:CommitResult>

</fbr:FITBatchResultItem></fbr:FITBatchResult>

RCT Field Inspection Transfer Version 3.10 Integration Guide 86

Chapter 6 Microsoft .NET Clients

Overview This section provides information regarding setting up a .NET client that interoperates with the .NET FIT interactive Web services.

WSDLs There are different WSDLs specially tailored for a .NET client. Please use the static WSDLs listed below. Do not use the dynamically generated WSDLs (e.g., InspectionService,asmx.WSDL) for the Web services.

Here are the WSDLs:

• The InspectionService is available at the following location: https://{clientname}.msbexpress.net/rct/inspection/InspectionService.asmx

• Retrieve the WSDL for the InspectionService from the following location: https://{clientname}.msbexpress.net/rct/inspection/InspectionService.wsdl.aspx

• The ConfigurationService is available at the following location: https://{clientname}.msbexpress.net/rct/ inspection/ConfigurationService.asmx

• Retrieve the WSDL for the ConfigurationService from the following location: https://{clientname}.msbexpress.net/rct/inspection/ConfigurationService.wsdl.aspx

• The ReferenceService is available at the following location: https://{clientname}.msbexpress.net/rct/inspection/ReferenceService.asmx

• Retrieve the WSDL for the ReferenceService from the following location: https://{clientname}.msbexpress.net/rct/inspection/ReferenceService.wsdl.aspx

Note: Replace {clientname} with your company name.

Developing a WSE-Enabled Web Service Client FIT Web services require the use of WS-Security UsernameToken for authentication purposes. We recommend that you use Web Services Enhancements (WSE) 3.0, Microsoft’s implementation of WS-Security. Download WSE 3.0 from the Microsoft Web site.

To create a WSE-enabled proxy class, run the WSE Settings 3.0 tool and enable your client project for Web Service Enhancements. Then add a Web reference using the URL for the WSDL location provided above. A WSE-enabled proxy class is added to the project.

Developing a WSE-Enabled Web Service Client

RCT Field Inspection Transfer Version 3.10 Integration Guide 87

Set Up User Credentials, Security Policy, and MTOM The following C#.NET code illustrates how to add a UsernameToken to a SOAP message, set the security policy for the message exchange, and enable MTOM for optimized upload of binary data:

string user=""; string password="";

string url="http://{clientname}/rct/inspection/InspectionService.asmx";

// Create an instance of the web service proxy

InspectionService.InspectionServiceWse service = new InspectionService.

InspectionServiceWse();

//set the URL

service.Url = url;

// Create the Username token

UsernameToken token = new UsernameToken(user, password, PasswordOption.SendHashed);

// Set the security policy for SOAP message exchange using a policy that is

specified in a policy file. service.SetPolicy("ClientPolicy");

// Set the username token for the web service proxy client service.SetClientCredential(token);

// Enable MTOM to allow the SOAP message containing attachments to be MTOM encoded service.RequireMtom = true;

Here’s a sample policy file to go with the code snippet above. A policy file can be generated by using the WSE Settings 3.0 tool.

<policies xmlns="http://schemas.microsoft.com/wse/2005/06/policy">

<extensions>

<extension name="usernameOverTransportSecurity"

type="Microsoft.Web.Services3.Design.UsernameOverTransportAssertion, Microsoft.Web.Services3, Version=3.0.0.0, Culture=neutral,

PublicKeyToken=31bf3856ad364e35" />

<extension name="requireActionHeader"

type="Microsoft.Web.Services3.Design.RequireActionHeaderAssertion,

Microsoft.Web.Services3, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />

</extensions>

<policy name="ClientPolicy">

<usernameOverTransportSecurity />

<requireActionHeader />

Chapter 6 Microsoft .NET Clients

88 RCT Field Inspection Transfer Version 3.10 Integration Guide

</policy>

</policies>

Exception Handling There are minor differences in the WSDL for .NET and Java because of the limitations in the way .NET generates the proxy classes from the WSDL. The .NET client proxy generator is not able to generate WSDL fault exception classes from the <wsdl:fault> element; therefore, additional work is needed to retrieve the ExceptionInformation object from the SoapException. It is important that the .NET client proxy classes are generated using the WSDL. For example:

https://{clientname}.msbexpress.net/rct/inspection/InspectionService.wsdl.aspx

If the .NET client proxy classes are not generated using the WSDL, then there will be no ExceptionInformation and its derived classes.

The following shows an example of the usage for a .NET client during a Preview Web method call, where the SoapException’s fault detail element is deserialized into an ExceptionInformation object and the entire chain of ExceptionInformation is being logged.

try

{ inspectionService.preview(inspectionAggregate);

}

catch(SoapException ex) {

bool logged = false;

XmlNode detailNode = ex.Detail; if (detailNode != null)

{

string details = detailNode.InnerXml; if (string.IsNullOrEmpty(details))

{

ExceptionInformation exceptionInformation = Deserialize(details); LogException(exceptionInformation);

Logged = true;

} }

If (!logged)

{ LogException(ex);

}

}

protected ExceptionInformation Deserialize(string sourceXml) {

const string ns = “http://www.msbinfo.com/residential/inspection/model”;

ExceptionInformation exceptionInformation = null; StringReader stringReader = new StringReader(sourceXml);

XmlSerializer xmlSerializer = null;

xmlSerializer = new XmlSerializer(typeof(ExceptionInformation), ns);

Developing a WSE-Enabled Web Service Client

RCT Field Inspection Transfer Version 3.10 Integration Guide 89

object result = xmlSerializer.Deserialize(stringReader);

if (result != null) {

exceptionInformation = result as ExceptionInformation;

} return exceptionInformation;

}

protected void LogException(ExceptionInformation exceptionInformation)

{ ExceptionInformation temp = exceptionInformation;

while (temp != null)

{ string message = temp.Message;

if (message != null)

{ Logger.Error("ExceptionInformation message: " + message);

}

if (temp is InspectionQuestionValidationExceptionInformation) {

InspectionQuestionValidationExceptionInformation tempEx = null;

tempEx = (InspectionQuestionValidationExceptionInformation) temp; ValidationResult validationResult = tempEx.ValidationResult;

InspectionQuestion[] invalidQuestions = null;

invalidQuestions = validationResult.InvalidQuestionAndAnswer; if ((invalidQuestions!= null) && (invalidQuestions.Length > 0))

{

Logger.Error(“Logging Invalid questions…”); for (int i = 0; i < invalidQuestions.Length; i++)

{

Logger.Error("[{0}] code: {1}", i, invalidQuestions[i].Code); Logger.Error("[{0}] text: {1}", i, invalidQuestions[i].Text);

string reason = invalidQuestions[i].CannotDetermineReason;

Logger.Error("[{0}] cannotDetermineReason: {1}", i, reason); InspectionAnswer[] answers = invalidQuestions[i].Answers;

if ((answers != null) && (answers.Length > 0))

{ for (int j = 0; j < answers.Length; j++)

{

Logger.Error("[{0}] answer: {1}", i, answers[j].Text); }

}

} InspectionQuestion[] missingQuestions = null;

missingQuestions = validationResult.MissingQuestions;

if ((missingQuestions!= null) && (missingQuestions.Length > 0)) {

Logger.Error(“Logging missing questions…”);

for (int i = 0; i < missingQuestions.Length; i++)

Chapter 6 Microsoft .NET Clients

90 RCT Field Inspection Transfer Version 3.10 Integration Guide

{

Logger.Error("[{0}] code: {1}", i, missingQuestions[i].Code); Logger.Error("[{0}] text: {1}", i , missingQuestions[i].Text);

string reason = missingQuestions[i].CannotDetermineReason;

Logger.Error("[{0}] cannotDetermineReason:", i, reason); InspectionAnswer[] answers = missingInspectionQuestions[i].Answers;

if ((answers != null) && (answers.Length > 0))

{ for (int j = 0; j < answers.Length; j++)

{

Logger.Error("[{0}] answer: {1}", i, answers[j].Text); }

}

} }

}

temp = temp.InnerExceptionInformation; }

}

Limitations with Using WSE 2.0 If you are constrained to using WSE 2.0 in your client application there are some limitations you need to be aware of. WSE 2.0 does not support MTOM. Without MTOM support, attachments are uploaded inline as part of the SOAP message. This is not optimal but it is a workable solution.

Another drawback is that WSE 2.0 supports the SOAPAction HTTPHeader but it does not support the <Action> Soap Header. When WSE 3.0 receives a SOAP message (from a WSE 2.0 client) that does not contain an <Action> SOAP header, but does contain a SOAPAction HTTP header, it dispatches the SOAP message to the Web service method based on the SOAPAction header. However, the SOAPAction header is prone to being changed without the FIT Web service detecting the change. With a WSE 3.0 client, the FIT Web services can detect that the action value has changed and throw a SOAP fault.

Developing a WSE-Enabled Web Service Client

RCT Field Inspection Transfer Version 3.10 Integration Guide 91

RCT Field Inspection Transfer Version 3.10 Integration Guide 92

Chapter 7 Java Clients

Overview This chapter describes how to set up a client that interoperates with the FIT interactive Web service using either WebSphere J2EE or Axis2 J2SE.

There are many different Java SOAP tool kits and many different types of environments in which each of the SOAP tool kits can be used; therefore, it is not possible to cover all the ways to use all the SOAP tool kits with the FIT Web service. Use the information in this chapter as an example.

WebSphere J2EE Client This section provides information regarding setting up a WebSphere J2EE client that interoperates with the .NET FIT interactive Web service.

This section cannot completely detail the steps needed to create a Java WebSphere J2EE client because there are different types of clients available in a J2EE environment, e.g., JSP, EJB, and Application Client Module.

Web Services

WSDLs There are different WSDLs specially tailored for a WebSphere J2EE client because WebSphere Web service support does not implement the full schema/WSDL, especially the optional JAX-RPC 1.0/1.1 XML schema types. One of the unsupported elements is the <xsd:choice> element. For more information, see the IBM support site.

Another limitation is that the WebSphere Web service proxy generator cannot generate proxy classes if there are references to SOAP 1.2 in the WSDL.

To work around these limitations, you need to use the following WSDLs to generate the proxy classes, and still be able to use the .NET FIT Web service.

Here are the WSDLs:

• WSDL for the InspectionService: https://{clientname}.msbexpress.net/rct/inspection/jax-rpc11/InspectionService.wsdl.aspx

• WSDL for the ConfigurationService: https://{clientname}.msbexpress.net/rct/inspection/jax-rpc11/ConfigurationService.wsdl.aspx

• WSDL for the ReferenceService: https://{clientname}.msbexpress.net/rct/inspection/jax-rpc11/ReferenceService.wsdl.aspx

WebSphere J2EE Client

RCT Field Inspection Transfer Version 3.10 Integration Guide 93

The FIT Web service URLs are repeated here for clarity:

• InspectionService: https://{clientname}.msbexpress.net/rct/inspection/InspectionService.asmx

• ConfigurationService: https://{clientname}.msbexpress.net/rct/inspection/ConfigurationService.asmx

• ReferenceService: https://{clientname}.msbexpress.net/rct/inspection/ReferenceService.asmx

Note: Replace {clientname} with your company name.

Exception Handling As for Java, most of the available Java Web service tool kits are able to generate WSDL fault exception classes from the <wsdl:fault> element, creating checked exceptions for the Web methods. Catch the exception faults and use the ExceptionInformation instance returned from the generated proxy classes.

It is important that the Java client proxy classes are generated using the above listed WSDLs.

The following code snippets show the usage during an InspectionService’s Preview() Web method call for a WebSphere version 6.0 generated Java client. Notice that there is no need to explicitly catch the SoapException and deserialize the ExceptionInformation from it.

try {

inspectionService.preview(inspectionAggregate); } catch(ExceptionInformation ex) {

LogException(ex);

}

protected void LogException(ExceptionInformation exceptionInformation) {

ExceptionInformation temp = exceptionInformation;

while (temp != null) {

String message = temp.getMessage();

if (message != null) {

logger.error("ExceptionInformation message: " + message);

} if (temp instanceof InspectionQuestionValidationExceptionInformation)

{

InspectionQuestionValidationExceptionInformation tempEx = null; tempEx = (InspectionQuestionValidationExceptionInformation) temp;

ValidationResult validationResult = tempEx.getValidationResult();

InspectionQuestion[] invalidQuestions = null; invalidQuestions = validationResult.getInvalidQuestionAndAnswer();

if ((invalidQuestions!= null) && (invalidQuestions.length > 0))

{ logger.eError(“Logging Invalid questions…”);

for (int i = 0; i < invalidQuestions.length; i++)

{

Chapter 7 Java Clients

94 RCT Field Inspection Transfer Version 3.10 Integration Guide

logger.error("[{0}] code: {1}", i, invalidQuestions[i].getCode());

logger.error("[{0}] text: {1}", i, invalidQuestions[i].getText()); String reason = invalidQuestions[i].getCannotDetermineReason();

logger.error("[{0}] cannotDetermineReason: {1}", i, reason);

InspectionAnswer[] answers = invalidQuestions[i].getAnswers(); if ((answers != null) && (answers.length > 0))

{

for (int j = 0; j < answers.length; j++) {

logger.error("[{0}] answer: {1}", i, answers[j].getText());

} }

}

InspectionQuestion[] missingQuestions = null; missingQuestions = validationResult.getMissingQuestions();

if ((missingQuestions!= null) && (missingQuestions.length > 0))

{ logger.error(“Logging missing questions…”);

for (int i = 0; i < missingQuestions.length; i++)

{ logger.error("[{0}] code: {1}", i, missingQuestions[i].getCode());

logger.error("[{0}] text: {1}", i , missingQuestions[i].getText());

String reason = missingQuestions[i].getCannotDetermineReason(); logger.error("[{0}] cannotDetermineReason:", i, reason);

InspectionAnswer[] answers = null;

Answers = missingInspectionQuestions[i].getAnswers(); if ((answers != null) && (answers.length > 0))

{

for (int j = 0; j < answers.length; j++) {

logger.error("[{0}] answer: {1}", i, answers[j].getText());

} }

}

} }

temp = temp.InnerExceptionInformation;

} }

Developing a J2EE FIT Web Service Client

RCT Field Inspection Transfer Version 3.10 Integration Guide 95

Developing a J2EE FIT Web Service Client The code snippets and screen captures in the following sections were created for WebSphere version 6.0 and 6.1 using Rational Application Developer v7.0.

To develop a J2EE FIT Web service client, follow these steps:

1. Generate a FIT Web service client.

2. Set up the EndPoint URL.

3. Set up WS-Adressing.

4. Set up WS-Security UsernameToken.

Generating a FIT Web Service Client Generate FIT Web service proxy classes using Rational Application Developer’s “Web Service Client” wizard. Generate FIT Web service proxy classes for the following Web services:

• InspectionService

• ConfigurationService

• ReferenceService

Before you perform this task, create a J2EE project.

To generate FIT Web service proxy classes:

1. In Rational Application Developer, right click on the project and select New/Other.

Chapter 7 Java Clients

96 RCT Field Inspection Transfer Version 3.10 Integration Guide

2. In the Web Services folder, select Web Service Client and click Next.

The following illustration shows a J2EE application client module.

3. In the Service definition box, enter the URL for the Inspection Service WSDL and click Finish.

In the Project Explorer illustration below, notice that there are “com.msbinfo” and “com.msbinfo.www” packages. They contain the source files generated for the proxy classes.

4. Repeat this procedure to generate the proxy classes for the ConfigurationService and ReferenceService using the corresponding WSDL URLs.

Developing a J2EE FIT Web Service Client

RCT Field Inspection Transfer Version 3.10 Integration Guide 97

Setting up the EndPoint URL To set up the EndPoint URL:

1. Open the file “InspectionServicePortLocator.java” located in the “com.msbinfo.www” package.

2. Near the top of the file, locate the following string to make sure that it is pointing to your Inspection Web service.

private final java.lang.String inspectionServiceSoap_address = “https://{clientname}.msbexpress.net/rct/inspection/InspectionService.asmx”;

Note: replace {clientname} with the appropriate value.

3. Repeat step 2 for “ConfigurationServicePortLocator.java”:

private final java.lang.String configurationServiceSoap_address =

“https://{clientname}.msbexpress.net/rct/inspection/ConfigurationService.asmx”;

Note: replace {clientname} with the appropriate value.

4. Repeat step 2 for “ReferenceServicePortLocator.java” by replacing with the following:

private final java.lang.String referenceServiceSoap_address =

“https://{clientname}.msbexpress.net/rct/inspection/ReferenceService.asmx”;

Note: replace {clientname} with the appropriate value.

Chapter 7 Java Clients

98 RCT Field Inspection Transfer Version 3.10 Integration Guide

Setting up WS-Addressing

WebSphere version 6.0 There are slight differences in the way WS-Addressing can be set up in a WebSphere version 6.0 environment versus a version 6.1 environment.

The following code snippet shows how WS-Addressing can be set up using “com.ibm.wsspi.wsaddressing.context.WSAddressingOutboundContext” and associating the outbound context with the stub instance.

It assumes that the “endpoint” URL to the .NET FIT Web service has been correctly set up prior to calling the setupWSAddressing(javax.xml.rpc.Stub stub) method.

An example of the endpoint for InspectionService is:

https://{clientname}.msbexpress.net/rct/inspection/InspectionService.asmx

import javax.xml.rpc.Stub;

import java.net.URI;

import com.ibm.wsspi.wsaddressing.AttributedURI; import com.ibm.wsspi.wsaddressing.WSAddressingFactory;

import com.ibm.wsspi.wsaddressing.EndpointReference;

import com.ibm.wsspi.wsaddressing.context.WSAddressingOutboundContext;

protected Stub setupWSAddressing(Stub stub) throws Exception {

String endpoint = (String) stub._getProperty(Stub.ENDPOINT_ADDRESS_PROPERTY); URI epURI = new URI(endpoint); AttributedURI attributeUri = WSAddressingFactory.createAttributedURI(epURI);

EndpointReference endppointReference = WSAddressingFactory.createEndpointReference(attributeUri);

WSAddressingOutboundContext wsAddressingOutboundContext =

WSAddressingContextFactory.createWSAddressingOutboundContext(endpointReference); wsAddressingOutboundContext.associate(stub);

return stub;

}

If you encounter problems compiling the above, it is possible that WS-Addressing libraries are not added as part of the WebSphere version 6.0 Web service runtime. However, they can be found in the WebSphere version 6.0 directories. You may need to explicitly add these libraries to the class path in the development stage.

The above snippet depends on the “wsaddressing.jar, and “wsaddressing_impl.jar” libraries which can be found in:

{IBM_RATIONAL_APPLICATION_DEVELOPER_V70}\runtime\base_v6\lib”

For WebSphere version 6.1, the WS-Addressing libraries are already bundled as part of the WebSphere WebService runtime, hence you do not need to explicitly add the WS-Addressing libraries.

WebSphere version 6.1 The following code snippet shows how WS-Addressing can be set up using “com.ibm.wsspi.wsaddressing.EndpointReference” and setting the property on the stub instance.

Developing a J2EE FIT Web Service Client

RCT Field Inspection Transfer Version 3.10 Integration Guide 99

Notice that the following explicitly sets the ws-addressing namespace as WSADDRESSING_NAMESPACE_2004_08 because WebSphere version 6.1 uses the newer namespace than the .NET FIT Web services.

The following assumes that the “endpoint” URL to the .NET FIT Web service has been correctly set up prior to calling the setupWSAddressing(javax.xml.rpc.Stub stub) method.

import javax.xml.rpc.Stub;

import java.net.URI;

import com.ibm.wsspi.wsaddressing.EndpointReference; import com.ibm.wsspi.wsaddressing.WSAConstants;

protected Stub setupWSAddressing(Stub stub) throws Exception { String endpoint = (String) stub._getProperty(Stub.ENDPOINT_ADDRESS_PROPERTY); URI epURI = new URI(endpoint); EndpointReference endpointReference = EndpointReferenceManager.createEndpointReference(epURI);

endpointReference.setNamespace(WSAConstants.WSADDRESSING_NAMESPACE_2004_08);

stub._setProperty(WSAConstants.WSADDRESSING_OUTBOUND_NAMESPACE, WSAConstants.WSADDRESSING_NAMESPACE_2004_08);

stub._setProperty(WSAConstants.WSADDRESSING_DESTINATION_EPR, endpointReference); return stub; }

Setting up WS-Security UsernameToken FIT Web service requires the use of WS-Security UsernameToken for authentication purposes. For WebSphere J2EE client, this can be achieved via client deployment descriptors. To set up the WS Security username token, set up the following descriptors:

• Client Deployment Descriptor – WS Extension

• Client Deployment Descriptor – WS Binding

WS Extension Client Deployment Descriptor Set up the WS extension in the client deployment descriptors for the following services:

• InspectionService

• ConfigurationService

• ReferenceService

To set up the WS extension in the client deployment descriptors:

1. In Rational Application Developer, double click the deployment descriptor for your project. The Client Deployment Descriptor editor page appears.

Chapter 7 Java Clients

100 RCT Field Inspection Transfer Version 3.10 Integration Guide

2. On the WS Extension tab, expand the Service References section and select service/InspectionServicePort.

3. In the Port Qualified Name Bindings section, select InspectionServiceSoap.

4. Expand the Request Generator Configuration section and the Security Token section. Then click Add.

5. Enter a name and then select Username Token from the Token type list.

6. Click OK.

7. Repeat this procedure to set up client deployment descriptors for the configuration service and the reference service as shown below.

Developing a J2EE FIT Web Service Client

RCT Field Inspection Transfer Version 3.10 Integration Guide 101

Configuration service:

Reference service:

8. Save.

Chapter 7 Java Clients

102 RCT Field Inspection Transfer Version 3.10 Integration Guide

WS Binding Client Deployment Descriptor Set up the WS binding in the client deployment descriptors for the following services:

• InspectionService

• ConfigurationService

• ReferenceService

To set up the WS binding in the client deployment descriptors:

1. Click the WS Binding tab.

2. In the Service References section, select service/InspectionServicePort.

3. In the Port Qualified Name Binding section, select InspectionServiceSoap.

4. Expand the Security Request Generator Binding Configuration and the Token Generator sections.

5. In the Token Generator section, click Add.

Developing a J2EE FIT Web Service Client

RCT Field Inspection Transfer Version 3.10 Integration Guide 103

Chapter 7 Java Clients

104 RCT Field Inspection Transfer Version 3.10 Integration Guide

6. In the Token Generator dialog, do the following:

a. In the User ID and Password boxes, enter the username and password of your account for the Inspection Web service. The illustration above assumes “Testing” as the username and password for the FIT Web service account.

b. In the Property box, enter the Nonce and TimeStamp. These values are needed in order to interoperate with .NET Web service.

Enter the following name values and set them to True:

• com.ibm.wsspi.wssecurity.token.username.addNonce

• com.ibm.wsspi.wssecurity.token.username.addTimestamp

c. Click OK to close the dialog box.

7. Save the client deployment descriptor.

8. Repeat this procedure for the ConfigurationServicePort and the ReferenceServicePort.

Developing a J2EE FIT Web Service Client

RCT Field Inspection Transfer Version 3.10 Integration Guide 105

ConfigurationServicePort:

Chapter 7 Java Clients

106 RCT Field Inspection Transfer Version 3.10 Integration Guide

ReferenceServicePort:

Axis2 J2SE Client

RCT Field Inspection Transfer Version 3.10 Integration Guide 107

Limitations The above demonstrates that a WebSphere J2EE client can be developed using JAX-RPC 1.1 in both WebSphere version 6.0 and 6.1. However, there is currently no support for MTOM and WS-Addressing support is also limited.

Briefly:

• MTOM is not supported; therefore, attachments are uploaded inline as part of the SOAP messages. This is not optimal but it is a workable solution.

• Although WS-Addressing is supported in both WebSphere v6.0 and v6.1, the coding style or APIs usage are different. Although this is not an issue, it prohibits the use of the same piece of code/component in version 6.0 and version 6.1.

• Although WS-Security UsernameToken is supported in both WebSphere v6.0 and v6.1, it only supports clear text passwords. Hashed digest is not supported. In other words, clear text passwords will be sent from the WebSphere J2EE client to the .NET Web service. This might be a security concern.

In order to send a hashed password, the developers have to create their own hashed password that can interoperate with .NET hashed digest. Because .NET and Java hashed algorithms are not interoperable right off the shelves, additional work is necessary.

A better option is to encrypt the data using HTTP SSL. This will be more secure than sending a clear text password.

Axis2 J2SE Client This section provides information regarding setting up an Axis2 J2SE client that interoperates with the .NET FIT interactive Web service. Since this is a J2SE client, the basic requirements are the JDK 1.4, Axis2, XMLBeans, Rampart (WS-Security) and their dependencies.

Axis2 is preferred rather than Axis1.x because Axis1.x does not support some of the features required by the FIT Web service. For example, Axis1.x does not support MTOM attachments.

Axis2 supports several data binding frameworks but some of the data binding frameworks do not support the full WSDL schema specification. The following section contains illustrated code snippets that are known to work with the XMLBeans data binding framework. The FIT Web service has been tested with Axis2 using XMLBeans data binding framework.

Web Services WSDLs Unlike WebSphere J2EE client, Axis2 with XMLBeans data binding framework supports most of the WSDL schema specification that is required by FIT Web services.

Here are the WSDL locations:

• WSDL for the InspectionService: https://{clientname}.msbexpress.net/rct/inspection/axis2/InspectionService.wsdl.aspx

• WSDL for the ConfigurationService: https://{clientname}.msbexpress.net/rct/inspection/axis2/ConfigurationService.wsdl.aspx

Chapter 7 Java Clients

108 RCT Field Inspection Transfer Version 3.10 Integration Guide

• WSDL for the ReferenceService: https://{clientname}.msbexpress.net/rct/inspection/axis2/ReferenceService.wsdl.aspx

The FIT Web service URLs are repeated here for clarity:

• InspectionService: https://{clientname}.msbexpress.net/rct/inspection/InspectionService.asmx

• ConfigurationService: https://{clientname}.msbexpress.net/rct/inspection/ConfigurationService.asmx

• ReferenceService: https://{clientname}.msbexpress.net/rct/inspection/ReferenceService.asmx

Note: Replace {clientname} with your company name.

Exception Handling As for Java, most of the available Java Web service tool kits are able to generate WSDL fault exception classes from the <wsdl:fault> element, creating checked exceptions for the Web methods. Catch the exception faults and use the ExceptionInformation instance returned from the generated proxy classes.

It is important that the Java client proxy classes are generated using the above listed WSDLs.

The following code snippets show the usage during an InspectionService’s Preview() Web method call for an Axis2 with XMLBeans data binding framework generated Java client. Notice that there is no need to explicitly catch the SoapException and deserialize the ExceptionInformation from it.

try {

inspectionService.preview(inspectionAggregate);

} catch(com.msbinfo.www.residential.inspection.service.inspectionservice.ExceptionInf

ormationFaultException ex) {

ExceptionInformation temp = ex.getFaultMessage().getExceptionInformation(); LogException(temp);

}

Depending on which SOAP toolkits are used to generate the proxy classes, the fault exception classes created might be different. For example, an Axis2 client with XmlBeans data binding framework, the ExceptionInformation instance can be accessed via the getFaultMessage() method.

protected void LogException(ExceptionInformation exceptionInformation) {

ExceptionInformation temp = exceptionInformation;

while (temp != null) {

String message = temp.getMessage();

if (message != null) {

logger.error("ExceptionInformation message: " + message);

} if (temp instanceof InspectionQuestionValidationExceptionInformation)

{

InspectionQuestionValidationExceptionInformation tempEx = null; tempEx = (InspectionQuestionValidationExceptionInformation) temp;

Web Services

RCT Field Inspection Transfer Version 3.10 Integration Guide 109

ValidationResult validationResult = tempEx.getValidationResult();

InspectionQuestion[] invalidQuestions = null; invalidQuestions = validationResult.getInvalidQuestionAndAnswerArray();

if ((invalidQuestions!= null) && (invalidQuestions.length > 0))

{ logger.eError(“Logging Invalid questions…”);

for (int i = 0; i < invalidQuestions.length; i++)

{ logger.error("[{0}] code: {1}", i, invalidQuestions[i].getCode());

logger.error("[{0}] text: {1}", i, invalidQuestions[i].getText());

String reason = invalidQuestions[i].getCannotDetermineReason(); logger.error("[{0}] cannotDetermineReason: {1}", i, reason);

InspectionAnswer[] answers = invalidQuestions[i].getAnswersArray();

if ((answers != null) && (answers.length > 0)) {

for (int j = 0; j < answers.length; j++)

{ logger.error("[{0}] answer: {1}", i, answers[j].getText());

}

} }

InspectionQuestion[] missingQuestions = null;

missingQuestions = validationResult.getMissingQuestionsArray(); if ((missingQuestions!= null) && (missingQuestions.length > 0))

{

logger.error(“Logging missing questions…”); for (int i = 0; i < missingQuestions.length; i++)

{

logger.error("[{0}] code: {1}", i, missingQuestions[i].getCode()); logger.error("[{0}] text: {1}", i , missingQuestions[i].getText());

String reason = missingQuestions[i].getCannotDetermineReason();

logger.error("[{0}] cannotDetermineReason:", i, reason); InspectionAnswer[] answers = null;

Answers = missingInspectionQuestions[i].getAnswersArray();

if ((answers != null) && (answers.length > 0)) {

for (int j = 0; j < answers.length; j++)

{ logger.error("[{0}] answer: {1}", i, answers[j].getText());

}

} }

}

} temp = temp.InnerExceptionInformation;

}

}

Chapter 7 Java Clients

110 RCT Field Inspection Transfer Version 3.10 Integration Guide

Developing an Axis2 J2SE FIT Web Service Client The code snippets and screen shots in the following sections are created for Axis2 version 1.1.1 using an Ant build script. The following assumes the reader has an understanding of Ant, Axis2, XMLBeans data binding framework, and Rampart (WS-Security).

The following is a sample Ant build script used to generate the proxy classes and build the FIT Web service Axis2 client. Ant version 1.7.0 is used.

The sample Ant build script does the following default tasks:

• clean – clean the outdated build class files.

• cleanCodegen – delete the wsdl2java generated Java stubs and proxy source files.

• wsdl2javainsp – invoke the inspection service WSDL URL specified in the “build.properties” file and generate the Java stubs and proxy source files.

• wsdl2javaconfig – invoke the configuration service WSDL URL specified in the “build.properties” file and generate the Java stubs and proxy source files.

• wsdl2javaref – invoke the reference service WSDL URL specified in the “build.properties” file and generate the Java stubs and proxy source files.

• compile.src – compiles the generated Java stubs and proxy source files and the client source files.

• compile.test – compiles the unit test Java source files.

• run.test – invokes junit to run the unit tests.

This build script does more than what the average user will probably need as this Ant build script is used for unit testing the FIT Web service.

You might want to pay attention to the "wsdl2javainsp”, “wsdl2javaconfig”, and “wsdl2javaref” targets. These targets generate the proxy classes.

<project basedir="." default="client.all">

<!--Auto generated ant build file-->

<property environment="env" /> <property name="project.base.dir" value="." />

<property name="maven.class.path" value="" />

<property name="name" value="InspectionService" /> <property name="src" value="${project.base.dir}/src" />

<property name="test" value="${project.base.dir}/test" />

<property name="build" value="${project.base.dir}/build" /> <property name="classes" value="${build}/classes" />

<property name="test-classes" value="${build}/test-classes" />

<property name="lib" value="${build}/lib" /> <property name="resources" value="${project.base.dir}/resources" />

<property value="XBeans-packaged.jar" name="xbeans.packaged.jar.name" />

<property value="" name="jars.ok" />

<!-- klchan: added and modified the following -->

<property file="${project.base.dir}/build.properties" /> <property name="axis2.home" value="${project.base.dir}" />

<property name="wsdl2java.output" value="${project.base.dir}" />

Developing an Axis2 J2SE FIT Web Service Client

RCT Field Inspection Transfer Version 3.10 Integration Guide 111

<property name="inspectionService.client" value="${name}-client" />

<property name="test.lib" value="${project.base.dir}/test/lib" />

<!-- klchan: added and modified the following -->

<echo>Axis2 Home = ${axis2.home}</echo> <echo>WSDL2Java InspectionService uri = ${wsdl2java.uriinsp}</echo>

<echo>WSDL2Java ConfigurationService uri = ${wsdl2java.uriconfig}</echo>

<echo>WSDL2Java ReferenceService uri = ${wsdl2java.uriref}</echo> <path id="test.lib.jars">

<fileset dir="${test.lib}">

<include name="*.jar" /> </fileset>

</path>

<path id="axis2.class.path"> <pathelement path="${java.class.path}" />

<pathelement path="${maven.class.path}" />

<fileset dir="${axis2.home}"> <include name="lib/*.jar" />

</fileset>

</path> <target name="init">

<mkdir dir="${build}" />

<mkdir dir="${classes}" /> <mkdir dir="${test-classes}" />

<mkdir dir="${lib}" />

<mkdir dir="${test}" /> </target>

<target name="jar.xbeans"> <jar basedir="${resources}" destfile="${lib}/${xbeans.packaged.jar.name}"

excludes="**/services.xml, **/*.xsd" />

</target> <target depends="init, jar.xbeans" name="pre.compile.test">

<!--Test the classpath for the availability of necesary classes-->

<available classpathref="axis2.class.path" property="xbeans.available" classname="org.apache.xmlbeans.XmlObject" />

<available classpathref="axis2.class.path" property="stax.available"

classname="javax.xml.stream.XMLStreamReader" /> <available classpathref="axis2.class.path" property="axis2.available"

classname="org.apache.axis2.engine.AxisEngine" />

<condition property="jars.ok"> <and>

<isset property="xbeans.available" />

<isset property="stax.available" /> <isset property="axis2.available" />

</and>

</condition> <!--Print out the availabilities-->

<echo message="XmlBeans Availability = ${xbeans.available}" />

Chapter 7 Java Clients

112 RCT Field Inspection Transfer Version 3.10 Integration Guide

<echo message="Stax Availability= ${stax.available}" />

<echo message="Axis2 Availability= ${axis2.available}" /> </target>

<target depends="pre.compile.test" name="compile.src" if="jars.ok"> <javac debug="on" memoryMaximumSize="256m" memoryInitialSize="256m"

fork="true" destdir="${classes}" srcdir="${src}">

<classpath location="${lib}/${xbeans.packaged.jar.name}" /> <classpath refid="axis2.class.path" />

<classpath refid="test.lib.jars" />

</javac> </target>

<target depends="compile.src" name="compile.test" if="jars.ok"> <javac debug="on" memoryMaximumSize="256m" memoryInitialSize="256m"

fork="true" destdir="${test-classes}">

<src path="${test}" /> <classpath location="${lib}/${xbeans.packaged.jar.name}" />

<classpath refid="axis2.class.path" />

<classpath refid="test.lib.jars" /> <classpath path="${classes}" />

</javac>

</target>

<target depends="pre.compile.test" name="echo.classpath.problem"

unless="jars.ok"> <echo message="The class path is not set right!

Please make sure the following classes are in the classpath

1. XmlBeans 2. Stax 3. Axis2 " />

</target>

<target depends="jar.server, jar.client" name="jar.all" />

<target depends="compile.src,echo.classpath.problem" name="jar.server" if="jars.ok">

<copy toDir="${classes}/META-INF" failonerror="false">

<fileset dir="${resources}"> <include name="*.xml" />

<include name="*.wsdl" />

<include name="*.xsd" /> <exclude name="**/schemaorg_apache_xmlbean/**" />

</fileset>

</copy> <copy file="${lib}/${xbeans.packaged.jar.name}" toDir="${classes}/lib" />

<jar destfile="${lib}/${name}.aar">

<fileset excludes="**/Test.class" dir="${classes}" /> </jar>

</target>

Developing an Axis2 J2SE FIT Web Service Client

RCT Field Inspection Transfer Version 3.10 Integration Guide 113

<target if="jars.ok" name="jar.client" depends="compile.test"> <jar destfile="${lib}/${inspectionService.client}.jar">

<fileset dir="${classes}">

<exclude name="**/META-INF/*.*" /> <exclude name="**/lib/*.*" />

<exclude name="**/*MessageReceiver.class" />

<exclude name="**/*Skeleton.class" /> </fileset>

<fileset dir="${resources}">

<exclude name="**/*.wsdl" /> <exclude name="**/*.xsd" />

<exclude name="**/*.xml" />

</fileset> </jar>

</target>

<target if="jars.ok" name="make.repo" depends="jar.server">

<mkdir dir="${build}/repo/" />

<mkdir dir="${build}/repo/services" /> <copy file="${build}/lib/${name}.aar" toDir="${build}/repo/services/" />

</target>

<target if="jars.ok" name="start.server" depends="make.repo">

<java fork="true"

classname="org.apache.axis2.transport.http.SimpleHTTPServer"> <arg value="${build}/repo" />

<classpath refid="axis2.class.path" />

</java> </target>

<taskdef name="junit" classname="org.apache.tools.ant.taskdefs.optional.junit.JUnitTask">

<classpath refid="test.lib.jars"/>

</taskdef>

<target depends="jar.client" name="run.test" if="jars.ok">

<path id="test.class.path"> <pathelement location="${lib}/${inspectionService.client}.jar" />

<pathelement path="${test-classes}" />

<path refid="axis2.class.path" /> <path refid="test.lib.jars" />

<!-- this is to include log4.properties -->

<!--pathelement path="${test.lib}" /--> </path>

<mkdir dir="${build}/test-reports/" />

<junit haltonfailure="yes" printsummary="yes"> <classpath refid="test.class.path" />

<formatter type="plain" />

Chapter 7 Java Clients

114 RCT Field Inspection Transfer Version 3.10 Integration Guide

<batchtest fork="yes" toDir="${build}/test-reports/">

<fileset dir="${test}"> <include name="**/*Test.java" />

</fileset>

</batchtest> </junit>

</target>

<target name="clean">

<delete dir="${build}" />

</target>

<target

depends="clean,cleanCodegen,wsdl2javainsp,wsdl2javaconfig,wsdl2javaref,run.test" name="client.all" />

<target name="declare"> <taskdef name="codegen" classname="org.apache.axis2.tool.ant.AntCodegenTask"

classpathref="axis2.class.path" />

</target>

<target name="cleanCodegen" depends="declare">

<delete includeemptydirs="true"> <fileset dir="${src}" excludes="com/msbinfo/client/*" />

</delete>

</target>

<target name="wsdl2javainsp" depends="declare">

<codegen wsdlfilename="${wsdl2java.uriinsp}" output="${wsdl2java.output}" databindingName="xmlbeans"/>

</target>

<target name="wsdl2javaconfig" depends="declare">

<codegen wsdlfilename="${wsdl2java.uriconfig}" output="${wsdl2java.output}"

databindingName="xmlbeans"/> </target>

<target name="wsdl2javaref" depends="declare"> <codegen wsdlfilename="${wsdl2java.uriref}" output="${wsdl2java.output}"

databindingName="xmlbeans"/>

</target> </project>

Developing an Axis2 J2SE FIT Web Service Client

RCT Field Inspection Transfer Version 3.10 Integration Guide 115

Generating a FIT Web Service Client You can generate FIT Web service proxy classes using Axis2 Ant Task “org.apache.axis2.tool.ant.AntCodegenTask”. The following snippet from the above Ant build script shows the 3 different tasks that generate the Inspection, Configuration, and Reference FIT Web service proxy classes:

The above placeholders, for example ${wsdl2java.uriinsp}, and ${wsdl2java.output}, are replaced with properties saved in a properties file.

Setting up a Client Configuration Axis2 provides the capability to load the client configuration from a file. The following “client.axis2.xml” file shows an example of a client configuration:

<?xml version="1.0" encoding="UTF-8"?>

<!--

! ! Copyright 2006 The Apache Software Foundation.

!

! Licensed under the Apache License, Version 2.0 (the "License"); ! you may not use this file except in compliance with the License.

! You may obtain a copy of the License at

! ! http://www.apache.org/licenses/LICENSE-2.0

!

! Unless required by applicable law or agreed to in writing, software ! distributed under the License is distributed on an "AS IS" BASIS,

! WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

! See the License for the specific language governing permissions and ! limitations under the License.

!-->

<axisconfig name="AxisJava2.0">

<module ref="rampart" />

<module ref="addressing"/>

<parameter name="OutflowSecurity">

<action>

Chapter 7 Java Clients

116 RCT Field Inspection Transfer Version 3.10 Integration Guide

<items>UsernameToken Timestamp</items>

<precisionInMilliseconds>false</precisionInMilliseconds> <user>Testing</user>

<passwordCallbackClass>com.msbinfo.client.PWCBHandler</passwordCallbackClass> <!--passwordType>PasswordText</passwordType-->

</action>

</parameter>

<!-- ================================================= -->

<!-- Parameters --> <!-- ================================================= -->

<parameter name="hotdeployment" locked="false">true</parameter>

<parameter name="hotupdate" locked="false">false</parameter> <parameter name="enableMTOM" locked="false">true</parameter>

<!--During a fault, stacktrace can be sent with the fault message. The following flag will control -->

<!--that behaviour.-->

<parameter name="sendStacktraceDetailsWithFaults" locked="false">true</parameter>

<!--If there aren't any information available to find out the fault reason, we set the message of the exception-->

<!--as the faultreason/Reason. But when a fault is thrown from a service or

some where, it will be --> <!--wrapped by different levels. Due to this the initial exception message can

be lost. If this flag-->

<!--is set then, Axis2 tries to get the first exception and set its message as the faultreason/Reason.-->

<parameter name="DrillDownToRootCauseForFaultReason"

locked="false">false</parameter>

<!--This is the user name and password of admin console-->

<parameter name="userName" locked="false">admin</parameter> <parameter name="password" locked="false">axis2</parameter>

<!--To override repository/services you need to uncomment following parameter and value SHOULD be absolute file path.-->

<!--<parameter name="services" locked="false">service</parameter>-->

<!--To override repository/modules you need to uncomment following parameter and value SHOULD be absolute file path-->

<!--<parameter name="modules" locked="false">modules</parameter>-->

<!--Following params will set the proper context paths for invocations. All the

endpoints will have a commons context-->

<!--root which can configured using the following contextRoot parameter--> <!--<parameter name="contextRoot" locked="false">axis2</parameter>-->

Developing an Axis2 J2SE FIT Web Service Client

RCT Field Inspection Transfer Version 3.10 Integration Guide 117

<!--Our HTTP endpoints can handle both REST and SOAP. Following parameters can

be used to distinguish those endpoints--> <!--<parameter name="servicePath" locked="false">services</parameter>-->

<!--<parameter name="restPath" locked="false">rest</parameter>-->

<!--Set the flag to true if you want to enable transport level session

management-->

<parameter name="manageTransportSession" locked="false">false</parameter>

<!--Following two parameters will be used to handle REST in Axis2. The default

settings will make Axis2 to have two--> <!--different endpoints, one for REST (AxisRESTServlet) one for SOAP message

handling (AxisServlet). But following-->

<!--parameters help to tweak the message handling of two main servlets. -->

<!-- If the enableRESTInAxis2MainServlet is true, then Axis2MainServlet will

handle both SOAP and REST messages --> <parameter name="enableRESTInAxis2MainServlet" locked="true">true</parameter>

<!-- Following parameter will completely disable REST handling in both the servlets-->

<parameter name="disableREST" locked="true">false</parameter>

<!-- This will disable the separate servlet we have for REST handling. -->

<parameter name="disableSeparateEndpointForREST"

locked="true">false</parameter>

<!-- ================================================= -->

<!-- Message Receivers -->

<!-- ================================================= --> <!--This is the Default Message Receiver for the system , if you want to have

MessageReceivers for -->

<!--all the other MEP implement it and add the correct entry to here , so that you can refer from-->

<!--any operation -->

<!--Note : You can override this for particular service by adding the same element with your requirement-->

<messageReceivers>

<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"

class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver"/>

<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"

class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>

</messageReceivers>

<!-- ================================================= -->

Chapter 7 Java Clients

118 RCT Field Inspection Transfer Version 3.10 Integration Guide

<!-- Target Resolvers -->

<!-- ================================================= --> <!-- Uncomment the following and specify the class name for your TargetResolver

to add -->

<!-- a TargetResolver. TargetResolvers are used to process the To EPR for example to -->

<!-- choose a server in a cluster -->

<!--<targetResolvers>--> <!--<targetResolver class="" />-->

<!--</targetResolvers>-->

<!-- ================================================= -->

<!-- Transport Ins --> <!-- ================================================= -->

<transportReceiver name="http"

class="org.apache.axis2.transport.http.SimpleHTTPServer"> <parameter name="port" locked="false">6060</parameter>

<!--If you want to give your own host address for EPR generation-->

<!--uncomment following parameter , and set as you required.--> <!--<parameter name="hostname"

locked="false">http://myApp.com/ws</parameter>-->

</transportReceiver>

<transportReceiver name="tcp"

class="org.apache.axis2.transport.tcp.TCPServer"> <parameter name="port" locked="false">6061</parameter>

<!--If you want to give your own host address for EPR generation-->

<!--uncomment following parameter , and set as you required.--> <!--<parameter name="hostname"

locked="false">tcp://myApp.com/ws</parameter>-->

</transportReceiver>

<!-- ================================================= -->

<!-- Transport Outs --> <!-- ================================================= -->

<transportSender name="jms" class="org.apache.axis2.transport.jms.JMSSender"/>

<transportSender name="tcp"

class="org.apache.axis2.transport.tcp.TCPTransportSender"/> <transportSender name="local"

class="org.apache.axis2.transport.local.LocalTransportSender"/> <transportSender name="http"

class="org.apache.axis2.transport.http.CommonsHTTPTransportSender"> <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>

<!--parameter name="Transfer-Encoding" locked="false">chunked</parameter-->

Developing an Axis2 J2SE FIT Web Service Client

RCT Field Inspection Transfer Version 3.10 Integration Guide 119

</transportSender>

<transportSender name="https"

class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">

<parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter> <parameter name="Transfer-Encoding" locked="false">chunked</parameter>

</transportSender>

<!-- ================================================= -->

<!-- Phases -->

<!-- ================================================= --> <phaseOrder type="InFlow">

<!-- System pre-defined phases -->

<phase name="Transport"> <handler name="RequestURIBasedDispatcher"

class="org.apache.axis2.engine.RequestURIBasedDispatcher">

<order phase="Transport"/> </handler>

<handler name="SOAPActionBasedDispatcher"

class="org.apache.axis2.engine.SOAPActionBasedDispatcher"> <order phase="Transport"/>

</handler>

</phase> <phase name="Security"/>

<phase name="PreDispatch"/>

<phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase"> <handler name="AddressingBasedDispatcher"

class="org.apache.axis2.engine.AddressingBasedDispatcher">

<order phase="Dispatch"/> </handler>

<handler name="SOAPMessageBodyBasedDispatcher"

class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">

<order phase="Dispatch"/> </handler>

<handler name="InstanceDispatcher"

class="org.apache.axis2.engine.InstanceDispatcher"> <order phase="Dispatch"/>

</handler>

</phase> <!-- System pre defined phases -->

<!-- After Postdispatch phase module author or or service author can add

any phase he want --> <phase name="OperationInPhase"/>

</phaseOrder>

<phaseOrder type="OutFlow"> <!-- user can add his own phases to this area -->

<phase name="OperationOutPhase"/>

Chapter 7 Java Clients

120 RCT Field Inspection Transfer Version 3.10 Integration Guide

<!--system predefined phase-->

<!--these phase will run irrespective of the service--> <phase name="PolicyDetermination"/>

<phase name="MessageOut"/>

<phase name="Security"/> </phaseOrder>

<phaseOrder type="InFaultFlow">

<phase name="PreDispatch"/> <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">

<handler name="RequestURIBasedDispatcher"

class="org.apache.axis2.engine.RequestURIBasedDispatcher"> <order phase="Dispatch"/>

</handler>

<handler name="SOAPActionBasedDispatcher"

class="org.apache.axis2.engine.SOAPActionBasedDispatcher">

<order phase="Dispatch"/> </handler>

<handler name="AddressingBasedDispatcher" class="org.apache.axis2.engine.AddressingBasedDispatcher">

<order phase="Dispatch"/>

</handler>

<handler name="SOAPMessageBodyBasedDispatcher"

class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">

<order phase="Dispatch"/>

</handler> <handler name="InstanceDispatcher"

class="org.apache.axis2.engine.InstanceDispatcher">

<order phase="Dispatch"/> </handler>

</phase>

<!-- user can add his own phases to this area --> <phase name="OperationInFaultPhase"/>

</phaseOrder>

<phaseOrder type="OutFaultFlow"> <!-- user can add his own phases to this area -->

<phase name="OperationOutFaultPhase"/>

<phase name="PolicyDetermination"/> <phase name="MessageOut"/>

</phaseOrder>

</axisconfig>

Developing an Axis2 J2SE FIT Web Service Client

RCT Field Inspection Transfer Version 3.10 Integration Guide 121

Setting up WS-Addressing By defining the module “rampart”, it engages the WS-Security module for the axis2 toolkit. The “addressing” module is also defined which engages the WS-Addressing module for the axis2 toolkit.

Setting up WS-Security UsernameToken The <user> tag displays the user account for this Axis2 InspectionClient. Enter the username of your account for the Inspection Web service. The above assumes “Testing” as the username for the FIT Web service account.

As you might have noticed, the “<precisionInMilliseconds>” tag is set to False. By default, Axis2 generates UsernameToken using timestamp in milliseconds precision. However, .NET Web service does not require milliseconds precision when generating UsernameToken using timestamp. Therefore, the above “<precisionInMilliseconds>” tag is set to False.

The password is not stored in this configuration file. The password is handled by a class that you can define in the “<passwordCallbackClass>”. In the above example, the password is handled by the class “com.msbinfo.client.PWCBHandler”. The following shows the code snippet:

package com.msbinfo.client; import org.apache.ws.security.WSPasswordCallback; import javax.security.auth.callback.Callback; import javax.security.auth.callback.CallbackHandler; import javax.security.auth.callback.UnsupportedCallbackException; import java.io.IOException; public class PWCBHandler implements CallbackHandler { public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException { for (int i = 0; i < callbacks.length; i++) {

//When the server side need to authenticate the user WSPasswordCallback pwcb = (WSPasswordCallback)callbacks[i];

//When the client requests for the password to be added in to the

Chapter 7 Java Clients

122 RCT Field Inspection Transfer Version 3.10 Integration Guide

//UT element

/** * NOTE: This is only for testing purpose. User may need to do

* it's own implimentation to get a password for the given user.

* Do not store password as clear text. * Get password from a datasource or LDAP.

*/ if (pwcb != null) { pwcb.setPassword(pwcb.getIdentifer());

}

} }

}

As you can see from the above file, the password is set to the user identity; i.e., the password is hardcoded to be the same string as the username “Testing.” This is only for testing purposes, and should not be implemented in a production environment. You should retrieve the password from a database or an LDAP source.

The current configuration is set to use PasswordDigest. But if you decide to use “ClearText” for the password, then you can uncomment the following lines to use “ClearText” for the password. Using “ClearText” for the password is not a recommended solution unless you use SSL for the SOAP transport.

Developing an Axis2 J2SE FIT Web Service Client

RCT Field Inspection Transfer Version 3.10 Integration Guide 123

Setting up MTOM for Attachments The “<enableMTOM>” tag configures how Axis2 client handles attachments using MTOM. Setting it to True will enable attachments uploads through MTOM.

Creating a Service Port Stub Instance The following code snippet shows an example of how to instantiate an Inspection Web service port stub from the client configuration file defined earlier.

public XmlBeansInspectionClient(String repository, String axis2xml, String endPointUri) throws AxisFault { ConfigurationContext ctx = ConfigurationContextFactory.

createConfigurationContextFromFileSystem(repository, axis2xml); org.apache.axis2.client.Stub tempStub = new InspectionServicePortStub(ctx, endPointUri); this.stub = tempStub; //compatible to wse3.0's ws addressing namespace ServiceClient serviceClient = this.stub._getServiceClient(); Options options = serviceClient.getOptions(); options.setProperty(

org.apache.axis2.addressing.AddressingConstants.WS_ADDRESSING_VERSION,

org.apache.axis2.addressing.AddressingConstants.Submission.WSA_NAMESPACE); }

Chapter 7 Java Clients

124 RCT Field Inspection Transfer Version 3.10 Integration Guide

In the first highlighted box, the “ConfigurationContext” can be created from the “ConfigurationContextFactory” which reads and loads the client configuration file. An InspectionServicePortStub can be instantiated from this newly created context and the “endPointUri”, which is the Inspection Web service URL.

In the second highlighted box, the WS-Addressing namespace has to be correctly set to be compatible with the .NET FIT Web service, which is using Microsoft Web Service Enhancements WSE3.0.

Using a Service Port Stub Instance The proxy classes generated with XMLBeans data binding framework are somewhat different; that is, it creates request and response document objects that you will need to work with. The following code snippets show examples of methods that are wrapped around these request and response document objects.

In the following code snippet, an InspectionAggregateDocument can be instantiated from the InspectionAggregateDocument.Factory. An InspectionAggregate instance can then be created from it.

public InspectionAggregate newInspectionAggregrate() { InspectionAggregateDocument inspectionAggregateDocument =

InspectionAggregateDocument.Factory.newInstance(); InspectionAggregate inspectionAggregate =

inspectionAggregateDocument.addNewInspectionAggregate(); return inspectionAggregate; }

The following shows the code snippet of a wrapped preview (InspectionAggregate inspectionAggregate) method:

public InspectionPreviewAggregate preview(InspectionAggregate inspectionAggregate) throws RemoteException, ExceptionInformationFaultException {

Developing an Axis2 J2SE FIT Web Service Client

RCT Field Inspection Transfer Version 3.10 Integration Guide 125

InspectionPreviewAggregate inspectionResultAggregate = null; PreviewDocument request = PreviewDocument.Factory.newInstance(); PreviewDocument.Preview data = request.addNewPreview();

data.setInspectionAggregate(inspectionAggregate);

PreviewResponseDocument response = getInspectionServiceStub().Preview(request); PreviewResponse responseData = response.getPreviewResponse();

inspectionResultAggregate = responseData.getInspectionResultAggregate(); return inspectionResultAggregate; }

In the next highlighted box, the request, which is a PreviewDocument, will be created so that you can set the parameter InspectionAggregate for the Preview Web service method call.

In the last highlighted box, the Inspection Service stub makes the Web service Preview(request) method call. A response object, which is the PreviewResponseDocument, is returned. You can retrieve the InspectionResultAggregate from the PreviewResponse.

Chapter 7 Java Clients

126 RCT Field Inspection Transfer Version 3.10 Integration Guide

The following code snippets shows another example of wrapped export(String policyNumber) method:

public InspectionAggregate export(String policyNumber) throws RemoteException, ExceptionInformationFaultException { InspectionAggregate inspectionAggregate = null; ExportDocument request = ExportDocument.Factory.newInstance(); ExportDocument.Export data = request.addNewExport();

data.setPolicyNumber(policyNumber);

ExportResponseDocument response = getInspectionServiceStub().Export(request); ExportResponse responseData = response.getExportResponse();

inspectionAggregate = responseData.getInspectionAggregate(); return inspectionAggregate; }

An example illustrates a wrapped addAttachment(String policyNumber, Attachment attachment) method:

public AttachmentInformation addAttachment(String policyNumber, Attachment attachment) throws RemoteException, ExceptionInformationFaultException { AddAttachmentDocument request = AddAttachmentDocument.Factory.newInstance(); AddAttachmentDocument.AddAttachment data = request.addNewAddAttachment();

data.setPolicyNumber(policyNumber);

data.setAttachment(attachment); AddAttachmentResponseDocument response =

getInspectionServiceStub().AddAttachment(request);

AddAttachmentResponse responseData = response.getAddAttachmentResponse(); AttachmentInformation attachmentInformation =

responseData.getAddAttachmentResult(); return attachmentInformation; }

public Attachment newAttachment() { AddAttachmentDocument attachmentDocument =

AddAttachmentDocument.Factory.newInstance();

AddAttachment data = attachmentDocument.addNewAddAttachment(); Attachment attachment = data.addNewAttachment(); return attachment; }

Developing an Axis2 J2SE FIT Web Service Client

RCT Field Inspection Transfer Version 3.10 Integration Guide 127

Limitations Axis2 with ADB data binding framework does not work with FIT Web service because it only supports a subset of WSDL schema/specifications.

However, Axis2 with XMLBeans data binding framework has been successfully tested with FIT Web service with both soap 1.1 and 1.2 binding. The tested version of Axis2 with XMLBeans data binding framework is version 1.1.1.

As of Axis2 version 1.1.1, when Rampart (WS-Security) is engaged for Axis2, MTOM attachments are inline (or by value), instead of XOP (by reference). This was an open issue on Axis2 JIRA Issue Tracker. This may have been fixed in later versions of Axis2.

As for Axis1.x, no extensive testing was done because it does not support MTOM attachments that are required by the FIT Web service.

RCT Field Inspection Transfer Version 3.10 Integration Guide 128

Appendix A Revision History Version Date Revision

1.0 7/24/07 Original version.

1.1 8/22/07 Revised per review

1.2 10/30/08 Add 3.10 Enhancement

Appendix A Revision History

RCT Field Inspection Transfer Version 3.10 Integration Guide 129