Tuesday, August 21, 2007
Scheduling a report to a UNC location in Business Object fails with message Source file error. CrystalEnterprise.DiskUnmanaged: invalid argument
You customer complains that when he schedules a report to a UNC location the reports fail with a message "Source file error. CrystalEnterprise.DiskUnmanaged: invalid argument".
If you are lucky you are able to get from the customer information about the UNC path, screen shots and even better Trace of the server (E.g. Job Server).
In our case we got all the information but the catch is that it was censored because our customer is a government place, so we didn't get information about the exact UNC path used (only a general description E.g. Application Server).
Probable investigation flow
When getting this kind of problem your first instinct is to go to Business Object support site to find for the relvant KB article - Doing so would give you nothing.
You second action is to try and understand from the error what is the problem - Doing this would cause lots of noise because you would probably start checking if you have some parameters that were not passed to the report and also this is not the issue here :).
Your third action would probably be to ask the customer to try and browse to the UNC in which case you must instruct the customer to use the EXACT UNC path (if he knows it).
further action would have be to open a ticket, check security, Check consistent of the problem, etc (lots of time --> unsatisfied customer)
Making a long story short
The error message provided by Business Object when it fails is BAD as it says nothing about the actual problem (even with traces ON).
Our issue was that the customer configured the system to distribute schedule reports to an ALIAS name which as you know is not supported when using UNC.
The same error occurs if your try to schedule to a UNREACHABLE server.
I hope this 5 minutes post and 2 minutes read will save you 2 days of work :)
Wednesday, August 15, 2007
IIS 6.0 HTTPERR logs show connection_dropped every time your try to browse to a page that is mapped to ASP.NET ISAPI filter
If your customer complains about a situation that when he tried browsing to a page that is mapped to ASP.NET ISAPI filter he get page 404 and there is no IIS log for that entry and even more you get connection_dropped message in the HTTPERR (Error logging in HTTP API) than I suggest to you as a first action to remove the ISAPI extension from IIS restart the computer and register it again (All manually).
We had the same issue and NOTHING worked other than this method (not even reinstalling IIS).
I could not find any reference to this on Microsoft site BUT when we opened a premier ticket to solve the issue that was the first step (there goes more than 5 hours of wasted time)
Hope this will save you lots of hours!!!
Saturday, August 04, 2007
Business Objects's GetObjectPrincipalsEx(...) & Orphan principals
My company uses Business Objects Enterprise XI2 SP1 as our reporting framework, our reporting rights are saved per each report (direct assignments for user), we have two repositories (AD, BO).
Our user management application load all the reports in the system (50+) and shows to the user manager them in the original hierarchy (I know this is not the best pattern but we wanted a disconnection while editing) than the end user can play with the assignments when saving the rights are saved per report (without working on the hierarchy).
After investigating a customer repository we found our that:
- The GetObjectPrincipalsEx method (even with the direct assignment flag) performance is highly effected by the actual principals found on the object you are querying (it seem as if there is no cache of the data).
- Deleting a user who ad direct assignment to an object will not delete the principal (this creates an orphan principal that will never be deleted)
- The only way to efficiently save rights is using Groups & Folders (there was no indication on that on the administration documents of march, there was no indication for the bad performance the above API)
I am going to make your life easier and post a command line tool that I have created that will enable you to:
- For each report in your system you will get the number of principals on the object and a list of orphan principals (deleted users / groups principals)
- Get measure of how much time it will take you to iterate on all the reports in your system (in bulk) and check the principals - so you can understand the current performance
- Clean the orphan principals (using command argument)
Usage: BOAnalysis.exe [/username[:]user name] [/password[:]password] [/server[:]CMS Server address] [/commitable]
/username user name to use when authenticating
/password password to use when authenticating
/server The cms server to connect to
/commitable remove the orphan principals
The queries used by the tool are exposed in configuration (so this is highly customizable).
I would expect Business Objects support to provide such tool but I was amazed that I was asked to provide it as a sample (reproduce) - very unprofessional.
you can download Source & Executable
