Wednesday, May 03, 2006

No export DLLs found error in Crystal Reports

I've seen this error on a few environment I've worked with and is still seeing it in a couple of forums. Below is a link and the information from Business Objects website:

Link:
http://support.businessobjects.com/library/kbase/articles/c2006348.asp

Information:
An instance scheduled in a Citrix Metaframe or Windows NT Terminal Server environment fails on the Info Desktop with the following error:

"PEExportTo : Missing or out-of-date export DLL."

In the Info Report Designer, attempting to export the report results in one of the following errors:

"No Export DLLs found"

-OR-

"Missing or out of date DLL"

In the Info SQL Designer, attempting to export the query results in the following error:

"Export failed"

Why do these error messages appear?

Solution

These errors messages appear because Seagate Info cannot find the export DLLs in a Citrix Metaframe or NT Terminal Server environment. By default, Seagate Info expects the export DLLs to be located in %systemroot%\Crystal. On a Citrix or Terminal Server computer, the DLLs are located in the following directories:

• \Wtsrv\Profiles\\Windows\Crystal

• \Wtsrv\System32

When Seagate Info is installed onto a Citrix Metaframe or NT Terminal Server computer, the following file types are automatically installed to the \Wtsrv\Profiles\\Windows\Crystal directory:

• Database drivers (P2*.dll)

• Export drivers (U2f*.dll and U2d*.dll)

• User-defined Function Library (UFL) drivers (U2L*.dll)

(The only exception is the P2sodbc.dll, which allows for an ODBC connection to a database. P2sodbc.dll is automatically installed to the \Wtsrv\System32 folder. Thus, Seagate Info will find this file.)

As an example, if the user "Administrator" is logged on to the Citrix Metaframe computer when Seagate Info is installed, the Seagate Info DLLs will be placed in the \Wtsrv\Profiles\Administrator\Windows\Crystal directory. When logged on, "Administrator" is able to export from the Info Report Designer but another user is not because they do not have access to the export DLLs.


Alternatives to deploying DLLs for Seagate Info client tools
--------------------------------------------------------

There are three main methods of deploying the required Seagate Info DLLs on a Citrix Metaframe or Terminal Server computer so that all users will be able to access them. Place the DLLs in:

• \Program Files\Seagate Software\SI\X86 (This is the recommended solution.)

• \Wtsrv\Profiles\\Windows\Crystal

• \Wtsrv\System32

If you utilize the \Program Files\Seagate Software\SI\X86 directory, the Seagate Info DLLs must be copied to this folder once. This will allow all users to run the Seagate Info client tools and only one folder needs to be updated on the Citrix Metaframe or Terminal Server computer. Crystal Decisions recommends this solution.

If you use the \Wtsrv\Profiles\\Windows\Crystal directory, the Seagate Info DLLs must be copied to the profile folder of each user on the Citrix Metaframe or Terminal Server computer. This is the second preferred method for Network Administrators and is more advantageous than method the following method.

If you utilize the global folder \Wtsrv\System32, the Seagate Info DLLs must be copied to this folder only. However, most NT or Network Administrators do not prefer this method due to security reasons.

==============
NOTES:

• Even when using a PATH statement to specify where the DLLs reside, Seagate Info does not find these DLLs.

• When reinstalling Seagate Info or applying a product update or maintenance release, these DLLs must be copied to the appropriate directories again.
==============


Test Results
------------
Testing was performed using Seagate Info version 7.0.2.100 installed onto a Citrix Metaframe computer. Initially, the following conditions were presented:

· Log on to the Citrix Metaframe computer as user "Administrator".
· Configure the Seagate Info NT services; Info APS, Info Sentinel, and Info Agent, to run under a domain user account, Domain\User, which is a member of the local computer's Administrators group.

The three major tests that were performed were:

· How the Info Report Designer reads export DLLs on a Citrix Metaframe computer.
· How an Info Report Server reads export DLLs on a Citrix Metaframe computer when a report is scheduled and the Info Sentinel is running as an application instead of an NT service.
· How an Info Report Server reads export DLLs on a Citrix Metaframe computer when a report is scheduled and the Info Sentinel is running as an NT Service.

Test 1: How the Info Report Designer reads export DLLs on a Citrix Metaframe computer.

The Info Report Designer dynamically reads the DLLs successfully from the following folders:
· \Program Files\Seagate Software\SI\X86
· \Wtsrv\System32
· \Wtsrv\Profiles\\Windows\Crystal


Test 2: How an Info Report Server reads export DLLs on a Citrix Metaframe computer when a report is scheduled and the Info Sentinel is running as an application instead of an NT service. (Test completed while logged on to the Citrix Metaframe computer as the NT Service user account.)

With the Info Sentinel running as an application, at schedule time the Info Report Server only reads the DLLs from the following two locations:
· \Wtsrv\Profiles\\Windows\Crystal
· \Wtsrv\System32

The Info Report Server does not read the DLLs when they are located in the \Program Files\Seagate Software\SI\X86 directory. As a result, scheduled reports will fail.


Test 3: How an Info Report Server reads export DLLs on a Citrix Metaframe computer when a report is scheduled and the Info Sentinel is running as an NT Service.

With the Info Sentinel running as an NT Service, at schedule time the Info Report Server only reads the DLLs from the \Wtsrv\System32 directory.

The Info Report Server does not read the DLLs when they are located in the following two locations and as a result, scheduled reports will fail:
· \Program Files\Seagate Software\SI\X86
· \Wtsrv\Profiles\\Windows\Crystal

Thursday, April 20, 2006

SQL Server 2005 SP1

SQL Server 2005 SP1 is now available for download. These packages can upgrade the Enterprise, Standard, Developer and Workgroup versions.

To download SP1 use this link:

http://www.microsoft.com/downloads/details.aspx?
familyid=CB6C71EA-D649-47FF-9176-E7CAC58FD4BC&displaylang=en


You can run the following query to check your build (this query will not run on SQL Server 200 or previous versions):

WITH Version(ver)
AS
(
SELECT SUBSTRING
(
@@VERSION,
CHARINDEX(' - ', @@VERSION)+3,
32
)
)
SELECT Build = LEFT(ver, CHARINDEX(' ', ver))
FROM Version

Tuesday, April 04, 2006

Microsoft Visual Studio 2005 Tools for Office

How close is Microsoft Dynamics to Microsoft Office? It's VSTO away.

A current GotDotNet project had started which gives users a collection of software programs for Microsoft Dynamics that snap in to Microsoft Office 2003. That's the good news, the bad news is nothing has been done for Dynamics GP. The current snap in were only developed for Dynamics AX and CRM.

The developers promised that snap in for Dynamics GP would be available soon. Snap is a set of add-in applications in Office that surface business data and processes. It uses VSTO to program the Office Object Model and Dynamics Business Connector to interact with the data in Dynamics without requiring any server side code or changes.

Snap in should not be mistaken for Information Bridge Framework (IBF). There are white papers available that could provide more in-depth analysis when to use IBF or VSTO, check this link:
http://msdn.microsoft.com/office/understanding/ibframework/
techarticles/default.aspx>

Microsoft acquires Proclarity

On April 3,2006, Microsoft annouced that it acquired Proclarity Corp., a software company that develops analysis and visualization technologies that work in association with Microsoft’s business intelligence (BI) platform.

SQL Server 2005 would gain more ground on Oracle with this acquisition. Proclarity brings in more than 3000 global customers. There is opportunity for PeopleSoft/JD Edwards customers using Proclarity to now look at Microsoft Dynamics as an alternative system, Oracle's Fusion should show some effective marketing to not lose dissatisfied customers.

Thursday, March 02, 2006

Select Statements Part I

A favorite sql script of mine is the 'Select Count(*)' statement. You can use it to get the number of items, customers or vendors in Great Plains by simply running:

Select Count(*) from IV00101 (item master)
Select Count(*) from RM00101 (customer master)
Select Count(*) from PM00200 (vendor master)

You can also use it to check documents in sales or purchasing and include a where clause.

Select Count(*) from SOP10100
where soptype = '2' (to check count for open sales orders)

Select Count(*) from SOP30200
where soptype = '3' and
sopnumbe LIKE 'ORD%' (to check for posted sales invoices)

Sunday, February 12, 2006

SQL Server Security - SQL Injection

For the past year I've been working on security policies and procedures. One of the most challenging part of security is knowing which technology and best practice to use. In my case, I tried all avenues including books, forums,etc. and asked relevant questions then worked myself from top to bottom, meaning from Policies to the procedures, then formulated a plan which included securing the SQL Server database.

One of more common security threat to SQL database is SQL Injection. This is a hacking method that allows an unauthorized attacker to access a database server then executes SQL queries. Once the attacker gains access to the database, he/she is then free to export, add, modify, or delete content from the database. If the hacker is very knowledgeable of other hacking tools, he can penetrate past the database server and into the operating system which could harm the whole system.

To secure your company data against SQL Injection attacks, administrators should implement the principle of least privileged access, granting users rights to part of the applications required for them to their daily work. If their sole purpose is to extract user information, limit permissions to a SQL account used by them to SELECT on target database objects. Another approach to limiting access rights is implementing application roles.

Unfortunately, Microsoft Dynamics Great Plains don't use application roles but uses Database Roles. One of the pain in Great Plains database design is the DYNGRP database role. Here's a classic example:

A company needs to create a new user for an external auditor who wants to access Great Plains, run Reports and do Inquiries. The best way to do this was to create the user in Great Plains, go to SQL Enterprise Manager-Security then open the user's Properties. When you go to the Database Access tab, you can mark db_datareader then the user can only do SELECT statements on the database BUT DYNGRP premissions override the db_datareader option. Being a member of DYNGRP gives users access to run all of the SQL commands and they need to be in that group to even be able to log into Great Plains.

The solution from Great Plains about this security flaw was either to modify the field level security on each window and remove access to the save button OR just give them access to Inquiry and Reports window only.

How about SQL Injection on web-applications? The solution is to build web applications and consider security during design, not post-release. Analyze the resulting error messages from malformed sql statements, ensure that you make them as generic as possible. Download the latest patches and use Microsoft Baseline Security Analyzer(MBSA).

Monday, February 06, 2006

GP Product Report III

PROBLEM REPORT:
The bug ID or problem report number is 18409. Title is 'The payment number is not reserved in Receivables Management' message. This applies to all versions of Great Plains eEnterprise including 9.0.

COMMENTS:
When you create a sales invoice from an order with Credit Card, Check or Cash payment and try to post the document, you'll receive an error in the sales edit list - 'The payment number is not reserved in Receivables Management'.

MBS would send you a fix by deleting & recreating RM00401 but it only worked once in my case. The solution would be to:
1) Remove the sales payment on the invoice then Save
2) Enter the same sales payment on the invoice then Save
3) Delete the General Ledger entries because when the sales payment was entered the first time the entries were also posted. If you post the sales payment distribution entries, this would create a duplicate entry

NOTE: If you're trying to remove a sales payment on a previous year, make sure you open the Financial & Sales module on that month/year.

Digital Transformation unleashed

You're the CIO/CDO sitting in your weekly update executive meeting with the CEO, CFO, COO, and others. You start the meeting with the pr...