When running a Crystal report you get the message "The Visual Basic UFL that implements this function is missing (or U2lcom.dll is missing). "

Version 5

    Environment: Service Desk with Crystal report versions X, 11 or 2008

     

    Problem:

    When running some of the standard reports supplied with Service Desk (or when you have written your own Crystal reports that use the supplied Crystal User Function Libraries) you may see the message: "The Visual Basic UFL that implements this function is missing (or U2lcom.dll is missing)"

     

    Other symptoms of this issue are:

    • When looking at a formula within Crystal report designer which is using a custom function, the function will be displayed in black rather than blue text (indicating that the function is not found).
      • With the function not installed you would see this in formula editor:

    crufl2.PNG

      • When it is installed correctly you would see this:

    CRUFLblue.PNG

    • When opening a Crystal report in Crystal report designer you see the message "some of the functions did not compile".  You can check this is the same issue (Crystal 11 or higher) by selecting Report - Dependency checker and you will then see the "The Visual Basic UFL that implements this function is missing (or U2lcom.dll is missing)" message.
    • After running the registry batch file and setting the correct db connection you get the error "The ) is missing" and then highlighting function "BusinessHoursBusinessHoursUflBusinessHoursFromNow".

     

    Reason for error:

    In order for each Service Desk console client or server to be able to run a report which uses that crystal functions that we have supplied they must be registered with the GAC (Global Access Cache) on that machine.  We supply a batch file along with the reports which will use an executable called GACutil.exe in order to register these so if this hasn't been run on this client machine or if when it ran it didn't register the files correctly you will see the above symptoms.

     

    NOTE: If you are not sure that this is the reason why you are seeing this error you might want to check the section "How to check whether the functions have registered correctly" at the end of this document as this will prove whether the functions are registered before you start to try to fix the error.

     

    How to register the functions:

     

    Please try each of the methods in turn, moving on to the next one only if the previous method doesn't fix your issue:


    Method 1:

    In order for each Service Desk console client or server to be able to run the report there is a batch file supplied which needs to be run.  This is detailed within the Administrator Guide LANDesk Service Desk Suite 7.5 Administrator on page 118 under "Additional Crystal Reports User Function Libraries".

     

    NOTE:  Please make sure you install the windows SDK for the version of .net that your version of ServiceDesk is running.  For versions 7.4 and 7.5 this is .net 4.  For other versions you can check this by looking at which version of .net is being used by your framework virtual directory within IIS.

     

    Method 2:

    Depending on your operating system and version of .net you may be able to open the %windir%\assembly\ (for example, C:\WINDOWS\assembly) within windows explorer and then open your ServiceDesk reports folder within another instance of windows explorer then simply drag the CRUF*.dll one by one from the reports folder to %windir%\assembly\

    CRUFL32.png

    Method 3:

    • Search the c:\ drive for all versions of REGASM.exe. Ensure that you locate one which is for .net 4 when you look at the properties – details.  If you are on a 64bit machine you need to ensure that it is the 32bit version (NOT the one located within \framework64\).  This is because Crystal is a 32bit application although running on 64bit server.  Copy this AND the associated .config file to your ServiceDesk reports folder.
    • Search the c:\ drive for all versions of GACUTIL.exe. Ensure you locate one which is for .net 4 when you look at the properties – details.  If you are on a 64bit machine you need to ensure that it is the 32bit version (NOT the one located within \netfx 4.0 tools\x64).  Copy this AND the associated .config file to your ServiceDesk reports folder.
    • Copy the attached newREG_CRUFL.bat into your reports folder.  This has been edited to take out the path to regasm.exe so it will pickup the one copied to the reports folder.
    • Then run your newREG_CRUFL.bat by right-clicking on it within the reports folder and selecting to run as administrator.

     

    How to check whether the functions have registered correctly:

     

    From .net version 4 you should be able to just browse to your %windir%\assembly\ (for example, C:\WINDOWS\assembly) within windows explorer to view the contents of the GAC and check that the function is listed (as per below):

    crufl.PNG

    Prior to .net 4 (older versions of Service Desk) you would use the shfusion.dll for the version of .net that you are running for example:

    http://msdn.microsoft.com/en-us/library/34149zk3(v=vs.80).aspx

     

    IMPORTANT NOTE: I have also raised a problem reference for making the installation of these CRUFLs much simpler and less likely to fail.  This is problem 5448 and so if you experience this issue I would encourage you to please let your Service Desk support provider know, quoting the problem reference.