Error using the MDM Java Connector

Hi All,
I am developing a Web Dynpro type DC where I need to use MDM, I tried to reach MDM repository using the following code:
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.resource.ResourceException;
import a2i.common.A2iResultSet;
import a2i.common.CatalogData;
import a2i.common.ResultSetDefinition;
import a2i.search.Search;
import com.sapportals.connector.ConnectorException;
import com.sapportals.connector.connection.ConnectionFailedException;
import com.sapportals.connector.connection.IConnection;
import com.sapportals.connector.connection.IConnectionFactory;
import com.sapportals.connector.connection.IConnectionSpec;
import com.sapportals.connector.connection.INative;
import com.sapportals.connector.connection.InterfaceNotSupportedException;
import com.sapportals.connector.metadata.CapabilityNotSupportedException;
public class Mdmjconn{
     public /*IConnection*/ String conn()/*throws Exception*/{
          String s = null;
          String str = "start ";
          Context ctx = null;
          try{
               ctx = new InitialContext();
          }catch(NamingException nex){
               str = str + "[" + nex.getLocalizedMessage() + "]" + " NamingException - InitialContext| ";
          IConnectionFactory connectionFactory = null;
          try{
               connectionFactory = (IConnectionFactory)ctx.lookup("deployedAdapters/MDM Factory/shareable/MDM Factory");
          catch(NamingException nex){
               str = str + "[" + nex.getMessage() + "]" + " NamingException - lookup| ";
          catch(ClassCastException ccex){
               str = str + "[" + ccex.getMessage() + "]" + " ClassCastException - lookup| ";
          IConnectionSpec spec = null;
          CatalogData catalog = null;
          IConnection connection = null;
          try{
               spec = connectionFactory.getConnectionSpec();
               spec.setPropertyValue("UserName", "Admin");
               spec.setPropertyValue("Password", "Admin");
               spec.setPropertyValue("Server", "localhost");
               spec.setPropertyValue("Port", "2005");
               spec.setPropertyValue("RepositoryLanguage", "English [US]");
          }catch(ConnectorException cex){
               str = str + "[" + cex.getMessage() + "]" + " ConnectorException - getConnectionSpec| ";
          }catch(NullPointerException npex){
               str = str + "[" + npex.getMessage() + "]" + " NullPointerException - getConnectionSpec| ";
          INative nativeInterface = null;
          try{
               connection = connectionFactory.getConnectionEx(spec);
          }catch(ConnectionFailedException cfex){
               str = str + "[" + cfex.getMessage() + "]" + " ConnectionFailedException - getConnectionEx| ";
          }catch(ConnectorException cex){
               str = str + "[" + cex.getMessage() + "]" + " ConnectorException - getConnectionEx| ";
          }catch(NullPointerException npex){
               str = str + "[" + npex.getMessage() + "]" + " NullPointerException - getConnectionEx| ";
          try{
               nativeInterface = connection.retrieveNative();
          }catch(CapabilityNotSupportedException cnsex){
               str = str + "[" + cnsex.getMessage() + "]" + " CapabilityNotSupportedException - retrieveNative| ";
          }catch(NullPointerException npex){
               str = str + "[" + npex.getMessage() + "]" + " NullPointerException - retrieveNative| ";     
          try{
               catalog = (CatalogData)nativeInterface.getNative(CatalogData.class.getName());
          }catch(InterfaceNotSupportedException insex){
               str = str + "[" + insex.getMessage() + "]" + " InterFaceNotSupportedException - getNative| ";
          }catch(ConnectorException cex){
               str = str + "[" + cex.getMessage() + "]" + " ConnectorException - getNative| ";
          }catch(NullPointerException npex){
               str = str + "[" + npex.getLocalizedMessage() + "]" + " NullPointerException - getNative| ";
//TEST SEARCH BEGIN
            A2iResultSet rs;
            ResultSetDefinition resultdefinition = new ResultSetDefinition("MDM_BUSINESS_PARTNERS");
           resultdefinition.AddField("MDM_PARTNER_ID");
           resultdefinition.AddField("MDM_FIRST_NAME");
           resultdefinition.AddField("MDM_LAST_NAME");
           resultdefinition.AddField("M_CITY");
           resultdefinition.AddField("M_POSTAL_CODE");
           resultdefinition.AddField("M_STREET");
           resultdefinition.AddField("M_HOUSE_NUMBER");
           resultdefinition.AddField("M_COUNTRY");     
           resultdefinition.AddField("M_DUNS");
           resultdefinition.AddField("MDM_TAX_NUMBER_1");
          Search search = new Search(resultdefinition.GetTable());
          try {     
                 rs = catalog.GetResultSet(search, resultdefinition, "MDM_PARTNER_ID", true, 0);
                 int i=0;//1316;
                 int idd = 0;
               i = 1327;
               idd = rs.GetValueAt(i, "MDM_PARTNER_ID").GetIntValue();
               String namef = rs.GetValueAt(i, "MDM_FIRST_NAME").TranslateToString();
               String namel = rs.GetValueAt(i, "MDM_LAST_NAME").TranslateToString();
               String city = rs.GetValueAt(i, "M_CITY").TranslateToString();
               String pc = rs.GetValueAt(i, "M_POSTAL_CODE").TranslateToString();
               String street = rs.GetValueAt(i, "M_STREET").TranslateToString();
               String hn = rs.GetValueAt(i, "M_HOUSE_NUMBER").TranslateToString();
               String country = rs.GetValueAt(i, "M_COUNTRY").TranslateToString();
               String duns = rs.GetValueAt(i, "M_DUNS").TranslateToString();
               String tax = rs.GetValueAt(i, "MDM_TAX_NUMBER_1").TranslateToString();
               str = namef + ", " + namel + ", " + city + ", " + pc + ", " + street + ", " + hn + ", "+ country + ", "+ duns + ", " + tax + "! ";
            }catch (a2i.core.StringException e){
                 e.A2iPrintError();     
                 str = str + "Error at GetValueAt| ";
            }catch(NullPointerException npex){
                 str = str + "[" + npex.getLocalizedMessage() + "]" + " NullPointerException - GetResultSet, GetValueAt| ";
//TEST SEARCH END               
          try{
               connection.close();
          }catch(ResourceException rex){
               str = str + "[" + rex.getMessage() + "]" + " ResourceException - close| ";
          }catch(NullPointerException npex){
               str = str + "[" + npex.getMessage() + "]" + " NullPointerException - close| ";
          if(str == null){
               return "zero";
          }else
          return str;
I got the following result:
<i>start [null] ClassCastException - lookup| [null] NullPointerException - getConnectionSpec| [null] NullPointerException - getConnectionEx| [null] NullPointerException - retrieveNative| [null] NullPointerException - getNative| [null] NullPointerException - GetResultSet, GetValueAt| [null] NullPointerException - close| </i>
So the code throws ClassCastException at the <b>lookup</b> method call and causes the other NullPointerExceptions.
I checked the JNDI Registry in VA, the "deployedAdapters/MDM Factory/shareable/MDM Factory" path is right.
What can be the reason for this problem?
Thanks & regards,
Peter

My problem is solved!
The only needed Web Dynpro Library References were the following:
com.sap.mdm.tech.mdm4j
tcconnconnectorframework

Similar Messages

  • Error while deploying MDM Java Connector for EP

    Hi,
    i am a newbie to MDM.i am trying to develop a portal component with the blog "Using MDM5.5 Java Connector with SAP Enterprise Portal 6.0" as reference.
    i created an MDM system in portal and the connection tests passed.
    But when i deploy the code i get the following exception-
    java.lang.NullPointerException
         at com.sap.mdm.connector.connection.MdmConnectionFactory.getConnectionEx(MdmConnectionFactory.java:170)
         at com.sap.portal.ivs.internalconnector.ConnectionProvider.getConnection(ConnectionProvider.java:304)
         at com.sap.portal.ivs.internalconnector.ConnectionProvider.getConnection(ConnectionProvider.java:258)
         at com.sapportals.portal.ivs.cg.ConnectorService.getConnection(ConnectorService.java:478)
         at com.sapportals.portal.ivs.cg.ConnectorService.getConnection(ConnectorService.java:85)
         at com.cts.mdm.MDMtestcomp.doContent(MDMtestcomp.java:36)(this points to the line <b>connection = cgService.getConnection("MDM_SYSTEM_ALIAS", prop);</b>)
         at com.sapportals.portal.prt.component.AbstractPortalComponent.serviceDeprecated(AbstractPortalComponent.java:209)
         at com.sapportals.portal.prt.component.AbstractPortalComponent.service(AbstractPortalComponent.java:114)
         at com.sapportals.portal.prt.core.PortalRequestManager.callPortalComponent(PortalRequestManager.java:328)
    This is my code-
    IConnectorGatewayService cgService = (IConnectorGatewayService)
                   PortalRuntime.getRuntimeResources().getService(IConnectorService.KEY);
              ConnectionProperties prop =
              new ConnectionProperties(request.getLocale(), request.getUser());
                   IConnection connection = null;
                   connection = cgService.getConnection("MDM_SYSTEM_ALIAS", prop);
         INative nativeInterface = connection.retrieveNative();
                        CatalogData catalog = new CatalogData();
                             catalog = (CatalogData)
                   nativeInterface.getNative(CatalogData.class.getName());
                        ResultSetDefinition rsd = new ResultSetDefinition("Customers");
              rsd.AddField("Name");
              Search search = new Search("Customers");
              A2iResultSet rs = null;
                             rs = catalog.GetResultSet(search,rsd,"Name",true,0);
    response.write(rs.GetFields().toString());
    Have i missed anything?
    Should i deploy any .jar file? (i've already deployed MDM4J.jar) and referenced it in portalapp!
    Thanks in advance
    SwarnaDeepika

    Hello Swarna:
    I believe than rather than deploying the MDM4J.jar, you should deploy this components:
    com.sap.mdm.tech.mdm4j.sda
    com.sap.mdm.tech.connector.sda
    BPMDMTECHN00_0.sca
    BPMDMAPPLI00_0.sca
    Once you deploy those, you should have no problems. Another solution would be to take your MDM4J.jar and wrap it into an SDA, then deploy, but that would be pretty much the same.
    Those components are included on your MDM CD. Please ensure you use the same Version/support package/hotfix all over your landscape.
    I hope that helps
    Alejandro

  • WebDynpro with MDM Java Connector

    Hi,
    I'm trying to setup the JCA in MDM5.5 SP4 patch 3 in a Java Stack Engine 6.40.
    I'll be trying to access it from a standalone Webdynpro application.
    In the documentation I got it talks about setting a file:
    application-j2ee-engine.xml
    which only exist in J2EE apps, and not WebDynpro apps.
    Any ideas?
    Cheers,
    Michael

    If you are using the MDM Java Connector from Web Dynpro application, you have to set the properites accordingly.
    Go to <b>properties of Project</b> and there choose "<b>Webdynpro reference</b>". Here, choose <b>library reference</b> and there give your library reference.

  • Problem with HowTo guide - Use the BI Java SDK in a Web Dynpro Application

    Hello,
    I am following the HowTo guide - Use the BI Java SDK in a Web Dynpro Application
    at <a href="https://www.sdn.sap.comhttp://www.sdn.sap.comhttp://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/e49be590-0201-0010-0c83-fc20e5da124f">this link</a>.
    I have configured the connector on the WAS as needed.
    The problem is that when I run the application I receive an Unauthorized error on the connector URL.
    If I open this URL on a browser I receive a pop-up for UID and PWD and when I enter the same UID and PWD I used to configure the connector I am able to login and see the WSDL.
    Any ideas?

    I've never tried using BI in WebDynpro !!!
    But i foond one posting on the connection problem https://forums.sdn.sap.com/click.jspa?searchID=955524&messageID=2133396
    Regards,Anilkumar

  • Unable to register the SAP JAVA CONNECTOR sapjco3.dll file

    HI
    I'm trying to intergrate BO and BW using SAP BO Integration kit, and following the manual at http://www.sdn.sap.com/irj/boc/index?rid=/library/uuid/a00ee3b2-5283-2b10-f1bf-8c6413e0898f&overridelayout=true
    But first i must install the SAP Java Connector, I have downloaded them from https://websmp107.sap-ag.de/~form/sapnet?_SHORTKEY=01100035870000719346&.
    My server is a WMvare win 2008.service pack 2.
    My problem is that i'm unable to register the sapjco3.dll file.
    I'm runnning the comand regsvr32 "C:windowssyswow64sapjco3.dll
    but I only get the error message "The module "sapjco3.dll" was loaded but the entry-point DllRegisterServer was not found. Make sure that "sapjco3.dll" is a valid DLL or OCX file ant try again"
    I hav tried both the 64 bit and the 32 bit version of the dll. same error.
    the dll version is 7110.34.16.7531
    Any ideas
    Thanks

    Hi Pal,
    you need to use the Java Connector v 2.1.8 and there is no need to register the DLL.
    ingo

  • How to install the SAP Java Connector

    Hi,
    I am unsure how to install the SAP Java Connector on Linux (Suse Linux Enterprise 10). The SAP Integration Kit install and admin guide says:
    ===
    u2022 Copy the librfccm library and the libsapjcorfc library to busines
    sobjects_root/enterprise120/PLATFORM_PATH, where busines
    sobjects_root is the full path to your businessobjects directory,
    and PLATFORM_PATH is your platform. For example, PLATFORM_PATH
    is solaris_sparc for an installation on Solaris.
    u2022 Use symbolic links for the location of the librfccm library and the lib
    sapjcorfc library.
    u2022 Add the location of the librfccm library and the libsapjcorfc library
    to the library path.
    ===
    Do I have to do all 3 steps or is the 1st one (copying of files) enough?
    On the other hand, the SAP Java Connector guide says:
    ===
    Then add {sapjco-install-path} to the LD_LIBRARY_PATH environment variable.
    Finally, add {sapjco-install-path}/sapjco.jar to your CLASSPATH environment variable.
    ===
    So, what to do?
    Thanks!

    Thanks for your help. So i copied the 2 files as mentioned in point 1.
    Where do I have to copy the file sapjco.jar to? There is no shared lib folder after installing BO Edge 3.1 on a Linux system.
    I copied the sapjco.jar to /bobje/tomcat/common/lib but still get the message that the Java Connector files are not in the correct directory.
    I already copied the files librfccm.so and libsapjcorfc.so to /bobje/enterprise120/linux_x86 .
    Thanks again!
    Edit: problem solved: Copying the sapjco.so to tomcat/shared/lib is correct, if the directory doesn't exist then just create it (mkdir). The message is just plain information 7 hint.

  • Access BAPIs Using the SAP Java Resource Adapter

    Hi experts,
    Can someone tell me how to Access BAPIs Using the SAP Java Resource Adapter?

    hi Shweta,
    Please refer the step by step procedure:
    1. Start the deploy tool of the SAP J2EE Application Server with the DeployTool.bat in the directory //<SAP J2EE Engine Installation Directory/.../j2ee/deploying.
    2. Choose Project &#8594; New Project and enter a name for the new project.
    3. Click on the Deployer tab.
    4. From the menu path, choose Deploy &#8594; EAR &#8594; Load Module and select the sapjra.rar file.
    5. For the newly created node sapjra.rar, choose Server Settings &#8594; Identity Subjects and select Caller Impersonation as authentication type, so that the J2EE user data is used to log on to the ABAP system.
    6. Make sure that the J2EE Application Server is running. Connect to the J2EE Application Server with Deploy &#8594; Connect.
    7. Deploy the sapjra.rar using the menu Deploy &#8594; Deployment &#8594; Deploy Module.
    8. Enter SAPJRADemo as application name and start the application.
    9. Close the deploy tool.
    10. Start the Visual Administrator again.
    11. Select the Cluster tab and switch to <Server Node> &#8594; Services &#8594; Connector Container.
    12. Click on the Runtime tab and choose sap.com/SAPJRADemo &#8594; eis/SAPJRADemoFactory.
    13. Choose Managed Connection Factory &#8594; Properties. On this page, you need to specify the logon data for the ABAP system. There is already some dummy data visible in the property list if no real system data has been specified so far.
    14. To change the value of a property, select the property in the list, change the value underneath it, and add the changes using the Add button. At the end, do not forget to save all changes by pressing the button Save Changes. The user configured for the SAP JRA must be the user authorized to read metadata of function modules.

  • How to use the Public Java API

    Is it possible to use the Public Java API to write a custom transformation in Java and use this in OWB. i.e. Say I have a Dateofbirth field in my source database and an Agegroup field in the target database, and I write a transformation in Java to take the Dateofbirth as an input parameter to the method and calculate the Agegroup e.g. 25-30, and return it from this method which then populates the Agegroup field in the target database. If so, how do I go about this?

    Martin,
    In general, yes you could... but you do not need to. You could use the UI to implement this requirement. The public Java API is there for you to manipulate metadata. How you implement your system, is independent of that.
    The way you would go about the case you just mentioned... you would write the Java code, deploy it into the database, wrap it in a PL/SQL procedure or function, and call it from OWB.
    Would this be a good idea...? I think no. Unless you have very complicated calculations that can only be performed in Java, I strongly encourage you use the PL/SQL language. Reason being: transformation will be much faster, because there is no need to translate PL/SQL into Java and back again.
    Hope this helps,
    Mark.

  • Identifing duplicate master data records using the MDM Import Manager

    hi all
    I read the Topis "How to identify duplicate master data records using the MDM Import Manager</b>"
    i tried to create import maps and to set rules. but when i import them it creates the new vendor records for each rule with rest of the fields blank.
    when i import vendor data all the three fields i.e Match rate , match type and match group are blank.
    My Question is :
    I am getting vendor data from SAP R/3.
    In which source (in lookup xml file or data xml file) do i have to include these above three fields and how all the rules will be reflected in repository?

    Hi Sheetal
      Here we go when do you Import any data (vendor master) please follow the following steps;
    1. First of all apply the map to the source data
    2. In the Match Record tab there are 3 possiblities
       a.[Remote Key] : Checks the current source rec with
         repository along with all the fields - This is
         default
       b.Remove [Remote key] - by double click the same; and
         choose any single fields like Vendor Number or
         name - Then the current record will be matched
         with the repository based on the field.
       c.Instead of single field you can choose combination
         also.
    3. Based on the Match results, match class will be set
       automatically;
       a. None
       b. Single
       c. Multiple
    4. Then Match Type
        a.Exact-All the individual value matches are Equal.
        b.Partial-At least one value match is Equal and at least one Undefined; no value matches are Not Equal.
        c.Conflict-At least one value match is Equal and at least one value match is Not Equal.
    5. then chek the Import status and Execute the import.
    Hope this helps you.
    cheers
    Alexander
    Note: Pls dont forget reward points.

  • Where can i find the BI Java Connector Files (for example: bi_sdk_jdbc.rar)

    Hi,
    where can i find the BI Java Connector Files:
    bi_sdk_jdbc.rar
    bi_sdk_xmla.rar
    bi_sdk_sapq.rar
    bi_sdk_odbo.rar
    Can anyone help me?

    hi Christian,
    these files should be included in bi java sdk
    https://www.sdn.sap.com/irj/sdn/downloaditem?rid=/webcontent/uuid/78b3db58-0501-0010-b895-f75cd8fdf674 [original link is broken]
    hope this helps.

  • Error message the update" java for Mac OS X10.5 Update 4" can't be installe

    today i tried to installed the new update. I getting the error message the update" java for Mac OS X10.5 Update 4" can't be installed. Is anyone else getting this error? What do I do to get it installed?
    Austin

    Same here, can't install it on my Mac Pro with 10.5.7:
    16.06.09 09:04:10 Software Update[2553] reading from /var/folders/33/33rOYQ3fFnmQjRkC-FShb++TI/Cleanup At Startup/com.apple.SoftwareUpdate.HvePu4/Java für Mac OS X 10.5 Update 4: Is a directory
    16.06.09 09:04:10 Software Update[2553] reading from /var/folders/33/33rOYQ3fFnmQjRkC-FShb++TI/Cleanup At Startup/com.apple.SoftwareUpdate.HvePu4/Java für Mac OS X 10.5 Update 4/Java für Mac OS X 10.5 Update 4.dist: Operation not permitted
    16.06.09 09:04:10 Software Update[2553] reading from /var/folders/33/33rOYQ3fFnmQjRkC-FShb++TI/Cleanup At Startup/com.apple.SoftwareUpdate.HvePu4/Java für Mac OS X 10.5 Update 4/Packages: Is a directory
    16.06.09 09:04:10 Software Update[2553] reading from /var/folders/33/33rOYQ3fFnmQjRkC-FShb++TI/Cleanup At Startup/com.apple.SoftwareUpdate.HvePu4/Java für Mac OS X 10.5 Update 4/Packages: Is a directory
    Apple, please fix

  • Using the command "java" with DOS

    Hey, until yesterday, I was able to simply use the commands "java, or javac" to run, or compile java in DOS. But now for some reason I can't use these commands. I have to use the full addresses of the java and javac.exe files. How can I fix this? Do I have to be in the \bin folder to use these with the command name only? It's a pain to store my files in the bin folder. Any help would be appreciated.

    See here: http://java.sun.com/j2se/1.4/install-windows.html#Environment

  • I would like to have my iPad2 mirror onto 2 TVs at the same time. Can I use the iPad HDMI connector with a HDMI splitter to accomplish this?

    I would like to have my iPad2 mirror onto 2 TVs at the same time. Can I use the iPad HDMI connector with a HDMI splitter to accomplish this?

    I don't want to spend the money on the HDMI connector and HDMI splitter if it won't work.

  • How can i use the operationsComplete JAVA API in EJB2.0

    Hello guys,
    My Issue is cleaning the EJB Cache. some guys saying using JAVA API like operationsComplete like the follwing
    weblogic.ejb.interfaces.EJBLocalObject
    public.void.operationsComplete()
    weblogic.ejb.EJBObject
    public.void.operationsComplete()
    Please reffer the link below
    (http://e-docs.bea.com/wls/docs92/ejb/entity.html#wp1194003)
    Understanding Passivation of Entity Beans
    Entity beans that are involved in transactions can be passivated when necessary in order to attempt to prevent a CacheFullException when an attempt is made to insert an entity bean into a cache that is full. Passivation is handled automatically by the EJB container and you do not need to change the way you program EJBs in order to take advantage of this feature. However, you can optionally program your EJBs to communicate to the cache that they are done performing all operations in the current transaction. The cache can then make use of this information when evaluating beans for the possibility of passivation.
    To optionally program EJBs to notify their cache that they are done performing operations in the current transaction, you can use the operationsComplete Java API as follows:
    weblogic.ejb.interfaces.EJBLocalObject
    public.void.operationsComplete()
    weblogic.ejb.EJBObject
    public.void.operationsComplete()
    It would be great help if any guy give me a solution.
    Thanks in Advance
    Rajasekhar

    Netweaver is comprised of different components...
    in WAS ABAP.. if you go to SPAM.. and select imported support packages and click display..
    You will see list of components.. some of the components you might see at same level and some follow different paths...
    ex:
    SAP_OCS  - > SPAM/SAINT UPDATE 24
    SAP_BASIS -> Support pacakage 13 for 7.0
    SAP_ABAP-> Support pacakge 13 for 7.0
    and the same way you can find different components in java engine...
    http://<host>:<port>/sap/monitoring/SystemInfo
    You can upgrade each of them by individual support packages.. or you can upgrade stack by stack..
    stack is collection of supporpt packages...
    If you follow stack.. then you can tell that you at NW04S Support stack 10 or 11... if you upgrade by support package always it is collection of versions of different support packs in your system...
    Please do come back if you require any further information..
    Award points if this reply found useful

  • ITS Error: "Use the most recent SAPGUI"

    We currently have an SRM 4.0 system with support package 6 with a basis
    component at 640 suport package 13. We are using the classic scenario
    and are connected to an R/3 system what was recently upgraded to ECC
    6.  When we attempt to try to use the WBS, Cost Center or asset search
    helps we get the following error: "Use the most recent SAPGUI
    version".  We can click past the error and eventually get the search
    results.
    This issue does not occur when we switch over to using the internal ITS
    in SRM 4.0.  Since SAP currently supports SRM 4.0 connected to ECC 6.0,
    the fact that we are using the external ITS in SRM 4.0 should not be an
    issue since it is still supported. 
    Does anyone know If there is a requirement for our SRM system to be on the internal ITS
    while connecting to an ECC 6 system?  Also, can anyone please let us know and/or provide any
    published document that states this, I have not found anything that
    states this requirement. 
    Regards,
    -Paul

    Hello there
    I'm not quite sure what differences to HCM the SRM has but we had the same problem. Please check OSS Note 905135 and following. As far as I know the 6.20 external ITS was the last "external" version. Which means all scenarios connecting to a 2004s or higher system need to use other technologies or the internal ITS.
    Lots of luck.
    Harry

Maybe you are looking for