COA Validator Making Requests

Data Source:  COA Hub

Service Contracts:  

COAValidator_v1.xlsx

COAValidator_v2.xlsx

For XML Parsing please see these notes: XML Parsing

Restful Service Implementation

The COA Validation Web Service can be invoked via the following protocols and formats:

  • Representational State Transfer (REST)   (** Preferred Option **)
    • REST permits many different data formats.  Formats supported will include XML or JSON.
    • Additional information as to the use of REST services include
      • REST allows better support for browser clients due to it’s support for JSON.
      • REST has better performance and scalability.
      • REST reads can be cached, SOAP based reads cannot be cached.


URL Test v1

URL Test v2

https://gw-tst.its.yale.edu/rest/coavalidator

https://gw-tst.its.yale.edu/soa-gateway/rest/v2/coavalidator

URL Production v1

URL Production v2

https://gw.its.yale.edu/rest/coavalidator 

https://gw.its.yale.edu/soa-gateway/rest/v2/coavalidator

Methods

GET

QueryString

Transaction_Date=  

Company_code=  

Grant_code=

Gift_code=

Yale_Designated_code=

Cost_Center_code=

Program_code=

Project_code=

Assignee_code=

Location_code=

Revenue_Category_code=

Spend_Category_code=

Ledger_Account_code=

Returns

XML

(JSON   – **Work in progress)


SOAP Service Implementation

Simple Object Access Protocol (SOAP).

COA Validator Web Service WSDL
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions name="validateCOA" targetNamespace="esb/YaleWDFDM.ws:validateCOA" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soapjms="http://www.w3.org/2010/soapjms/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tns="esb/YaleWDFDM.ws:validateCOA" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
  <wsdl:types>
    <xsd:schema targetNamespace="esb/YaleWDFDM.ws:validateCOA" xmlns:tns="esb/YaleWDFDM.ws:validateCOA" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
          <xsd:element name="validateCOA" type="tns:validateCOA"/>
          <xsd:element name="validateCOAResponse" type="tns:validateCOAResponse"/>
          <xsd:complexType name="validateCOA">
            <xsd:sequence>
              <xsd:element name="Mode" nillable="true" type="xsd:string"/>
              <xsd:element name="Transaction_Date" nillable="true" type="xsd:string"/>
              <xsd:element name="Company_Code" nillable="true" type="xsd:string"/>
              <xsd:element name="Grant_Code" nillable="true" type="xsd:string"/>
              <xsd:element name="Gift_Code" nillable="true" type="xsd:string"/>
              <xsd:element name="Yale_Designated_Code" nillable="true" type="xsd:string"/>
              <xsd:element name="Cost_Center_Code" nillable="true" type="xsd:string"/>
              <xsd:element name="Program_Code" nillable="true" type="xsd:string"/>
              <xsd:element name="Project_Code" nillable="true" type="xsd:string"/>
              <xsd:element name="Assignee_Code" nillable="true" type="xsd:string"/>
              <xsd:element name="Location_Code" nillable="true" type="xsd:string"/>
              <xsd:element name="Revenue_Category_Code" nillable="true" type="xsd:string"/>
              <xsd:element name="Spend_Category_Code" nillable="true" type="xsd:string"/>
              <xsd:element name="Ledger_Account_Code" nillable="true" type="xsd:string"/>
            </xsd:sequence>
          </xsd:complexType>
          <xsd:complexType name="validateCOAResponse">
            <xsd:sequence>
              <xsd:element name="Transaction_Date" nillable="true" type="xsd:string"/>
              <xsd:element name="Transaction_Date_Message" nillable="true" type="xsd:string"/>
              <xsd:element name="Company" nillable="true" type="xsd:string"/>
              <xsd:element name="Company_Description" nillable="true" type="xsd:string"/>
              <xsd:element name="Company_Message" nillable="true" type="xsd:string"/>
              <xsd:element name="Grant" nillable="true" type="xsd:string"/>
              <xsd:element name="Grant_Description" nillable="true" type="xsd:string"/>
              <xsd:element name="Grant_Message" nillable="true" type="xsd:string"/>
              <xsd:element name="Gift" nillable="true" type="xsd:string"/>
              <xsd:element name="Gift_Description" nillable="true" type="xsd:string"/>
              <xsd:element name="Gift_Message" nillable="true" type="xsd:string"/>
              <xsd:element name="Yale_Designated" nillable="true" type="xsd:string"/>
              <xsd:element name="Yale_Designated_Description" nillable="true" type="xsd:string"/>
              <xsd:element name="Yale_Designated_Message" nillable="true" type="xsd:string"/>
              <xsd:element name="Fund" nillable="true" type="xsd:string"/>
              <xsd:element name="Fund_Description" nillable="true" type="xsd:string"/>
              <xsd:element name="Cost_Center" nillable="true" type="xsd:string"/>
              <xsd:element name="Cost_Center_Description" nillable="true" type="xsd:string"/>
              <xsd:element name="Cost_Center_Message" nillable="true" type="xsd:string"/>
              <xsd:element name="Program" nillable="true" type="xsd:string"/>
              <xsd:element name="Program_Description" nillable="true" type="xsd:string"/>
              <xsd:element name="Program_Message" nillable="true" type="xsd:string"/>
              <xsd:element name="Project" nillable="true" type="xsd:string"/>
              <xsd:element name="Project_Description" nillable="true" type="xsd:string"/>
              <xsd:element name="Project_Message" nillable="true" type="xsd:string"/>
              <xsd:element name="Assignee" nillable="true" type="xsd:string"/>
              <xsd:element name="Assignee_Description" nillable="true" type="xsd:string"/>
              <xsd:element name="Assignee_Message" nillable="true" type="xsd:string"/>
              <xsd:element name="Location" nillable="true" type="xsd:string"/>
              <xsd:element name="Location_Description" nillable="true" type="xsd:string"/>
              <xsd:element name="Location_Message" nillable="true" type="xsd:string"/>
              <xsd:element name="Revenue_Category" nillable="true" type="xsd:string"/>
              <xsd:element name="Revenue_Category_Description" nillable="true" type="xsd:string"/>
              <xsd:element name="Revenue_Category_Message" nillable="true" type="xsd:string"/>
              <xsd:element name="Spend_Category" nillable="true" type="xsd:string"/>
              <xsd:element name="Spend_Category_Description" nillable="true" type="xsd:string"/>
              <xsd:element name="Spend_Category_Message" nillable="true" type="xsd:string"/>
              <xsd:element name="Ledger_Account" nillable="true" type="xsd:string"/>
              <xsd:element name="Ledger_Account_Description" nillable="true" type="xsd:string"/>
              <xsd:element name="Ledger_Account_Message" nillable="true" type="xsd:string"/>
              <xsd:element name="ErrorMessage" nillable="true" type="tns:ErrorMessage"/>
              <xsd:element maxOccurs="unbounded" name="ErrorMessageList" nillable="true" type="xsd:string"/>
              <xsd:element name="Number_Of_Errors" nillable="true" type="xsd:string"/>
              <xsd:element name="Number_Of_Warnings" nillable="true" type="xsd:string"/>
            </xsd:sequence>
          </xsd:complexType>
          <xsd:complexType name="ErrorMessage">
            <xsd:sequence>
            </xsd:sequence>
          </xsd:complexType>
             </xsd:schema>
  </wsdl:types>
  <wsdl:message name="validateCOA_PortType_validateCOA">
    <wsdl:part name="parameters" element="tns:validateCOA">
    </wsdl:part>
  </wsdl:message>
  <wsdl:message name="validateCOA_PortType_validateCOAResponse">
    <wsdl:part name="parameters" element="tns:validateCOAResponse">
    </wsdl:part>
  </wsdl:message>
  <wsdl:portType name="validateCOA_PortType">
    <wsdl:operation name="validateCOA">
      <wsdl:input message="tns:validateCOA_PortType_validateCOA">
    </wsdl:input>
      <wsdl:output message="tns:validateCOA_PortType_validateCOAResponse">
    </wsdl:output>
    </wsdl:operation>
  </wsdl:portType>
  <wsdl:binding name="YaleWDFDM_ws_validateCOA_Binder" type="tns:validateCOA_PortType">
    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
    <wsdl:operation name="validateCOA">
      <soap:operation soapAction="YaleWDFDM_ws_validateCOA_Binder_validateCOA" style="document"/>
      <wsdl:input>
        <soap:body parts="parameters" use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap:body parts="parameters" use="literal"/>
      </wsdl:output>
    </wsdl:operation>
  </wsdl:binding>
  <wsdl:service name="YaleWDFDM.ws.validateCOA">
    <wsdl:port name="YaleWDFDM_ws_validateCOA_Port" binding="tns:YaleWDFDM_ws_validateCOA_Binder">
      <soap:address location="https://gw-tst.its.yale.edu/soap/coavalidator"/>
    </wsdl:port>
  </wsdl:service>
</wsdl:definitions> 


Data Availability for the Web Service

Due to the volumes projected against the COA Validation Service, the validation being performed will be going against a COA Integration Hub (SQL DB).  Unfortunately, performance concerns were a primary reason that the service was not designed to go against Workday directly.   Currently the COA integration hub is being updated once per day (early AM).    All efforts are to ensure that the COA Validation Service is available for consumption by service consumers 24x7.

Defaulting of COA Segments

The COA Validation service will only validate the segments that are provided as input to the service. If a partial COA segment structure is provided, the Validator service will not default to the full COA segment structure.

Data Dependencies

  • COA Hub database will be refreshed with COA data from Workday, every Mon – Fri by 2 AM. The refresh takes about 15 mins to complete. Since this is a truncate/reload process, data in some of the COA segment tables may not be fully available until the process is complete. 
  • COA Hub won’t refresh if Workday is down for any reasons.
  • COA Hub might not refresh if the windows server where the Hub is hosted need to be down due to Windows patch updates. 
  • The above dependencies also apply to other COA web services that are dependent on COA Hub (COA Segment, GetRoles). 

Input and Output Parameters

The COA Validation Web Service has the following input and output parameters:

Input Parameters

The Service will accept the following segment inputs:

Column

Content

Required

Example

Comments

1

Transaction_Date

Yes

01/19/2016

MM/DD/YYYY   format

2

Company_code

Yes

CO01


3

Grant_code

No

GRN004010


4

Gift_code

No

BFT56001


5

Yale_Designated_code

No

YD000001


6

Cost_Center_code

No

CC000942


7

Program_code

No

PGM00003


8

Project_code

No

PJ0000001


9

Assignee_code

No

LS666


10

Location_code

No

0750


11

Revenue_Category_code

No

RC00123


12

Spend_Category_code

No

SC00001


13

Ledger_Account_code

No

110007



Output Parameters

The service will return the validated versions for each COA segment data that was submitted, plus descriptions for each segment and any validation errors or warnings that may have been found per segment and an additional message field for overall messages.


There can be multiple error messages and/or warnings for a single input.  They will be returned as single text string (array) delimited by semi-colon.

Column

Content

Comment

1

Transaction_Date

The   transaction date that was submitted or the current date

2

Transaction_Date   Message(s)

Error   corresponding to the Transaction Date

3

Company

Validated   company code

4

Company_Description

company   description

5

Company_Message(s)

error   corresponding to Company

6

Grant

Validated   Grant code

7

Grant_Description

Grant   description

8

Grant_Message(s)

error   corresponding to Grant

9

Gift

Validated   Gift code

10

Gift_Description

Gift   description

11

Gift_Message(s)

error   corresponding to Gift

12

Yale_Designated

Validated   Yale Designated code

13

Yale_Designated_Description

Yale   Designated description

14

Yale_Designated_Message

error   corresponding to Yale Designated

15

Fund

Fund code   based on Grant/Gift/ Yale Designated

16

Fund   Description

Fund   description

17

Cost_Center

Validated   cost center code

18

Cost_Center_Description

cost center   description

19

Cost_Center_Message

error   corresponding to Cost Center

20

Program

Validated   program code

21

Program_Description

program   description

22

Program_Message

error   corresponding to Program

23

Project

Validated   project code

24

Project_Description

Project   description

25

Project_Message

error   corresponding to Project

26

Assignee

Validated   assignee code

27

Assignee_Description

assignee   description

28

Assignee_Message

error   corresponding to Assignee

29

Location

Validated   Location code

30

Location_Description

location   description

31

Location_Message

error   corresponding to Location

32

Revenue_Category

Validated   revenue category code

33

Revenue_Category_Description

Revenue   category description

34

Revenue_Category_Message

error   corresponding to Revenue Category

35

Spend_Category

Validated   spend category code

36

Spend_Category_Description

spend   category description

37

Spend_Category_Message

error   corresponding to Spend Category

38

Ledger   Account

Validated   Ledger Account

39

Ledger_Account_Description

Ledger   Account description

40

Ledger_Account_Message

error   corresponding to Ledger Account

41

ErrorMessage

Array of Multiple error/warning messages that are shown as XML tags.

Error code/warning code denotes whether message is error or warning.

42

ErrorMessageList

Array of Multiple error/warning messages resulting form validation rules.

43

Number_of_errors

This is the   total number of errors that are found in each row 

44

Number_of_warnings

This is the   total number of warnings that are found in each row