Business Logic Services Error

I am getting an error - java.lang.NullPointerException - when I go to Business Logic Services.  Any ideas.

What version of xMII and what version of the client Sun JRE?
Also make sure you have the Java Web Start preferences set to not use a Proxy on the General tab.
Regards,
Jeremy

Similar Messages

  • Problem with Business Logic Services Logic Editor

    Hi,
    I am trying to go to Logic Editor under Business Logic Services. I'm getting error that "Unable to launch xMII"
    Is there any java related problem in my machine?
    Regards,
    Amalesh

    Amalesh,
    What version of xMII are you using 12.0 by chance.  If so goto the Java Web Start -> File -> Preferences -> and set your proxy to "None".  I would not recommend reinstalling Java as this will not solve your problem and if you are on xMII 12.0, the recommended version is 1.4.2_13 as a minimum.
    Regards,
    Erik

  • Business logic services generate documentation

    Hi,
    RE: Business logic services > generate documentation
    xMII generates transaction documentation for small transactions but fails to do so with large transactions....nothing is returned.  I am currently using V 11.5.1 b63. Has anyone experienced this problem?
    Tom

    Hi,
    I am trying to find the note mentioned in the thread:
    "See note 960362, this outlines the steps necessary to increase the memory size the logic editor will allocate".
    I tried the search feature. As well as some hunting around on the SAP site but no luck. Can someone post the URL.   
    Thanks
    Tom

  • Business Logic Service

    hello friends,
    how to use bls?
    what are the   Pre requirements for using BLS?
    please give any example for BLS application?
    - Murali

    Murali,
    Business Logic Editor is the place where you can design all your application logics in xMII.I advice you to go through the help documentation to get an idea about it
    http://localhost/LighthammerCMS/Help/SAP_xMII_Help.htm
    BLS has a set of action blocks for designing your logics. Transactions built using BLS can be exposed as web service for external use.
    And to answer your other two questions..
    I'm not sure about what you mean by pre requisites..BLS comes along with xMII and there are no separate prerequisites for it...
    For working with it I would recommend basic knowledge on xml, xpath expressions...
    BLS as such cannot create a whole application, but together with Query and display templates, an application can be built...The application can be built using  front page and on click on a button you can call a transaction that gives a table of values that are displayed using  Query and display templates
    Hope this helps.. Reward points if you find them useful
    Regards,
    Ajitha

  • Office 2013 Home and Business terminal service error

    i have a hp server with windows 2008 R2 and office home and business 2013 installed also i have installed ncomputing thin clients on the network and my windows is working fine 
    can any one please help why my ms office 2013 is not working on thin clients and giving me error of terminal services.
    regards
    shabbir nulwala

    Hi,
    By Office 2013 is not working, what is the symptom then?
    Also, what is the error message?
    Regards,
    Melon Chen
    TechNet Community Support
    It's recommended to download and install
    Configuration Analyzer Tool (OffCAT), which is developed by Microsoft Support teams. Once the tool is installed, you can run it at any time to scan for hundreds of known issues in Office
    programs.

  • I'm trying to download office 365 small business package, and every time I try the website it says there is a runtime service error in the '/' application. Is this my mac or is it the website, and how can I fix it?

    I'm trying to download office 365 small business package, and every time I try the website it says there is a runtime service error in the '/' application. Is this my mac or is it the website, and how can I fix it?

    If a phone is sold from one friend to another and wants to use it on a different carrier the friend can contact the carrier it was sold by to request it unlocked.  I know AT&T, Verizon, and Sprint will give you the steps to unlock it as long as the original contract it was bought under has been completed.  eBay/Craigslist is really not the best place to try to get "unlocked phones" from, if it turns out the phone isn't unlocked then I'm really sorry you got stuck with that one and as stevejobsfan said above I would report them immediately and see if you can recover your money.  I sell phones for a living and this happens a lot

  • JSF(front WebGUI)+Spring(Business Logic)+Hibernate(Persistence service)??

    To implement a well designed product with module decoupling,some friends suggest me to use the following architecture:
    JSF(front WebGUI)+Spring(Business Logic)+Hibernate(Persistence service)?
    I was puzzled that whether Spring needed or not??What's especial feature does Spring own that JSF does not have?What's the benefit of integration of JSF and Spring?
    Your reply will be appreciated greatly.
    Thanks a lot!

    Using Spring provides some major benefits; among these are:
    - Spring provides an abstraction layer for easy integration of different persistence layers (e.g. Hibernate, which comes integrated out of the box) and for easy database access
    - It provides an easy-to-use AOP framework based on dynamic proxying and byte code enhancing via CGLIB
    - IMHO most important: Spring provides an Inversion of Control container (see http://martinfowler.com/articles/injection.html) which enables you to remove references to implementation classes from your code and thus facilitates component based architectures.
    By the way, we developed a Spring/JSF integration solution (for source code, documentation and an example application see http://sourceforge.net/projects/jsf-spring). It wraps the JSF context into a Spring context and thus merges them. This way, the JSF context becomes part of Spring and vice versa. This is done in a implementation independent way so that it can be used with any JSF implementation.

  • Business Address Service - Warning instead of error

    Hello together,
    i start to work with the Business Address Service. It's a smart tool and easy to handle but i'm a little confused about the error-handling. If i create a business partner and enter a RIGHT postal code i'm getting an error. But if a change this bp and enter a WRONG postel code i'm getting only a warning and the bp will be saved.
    I searched in the SAP documentation and found the following information
    "If a value is not contained in the corresponding check table, this is regarded as an error and the address is rejected.
    To avoid incorrect entries, you can use the F4 Help for the relevant fields."
    That's not true in our system. Are there any parameters i have to maintain?
    Best regards
    Sascha

    I'm so sorry you're having issues submitting an email- how very frusterating! Let me check into some alternatives for you.
    Either I or one of my colleagues will be back with suggestions soon.
    Thanks,
    Heather

  • Problem in creating a callable object of type Business Logic

    Hi SDN,
    I am trying to create a callable object of type Business Logic in CE.
    When I give all information and click Next, I get this error message.
    Error while loading configuration dialog: Failed to create delegate for component com.sap.caf.eu.gp.ui.co.CExpConfig. (Hint: Is the corresponding DC deployed correctly? Does the DC contain the component?)
    Can anybody help me out with this problem.
    Regards,
    Sumangala

    Hi.
    I'm having the same problem as Senthil in NW2004s SP15 with my application service and methods not showing up in the Callable Object wizard for Composite Application Services after I choose the Endpoint.  The only application name that shows up in the wizard is caf.tc, and the only service names that show up for it are LDDataAccessor, Metadata, and PropPermissionService.
    My IDE is on one machine and the application server I deploy to is located on a different machine.  My endpoint to the remote application server looks to be correctly configured.  The Composite Application Service seems to be deployed properly as I'm able to see it and test that it works in the Web Services Navigator <http://remotehost:50000/wsnavigator/>
    My deployed application service is a remote enabled service and is also web services enabled as well.
    I'm not sure if this is relevant, but I noticed that the generated Java code does not create any remote EJB interfaces (only home and local interfaces were generated).
    Something else I noticed is that when I proceed to the External Service Configuration -> Business Entities screen <http://remotehost:50000/webdynpro/dispatcher/sap.com/cafUIconfiguration>, I only see three business entities displayed, and the following error message is displayed: "Corrupt metadata has been detected. This may prevent some objects from being displayed. Check the server log for more details."  I was unable to find anything in the instance log files.  Is the error message indicative of the problem?
    I am developing locally without a NetWeaver Development Infrastructure (NWDI) in place.
    I'm wondering if the credentials specified in the endpoint require any special roles or privileges.
    Senthil, do any of these additional descriptions apply to you as well?
    Edited by: Ric Leeds on Jun 20, 2008 4:37 PM

  • ALE Logical System Error

    Hi Experts
    In a simple File to Idoc scenario i used a BPM and did the mapping outside the BPM. The BPM just receives the message of type IDOC and sends it to the R/3 system. In Message monitoring the transformation of message from file server to BPM has been sucessfull but the tranformation of message from BPM to R/3 reported the following error.
    "Unable to convert the sender service FileIdoc_BPM to an ALE logical system"
    Suggest me the solution for this problem
    Regards
    Saravanan

    Hi,
    Go to the Sender Business System / Service , Dobule Click on it, In the menu at the top Business <b>Service --> Adapter Specific Identifiers</b> --> Add Some value to the logical system name , save and activate the Business System / Service and then trigger the interface.
    Cheers,
    Jag

  • Model Object / Business Logic question

    Hello,
    Question about how to architect the model objects and services in our system. We are defining our own Model Object / Transfer Objects without the use of an ORM tool (long story). Some of these model objects have to maintain Association objects such as:
    public class Teacher {
         private List<StudentAssociation> kids;
    public class StudentAssociation {
         private Teacher teacher;
         private Student student;
         private Date fromDate;
         private Date toDate;
         // Getters / Setters ....
    }My question is, where should the logic be to add, remove student associations? Originally we had it defined in the Teacher model object with:
    public void addStudentAssociation(Student student, Date fromDate, Date toDate);
    public void removeStudentAssociation(Student student, Date fromDate, Date toDate);But I am hesitant to put such logic in the Model Object. I always thought those should be pretty empty of any sort of business logic. Instead I want to have a TeacherService that does that and instead just a getter/setter on the Teacher object for the Association List. However, in doing that, I find I have to create a new List of Associations then call the setAssociations method on the Teacher object, which seems kind of strange.
    Is it bad to put the add/remove method in the model object itself? The remove logic has a bit of business logic in it, so it seems weird being there.

    Not sure I can be of much help, but here's my two cents worth:
    You have a teacher object and student object. A teacher doesnt really have an association with a student. I think you need another object such as a class object. I class has a teacher and the students (an association can be a business association, social association, etc). That same teacher may be assigned to other classes (provided they dont occur at the same time since the teacher cant be in the two classes at the same time. Likewise, for a student. Complicating things is the fact that a teacher of one class may be a student in another class. Also, a class may exist that has students but no assigned teacher yet (your original idea wouldn't be able to handle this since you will need a teacher before you add students). Another case, you have a class without students. Still another case, you have people (either future students, or teaching staff that haven't been assigned as teachers yet), but no classes yet., I think it would be best to figure out a database schema first (you can use Oracle Lite, MySql, etc).
    here is an example:
    Assuming you are putting this in a database I would create tables and fields something like this:
    Person ((a person is either a student or teacher, or just someone that is no longer a student or teacher but may be one day))
    personId not null
    firstname not null
    middleName nullable
    lastname not null
    ssn not null
    Class ( a class is where a teacher teaches students))
    classId not null
    nameOfCourse not null
    building nullable (may not be assigned yet)
    room nullable (may not be assigned yet)
    startDate ((when the class starts)) nullable
    endDate ((when the class ends)) nullable
    teacherId ((this is the parentId from the person table)) nullable
    Students
    personId ((this is the personId from the person table))
    classId
    associations:
    a class has 0 or 1 teacher,
    0 or many students
    a teacherId must exist in the person table as a personId
    a studentId must exist in the person table as a personId
    (if you delete a personId in the person table, it cascades deletes any teacherId or studentId of the same value)
    your class has a collection of students. therefore:
    private List<Student> students
    Your class will also have something like
    addStudent(Student student) (throw exception if student already exists) (note you dont pass in the start and
    end date since its the class's responsibility for start and end date, not student)
    isStudent(Student student) (return true if student is already in class, false if not)
    deleteStudent(Student student) ((returns true if student found and deleted, false if student not found to delete)
    Your business logic can check things such as if the start date occurs before the end date (an error), you have a class with no teacher or no students, etc. The first case you can do in the database with constraints if you want, but the second you cant since you want to store info for a class even if a teacher isn't assigned to it yet.
    One way to do this is to have a validate() function in your class object. The validate() function checks such things as a class with no teacher and returns a collection of warnings if it finds anything wrong. All the above is just something off the top of my head. So there may be some issues with my approach that you will have to work out.
    Good Luck!

  • Error when starting Netscape Calendar Server: Module: , Label: 355, Service error: #0x13209

    When starting Netscape Calendar Server, the following error message appears:
    <BR><P>
    Module: , Label: 355, Service error: #0x13209
    <P>
    The three ACIs listed below need to be present in the Directory Server in order
    for Calendar server to work properly. Check the properties on the Base DN to
    verify that the following ACIs exist. If they are not present, you will need
    to add them, and the Base DN will need to be modified for your enviroment.
    <P>
    <OL>
    <LI>ACI for allowing users to modify their own entries.<BR>
    <P>
    (targetattr = "*")(version 3.0; acl "Allow self entry modification";
    allow (write)userdn = "ldap:///self";)<BR>
    <P>
    <LI>ACI for allowing anyone permissions to Read, Search, and Compare.<BR>
    <P>
    (target="ldap:///o=basedn.com") (targetattr != "userPassword") (version
    3.0; acl "Anonymous access";
    allow (read, search, compare) userdn = "ldap:///anyone";)<BR>
    <P>
    <LI>ACI for allowing Calendar Server admins Write access to the Base DN
    (this is necessary in order for admins to add users and resources to the node).
    <BR><P>
    (target="ldap:///o=basedn.com") (targetattr = "*") (version 3.0; acl
    "Calendar Administrators Group";<BR>
    allow(all) groupdn = "ldap:///cn=Calendar Server Admins,ou=Netscape
    Servers,o=basedn.com";)<BR>
    </OL>

    Hi Trinidad,
    Thanks for your help!!!
    1.
    I didn't install EventSender and DIProxy yet, I tried first to upload and deploy the zip files, but I couldn't open the Itegration Application Explorer.
    2.
    The jvm.dll file is in in the folder pointed by the logs: C:\Program Files (x86)\SAP\SAP Business One Integration\jdk1.5.0_xx_sap\jre\bin\server
    and it is also in C:\Program Files (x86)\SAP\SAP Business One Integration\jdk1.5.0_xx_sap_64\jre\bin\server
    I tried running the file  java5w.exe, but I got an error message:
    Access is denied
    Unable to open the service tomcat5
    Thne I managed to open it by "rua as administrator".
    the Java Virtual Machine path is points to the java 1.5 version folder.
    Is it possible that the reason that the service can't start is related to administrator rigts??
    In the properties in the Integration Service (services.msc):
    It is set to be run with the local system account.
    all other properties looks fine.
    in the properties of the tomcat5.exe (and tomcat5w.exe  , I tried both)
    In the Compatibility tab I tried setting the flag "Run this program in compatibility mode for" to Vista, windows 7, and server 2008
    I didn't have the option of Windows XP.
    I have also set the Privilege level of: "Run this program as administrator" to true.
    But still the service won't start.
    What can be the problem?
    What else can I check?
    Thanks a lot,
    Chana

  • How to take control back from service error handler in osb

    I am using osb to send data to multiple services at the same time.since x query is a procedural language if any single operation fails the flow goes to service error handler which calls a BPEL webservice and logs the error in a database but the control doesnt comes back to my code I have tried everything including RESUME,REPLY operations but all in vain similarly i cannot use service callout call to my business service because its not allowing to select my BPEL wsdl operation

    If your statement "the control doesnt comes back to my code" means you expect that your xquery will continue in processing than your expectations are just too high. :-)
    Resume action is supposed to resume the next action in the message flow. It means the action that follows the action which caused an error.

  • How to display values after doing some business logic in data action

    hi guys i got the same problem but iam unable to display the values..in my display page when iam trying to do some business logic in my data action class..
    can u guys help me out
    iam pasting my code which iam working here
    my struts-config.xml
    <?xml version = '1.0' encoding = 'windows-1252'?>
    <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
    <struts-config>
    <form-beans>
    <form-bean name="DataForm" type="oracle.adf.controller.struts.forms.BindingContainerActionForm"/>
    </form-beans>
    <action-mappings>
    <action path="/inputform" className="oracle.adf.controller.struts.actions.DataActionMapping" type="oracle.adf.controller.struts.actions.DataForwardAction" name="DataForm" parameter="/inputform.uix">
    <set-property property="modelReference" value="inputformUIModel"/>
    <forward name="success" path="/inputAction.do"/>
    </action>
    <action path="/inputAction" className="oracle.adf.controller.struts.actions.DataActionMapping" type="order.view.InputAction" name="DataForm">
    <set-property property="modelReference" value="displaypageUIModel"/>
    <forward name="success" path="/displaypage.do"/>
    </action>
    <action path="/displaypage" className="oracle.adf.controller.struts.actions.DataActionMapping" type="oracle.adf.controller.struts.actions.DataForwardAction" name="DataForm" parameter="/displaypage.uix">
    <set-property property="modelReference" value="displaypageUIModel"/>
    </action>
    </action-mappings>
    <message-resources parameter="order.view.ApplicationResources"/>
    </struts-config>
    my input form uix
    <?xml version="1.0" encoding="windows-1252"?>
    <page xmlns="http://xmlns.oracle.com/uix/controller"
    xmlns:ui="http://xmlns.oracle.com/uix/ui"
    xmlns:ctrl="http://xmlns.oracle.com/uix/controller"
    xmlns:html="http://www.w3.org/TR/REC-html40"
    expressionLanguage="el">
    <content>
    <dataScope xmlns="http://xmlns.oracle.com/uix/ui">
    <provider>
    <!-- Add DataProviders (<data> elements) here -->
    </provider>
    <contents>
    <document>
    <metaContainer>
    <!-- Set the page title -->
    <head title=""/>
    </metaContainer>
    <contents>
    <body>
    <contents>
    <form name="form0" method="post">
    <contents>
    <messageTextInput model="${bindings.password}" text="username"/>
    <messageTextInput model="${bindings.username}" text="password"/>
    <submitButton text="submit" event="success" destination="inputAction.do"/>
    </contents>
    </form>
    </contents>
    </body>
    </contents>
    </document>
    </contents>
    </dataScope>
    </content>
    <handlers>
    <!-- Add EventHandlers (<event> elements) here -->
    </handlers>
    </page>
    my display uix
    <?xml version="1.0" encoding="windows-1252"?>
    <page xmlns="http://xmlns.oracle.com/uix/controller"
    xmlns:ui="http://xmlns.oracle.com/uix/ui"
    xmlns:ctrl="http://xmlns.oracle.com/uix/controller"
    xmlns:html="http://www.w3.org/TR/REC-html40"
    expressionLanguage="el">
    <content>
    <dataScope xmlns="http://xmlns.oracle.com/uix/ui">
    <provider>
    <!-- Add DataProviders (<data> elements) here -->
    </provider>
    <contents>
    <document>
    <metaContainer>
    <!-- Set the page title -->
    <head title=""/>
    </metaContainer>
    <contents>
    <body>
    <contents>
    <form name="form0">
    <contents>
    <messageStyledText model="${bindings.password}" prompt="Prompt 0"/>
    <messageStyledText model="${bindings.username}" prompt="Prompt 1"/>
    </contents>
    </form>
    </contents>
    </body>
    </contents>
    </document>
    </contents>
    </dataScope>
    </content>
    <handlers>
    <!-- Add EventHandlers (<event> elements) here -->
    </handlers>
    </page>
    my model bean
    package order.model;
    public class TestBean
    private String username;
    private String password;
    public TestBean()
    public String getUsername()
    return username;
    public void setUsername(String username)
    this.username=username;
    System.out.println("the username after actions class:"+username);
    public String getPassword()
    return password;
    public void setPassword(String password)
    this.password=password;
    my data Action class
    package order.view;
    import oracle.adf.controller.struts.actions.DataAction;
    import oracle.adf.controller.struts.actions.DataActionContext;
    import oracle.jbo.uicli.binding.JUCtrlActionBinding;
    import oracle.jbo.uicli.binding.JUCtrlAttrsBinding;
    import order.model.TestBean;
    import org.apache.struts.action.ActionMapping;
    import org.apache.struts.action.ActionForward;
    public class InputAction extends DataAction
    * Delegate to the Struts page lifecycle implementation
    * {@link StrutsJspLifecycle#findForward findForward}
    * @param actionContext the lifecycle context for the DataAction
    * @throws Exception
    protected void findForward(DataActionContext actionContext) throws Exception
    // TODO: Override this oracle.adf.controller.struts.actions.DataAction method
    //super.findForward(actionContext);
    TestBean testbean=new TestBean();
    System.out.println("this is action form"+actionContext.getActionForm());
    String username=(String)((JUCtrlAttrsBinding)actionContext.getBindingContainer().findCtrlBinding("username")).getInputValue();
    System.out.println("this is username"+username);
    String username1=username+"hye wats up";
    testbean.setUsername(username1);
    ActionForward forward=actionContext.getActionForward();
    ActionMapping mapping =actionContext.getActionMapping();
    System.out.println("this is mapping"+mapping);
    mapping.findForward("success");
    // To handle an event named "yourname" add a method:
    // public void onYourname(DataActionContext ctx)
    // To override a method of the lifecycle, go to
    // the main menu "Tools/Override Methods...".
    check this out iam unable to display in my display page so help me out if any one can

    No, in this case, I'm using standard JSP with ADF and struts validator.
    If I don't use struts validator and there are errors (such as putting a string into a number which produces a jbo-25009), the list value will be retained.
    When using the validator, it appears that it is NOT retained.
    I've written some code to attempt to set the list element back, which "looks like" it's working right now.
    There's still a problem with the second scenario:
    1. user clicks checkbox and hits [submit]
    2. get's error - you have to enter 5 address items
    3. User wants to backout, so he unchecks the box and resubmits
    4. The box redisplays as "checked"
    SO, at that point, I thought... can't I use YOUR EXAMPLE on how to handle a checkbox.
    I place some code in the reset method of the form to perform this:
    map.put("AddressChangeFlag", (String) "" );
    (that is, I've detected via the request that this flag is null), so I'm trying to make sure it retains it!
    I do that and it runs into a problem during the processUpdateModel aT:
    BindingContainerValidationForm updateForm= (BindingContainerValidationForm) actionContext.getActionForm();
    //Get the binding for our particular column JUCtrlAttrsBinding checkBoxBinding = (JUCtrlAttrsBinding)updateForm.get("AddressChangeFlag");
    call, with an error:
    JBO-29000: Unexpected exception caught: java.lang.ClassCastException, msg=java.lang.String
    java.lang.String
    The value for updateForm.get("AddressChangeFlag") is "", which I'm assuming means the form field is no longer in the request object??
    I'm lost at this point, and have been working on it for more than 1 day.
    Thanks for responding though, and I await feedback ;)

  • Unable to create Business logic Callable Object

    Hi All,
    We are working on CE 7.1 SDN trial version.
    while creating Business Logic Callble object, it is giving an error: Error while loading configuration dialog: Failed to create delegate for component com.sap.caf.eu.gp.ui.co.CExpConfig. (Hint: Is the corresponding DC deployed correctly? Does the DC contain the component?)
    Waht is the problem?.
    Thanks
    Sampath

    Hi All,
    when i try to create business logic CO, in Default Trace files it is giving following errrors:
    This callable object type is not deployed on the system: sap.com/cafeueruico~bi
    This callable object type is not deployed on the system: sap.com/cafcoregpuibackgroundco~admin
    This callable object type is not deployed on the system: sap.com/cafcoregpuivisibleco~admin
    This callable object type is not deployed on the system: sap.com/cafeueruico~r3transaction
    This callable object type is not deployed on the system: sap.com/cafeueruico~km
    Do we need to deploy any extra DCs.
    Sampath

Maybe you are looking for

  • External monitor with closed clamshell without mouse

    Hi, I use MacBook Pro with a non-Apple monitor (via VGA adapter) which is easily detected and performs screen extension and mirroring well. I have wireless keyboard from Apple and pen & touch tablet from Wacom, both connected. When I close the lid, t

  • Please How can I capture and integrate a single pulse of a DC signal from an external circuit

    Hello everyone I am trying to integrate a signal from an external circuit I have built. I want to capture just a single pulse from the signal and integrate it. Please can anyone assist me with how I can perform this?

  • Calling a transaction in Portal

    Hi Guys,              I am calling a transaction in portal from WebDynpro. Here is my code. MOVE 'OkCode' TO param-key.   MOVE '/00' TO param-value.   APPEND param TO lparams.   MOVE 'TCode' TO param-key.   MOVE 'MIR4' TO param-value.   APPEND param

  • Turning on 'write xmp files' in LR 5.4 changed the modified date on my old raw and jpg files. Can i stop this?

    On the advice of an article saying XMP sidecar files are a safer alternative to relying only on the catalog, I recently (June 16, 2014) turned on write XMP files. Now all my JPG and raw files have the same modified date of June 16, 2014, making it im

  • VB6 runtime files

    Hello, I'm buliding report using Crystal Reports XI Developer Full(Ver. 11.5.8.826), What to i need to distribute this report with my vb6 app with CrystalActiveXReportViewer. I would like to install the minimum to my clients. Thanks, Moshik