Registration

Dear SAP Community Member,
In order to fully benefit from what the SAP Community has to offer, please register at:
http://scn.sap.com
Thank you,
The SAP Community team.
Skip to end of metadata
Go to start of metadata

This is a read-only utility that checks all Universe, CrystalReport,Webi, Pdf, Excel, Word, FullClient, XL.XcelsiusEnterprise, Program, Txt, Rtf and Powerpoint objects in the CMS repository to make sure they have the required SI_FILES property.  If the SI_FILES property is missing or malformed in an object, it may cause the BI 4.x Upgrade Management Tool to fail with error:  Where applicable, instance objects are also checked.
 

CE SDK Exception occurred : 'The property with ID SI_FILES does not exist in the object (FWM 02021)' (FWM 04002) 


The tool scans through each object and creates a log file in the user home directory called scanresults.log which will identify by SI_NAME and SI_ID which objects are corrupted.  For each object, it checks the following:

  • Confirms that SI_FILES and SI_PROCESSINFO.SI_FILES property bag exists
  • Confirms that there is a value greater than 0 for SI_NUM_FILES
  • Confirms if the number of SI_VALUE and SI_FILE entries match the count specified by SI_NUM_FILES
  • Confirms that there is a value for SI_VALUE(n), SI_FILE(n), and SI_PATH properties
  • If any of the above checks fail or if a null pointer exception is thrown it will print the object name and id to the console window and log file and continue on to the next object
     

Once the objects are identified, they can be deleted from the source XI 3.1 system and the Upgrade Management Tool may be executed again successfully.

IMPORTANT:  Please ignore results for objects of type Flash 

Running the tool

1. On your XI 3.1 server or client tools host, copy the file reportPropsIntegrityCheck.jar to <DRIVE>:\Program Files (x86)\Business Objects\javasdk\bin

2. Open a command prompt, browse to <DRIVE>:\Program Files (x86)\Business Objects\javasdk\bin

3. Execute the program using the following parameters:

-u Administrator
-p YourAdminPassword
-s YourCMSName Note: If you are running CMS on some other port than 6400, specify with a colon then port
-d logPath OPTIONAL PARAMETER. Note: use only forward slashes between folders
-o universe OPTIONAL PARAMETER to check universes only
-x 12345  OPTIONAL PARAMETER to skip an object (where 12345 is an example SI_ID)

For example:

C:\Program Files (x86)\Business Objects\javasdk\bin>java -jar reportPropsIntegrityCheck.jar -u Administrator -p Password1 -s BIPW08R2


4. Check the file scanresults.log under %HOMEPATH% (user home directory) or check the path specified by -d parameter

Note: For convenience purposes, a comma seperated list of found object ids will be printed to the log file

BusinessObjects Enterprise XI 3.1
DOWNLOAD

SAP BI Platform 4.x
DOWNLOAD

 

 




 

  • No labels

55 Comments

  1. Would this, by chance, work with BI4.x?

    1. Hey John,
      Not yet but I plan to do something similar for BI4.x most likely in the support tool 2.0 codeline

      Cheers
      Toby 

      1. Since the installation paths are different between XI3.1 and BI4.1, what path should we extract the jar file to?

        The only bin directory that I find close to the patch listed for XI3.1 is <Drive>:\Program Files (x86)\SAP BusinessObjects\SAP BusinessObjects Enterprise XI 4.0\java\pjs\container\bin.

        1. Hey John,

          Try this one:

          C:\Program Files (x86)\SAP BusinessObjects\SAP BusinessObjects Enterprise XI 4.0\win64_x64\sapjvm\bin

      2. I get the following error:

        Exception in thread "main" java.lang.UnsupportedClassVersionError: reportPropsIn tegrityCheck/Scan : Unsupported major.minor version 51.0          at java.lang.ClassLoader.defineClass1(Native Method)          at java.lang.ClassLoader.defineClassCond(ClassLoader.java:735)          at java.lang.ClassLoader.defineClass(ClassLoader.java:716)          at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:14 1)          at java.net.URLClassLoader.defineClass(URLClassLoader.java:336)          at java.net.URLClassLoader.access$000(URLClassLoader.java:59)          at java.net.URLClassLoader$1.run(URLClassLoader.java:250)          at java.security.AccessController.doPrivileged(Native Method)          at java.net.URLClassLoader.findClass(URLClassLoader.java:243)          at java.lang.ClassLoader.loadClass(ClassLoader.java:372)          at java.lang.ClassLoader.loadClass(ClassLoader.java:313)          at java.lang.Class.forName0(Native Method)          at java.lang.Class.forName(Class.java:249)          at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoa der.java:56)

        I'm running BI4.1sp5.  Could that be the issue?

        I hate the formatting options available in the comments by the way.

         

        1. Hi John

          Here is a new version with backwards compatibility for JRE 1.6.

          https://mdocs.sap.com/mcm/public/v1/open?shr=hFmg_J7KbmG0vtemkJ04mwr8VSbfuyuKh2OcNSVwPpU

          I tested with 64-bit SAPJVM on 4.1 and it worked ok.

          Thanks

          Toby

          1. The problem was the version of SAPJVM.  I tried the original download with Java 1.7 64bit JRE and it ran fine.

  2. Former Member

    You are awesome, Toby!  Thank you so much for getting the utility created for us so quickly!

    All My Best,

    Dafang

  3. Former Member

    Hi Toby,

    we are facing the same issues on our XI 3.1 platform, Is there a chance to get this tool? There is no download attached to your wiki.

    Thanks and best regards,

    Sebastian

    1. Hey Sebastian,

      Here is the current version.  Please post back the results.  It will be helpful for me to know if it detects your problem

      https://mdocs.sap.com/mcm/public/v1/open?shr=botqu5_Reo7tN3s6HkoAAHfpeT9T1NYCBWbk-vOQ0II

      Thanks,
      Toby 

      1. Former Member

        Hi Toby,

        we are using SAP BO XI 3.1 based upon Linux. There we are facing the following error:

        Error creating log file

        Successfully logged on to system: libosf
        Found 3094 parent objects and instances of type CrystalReport, Webi, PDF, Excel, and Word
        java.lang.NullPointerException
        java.lang.NullPointerException
                at reportPropsIntegrityCheck.Scan.execute(Scan.java:315)
                at reportPropsIntegrityCheck.Scan.main(Scan.java:63)
                at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
                at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
                at java.lang.reflect.Method.invoke(Unknown Source)
                at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
        Is there a chance to define the log file folder path?

        Best regards,

        Sebastian

        1. Hi Sebastian,

          Oh yeah, let me make the log path a command line property so you make it work on Linux.  I'll post another version soon.

          Thanks
          Toby 

        2. Hi Sebastian,

          Ok, I have created a new version.  Now you can add -d /some/log/path and it will write the log to the specified path. 

           

          Cheers
          Toby 

           

          1. Former Member

            Hi Toby,
            Thanks for your great work and quick reply! The program works fine! At least it did not help us to resolve our SDK Exception.

            We are not able to use LCM anymore as we are facing exactly this error message. We wanted to give it at least a try, if it helps us to resove the issue.

            Is there a chance to identify any other faulty items in our repository?

             

             

            Best regards,

            Sebastian

            1. Hey Sebastian,

              Yes, there is definitely a chance to extend it to look for other corruptions.  Do you have an incident open on your problem?  What version of BI do you have?  In the case which inspired this tool, it did detect the problem.  There was instances which had a null SI_FILES property bag which caused UMT to fail.  I would be interested in understanding why the tool did not detect your problem.  One possibility is that the problem is in an object type which I am not currently scanning.  What types of objects are you trying to promote?

              Thanks
              Toby 

              1. Former Member

                Hi Toby,

                yes we have an open ticket on this case. (1003838 /2014) Right now we stuck in dead end.
                The error in the LCM occurs, as soon as objects with references to universes and connections are transported.

                A simple test report without reference to a universe doesn't cause this error.

                Therefore we assume that there are some corrupt entries for universes and connections in the repository.

                Thanks a lot for your help!

                Best regards,

                Sebastian

                 

                1. What about a test report going against a sample connection / universe such as eFashion?  

                  Try promoting just universes and dependent connections to biar, does that fail?  If so, then the problem must exist in the SI_FILES of a unv object (of which this tool is not currently scanning)

                  Regards
                  Toby 

                  1. Former Member

                    Hi Toby,

                    BIAR Export with efashion and any other universe with or without connection is working fine.

                    The direct transport of the efashion without or with connection is failing with error:
                    Commit attempted and failed, Promotion Status=Failure : Job promotion failed. The reason for failure : com.businessobjects.lcm.utilities.LCMException: com.businessobjects.sdk.biar.exception.XSDException$CESDKException: CE SDK Exception occurred : 'The property with ID SI_FILES does not exist in the object' (FWM 04002) cause:com.crystaldecisions.sdk.exception.SDKException$PropertyNotFound: The property with ID SI_FILES does not exist in the object detail:CE SDK Exception occurred : 'The property with ID SI_FILES does not exist in the object' (FWM 04002)
                    ....

                    Thanks and best regards,

                    Sebastian

                      1. Former Member

                        Hi Toby,

                        our SAP message did some progress(after 6 month). Your collegeaus colleagues think there is a wrongly linked connection in our system. Would there be a slight chance to have your tool enhanced to connections as well?

                        We really appricieate your help!

                        Thanks a lot for your great support!

                         

                        Best regards,

                        Sebastian

                        1. Yes, it could be added.  Can you provide more details on what the problem was?  Do you have an SAP Note or incident#?  Or if you want to provide the infoobject properties that are problematic that would work too.

                          Thanks
                          Toby 

  4. Former Member

    Hi Toby,

     

    I feel the script would be a time saver for me, could you upload it back, the link seems to have expired

     

    -Guru

  5. Former Member

    Hi Toby

    Thanks for this awesome tool!

    Just one suggestion: is it possible to get all lines visible in the DOS command line?

    I need all the Java trace, example: 

    Object ****** with id 2694098 threw an exception while accessing SI_FILES property bag


    java.lang.StringIndexOutOfBoundsException: String index out of range: 0
            at java.lang.String.charAt(String.java:707)
            at com.crystaldecisions.celib.properties.IDHelper.nameToID(IDHelper.java:185)
            at com.crystaldecisions.enterprise.ocaframework.WireOb3Unpacker.unpackID(WireOb3Unpacker.java:383)
            at com.crystaldecisions.enterprise.ocaframework.WireOb3Unpacker.next(WireOb3Unpacker.java:252)
            at com.crystaldecisions.celib.properties.PropertyBag.merge(PropertyBag.java:665)
            at com.crystaldecisions.celib.properties.PropertyBag.merge(PropertyBag.java:714)
            at com.crystaldecisions.celib.properties.PropertyBag.merge(PropertyBag.java:705)
            at com.crystaldecisions.celib.properties.PropertyBag.unpack(PropertyBag.java:656)
            at com.crystaldecisions.enterprise.ocaframework.WireOb3Unpacker.unpackRawValue(WireOb3Unpacker.java:47
    7)
            at com.crystaldecisions.celib.properties.Property.getValue(Property.java:387)
            at com.crystaldecisions.celib.properties.Property.getPropertyBag(Property.java:344)
            at com.crystaldecisions.celib.properties.PropertyBag.getPropertyBag(PropertyBag.java:425)
            at com.crystaldecisions.sdk.properties.internal.SDKPropertyBag.getProperties(SDKPropertyBag.java:148)
            at com.crystaldecisions.sdk.properties.internal.SDKPropertyBag.getProperties(SDKPropertyBag.java:144)
            at reportPropsIntegrityCheck.Scan.execute(Scan.java:232)
            at reportPropsIntegrityCheck.Scan.main(Scan.java:68)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
            at java.lang.reflect.Method.invoke(Method.java:597)
            at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
    Object ****** with id 2694098 threw an exception while accessing SI_PROCESSINFO.SI_FILES property bag


    com.crystaldecisions.celib.exception.UnexpectedPropertyValueRuntimeException: The property with ID  has an une
    xpected value 3:SI_PATH=frs%3A%2F%2FInput%2Fa_210%2F027%2F041%2F2694098%2F,0P&SI_NUM_FILES=1,03&021=frs://Inpu
    t/a_210/027/041/2694098/_awu1hwofaohdrau0vxa0ilg-guid[aezd9.fsfqphgxvzjylbpsu].wid,0P&SI_VALUE1=66615,03
            at com.crystaldecisions.enterprise.ocaframework.WireOb3Unpacker.unpackRawValue(WireOb3Unpacker.java:47
    4)
            at com.crystaldecisions.celib.properties.Property.getValue(Property.java:387)
            at com.crystaldecisions.celib.properties.Property.getPropertyBag(Property.java:344)
            at com.crystaldecisions.celib.properties.PropertyBag.getPropertyBag(PropertyBag.java:425)
            at com.crystaldecisions.sdk.properties.internal.SDKPropertyBag.getProperties(SDKPropertyBag.java:148)
            at com.crystaldecisions.sdk.properties.internal.SDKPropertyBag.getProperties(SDKPropertyBag.java:144)
            at reportPropsIntegrityCheck.Scan.execute(Scan.java:332)
            at reportPropsIntegrityCheck.Scan.main(Scan.java:68)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
            at java.lang.reflect.Method.invoke(Method.java:597)
            at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)

     

    And not only:

    Object ****** with id 2694098 threw an exception while accessing SI_FILES property bag

    Object ****** with id 2694098 threw an exception while accessing SI_PROCESSINFO.SI_FILES property bag

     

    Best Regards

    Guillaume

    1. Hi Guillaume,

      Thanks for the feedback.  I took a look and found that anywhere I am catching an exception, I am also doing an e.printStackTrace() which means that if an exception is thrown then the full stack will output to the console window.

      In the other cases, I am not actually catching an exception.  Instead I just check for a null property bag or a property containing a null value.  For these cases, I just output the SI_ID of the object being inspected.

      This may explain why you see the exception stack for some issues but not others (any "others" will be a null pointer exception if I were to allow it to throw an exception)

      Regards
      Toby

      PS.  I'm working on building a more robust "Integrity Checker" utility which will have a nice GUI and be included in the BI Platform Support Tool 2.1 release.  It will check much more types of corruption including the SI_FILES corruption as described in this article.

       

  6. Former Member

    Hi Toby

    Thank you very much for your quick reply! In the future release, could you also include an abstract: counters (all errors, number of errors per type, number of errors per object type, etc.)?

    BTW I found an alternative way: (wink)

    java -jar reportPropsIntegrityCheck_BI4.jar -u Administrator -p myPwd -s @myCMS -d C:/reportPropsIntegrityCheck_BI4/log > C:/reportPropsIntegrityCheck_BI4/log/scanResults_20150928.log 2>&1

     

    Guillaume

    1. Yes, I can add those metrics to the next version.

      Thanks
      Toby 

  7. Former Member

    Hi Toby

    Something I don't understand.

    How is it possible your tool returns 550 errors while after a reposcan repair I get 0 error in the XML's reposcan! 

    The most irritating is your tool says the truth! Because my backup script (lcmbiar) still crash on "String Index out of range" issue! (sad)

     

    Guillaume

    1. Hi Guillaume,

      Reposcan checks for FRS inconsistencies between CMS database and the FRS input / output folders so it's purpose is different.

      As far as I know, this tool is the only one capable of doing this type of integrity check of the SI_FILES property on the InfoObjects themselves.

      Regards.
      Toby 

      1. Former Member

        Hi Toby

        Hmm you say I'm stuck? There is no solution to correct these objects?!

         

        Regards

        Guillaume

        1. Hi Guillaume,

          The solution is to drop these objects from the database as they are defunct (they would not be viewable if you tried to view them).  

          In the log file, I create a comma seperated list so that you can copy the list of ids into a database query to delete them.  For example:

          DELETE FROM CMS_InfoObjects7 WHERE ObjectID IN (5321, 52342, 23434, 235562)

          Before doing so, it's recommended to stop the CMS and make a database backup.

          Once the defunct objects have been deleted, restart the CMS and the problem should be solved.

          Regards
          Toby 

  8. Former Member

    Hi Toby

    Thank you for the solution.

    BTW I think there is an issue with Flash Object.

    I have this line in the log file, but this object work perfectly! (sad)

    Object Carte avec graphique with id 25652 threw an exception while accessing SI_PROCESSINFO.SI_FILES property bag

     

    One more thing ((wink)) ... is it possible to exclude Personal Folders?

     

    Guillaume

    1. Hi Guillaume,

      Could you attach the InfoObject properties as html files for this flash object through query builder (as zip file)?

      SELECT TOP1 * FROM CI_INFOOBJECTS WHERE SI_ID = 25652

      Regarding personal folders, I'll will look into adding this option when I create a new version of the utility.

      Cheers
      Toby 

      1. Former Member

        Hi Toby

        Sorry for my late answer. https://framapic.org/Zrcapr4vw4Ah/U4EtqOSb

         

        Guillaume

        1. Hi Guillaume,

          Could you save this as HTML and send it to my email in a zip file?  toby.johnston@sap.com

          Thanks
          Toby 

          1. Former Member

            Done! (wink)

            In the log scan:

            Object Carte avec graphique with id 25652 threw an exception while accessing SI_PROCESSINFO.SI_FILES property bag

             

            java.lang.NullPointerException: while trying to invoke the method com.crystaldecisions.sdk.occa.infostore.IProcessingInfo.properties() of a null object returned from com.crystaldecisions.sdk.occa.infostore.IInfoObject.getProcessingInfo()

                at reportPropsIntegrityCheck.Scan.execute(Scan.java:332)

                at reportPropsIntegrityCheck.Scan.main(Scan.java:68)

                at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

                at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

                at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

                at java.lang.reflect.Method.invoke(Method.java:597)

                at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)

             

            Guillaume

            1. Hi Guillaume,

              Thanks alot for letting me know about this problem.

              It looks like the Flash object should not have a check for SI_PROCESSINFO since this property bag is not supposed to exist as it is an agnostic document.  I’ll update the script in the next version.  In the meantime, please ignore this particular check!

              Cheers

              Toby

              1. Former Member

                It was a pleasure! (smile)

                Guillaume

  9. Updated the links again.

    1. Former Member

      Hi Toby

      Did you do the corrections we were talking about at the end of 2015?

       

      Best Regards

      Guillaume

      1. Hey Guillaume,

        No, but soon this and other diagnostic checks will be rolled into a new client tool with a UI.  I'll make the correction for this version and let you know when it's ready.

        Cheers
        Toby 

        1. Former Member

          1. Hey Guillaume,

            Yes, the Diagnostics Checker will be in the BIPST 2.0 client.

            Cheers
            Toby 

            1. Former Member

              Not in 2.0.3 (wink)

               

              Guillaume

              1. Unfortunately not.  It will probably be a couple months before this is completed.  So maybe around 2.0.6 or 2.1 timeframe.

                Cheers
                Toby 

                1. Former Member

                  OK, by the way, thank you very much for this amazing tool. Very useful in my daily work life!

                  Guillaume

                  1. Glad to hear it and thanks for the feedback!

  10. Former Member

    It would appear that the links have expired, is this tool still available?

    1. Hey Richard,

      I updated the links.

      Cheers
      Toby 

  11. Former Member

    Found an issue with some report instances that have a null SI_FILES property along with a valid SI_FILES property from Processing Info.  Looking to run this tool to identify all reports that have this issue, but am unable to download it.  Do you have updated links?

    1. Hi Shane,

      I updated the links.
      Regards
      Toby 

  12. Former Member

    Hi Toby,

    Could you please kindly update the link for 4.x ?

     

    1. Hi Budi,

      I updated the link for BI 4.x

      Thanks
      Toby 

  13. Former Member

    Thanks bunch Toby.