paul.tomlinson

5 Posts

So I’ve had confirmation that I’m off the SAP TechEd in Bangalore this year.  In my 12 years of being involved with SAP this is my second TechEd, the first one being Las Vegas two years ago.

So, I started to look at the sessions I wanted to go to and this is where I noticed a big difference between what is offered in Phoenix / Vienna vs. Bangalore.  The areas I’m involved in are Application Life-Cycle Management (Basis), User Productivity (Portal and Mobile) and Security and Identity Management.  So I started to look at the sessions available.  I thought straight away that there is not many.  For example there is only one mobile session.  I then looked at the sessions in Vienna and found that there is a lot more in Vienna.

Below are the number of individual (not repeated and not partner or SCN sessions) planned in each area in Vienna and Bangalore:

 Vienna    
Bangalore
Application Life-Cycle Management    63 37
User Productivity 29 12
Security and Identity Management 16 11
Total 108 60

 

   
 

 

 

 

As can be seen with the table above, there are almost half the number of individual sessions in Bangalore as there are in Vienna.  So my question is a simple WHY?  Is it because SAP employees do not want to travel to India?  Is it because of cost?

I have e-mailed SAP TechEd in Bangalore to ask if any more sessions are going to be added – but haven’t had a reply.

In my mind every SAP TechEd should have the same sessions on offer, plus then whatever local partners / SCN members / groups such as ASUG want to offer.  Currently SAP are penalising against SAP specialists in India by doing this.  Bearing in mind the number of SCN members and SAP specialists in India I think this is really unfair.

One of the common issues many portal projects have is to limit the number of users who can be logged on to the portal / WebAS (e.g. for WebDynpro) at any one time.  This is normally due to the fact that the hardware can cope with normal everyday load, but is unable to cope with extreme peaks, such as input of timesheets or viewing of payslips.  First of all I will explain how the Java Web Application Server works in a normal scenario.  When a user first logs on, your network switch should identify that the user does not have an existing session and load balance them to a WAS java dispatcher.  The dispatcher will then load balance the new user session to one of it's server nodes.  For future requests (within the same session), the network switch should identify that you have an existing session and pass it to the same dispatcher (known as stickiness).  The dispatcher will in turn pass it to the same server node.  So in theory once you have a session, you should be sent to the same server node.  A service running on each server node is the Security Provider Service.  When you use the Visual Administrator tool, go into Server -> Services -> Security Provider.  In here it is possible to see the login sessions for that server node.  It is possible to set properties of the Security Provider.  To limit the number of users, we use two properties, MaxUsersCount and SessionExpirationPeriod.  MaxUsersCount sets the number of users per server node, not per system.  So simply divide the total number of users by the number of server nodes you are using.  SessionExpirationPeriod sets how long a user session remains on the server node if the user does not log off correctly (i.e. they click on X and DSM does not work correctly).  It is very important that this is set else you will get 'user creep', i.e. the number of users reported to be logged on in the security provider is more than the actual number, so the limit will be reached early.  This parameter is set in seconds and as default (on 640) is around 28 hours.  So this must be reduced to 12 hours or less.  More information on these parameters can be found on help.sap.com So What Happens When The Limit is Reached? When the limit is reached it returns the portal / WAS logon page.  Unfortunately, there is currently a bug where it does not display an error message (due to be fixed in a later SPS).  So if you enter a correct user id and password, it will just return the logon page again.  I would recommend changing the logon screen a bit to have some sort of message to users (there are lots of blogs / forum messages explaining how to do this).  Users who have a current session will not be affected as they already have a session on the server node.  Obviously the fact that it is just returns the logon page (including when using SSO on to the portal when using SPNego) is not ideal, but the opposite is that the system crashes due to too many users.  Another recommendation is to have one instance separate from the network switch load balancing (e.g. the central instance).  The reason for this is so that administrators can still log on to this when all other instances are busy.  It is not the perfect solution, but does the job.  A neater solution could possibly be done by writing your own login module.  So I hope this helps all of you who have busy portals and Java WAS systems which need to be protected.

Changing the Dispatcher Running, No Server Connected Message

 

SAP's Web AS Java works on the principle of having a dispatcher process, which directs requests to one or more server nodes.  Now if the dispatcher is running, but there are no server processes fully up and running (they may be starting for example), then you get the message: "Dispatcher Running, No Server connected".   Now obviously this makes complete sense to end users!!

 

So, using a parameter called ServiceUnavailableResponse, we can change it to a nice web page saying please contact the helpdesk.

 

Before I explain how to do it - I must say thankyou to Ryan Douglas who originally showed me this and also Michael Nicholls who posted a forum message about how to do it.

 

The steps are as follows:

 

1. Create your HTML file that will be the web page (e.g. down.html).  It should be properly formatted HTML and look something like the following:

 

 

http.  There is a property called ServiceUnavailableResponse.  The value of this should be set to ./errormessage/down.html.

Press the apply button (disk icon).

 

image

 

 

5. Stop and start the J2EE Server.

6. As the J2EE server is starting, try and access the portal (or the J2EE homepage - http://server:50000 normally) and you should get your nice message.

 

image

 

I have done a very basic HTML file.  Obviously you could include images and anything else you may want to use on it.

 

An Important Limitation:

It only works when the dispatcher is running, but the server is down or starting.  If the physical server is down, then the users will get a page cannot be displayed error.

 

If you want more information on this paramter, just search for ServiceUnavailableResponse on http://help.sap.com

This is the follow on the my first weblog about using the flexible user interface.  So if you haven’t already read it, I highly recommend you read it here : /people/paul.tomlinson/blog/2006/01/26/a-real-world-example-of-flexible-user-interface-150-part-1  I finished off my last weblog having created all of the elements we are going to use.  This weblog puts them all together and assigns them to an iview.  I am going to link together the layout set called NewsExplorer_Approve.  In to this I am going to assign the resource renderer NewsResourceRenderer_Approve.  To the resource renderer I am going to assign the command group NewsGroup_Approve.  So first thing, assign the resource renderer. image I edit the layout set, deselect NewsResourceRenderer and select NewsResourceRenderer_Approve.  This have assigned the resource renderer to my layout set.  Next I click on NewsResourceRenderer_Approve to take me into it.  In here I change the resource (menu) command group to NewsGroup_Approve. image This means that next to files (in our case XML files) we will have our modified menu (with approval in).  Great.  That is all of the technical bit done.  We now need to create an iview and assign our layout set.  Before that though we need to enable approval on our folder where we are going to save our XML files.  The iviews point at where the XML files are saved (edit forms) and read from (read only / show forms).  These folders need to be enabled for approval.  The standard folder is /documents/News, but I'm going to create a new folder called News2 in the documents repository and use this.  This can be done from anywhere where you can access the documents repository e.g. content administration -> KM Content.  Approval only works if permissions are set correctly.  If you have read /write permission to the files, you will always see them no matter whether they are approved or not.  So only authors need read / write permission.  So the permissions need setting up by going into the News2 folder and then menu folder -> details -> settings permissions.  I would set everyone are read only and then add a few authors to have read / write or  full control.  We also need to set service permissions.  Service permissions set who can define approvers along with some other things.  If you have the service permission approval maintenance, then you will always be able to see all files.  So once again change the service permissions (settings -> service permissions) so that everyone has no service permission except for whoever is administrating the approvers.  Finally in settings -> approval you need to enable the approval process (big button enable approval) and assign users, groups or roles to be approvers.  These are the people who will be able to approve the documents.  So finally I create my iviews.  I am going to create two iviews, one for editing and approval and one for displaying the XML forms.  Content administration -> Portal Content choose a folder you want to create the iviews in. Then right mouse click -> new -> iview.  Choose KM Navigation iview.  image Give the iview a name, id and prefix then open it for editing.  In the dropdown proprt category, choose show all.  Scroll down to Layout set (the properties are sorted alphabetically). image  In layout set property we are going to type in News_Explorer_Approve (no drop down I’m afraid and it is case sensitive – dropdowns in next release please if any product management people are reading this :) ).   I have also set the layout set mode to be exclusive.  This means that the users cannot change the layout set of the iview if they are allowed to personalise it.  Further down in the iview properties I have then set Path to initially displayed folder to point at my News2 folder (once again you have to type it in I’m afraid). image This means that it will write any new XML files to this folder and display any XML files that are in this folder.  If I preview the iview it looks like this: image Notice the approval menu.  So the author would submit this document for approval.  (I have skip approval because I am an approver administrator).  A notification would be fired off to the approvers in the UWL and via e-mail (if it has been configured).  They could approve it there or in this iview by clicking Approval -> approve (or reject for that matter). I also create another iview for the end users to display the forms.  The iview is exactly the same as the one I have just created except that we choose the NewsBrowser layout set (but still point it at /documents/News2).  The only files that will display in this iview are approved files, since the users who will have think iview will have read only access to this folder.   So that is an introduction to the flexible user interface.  It is quite complex but also quite powerful once you understand it.  For you java developers out there, don’t worry, there are lots of additional clever things you can do in flexible user interface using java coding.  So from somewhere over the coast of Greenland, I hope that makes sense (I’ve only had two glasses of red wine!) and good luck with playing with flexible user interface. 
I’m writing this as I’m sat in a plane flying over the Atlantic Ocean on my way to do a customer specific EP300 course for a client in the US.  EP300 is a 5 day SAP course all about Knowledge Management and Collaboration.  Particularly when I do customer specific courses (where the instructor comes to your workplace to do the course) I get specific requests about how to do things that that particular company wants to do.  So, I thought I would give a real world example of flexible UI as requested on one of these courses.  I have split this weblog into two parts, simply because it is quite long.  A company I taught EP300 are using XML forms to enter data.  XML forms are easy to use forms to save data in XML format, using XSL files (XML stylesheets) to convert the XML into a pretty form using HTML, with different views depending on how you are viewing it (for example the form will be different if you are editing it compared with if you are viewing it).  Example XML forms in the portal are news and FAQs.  In knowledge management we also have an approval process, also sometimes known as approval workflow.  It has nothing to do with SAP workflow that we have in R/3 / ERP, however the principle is similar.  The notifications for approval appear in the Universal Work list alongside the SAP workflow items.  The idea behind approval workflow is that documents will not appear to end users until the document has been approved.  For example we all have access to the HR procedures in our companies.  If a new procedure is being drafted (or an existing one updated), the HR department do not want us to see the new version until it is finished and approved.  So until the document has been approved, it will not appear to the end users.  The company using XML forms wanted to use approval workflow with their forms.  However, as standard the XML forms iviews do not have and approval menu on them.  So we needed to add the approval menu to these iviews.  This can be done using the Flexible User Interface.  In flexible user interface, the object that sets the layout and menus is the layout set.  Almost all KM iviews are based on a KM navigation iview, with a layout set specified in the properties of the iview.  The two standard layout sets used within XML forms are NewsBrowser (for display only) and NewsExplorer (for creating and editing XML forms).  So the layout set we need to add the approval menu to is the NewsExplorer.  Now, in order to stop our changes being overwritten when we apply an SP-stack, we need to copy the standard NewsExplorer Layout Set.  image  So I’ve gone into system administration -> system configuration -> knowledge management -> content management -> user interface -> settings.  This is where almost all of this weblog will be configured.  So first we duplicate the standard NewsExplorer.  I'm calling mine NewsExplorer_Approve. image  In a layout set we have a layout controller, which sets things like how many frames it has and where they are e.g. tree at the side.  We have a collection renderer, which sets how the folders and documents overall are displayed.  We then finally have the resource renderer, which sets how the individual files and folders are displayed.  We are going to change the collection renderer, so we need to take a duplicate of that.  So in resource renderer setting, I have duplicated NewsResourceRenderer to NewsResourceRenderer_Approve.  In our resource renderers we then have command groups.  Command groups are groups of commands….. i.e. menus.  Since we want to add approval to our menu we need to change our command groups. image We also have command groups for resources (files), folders and links.  We only need to change the group for resources, but they all use the same command group as standard.  It is using a group called NewsGroup.  This is the one we will duplicate. In the image below we can see that the command group is specified in the Resource Renderer. image So I duplicate NewsGroup to NewsGroup_Approve.  In NewsGroup_Approve I then add in another command group called StatemanagementGroup.  This is the command group that contains the approval menu items.  Approval is also known as statemanagement, hence the name.  To find this I basically looked through the list of commands to find it. image  I have also kept the standard menu items edit_xml_forms and delete.  You could also add any other command you wanted here. image So at this point we have created a layout set, a resource renderer and a command group.  These are the main elements of flexible user interface.  We now need to link these elements together and assign them to an iview.  That will be in my next weblog.

Filter Blog

By date: