Import XML file with Header, Detail, and Trailer section in SSIS - sql

I am attempting to load an XML file through SSIS. I want to note that I did generate the XSD through SSIS. Here is the sample file which I was able to load successfully:
<?xml version="1.0" encoding="UTF-8"?>
<ACOParticipantData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Header>
<HeaderCode>HDR_PRVDR</HeaderCode>
<FileCreationDate>20160101</FileCreationDate>
<ACOProgCode>21</ACOProgCode>
</Header>
<Participants>
<Participant>
<ACO_ID>V199</ACO_ID>
<TIN>123456789</TIN>
<Old_TIN>987654321</Old_TIN>
<Org_NPI>1234567890</Org_NPI>
<Ind_NPI>1234567890</Ind_NPI>
<CCN>123456</CCN>
<PRG_Eff_Dt>20160101</PRG_Eff_Dt>
<PRG_Term_Dt>20161231</PRG_Term_Dt>
<ErrorCode>44</ErrorCode>
</Participant>
</Participants>
<Trailer>
<TrailerCode>TRL_PRVDR</TrailerCode>
<FileCreationDate>20160101</FileCreationDate>
<RecordCount>1</RecordCount>
</Trailer>
</ACOParticipantData>
The production file has the same format but I am now receiving the below error in SSIS:
[XML Source [79]] Error: The XML Source was unable to process the XML
data. The Xml source document contains the "xsi:nil" attribute with a
value of true on the "Old_TIN" element, therefore the element must be
empty.
However, there doesn't seem to be anything erroneous about the source file. How would one go about debugging and ingesting this file successfully?
EDIT:
Out of the two production files, I've altered the smaller one slightly but it will look like this:
<?xml version="1.0" encoding="UTF-8"?>
<ACOParticipantData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Header>
<HeaderCode>HDR_PRVDR</HeaderCode>
<FileCreationDate>20160602</FileCreationDate>
<ACOProgCode>21</ACOProgCode>
</Header>
<Participants xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Participant>
<ACO_ID>V130</ACO_ID>
<TIN>123456789</TIN>
<Old_TIN xsi:nil="true">
</Old_TIN>
<Org_NPI xsi:nil="true">
</Org_NPI>
<Ind_NPI>0987654321</Ind_NPI>
<CCN xsi:nil="true">
</CCN>
<PRG_Eff_Dt>20160101</PRG_Eff_Dt>
<PRG_Term_Dt>20160601</PRG_Term_Dt>
<ErrorCode>00</ErrorCode>
</Participant>
<Participant>
<ACO_ID>V130</ACO_ID>
<TIN>111222333</TIN>
<Old_TIN xsi:nil="true">
</Old_TIN>
<Org_NPI xsi:nil="true">
</Org_NPI>
<Ind_NPI>4445556667</Ind_NPI>
<CCN xsi:nil="true">
</CCN>
<PRG_Eff_Dt>20160101</PRG_Eff_Dt>
<PRG_Term_Dt>20160601</PRG_Term_Dt>
<ErrorCode>00</ErrorCode>
</Participant>
</Participants>
<Trailer>
<TrailerCode>TRL_PRVDR</TrailerCode>
<FileCreationDate>20160602</FileCreationDate>
<RecordCount>2</RecordCount>
</Trailer>
</ACOParticipantData>

Search for xsi:nil="true" in your real data XML.
Being empty or being NULL is close but not exactly the same. In some cases this is needed to be distinguished.
If an element is marked as NULL like - in your case probably: <Old_TIN xsi:nil="true"> there should be no value for this element.
If there is the xsi:nil flag and a value it's a contradiction...
UPDATE
According to your edits you find this there (reduced)
<Participant>
<Old_TIN xsi:nil="true">
</Old_TIN>
<Org_NPI xsi:nil="true">
</Org_NPI>
<CCN xsi:nil="true">
</CCN>
</Participant>
These elements are not NULL, they contain a line break and spaces... Try change this to
<Participant>
<Old_TIN xsi:nil="true"/>
<Org_NPI xsi:nil="true"/>
<CCN xsi:nil="true"/>
</Participant>

Related

valid ehcache.xml using ehcache3 plugin for grails3

grails version 3.3.1
cache-ehcache:3.0.0.M1
can somebody send me a valid ehcache.xmlplease?
My file looks like this:
<?xml version="1.0" encoding="UTF-8"?>
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="ehcache.xsd"
updateCheck="true"
monitoring="autodetect"
dynamicConfig="true">
<diskStore path="java.io.tmpdir"/>
<cache name="sevenSeconds"
maxEntriesLocalHeap="100"
maxEntriesLocalDisk="1000"
eternal="false"
timeToLiveSeconds="7"
timeToIdleSeconds="0"
memoryStoreEvictionPolicy="LFU"
transactionalMode="off">
<persistence strategy="localTempSwap" />
</cache>
<defaultCache
maxElementsInMemory="50000"
eternal="false"
timeToIdleSeconds="120"
timeToLiveSeconds="120"
overflowToDisk="true"
diskPersistent="false"
diskExpiryThreadIntervalSeconds="120"
memoryStoreEvictionPolicy="LRU"
/>
</ehcache>
and i get this error while startup:
Caused by: org.ehcache.xml.exceptions.XmlConfigurationException: Error parsing XML configuration at file:/home/user/workspaces/api2-grails/grails-app/conf/ehcacheCustom.xml
Caused by: org.xml.sax.SAXParseException: cvc-elt.1.a: Cannot find the declaration of element 'ehcache'.
thanks for suggestions
Since ehcache 3.0.0 the xml format changed. This is my base version:
<?xml version="1.0" encoding="UTF-8"?>
<config
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xmlns='http://www.ehcache.org/v3'
xsi:schemaLocation="ehcache-core.xsd">
<persistence directory="java.io.tmpdir"/>
<cache alias="twentySeconds">
<expiry>
<ttl unit="seconds">20</ttl>
</expiry>
<heap>2</heap>
</cache>
</config>
After struggling with the same issue I found this link and just took it as a base to get the following working example:
<ehcache:config xmlns:ehcache="http://www.ehcache.org/v3" xmlns:jcache="http://www.ehcache.org/v3/jsr107">
<ehcache:cache alias="books">
<ehcache:key-type>java.lang.String</ehcache:key-type>
<ehcache:value-type>hello.Book</ehcache:value-type>
<ehcache:resources>
<ehcache:heap unit="MB">1</ehcache:heap>
<!--ehcache:offheap unit="MB">10</ehcache:offheap-->
</ehcache:resources>
</ehcache:cache>
</ehcache:config>

Why my ariba cannot parse my response api?

My ariba network cannot parse my document cXML response. At ariba screen i have this response
<?xml version="1.0" encoding="UTF-8"?>
<cXML payloadID="1501467044460-2947794417638298020#216.109.111.19" timeStamp="2017-07-30T19:10:44-07:00">
<Response>
<Status code="200" text="OK" />
<PunchOutSetupResponse>
<StartPage>
<URL>test.ariba.com</URL>
</StartPage>
</PunchOutSetupResponse>
</Response>
</cXML>
However I still get this message from Ariba:
Couldn't parse document
Can anyone support me with this.
This is the document we're using and working correctly
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE cXML SYSTEM "http://xml.cxml.org/schemas/cXML/1.2.014/cXML.dtd">
<cXML timestamp="<%= #timestamp %>" payloadID="<%= #payload_id %>">
<Response>
<Status code="200" text="success"></Status>
<PunchOutSetupResponse>
<StartPage>
<URL><%= #start_url %></URL>
</StartPage>
</PunchOutSetupResponse>
</Response>
</cXML>
The start_url must be a valid URL like http://test.mysite.com/xxxxx
could you check if there is language dependency. lang="en-US"

AssertionError: Element odoo has extra content: report, line 7

When i try to give report_name in report tag it throws below error:
AssertionError: Element odoo has extra content: report, line 7
*.xml
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<report id="action_report_followup"
model="account_followup.followup"
report_name="PPPPPPPPPPpppp" //Here is the problem
string="Follow-up Report"
report_type="qweb-pdf"
name="payment_followup.report_followup"
file="payment_followup.report_followup"
menu="True"/>
</odoo>
If i remove attribute report_name it will work fine, and use value of string as report name. I need to give other name. How can i resolve this issue?
You can try this once.
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<data>
<report
string="Follow-up Report"
id="action_report_followup"
model="account_followup.followup"
report_type="qweb-pdf"
name="payment_followup.report_followup"
file="payment_followup.report_followup"
menu="True"/>
</data>
</odoo>
The attribute that you are trying to use here, "report_name", is the culprit. There is no attribute such as "report_name". Use the attribute "name" instead.
See the example below:
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<report id="action_report_followup"
model="account_followup.followup"
string="Follow-up Report"
report_type="qweb-pdf"
name="payment_followup.report_followup"
file="payment_followup.report_followup"
menu="True"/>
</odoo>

Does creating a logical outlook search folder decrease search lag?

I create a logical search folder to contain all the emails with a specific category. I then pull those emails using FindItem+ParentFolderIds query. The speed of this FindItem query seems to be proportional to the total number of emails in the account and not how many emails in the logical search folder. Is this normal behavior?
Here is the query to create the search folder:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages"
xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<t:RequestServerVersion Version="Exchange2010" />
</soap:Header>
<soap:Body>
<m:CreateFolder>
<m:ParentFolderId>
<t:DistinguishedFolderId Id="searchfolders" />
</m:ParentFolderId>
<m:Folders>
<t:SearchFolder>
<t:DisplayName>MySearchFolder</t:DisplayName>
<t:PermissionSet>
<t:Permissions />
</t:PermissionSet>
<t:SearchParameters Traversal="Deep">
<t:Restriction>
<t:Contains ContainmentMode="FullString" ContainmentComparison="IgnoreCase">
<t:FieldURI FieldURI="item:Categories" />
<t:Constant Value="My_Category" />
</t:Contains>
</t:Restriction>
<t:BaseFolderIds>
<t:DistinguishedFolderId Id="root" />
</t:BaseFolderIds>
</t:SearchParameters>
</t:SearchFolder>
</m:Folders>
</m:CreateFolder>
</soap:Body>
</soap:Envelope>
And here's the query to retrieve the emails from the search folder:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<t:RequestServerVersion Version="Exchange2013_SP1" />
</soap:Header>
<soap:Body>
<m:FindItem Traversal="Shallow">
<m:ItemShape>
<t:BaseShape>AllProperties</t:BaseShape>
</m:ItemShape>
<m:IndexedPageItemView MaxEntriesReturned="1000" Offset="0" BasePoint="Beginning" />
<m:Restriction>
<t:IsEqualTo>
<t:FieldURI FieldURI="item:IsDraft" />
<t:FieldURIOrConstant>
<t:Constant Value="false" />
</t:FieldURIOrConstant>
</t:IsEqualTo>
</m:Restriction>
<m:ParentFolderIds>
<t:FolderId Id="<The_SEARCH_FOLDER_ID>" />
</m:ParentFolderIds>
</m:FindItem>
</soap:Body>
</soap:Envelope>
Keep in mind that items aren't actually "in" a search folder. A search folder is really just a persistent search result that you can treat like a folder. So those items are still all spread out across different folders in the mailbox.
When you query the search folder you're adding a second restriction (IsDraft = false) which is likely causing the results to be reevaluated.

Is there some example xml for the FormInfo list for the updateCredentialsForItem1?

I have been receiving the following error when trying to post updated login credentials:
<Exception>org.apache.axis2.AxisFault: org.apache.axis2.databinding.ADBException: Can not invoke the getTypeObject method in the extension mapper class...
I am accessing the SOAP API via a rails app using the savon gem.
addItemForContentService is working with the same xsi:type definition, and I have used getLoginFormCredentialsForItem to retrieve FormInfos to push back into updateCredentialsForItem1, with no success.
If I could just get some sample xml (that works) for this call I would really appreciate it.
It seems like the parameters you are sending are incorrect or the WSDL format.
For your reference below is XML for updateCredentialsForItem1(you need to change values):
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<updateCredentialsForItem1 xmlns="http://itemmanagement.accountmanagement.core.soap.yodlee.com">
<userContext xmlns="">
<cobrandId>134131232</cobrandId>
<channelId>-1</channelId>
<locale>
<country>US</country>
<language>en</language>
<variant></variant>
</locale>
<tncVersion>2</tncVersion>
<applicationId>7A367HGJ621219F00</applicationId>
<cobrandConversationCredentials xsi:type="ns1:SessionCredentials" xmlns:ns1="http://login.ext.soap.yodlee.com">
<sessionToken>YOUR_COBRAND_CONVERSATION_TOKEN_VALUE</sessionToken>
</cobrandConversationCredentials>
<preferenceInfo>
<currencyCode>USD</currencyCode>
<timeZone>PST</timeZone>
<dateFormat>MM/dd/yyyy</dateFormat>
<currencyNotationType>SYMBOL_NOTATION</currencyNotationType>
<numberFormat>
<decimalSeparator>.</decimalSeparator>
<groupingSeparator>,</groupingSeparator>
<groupPattern>###,##0.##</groupPattern>
</numberFormat>
</preferenceInfo>
<fetchAllLocaleData>false</fetchAllLocaleData>
<conversationCredentials xsi:type="ns2:SessionCredentials" xmlns:ns2="http://login.ext.soap.yodlee.com">
<sessionToken>USER_CONVERSATION_TOKEN_VALUE</sessionToken>
</conversationCredentials>
<valid>true</valid>
<isPasswordExpired>false</isPasswordExpired>
</userContext>
<itemId xmlns="">1219123123</itemId>
<credentialFields xmlns="">
<elements xsi:type="ns3:SecureFieldInfoSingle" xmlns:ns3="http://common.soap.yodlee.com">
<name>LOGIN</name>
<displayName>Username</displayName>
<isEditable>true</isEditable>
<isOptional>false</isOptional>
<isEscaped>false</isEscaped>
<helpText>2212059</helpText>
<isOptionalMFA>false</isOptionalMFA>
<isMFA>false</isMFA>
<value>ACTUAL_USERNAME</value>
<valueIdentifier>LOGIN</valueIdentifier>
<valueMask>LOGIN_FIELD</valueMask>
<fieldType>TEXT</fieldType>
<size>20</size>
<maxlength>40</maxlength>
</elements>
<elements xsi:type="ns4:SecureFieldInfoSingle" xmlns:ns4="http://common.soap.yodlee.com">
<name>PASSWORD1</name>
<displayName>Password</displayName>
<isEditable>true</isEditable>
<isOptional>false</isOptional>
<isEscaped>false</isEscaped>
<helpText>22121258</helpText>
<isOptionalMFA>false</isOptionalMFA>
<isMFA>false</isMFA>
<value>ACTUAL_PASSWORD_VALUE</value>
<valueIdentifier>PASSWORD1</valueIdentifier>
<valueMask>LOGIN_FIELD</valueMask>
<fieldType>PASSWORD</fieldType>
<size>20</size>
<maxlength>40</maxlength>
</elements>
<elements xsi:type="ns5:FieldInfoSingle" xmlns:ns5="http://common.soap.yodlee.com">
<name></name>
<displayName>Verify Password</displayName>
<isEditable>true</isEditable>
<isOptional>false</isOptional>
<isEscaped>false</isEscaped>
<helpText>22121258</helpText>
<isOptionalMFA>false</isOptionalMFA>
<isMFA>false</isMFA>
<value>ACTUAL_PASSWORD_VALUE</value>
<valueIdentifier>PASSWORD1</valueIdentifier>
<valueMask>LOGIN_FIELD</valueMask>
<fieldType>PASSWORD</fieldType>
<size>20</size>
<maxlength>40</maxlength>
</elements>
</credentialFields>
<startRefreshItemOnUpdate xmlns="">false</startRefreshItemOnUpdate>
</updateCredentialsForItem1>
</soapenv:Body>
</soapenv:Envelope>