Commander
Commander
681 views

Text File Generated Using Delimited Text Driver is empty

Hi, I'm new to text delimited driver and trying to generate a output file. Ive set all the local variable to destination values, output transformation and schema mapping had changed as per mapping, but still generate a empty text file. The driver is triggered via daily job. I did not input filter for it as the driver is not trigger via changed of attribute, and i jus need to read  some attribute from profile and combine it into Local Variable to generate at the output file.


Kindly find below for my policy, output transformation and mapping.

 

Below is my driver parameter

Capture.PNG

17 Replies
Knowledge Partner Knowledge Partner
Knowledge Partner

It is worth mentioning that the changes you need in the stylesheet are really trivial. I.e. They are not per se XSLT changes, rather 'data' changes.

What I mean by that is the stylesheet builds a Query document to send the results forward, replacing the modify.

				<xsl:variable name="query">
					<nds dtdversion="1.0" ndsversion="8.5">
						<input>
							<!-- may want to specifiy a dest-dn here to specify the root of the search -->
							<query class-name="User" dest-dn="{@src-dn}" dest-entry-id="{@src-entry-id}" scope="entry">
								<!-- this should match the attributes in the subscriber filter -->
								<read-attr attr-name="Description"/>
								<read-attr attr-name="Facsimile Telephone Number"/>
								<read-attr attr-name="Given Name"/>
								<read-attr attr-name="Internet EMail Address"/>
								<read-attr attr-name="mobile"/>
								<read-attr attr-name="Surname"/>
								<read-attr attr-name="Telephone Number"/>
								<read-attr attr-name="Title"/>
								<read-attr attr-name="workforceID"/>
								<read-attr attr-name="DirXML-EntitlementRef"/>
							</query>
						</input>
					</nds>
				</xsl:variable>

What you need to change  is for each of the lines like:

<read-attr attr-name="mobile"/>

change the 'mobile' to one of your attributes. Add more copies of the same line if you neeed more, delete them if you need less.

 

Then change I was suggesing to remap add as well to instance would be here:

	<xsl:template match="modify|sync">

I would make that:

	<xsl:template match="add|modify|sync">

Like I said, pretty trivial, once you understand what it is doing.


I do wish the docs generally did a better job at explaining the WHY vs some quick steps to accomplish the task. But that is a long running argumement I have with them. They have valid points as do I, and since they are in charge they win.

To combat this, I wrote a very long series of articles dissecting more interesting drivers, policy by policy, rule by rule, trying to explain what each policy in shipping driver configs does. And if I can figure it out, why

I think the doc writers should do that. On the other hand, I have a customer for whom I have a particularly clever and cool driver, and was sort of asked to provide that kind of documentation, and my estimate is I will need about 300 pages of explaination and I have no desire to write that all.  So I get it, even as I disagree with them.  🙂

 

Knowledge Partner Knowledge Partner
Knowledge Partner

Gary, To the specific questions.

1) Attrs in filter?  Yes and No.  In your case of a trigger, probably not. But definitly in the Config setting/GCV you showed in the first post in this thread.  (That is a strange setting as well. It is using a GCV type called gcv-ref which points at a driver setting.  This allows you to set it in the GCV but also set it in driver configuration settings.  One change in either place, changes the other, since they are references to each other.  This is because a GCV is trivial to access in POlicy/Stylesheet. A driver config is hard.  In the shim itself, a driver config is trivial to access, but a GCV is harder.  This way you have it available to both equally easily, but only change it once, even though it is in two places.  This part is very elegant and part of the engine, not this driver config). 

So in that setting, or GCV (driver.field-names ) make sure all the attrs in play are listed.

As for filter, if Add events are to be processed, (or unassociated objects processed and an association added) then you need the attributes in the filter so that <add> events get a synthetic add with all the bits.

However you seem to not want this.  Therefore, you could use the Stylesheet in #2 below to convert add to instance as well.

2) The convert modify to instance is done in the NOVLDTXTBASE-sub-ets stylesheet. But as noted, your policy that converts a <trigger> to a <modify> happens AFTER That, so  you need to move it before and the stylesheet should mostly work.

 

3) That stylesheet, alas, needs you to modify the <query> buried in it to ask for all the attributes in play, so they are included.

Knowledge Partner Knowledge Partner
Knowledge Partner

Oh I just realized, your policy object: SubEventP01-Output Text File

comes after the Sub Event Stylesheet that does the conversion.  So I would also move that in order to before the Stylesheet if you want to use it.

I.e. Your trigger comes in, comes through the stylesheet, does nothing, and hits your rule, whose results are a <modify> and now will not work.  You have to have your reacting toa  <trigger> before the stylesheet for it to work at all.

 

Commander
Commander

Hi geoffc,

Thanks your methods works for the field that i get from ldap, but i found out that im only able to generate 1 entry, it unable to do for each user.

0 Likes
Knowledge Partner Knowledge Partner
Knowledge Partner

1, Could you post trace?
2. "By default" driver capture object modify events for classes and attributes specified in the filter.
3.geoffc> I.e. Your trigger comes in, comes through the stylesheet, does nothing, and hits your rule, whose results are a <modify> and now will not work. You have to have your reacting toa <trigger> before the stylesheet for it to work at all.
Knowledge Partner Knowledge Partner
Knowledge Partner

As Alex asked, you need to show some trace.  I expect it is your <trigger> handling code that is getting you one event, not the rest.

Maybe post your policy (in the editor, there is a row for Bold, Italic...  click on the ... (ellipsis) at the far right, and in the second role is a code icon (</>)  and post it into that to get the nice formatting.

At the Job level in the configuration are you sending it at a container or user level?  one event for every object? Or just the single container?

 

 

0 Likes
The opinions expressed above are the personal opinions of the authors, not of Micro Focus. By using this site, you accept the Terms of Use and Rules of Participation. Certain versions of content ("Material") accessible here may contain branding from Hewlett-Packard Company (now HP Inc.) and Hewlett Packard Enterprise Company. As of September 1, 2017, the Material is now offered by Micro Focus, a separately owned and operated company. Any reference to the HP and Hewlett Packard Enterprise/HPE marks is historical in nature, and the HP and Hewlett Packard Enterprise/HPE marks are the property of their respective owners.