Successfully using the VersionOne API to create stories using the REST API. Unfortunately the description field seems to strip all xml tags. (The example online uses , but this does not work)
So have something like:
POST /VersionOne/rest-1.v1/Data/Story HTTP/1.1
Content-Type: text/xml; charset=utf-8
Content-Length: 221
<Asset>
<Attribute name="Name" act="set">New Story</Attribute>
<Relation name="Scope" act="set">
<Asset idref="Scope:0" />
</Relation>
<Attribute name="Description" act="set">
<p>first line</p>
<p> second line</p>
</Attribute>
</Asset>
Any way to insert formatting? Basically we are using this as a story to test our recently created artifact and want to refer to the defects/stories that are included in the artifact. Any help much appreciated, thanks.
Jon, you'll need to XML-encode the text value of Description. Two possibilities are:
<Asset>
<Attribute name="Name" act="set">New Story</Attribute>
<Relation name="Scope" act="set">
<Asset idref="Scope:0" />
</Relation>
<Attribute name="Description" act="set">
<p>first line</p>
<p> second line</p>
</Attribute>
</Asset>
or
<Asset>
<Attribute name="Name" act="set">New Story</Attribute>
<Relation name="Scope" act="set">
<Asset idref="Scope:0" />
</Relation>
<Attribute name="Description" act="set"><![CDATA[
<p>first line</p>
<p> second line</p>
]]></Attribute>
</Asset>
You could try to use CDATA sections, like this:
<Asset>
<Attribute name="Description" act="set">
<![CDATA[
<xml>code goes here</xml>
]]>
</Attribute>
</Asset>
When I do this against our public test server: https://www14.v1host.com/v1sdktesting/http.html, and POST to the default Scope/0, I get this:
<?xml version="1.0" encoding="UTF-8"?>
<Asset href="/v1sdktesting/rest-1.v1/Data/Scope/0/21470" id="Scope:0:21470">
<Attribute name="Description"><xml>code goes here</xml> </Attribute>
</Asset>
Does this help?
Related
Issue : I am using email attachment entity to receive email with attachments.
Our environment is - D365. When Email is sent using outlook or d365 as well, the attachment entity is without body tag
Steps to reproduce
Create attachment locally (can be any extension or encoding)
Send email either to account synced with D365 or use D365 to send email to same along with attachment.
query email with attachments and also get body tag
<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="true" >
<entity name="email" >
<attribute name="modifiedon" />
<attribute name="sender" />
<order attribute="modifiedon" descending="false" />
<filter>
<condition attribute="modifiedon" operator="on-or-after" value="2020-03-25" />
</filter>
<link-entity name="activitymimeattachment" from="objectid" to="activityid" link-type="inner" alias="ak" >
<attribute name="filename" />
<attribute name="body" />
</link-entity>
</entity>
</fetch>
o Expected output.
<resultset morerecords="0">
<result>
<modifiedon date="3/27/2020" time="3:08 PM">2020-03-27T15:08:54+05:30</modifiedon>
<sender> xyz#abc.com</sender>
<ak.filename>test-20181009T133141.xml</ak.filename>
<ak.body>VGhlIFVSTCBzaG91bGQgYmUgY29udmVydGVkIHRvIEJhc2U2NA==</ak.body>
</result>
</resultset>
•
o Received output.
<resultset morerecords="0">
<result>
<modifiedon date="3/27/2020" time="4:04 PM">2020-03-27T16:04:24+05:30</modifiedon>
<sender>xyz#abc.com</sender>
<ak.filename>test-2019-04-17T200954.660.xml</ak.filename>
</result>
<result>
<modifiedon date="3/27/2020" time="4:12 PM">2020-03-27T16:12:15+05:30</modifiedon>
<sender> xyz#abc.com</sender>
<ak.filename>image002.jpg</ak.filename>
</result>
<result>
<modifiedon date="3/27/2020" time="4:12 PM">2020-03-27T16:12:15+05:30</modifiedon>
<sender> xyz#abc.com</sender>
<ak.filename>image004.jpg</ak.filename>
</result>
<result>
<modifiedon date="3/27/2020" time="4:12 PM">2020-03-27T16:12:15+05:30</modifiedon>
<sender> xyz#abc.com</sender>
<ak.filename>image006.jpg</ak.filename>
</result>
</resultset>
Please help us in finding the root cause of this issue.
You have to remove distinct="true" form your fetchxml and then it shall work.
Try below fetchxml
<fetch version="1.0" output-format="xml-platform" mapping="logical" >
<entity name="email" >
<attribute name="modifiedon" />
<attribute name="sender" />
<order attribute="modifiedon" descending="false" />
<filter>
<condition attribute="modifiedon" operator="on-or-after" value="2020-03-25" />
</filter>
<link-entity name="activitymimeattachment" from="objectid" to="activityid" link-type="inner" alias="ak" >
<attribute name="filename" />
<attribute name="body" />
</link-entity>
</entity>
</fetch>
I have a mule flow with DataMapper configuration to map XML to JSON, in that I have a requirement to Lookup a CSV file which contains, for example, two columns and four rows to map to one of the JSON output field.
Below are my sample CSV file contents:
Name,Contact
Ram,111-222
Kumar,222-333
John,333-444
I got below exception while running DataMapper:
Element [CSV:CSV]-Pre-Execution of lookup table [CSV:CSV]failed
Error when parsing record #2 field Name
Caused by: java.lang.RuntimeException: Parsing error: Unexpected record delimiter, probably record has too few fields.
When the CSV file contains only one row there is no exception.
Could any one provide me a way to solve the issue? Thanks in advance.
EDIT: Please find the DataMapper configuration
<mule>
<data-mapper:config name="XML_To_JSON_1" transformationGraphPath="xml_to_json_1.grf" doc:name="XML_To_JSON" />
<flow name="mule-csv-lookupFlow1" doc:name="mule-csv-lookupFlow1">
<http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="9090" doc:name="HTTP" />
<data-mapper:transform config-ref="XML_To_JSON_1" doc:name="XML To JSON" />
</flow>
</mule>
Below is the .grf file
<?xml version="1.0" encoding="UTF-8"?><Graph __version="3.5.0" author="pradeep" created="Wed Dec 03 13:06:48 IST 2014" description="XML To JSON" guiVersion="3.4.4.P" id="1417593604462" licenseCode="Unlicensed" licenseType="Unknown" modified="Wed Dec 03 13:06:48 IST 2014" modifiedBy="pradeep" name="XML_To_JSON" preview-file="${Project_Home}/src/main/resources/employee.xml" revision="1.0" showComponentDetails="false">
<Global>
<Metadata __index="0" __referenceCounter="1" __sourcePath="{}/object/contact" _dataStructure="SINGLE_DIMENSIONAL_COLLECTION" _id="__id" _metadataParentId="4430d2fe-5b06-4e39-b259-492c325fe164" _parent_id="__parent_id" _type="Output" id="f11ab87d-ec49-4034-a277-1e96a57b7925">
<Record fieldDelimiter="," name="contact" recordDelimiter="\n\\|\r\n\\|\r" type="delimited">
<Field __artificialType="_parent_id" __systemManaged="true" name="__parent_id" type="string"/>
<Field __artificialType="_id" __systemManaged="true" name="__id" type="string"/>
<Field __index="0" __sourcePath="{}/object/contact/name" containerType="SINGLE" label="name" name="name" type="string"/>
<Field __index="1" __sourcePath="{}/object/contact/phone" containerType="SINGLE" label="phone" name="phone" type="string"/>
</Record>
</Metadata>
<Metadata _type="Lookup" id="963db4af-a7a1-428c-be6b-39af261e93d4">
<Record fieldDelimiter="," name="CSV" recordDelimiter="\n\\|\r\n\\|\r" type="delimited">
<Field containerType="SINGLE" label="firstname" name="firstname" size="10" type="string"/>
<Field containerType="SINGLE" eofAsDelimiter="true" label="phone" name="phone" size="10" type="string"/>
</Record>
</Metadata>
<Metadata __index="0" __referenceCounter="1" __schemaType="employeeType" __sourcePath="{}/employees/employee" _dataStructure="SINGLE_DIMENSIONAL_COLLECTION" _id="__id" _metadataParentId="80f1c157-e81d-439d-afa8-e475de2dfe36" _parent_id="__parent_id" _type="Input" id="019cda9c-1078-4d00-bdcc-f81a59df5292">
<Record fieldDelimiter="," name="employee" recordDelimiter="\n\\|\r\n\\|\r" type="delimited">
<Field __artificialType="_parent_id" __systemManaged="true" name="__parent_id" type="string"/>
<Field __artificialType="_id" __systemManaged="true" name="__id" type="string"/>
<Field __index="0" __schemaType="employeeType" __sourcePath="{}/employees/employee/#firstname" containerType="SINGLE" label="firstname" name="firstname" type="string"/>
<Field __index="1" __schemaType="employeeType" __sourcePath="{}/employees/employee/#lastname" containerType="SINGLE" label="lastname" name="lastname" type="string"/>
<Field __index="2" __schemaType="employeeType" __sourcePath="{}/employees/employee/#gender" containerType="SINGLE" label="gender" name="gender" type="string"/>
<Field __index="3" __schemaType="employeeType" __sourcePath="{}/employees/employee/#phone" containerType="SINGLE" label="phone" name="phone" type="string"/>
<Field __index="4" __schemaType="employeeType" __sourcePath="{}/employees/employee/#text()" containerType="SINGLE" label="text()" name="text" type="string"/>
</Record>
</Metadata>
<Metadata __filteredMetadata="false" __index="0" __referenceCounter="1" __schemaType="employeesType" __sourcePath="{}/employees" _dataStructure="OBJECT" _id="__id" _type="Input" id="80f1c157-e81d-439d-afa8-e475de2dfe36">
<Record fieldDelimiter="," name="employees" recordDelimiter="\n\\|\r\n\\|\r" type="delimited">
<Field __artificialType="_id" __systemManaged="true" name="__id" type="string"/>
</Record>
</Metadata>
<Metadata __index="0" __referenceCounter="1" __sourcePath="{}/object" _dataStructure="OBJECT" _id="__id" _type="Output" id="4430d2fe-5b06-4e39-b259-492c325fe164">
<Record fieldDelimiter="," name="object" recordDelimiter="\n\\|\r\n\\|\r" type="delimited">
<Field __artificialType="_id" __systemManaged="true" name="__id" type="string"/>
</Record>
</Metadata>
<LookupTable fileURL="D:/1_Ram/DEV/Workspace/mule-workspace/mule-datamapper-lookup/src/main/resources/staff.txt" id="CSV" key="phone" metadata="963db4af-a7a1-428c-be6b-39af261e93d4" name="CSV" type="simpleLookup">
<attr name="lookupType"><![CDATA[CSV]]></attr>
</LookupTable>
<Dictionary>
<Entry id="DictionaryEntry0" input="true" name="inputPayload" output="false" type="object"/>
<Entry id="DictionaryEntry1" input="false" name="outputPayload" output="true" type="object"/>
</Dictionary>
</Global>
<Phase number="0">
<Node enabled="enabled" guiName="Foreach 'employees' -> 'object'" guiX="460" guiY="20" id="FOREACH_EMPLOYEES_OBJECT" transformClass="com.mulesoft.datamapper.transform.MelRecordTransform" type="REFORMAT">
<attr name="melScript"><![CDATA[//MEL
//START -> DO NOT REMOVE
output.__id = input.__id;
//END -> DO NOT REMOVE
]]></attr>
</Node>
<Node enabled="enabled" guiName="Foreach 'employee' -> 'contact'" guiX="460" guiY="120" id="FOREACH_EMPLOYEE_CONTACT" transformClass="com.mulesoft.datamapper.transform.MelRecordTransform" type="REFORMAT">
<attr name="melScript"><![CDATA[//MEL
//START -> DO NOT REMOVE
output.__id = input.__id;
output.__parent_id = input.__parent_id;
//END -> DO NOT REMOVE
output.phone = input.phone + (isnull(lookup("CSV").get([input.firstname])) ? null : lookup("CSV").get([input.firstname]).phone);
output.name = input.lastname + ' ' + input.firstname;]]></attr>
</Node>
<Node cacheInMemory="true" charset="UTF-8" enabled="enabled" fileURL="dict:outputPayload" guiName="JSON WRITER" guiX="900" guiY="20" id="JSON_WRITER0" type="JSON_WRITER">
<attr name="mapping"><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
<object xmlns:clover="http://www.cloveretl.com/ns/xmlmapping" clover:inPort="0">
<clover:collection clover:name="contact">
<item clover:inPort="1" clover:key="__parent_id" clover:parentKey="__id">
<name>$1.name</name>
<phone>$1.phone</phone>
</item>
</clover:collection>
</object>]]></attr>
<attr name="__isJsonSchema"><![CDATA[false]]></attr>
<attr name="_data_format"><![CDATA[JSON]]></attr>
<attr name="jsonSchemaURL"><![CDATA[./src/main/resources/contacts.json]]></attr>
</Node>
<Node charset="UTF-8" dataPolicy="strict" enabled="enabled" fileURL="dict:inputPayload" guiName="XML READER" guiX="20" guiY="20" id="XML_READER0" type="XML_READER">
<attr name="xmlSchemaURL"><![CDATA[./src/main/resources/employees.xsd]]></attr>
<attr name="mapping"><![CDATA[<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Context outPort="0" sequenceField="__id" xpath="/employees">
<Context generatedKey="__parent_id" outPort="1" parentKey="__id" sequenceField="__id" xpath="employee">
<Mapping cloverField="firstname" trim="true" xpath="#firstname"/>
<Mapping cloverField="lastname" trim="true" xpath="#lastname"/>
<Mapping cloverField="gender" trim="true" xpath="#gender"/>
<Mapping cloverField="phone" trim="true" xpath="#phone"/>
<Mapping cloverField="text" trim="true" xpath="text()"/>
</Context>
</Context>
]]></attr>
<attr name="_data_format"><![CDATA[XML]]></attr>
<attr name="__rootGlobalElementName"><![CDATA[employees]]></attr>
</Node>
<Edge debugMode="true" fromNode="FOREACH_EMPLOYEES_OBJECT:0" guiBendpoints="" id="Edge1" inPort="Port 0 (in)" metadata="4430d2fe-5b06-4e39-b259-492c325fe164" outPort="Port 0 (out)" toNode="JSON_WRITER0:0"/>
<Edge debugMode="true" fromNode="FOREACH_EMPLOYEE_CONTACT:0" guiBendpoints="" id="Edge3" inPort="Port 1 (in)" metadata="f11ab87d-ec49-4034-a277-1e96a57b7925" outPort="Port 0 (out)" toNode="JSON_WRITER0:1"/>
<Edge debugMode="true" fromNode="XML_READER0:0" guiBendpoints="" id="Edge0" inPort="Port 0 (in)" metadata="80f1c157-e81d-439d-afa8-e475de2dfe36" outPort="Port 0 (out)" toNode="FOREACH_EMPLOYEES_OBJECT:0"/>
<Edge debugMode="true" fromNode="XML_READER0:1" guiBendpoints="" id="Edge2" inPort="Port 0 (in)" metadata="019cda9c-1078-4d00-bdcc-f81a59df5292" outPort="Port 1 (out)" toNode="FOREACH_EMPLOYEE_CONTACT:0"/>
</Phase>
</Graph>
I noticed the following issues in your .grf file:
1. CSV Record fields are firstname and phone while in your actual csv file they are Name and Contact (I assume the CSV sample in your original post matches what in staff.txt file).
2. LookupTable key is phone while you lookup based on name in your phone mapping lookup("CSV").get([input.firstname]).phone
I've come across a challenge I struggle with to find the right approach for. The information required is in two different nodes but belong to the same information for a device.
The later node contains the target information for the previous node as per picture:
The phone device has two nodes where information over the device is stored, IP Phones and Workstations. Under Workstations the main information is stored with a key that links it to the IP Phones section.
I have the following code:
<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<html>
<body>
<table border="1">
<tr>
<td><strong>Name</strong></td>
<td><strong>Software Version</strong></td>
<td><strong>Status</strong></td>
</tr>
<xsl:for-each select="ENTRY/ENTRY/ENTRY/ENTRY/ENTRY">
<xsl:if test="#CLASS='Workstation'">
<tr>
<td><xsl:value-of select="#NAME"/></td>
<xsl:for-each select="ATTRIBUTE">
<xsl:if test="#NAME='Managed IP Phone'">
<xsl:call-template name="Phone_Data">
<xsl:with-param name="IPPhone" select="VALUE"/>
</xsl:call-template>
</xsl:if>
</xsl:for-each>
<td>.</td>
</tr>
</xsl:if>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
<!-- Additional templates to pull 2nd phone node data. -->
<xsl:template name="Phone_Data">
<xsl:param name="IPPhone"/>
<td> <xsl:value-of select="$IPPhone"/> </td> <!-- -->
<xsl:for-each select="../ENTRY">
<xsl:if test="#NAME='IP Phones'">
<xsl:for-each select="ENTRY">
<xsl:if test="#NAME=$IPPhone">
<xsl:for-each select="ATTRIBUTE">
<!-- This is an attribute under the IP Phones - GBADM104_ENTRY -->
<xsl:if test="#NAME='Software Version'">
<td><xsl:value-of select="VALUE"/></td>
</xsl:if>
</xsl:for-each>
</xsl:if>
</xsl:for-each>
</xsl:if>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Coming from the GBADM104_ENTRY under the Workstations node, it does not provide me with the information I expected to get from the GBADM104_ENTRY under the IP Phones node in the screenshot.
As I am a novice, I obviously have made a mistake in the Phone_Data template to target the node with the data I require. I don't know whether or not one could give me suggestions on how to do this the right way please?
<?xml version="1.0" encoding="utf-8"?>
<!-- Generated by DSEdit -->
<ENTRY NAME="CustomerSite" CLASS="Site">
<ENTRY NAME="Production" CLASS="Configuration Set">
<ENTRY NAME="REG6699CIC01" CLASS="Server">
<ENTRY NAME="IP Phones" CLASS="IP Phones">
<ENTRY NAME="51948094-c6e6-4fb9-bb76-ba1986c51429" CLASS="IP Phone">
<ATTRIBUTE NAME="VAD">
<VALUE>No</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Software Version">
<VALUE>3.2.7.0198</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Feature Call Park">
<VALUE>Yes</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Status">
<VALUE>Current</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Station Type">
<VALUE>Workstation</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="ReloadedLast">
<VALUE>20140825143741Z</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="MAC Address">
<VALUE>0004F24F4012</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Name">
<VALUE>GBADM103</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Date Last Modified">
<VALUE>1406660976</VALUE>
</ATTRIBUTE>
</ENTRY>
<ENTRY NAME="51dbb1fe-9957-420a-bfc3-3f4d9bc1b2fc" CLASS="IP Phone">
<ATTRIBUTE NAME="Software Version">
<VALUE>3.2.7.0198</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Status">
<VALUE>Current</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Station Type">
<VALUE>Workstation</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="ReloadedLast">
<VALUE>20140912074858Z</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="MAC Address">
<VALUE>0004F2B37167</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Name">
<VALUE>GBADM104</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Date Last Modified">
<VALUE>1410881183</VALUE>
</ATTRIBUTE>
</ENTRY>
<ENTRY NAME="51eace77-7f6d-467a-bbac-b27329229c53" CLASS="IP Phone">
<ATTRIBUTE NAME="VAD">
<VALUE>No</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Software Version">
<VALUE>3.2.7.0198</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Status">
<VALUE>Current</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Station Type">
<VALUE>Workstation</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="ReloadedLast">
<VALUE>20140814104810Z</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="MAC Address">
<VALUE>0004F24F3E3B</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Persistent">
<VALUE>Yes</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="IP Address">
<VALUE>10.254.250.61</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Name">
<VALUE>GBADS201</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Date Last Modified">
<VALUE>1406899229</VALUE>
</ATTRIBUTE>
</ENTRY>
<ATTRIBUTE NAME="Security">
<VALUE>Minimal</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Call Ringback Timeout">
<VALUE>0</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="VQM Collector Periodic Trigger">
<VALUE>0</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Codec Pref">
<VALUE>0|G.711 mu-law|</VALUE>
<VALUE>1|G.711 a-law|</VALUE>
<VALUE>2|G.729AB|</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Active">
<VALUE>Yes</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Use 486 For Reject">
<VALUE>No</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Emergency Customer Name">
<VALUE>Regus</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Call Waiting Tone">
<VALUE>No</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Connection Type">
<VALUE>SIPAddress</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Sync Forward To IC Status">
<VALUE>No</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="IsSupportedRingSets">
<VALUE>Yes</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="SIP ID Address SYNC">
<VALUE>Sync Dynamic</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="VQM Collector Session">
<VALUE>No</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="SIP Receive Port">
<VALUE>5060</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Audio Path">
<VALUE>Always In</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="VAD">
<VALUE>No</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Proxy Group">
<VALUE>3b6b817b-73e5-4db5-b6d5-57eb0f9b26ff</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Polycom Override Date Date Top">
<VALUE>D</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Software Version">
<VALUE>3.2.7.0198</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Emergency Location Description">
<VALUE>15305 Dallas Parkway Suite 300, Addison, TX, 75001</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Polycom Headset Microphone Gain">
<VALUE>21</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Feature Call Park">
<VALUE>Yes</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Region Location">
<VALUE>North America</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Status">
<VALUE>Current</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Polycom Override Date Format">
<VALUE>D</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Emergency Numbers">
<VALUE>911</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Feature URL Dialing">
<VALUE>No</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="DTMF Off Time">
<VALUE>80</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Station Type">
<VALUE>Workstation</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="VQM Collector Periodic">
<VALUE>No</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="One Touch Voicemail">
<VALUE>No</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Ring Always">
<VALUE>Yes</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Regional Tone Set">
<VALUE>Language_Default</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="VQM RTCP-XR">
<VALUE>No</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="ExpansionModules">
<VALUE>0</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Polycom Call Waiting">
<VALUE>beep</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Enable Handsfree">
<VALUE>Yes</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Polycom NumberFirstCID">
<VALUE>No</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Interface Language">
<VALUE>English_United_States</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Headset Echo-Noise Suppression">
<VALUE>No</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Feature Call List">
<VALUE>Yes</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Polycom Override Date Long Format">
<VALUE>D</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="SIP Session Timeout">
<VALUE>60</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="ReloadedLast">
<VALUE>20140905170113Z</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Phone Manufacturer">
<VALUE>Polycom</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Disable Delayed Media">
<VALUE>No</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Station Appearances">
<VALUE>0|Private|USISM010|Yes</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Inbound SIP Security Challenge">
<VALUE>none</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Call per Station">
<VALUE>1</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Bus Gain">
<VALUE>0</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="RTP QOS Byte">
<VALUE>B8</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Call Dialtone Timeout">
<VALUE>15</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Feature Call List Placed">
<VALUE>Yes</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Password">
<VALUE>F08470F66758CE835CA9DD495F57E5B433F03937D78CFA01CAC315492D7F167C</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Location NTP Server Overrides DHCP">
<VALUE>No</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Electronic Hookswitch Mode">
<VALUE>0</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Authentication">
<VALUE>Yes</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Echo Cancellation">
<VALUE>No</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Phone Limits Calls Per Line Key">
<VALUE>No</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Feature Presence">
<VALUE>No</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="TimeZone">
<VALUE>CST</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Phone Model">
<VALUE>IP331</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Persist Handset Volume">
<VALUE>Yes</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="SIP Register Interval">
<VALUE>86400</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="MWI Message Light">
<VALUE>Yes</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Audio Protocol">
<VALUE>RTP</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="VQM Collector Period">
<VALUE>20</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Polycom Override 24 Hour Clock">
<VALUE>D</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Polycom Headset Sidetone Gain">
<VALUE>-3</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Use SIP Session Timer">
<VALUE>Yes</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Media Port Start Range">
<VALUE>2222</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Dialplan Digitmap Timeout">
<VALUE>3|1|3|3</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Call Offering Timeout">
<VALUE>0</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="DefaultLabelType">
<VALUE>Station</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Feature Group Call Pickup">
<VALUE>Yes</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Syslog Transport">
<VALUE>1</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="MAC Address">
<VALUE>0004F2A72B5F</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Location Description">
<VALUE>Colonnade</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Sync DND To IC Status">
<VALUE>No</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Polycom Headset Speaker Gain">
<VALUE>4</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Persistent">
<VALUE>Yes</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Disable App Logs When Using Syslog">
<VALUE>Yes</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Location Time Zone Overrides DHCP">
<VALUE>Yes</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="User Name">
<VALUE>38bc4dfa7e384f29bb7e62fc24dac94d</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="IP Address">
<VALUE>10.175.250.106</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Terminate Call Analysis On Connect">
<VALUE>Yes</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Disconnect on Broken RTP">
<VALUE>0</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Syslog Render Level">
<VALUE>0</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Headset Mode">
<VALUE>Yes</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="DTMF On Time">
<VALUE>80</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="DTMF Type">
<VALUE>RFC2833</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Persist Headset Volume">
<VALUE>Yes</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Feature Call List Received">
<VALUE>Yes</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="SIP QOS Byte">
<VALUE>Not Set</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Dial On Offhook">
<VALUE>No</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Use Proxy">
<VALUE>Not Set</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Network Gain">
<VALUE>0</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Disallow Media Server Passthru">
<VALUE>No</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Feature Directory">
<VALUE>Yes</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="External Devices Determine Codecs">
<VALUE>No</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Connection Call Warm Down Time">
<VALUE>5</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Feature Messaging">
<VALUE>No</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="DTMF Payload">
<VALUE>101</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Handset Echo-Noise Suppression">
<VALUE>No</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Disable Delayed Media reINVITE">
<VALUE>No</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Name">
<VALUE>USISM010</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Persist Handsfree Volume">
<VALUE>Yes</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="IP3X0 Line 2 Key Function">
<VALUE>Line2</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Feature Call List Missed">
<VALUE>No</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Emergency Outbound ANI">
<VALUE>19727152000</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Dialplan Digitmap">
<VALUE>x.T|*T|*905|*90[1-4]x.T</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Allow SIP Registration">
<VALUE>Yes</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Date Last Modified">
<VALUE>1372825753</VALUE>
</ATTRIBUTE>
</ENTRY>
</ENTRY>
<ENTRY NAME="Workstations" CLASS="Workstations">
<ENTRY NAME="GBADM103" CLASS="Workstation">
<ATTRIBUTE NAME="Security">
<VALUE>Minimal</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Active">
<VALUE>Yes</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Counted Licenses">
<VALUE>I3_LICENSE_BASIC_STATION</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Connection Type">
<VALUE>SIPAddress</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="SIP ID Address">
<VALUE>GBADM103</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Station Type">
<VALUE>Workstation</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Managed Label">
<VALUE>GBADM103</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Line">
<VALUE>sip:GBADM103#192.168.1.203:5060</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Licenses Enabled">
<VALUE>Yes</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="MAC Address">
<VALUE>0004F2B37157</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Managed IP Phone">
<VALUE>51948094-c6e6-4fb9-bb76-ba1986c51429</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Date Last Modified">
<VALUE>1410882147</VALUE>
</ATTRIBUTE>
</ENTRY>
<ENTRY NAME="GBADM104" CLASS="Workstation">
<ATTRIBUTE NAME="Counted Licenses">
<VALUE>I3_LICENSE_BASIC_STATION</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="SIP ID Address">
<VALUE>GBADM104</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Managed Label">
<VALUE>GBADM104</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Extension">
<VALUE>903104</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Line">
<VALUE>sip:GBADM104#192.168.1.204:5060</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="MAC Address">
<VALUE>0004F2B37167</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Persistent">
<VALUE>Yes</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Managed IP Phone">
<VALUE>51dbb1fe-9957-420a-bfc3-3f4d9bc1b2fc</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Date Last Modified">
<VALUE>1410881183</VALUE>
</ATTRIBUTE>
</ENTRY>
<ENTRY NAME="GBADS201" CLASS="Workstation">
<ATTRIBUTE NAME="Counted Licenses">
<VALUE>I3_LICENSE_BASIC_STATION</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Connection Type">
<VALUE>SIPAddress</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="SIP ID Address">
<VALUE>GBADS201</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Station Type">
<VALUE>Workstation</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Managed Label">
<VALUE>GBADS201</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="MAC Address">
<VALUE>UK1058597LT.uk-eire.regus.local</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Managed IP Phone">
<VALUE>51eace77-7f6d-467a-bbac-b27329229c53</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Date Last Modified">
<VALUE>1372819315</VALUE>
</ATTRIBUTE>
</ENTRY>
</ENTRY>
</ENTRY>
</ENTRY>
</ENTRY>
I am mostly guessing here. The following stylesheet:
XSLT 1.0
<?xml version='1.0'?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
<xsl:output method="xml" omit-xml-declaration="yes" version="1.0" encoding="utf-8" indent="yes"/>
<xsl:key name="entry-by-name" match="ENTRY" use="#NAME" />
<xsl:template match="/">
<html>
<body>
<table border="1">
<tr>
<th>Name</th>
<th>Software Version</th>
<th>Status</th>
</tr>
<xsl:for-each select="ENTRY/ENTRY/ENTRY/ENTRY[#CLASS='Workstation']">
<tr>
<td>
<xsl:value-of select="#NAME"/>
</td>
<td>
<xsl:value-of select="key('entry-by-name', ATTRIBUTE[#NAME='Managed IP Phone']/VALUE)/ATTRIBUTE[#NAME='Software Version']/VALUE"/>
</td>
<td>.</td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
applied to your example input (corrected for well-formedness!) will produce the following result:
<html>
<body>
<table border="1">
<tr>
<th>Name</th>
<th>Software Version</th>
<th>Status</th>
</tr>
<tr>
<td>GBADM103</td>
<td>3.2.7.0198</td>
<td>.</td>
</tr>
<tr>
<td>GBADM104</td>
<td>3.2.7.0198</td>
<td>.</td>
</tr>
<tr>
<td>GBADS201</td>
<td>3.2.7.0198</td>
<td>.</td>
</tr>
</table>
</body>
</html>
rendered as:
Note the use of predicates to select the nodes of interest, and the use of key to lookup data from another branch of the XML input.
I have some report in SQL (with pre-filtering).
I import this report to CRM (Dynamics CRM 2011) and run - everything is ok.
But when I changed default filter for this report in CRM and save - report is not run anymore (report error).
I download and checked this two files (before change default filters and after change that) and problem is that when I changed filters, crm insert into link-entity (xml 'join' node) some alias which is GUID. When I change this alias (in rdl file) from GUID to 'ab' for example and reimport this report to CRM, it is work again - until someone change default filter...
So what I shold to do ? Because now it is impossible to give users possibility to change default filter for report in CRM.
edit:
Mostly whole xml for .rdl file is the same for both reports. Only difference is in CustomProperty node. In this node is definition for defualt filter.
Section from work report width default filters without any changes:
<CustomProperty>
<Name>Custom</Name>
<Value>
<MSCRM xmlns="mscrm">
<ReportFilter>
<ReportEntity paramname="P1">
<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false">
<entity name="sc_accountevents">
<all-attributes />
<filter type="and">
<condition attribute="modifiedon" operator="last-x-days" value="30" />
</filter>
</entity>
</fetch>
</ReportEntity>
<ReportEntity paramname="P2">
<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false">
<entity name="businessunit">
<all-attributes />
<filter type="and">
<condition attribute="modifiedon" operator="last-x-days" value="30" />
</filter>
</entity>
</fetch>
</ReportEntity>
<ReportEntity paramname="P3">
<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false">
<entity name="account">
<all-attributes />
<filter type="and">
<condition attribute="modifiedon" operator="last-x-days" value="30" />
</filter>
</entity>
</fetch>
</ReportEntity>
</ReportFilter>
</MSCRM>
</Value>
</CustomProperty>
Section from broken report (after change default filters):
<CustomProperty>
<Name>Custom</Name>
<Value>
<MSCRM xmlns="mscrm">
<ReportFilter>
<ReportEntity paramname="P1" displayname="Account Events">
<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false">
<entity name="sc_accountevents">
<all-attributes />
<link-entity name="account" from="accountid" to="sc_klientid" visible="false" link-type="outer" alias="a_58cc568ca7ece311896000155d68d9dc">
<attribute name="sc_jednostkabiznesowaid"/>
</link-entity>
<link-entity name="systemuser" from="systemuserid" to="owninguser" alias="ae">
<filter type="and">
<condition attribute="businessunitid" operator="eq-businessid"/>
</filter>
</link-entity>
</entity>
</fetch>
</ReportEntity>
<ReportEntity paramname="P2" displayname="Jednostki biznesowe">
<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false">
<entity name="businessunit">
<all-attributes />
</entity>
</fetch>
</ReportEntity>
<ReportEntity paramname="P3" displayname="Klienci">
<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false">
<entity name="account">
<all-attributes />
</entity>
</fetch>
</ReportEntity>
</ReportFilter>
</MSCRM>
</Value>
</CustomProperty>
And again work report with changed default filters but with edit alias in link-entity node:
<CustomProperty>
<Name>Custom</Name>
<Value>
<MSCRM xmlns="mscrm">
<ReportFilter>
<ReportEntity paramname="P1" displayname="Account Events">
<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false">
<entity name="sc_accountevents">
<all-attributes />
<link-entity name="account" from="accountid" to="sc_klientid" visible="false" link-type="outer" alias="ab">
<attribute name="sc_jednostkabiznesowaid"/>
</link-entity>
<link-entity name="systemuser" from="systemuserid" to="owninguser" alias="ae">
<filter type="and">
<condition attribute="businessunitid" operator="eq-businessid"/>
</filter>
</link-entity>
</entity>
</fetch>
</ReportEntity>
<ReportEntity paramname="P2" displayname="Jednostki biznesowe">
<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false">
<entity name="businessunit">
<all-attributes />
</entity>
</fetch>
</ReportEntity>
<ReportEntity paramname="P3" displayname="Klienci">
<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false">
<entity name="account">
<all-attributes />
</entity>
</fetch>
</ReportEntity>
</ReportFilter>
</MSCRM>
</Value>
</CustomProperty>
Ok.
Probably no way to do something with this.
It's a bug which is remove in rollup 17 (2 months ago)...
I've created content type with following xml but it ain't using my custom forms specified in the xml below. What's wrong ?
<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<Field ID="{854DCDF4-5091-4B1E-AA31-D9DC71A29637}"
Type="Text"
Required="TRUE"
DisplayName="Customer ID"
Name="Customer-ID"
Indexed="TRUE"
EnforceUniqueValues="FALSE" />
<Field ID="{7E898932-91C0-4285-A8A2-B6440BE2FDC9}"
Type="Text"
Required="FALSE"
DisplayName="Customer Name"
Name="Customer-Name" />
<Field ID="{5168AB24-21A8-438A-8112-E82E24E180CE}"
Type="Text"
Required="FALSE"
DisplayName="Country"
Name="Country" />
<!-- Parent ContentType: Item (0x01) -->
<ContentType ID="0x010081e20b9903d945a8beacde43ae09f766"
Name="Customer"
Group="Custom Content Types"
Description="Customer Content Type"
Inherits="TRUE"
Version="0">
<FieldRefs>
<FieldRef ID="{854DCDF4-5091-4B1E-AA31-D9DC71A29637}" />
<FieldRef ID="{7E898932-91C0-4285-A8A2-B6440BE2FDC9}" />
<FieldRef ID="{5168AB24-21A8-438A-8112-E82E24E180CE}" />
</FieldRefs>
<XmlDocuments>
<XmlDocument NamespaceURI="http://schemas.microsoft.com/sharepoint/v3/contenttype/forms/url">
<FormUrls xmlns="http://schemas.microsoft.com/sharepoint/v3/contenttype/forms/url">
<New>_layouts/customer/customer.aspx</New>
<Display>_layouts/customer/customerdisp.aspx</Display>
<Edit>_layouts/customer/customeredit.aspx</Edit>
</FormUrls>
</XmlDocument>
</XmlDocuments>
</ContentType>
</Elements>
Try Inherts="FALSE" as an attribute on the element