How to install and configure SAP Personas 3

Let the world know ...Tweet about this on TwitterShare on Google+Share on FacebookEmail this to someoneShare on LinkedIn

This blog serves as an overview of my blogs I published on my site on how to install and configure SAP Personas 3.

Installation

Configuration

Let the world know ...Tweet about this on TwitterShare on Google+Share on FacebookEmail this to someoneShare on LinkedIn

A look back at the first 4 month in 2016

Let the world know ...Tweet about this on TwitterShare on Google+Share on FacebookEmail this to someoneShare on LinkedIn

At the beginning of this year, I published a review on my blog activities in 2015. In 2016, I do not want to wait 12 month to give my readers an overview on how my private blog is doing. I thought on sharing each quarter a short review, but as now it`s already end of Abril, I guess you can see that plans are there to be adjusted.

My site started in March 2015 and in 9 months I managed to publish 116 blogs, gaining 4.234 unique visitors and 10.017 page views. I went from Raspberry Pi 1 to Raspberry Pi 2, increasing overall speed of my site. Now to 2016:

Blogs

In 2016, I have 37 blogs published (on average, this makes almost 10 per month), I have 34 drafts in the pipeline, and attracted so far 2500 unique visitors, contributing to 3.300 visits, totaling 6.575 page views. I get visits from around the world.

Analytics

In January I installed elasticsearch and logstash to be able to run some analytical reports on the apache 2 logs. Amazing what you can run on a RP2 with just 1 GB RAM.

Being popular

When I started my site, I decided to use a local server, running on Raspberry Pi. Not only because it’s cool, its cost efficient, I can control it / have absolute power and can run whatever other software on top of it (Subsonic, GateOne, git, etc). My site gained enough popularity that my internet provider decided that I run or am affected by a bot net, and stopped blocking port 443 last month. While this is not nice, I accept that having people from around the world accessing my site may look strange. Nevertheless, contract says they can, so I decided to put an AWS nano instance as a reverse proxy in front of my site. Yes, www.itsfullofstars.de is not anymore pointing directly to my Raspberry Pi 2, it`s going to AWS. In the end, you still end up in my living room.

Problems

Thanks to Olympic Games, I am suffering on constant power outages, as the city thinks that the population can be affected without problems, so they can host some test games for the IOC. This means that I am not always online, and my site is offline. Not sure what are the benefits of hosting Olympic Games, but if you think that in 2016 a stable power of internet connection is one of them, it`s not. At least a few million dollar a spent for sport stadiums.

Let the world know ...Tweet about this on TwitterShare on Google+Share on FacebookEmail this to someoneShare on LinkedIn

Initial setup of Personas 3 – 7 – Test Personas 3

Let the world know ...Tweet about this on TwitterShare on Google+Share on FacebookEmail this to someoneShare on LinkedIn

Final step to execute when configuring Personas for the first time is to check if it actually works. The health check tool shows that the configuration is OK; no more steps needed now to take Personas 3 for a test drive. It is time to access Personas 3! Best way to do so is to call Personas 3 from a browser. If you do not know already the URL of the app, you can call the ICF node directly from SICF.

  • Tx: SICF
  • Virtual Host: DEFAULT_HOST
  • Service Name: PERSONAS

Test service

This opens your default browser and automatically opens the personas app: /sap/bc/personas.

Wait, what? That`s Personas 3? Easy, look at the top middle of your screen.

Click it. Yeah, that`s Personas 3.

Let the world know ...Tweet about this on TwitterShare on Google+Share on FacebookEmail this to someoneShare on LinkedIn

Initial setup of Personas 3 – 6 – Configuration Checklist

Let the world know ...Tweet about this on TwitterShare on Google+Share on FacebookEmail this to someoneShare on LinkedIn

Installing Personas 3 is easy, doing the initial configuration involves several steps, alters system configuration, and so on. It is easy however to get lost in all these tasks. A nice feature Personas 3 offers to admins is a configuration check tool. Yes, it does what its name implies: it checks your system configuration and shows what you did, missed or did wrong. No, it won’t not fix a problem for you. I know, bummer. Hey, that is where consultants and Basis guys can justify their existence.

To know the health status of your Personas 3 installation, run transaction /PERSONAS/ADMIN and run the Health Check Tool.

Run Personas 3 Health Check Tool

  • Tx: /n/PERSONAS/ADMIN
  • Additional Administrative Tasks: Run Health Check Tool

Result

I am going to ignore the global memory exception. Nevertheless, I do have to implement SAP Note 2222774. This note is about updating client files. Before being able to apply the SAP Note, ensure the Personas namespace is set to modifiable.

Apply SAP Note

Follow the steps outlined in my blog on how to manually upload an SAP Note in SNOTE. In that blog I am using as an example the not e2222774.

Let the world know ...Tweet about this on TwitterShare on Google+Share on FacebookEmail this to someoneShare on LinkedIn

Initial setup of Personas 3 – 5 – Make personas namespace modifiable

Let the world know ...Tweet about this on TwitterShare on Google+Share on FacebookEmail this to someoneShare on LinkedIn

You will have to apply notes to be able to work trouble free with SAP Personas 3. There is no way to avoid this. Moreover, it will be many notes you will apply over the years. The notes will execute changes in the personas namespace, and that namespace is protected by default. Therefore, you need to make this namespace modifiable.

  • Tx: SE03

Select option Set System Change Option in section Administration

A get presented a list of components and their namespace. Navigate to Personas namespace.

Set it to modifiable.

Save.

Let the world know ...Tweet about this on TwitterShare on Google+Share on FacebookEmail this to someoneShare on LinkedIn

Initial setup of Personas 3 – 4 – Assign Role to user

Let the world know ...Tweet about this on TwitterShare on Google+Share on FacebookEmail this to someoneShare on LinkedIn

Without the right profile, users won`t be able to use Personas 3. A list of roles delivered by Personas3 can be found in the configuration document. I`ll make my life simply add to my user the admin role. Adding roles is done in transaction SU01.

  • Tx: SU01
  • Role: /PERSONAS/ADMIN_ROLE

Select tab roles

You have three roles available, select the one you need. I am the only user in my system, so I am going to be the Personas 3 super god: admin.

Save.

Log off and on again. The user menu now contains links to Personas 3.

Let the world know ...Tweet about this on TwitterShare on Google+Share on FacebookEmail this to someoneShare on LinkedIn

Initial setup of Personas 3 – 3 – Configure Personas properties

Let the world know ...Tweet about this on TwitterShare on Google+Share on FacebookEmail this to someoneShare on LinkedIn

After activating the ICF personas node, you have to check that the GUI configuration parameters are correct. I guess this is just a validation step in case someone messes up with the standard values, as ootb the parameters are OK. Nevertheless, it makes sense to check if they are configured as they should be.

  • Tx: SICF
  • Virtual Host: DEFAULT_HOST
  • Service Path: /sap/bc/personas properties

Open the service configuration (double click) and then open the GUI configuration.

Click on GUI Configuration.

The service parameters must be equal to what the configuration document gives.

Let the world know ...Tweet about this on TwitterShare on Google+Share on FacebookEmail this to someoneShare on LinkedIn

Initial setup of Personas 3 – 2 – ICF nodes

Let the world know ...Tweet about this on TwitterShare on Google+Share on FacebookEmail this to someoneShare on LinkedIn

Personas 3 is a web application. ICF is a pre-requisite. As flavors are based on WebGui, this is also a pre-requisite. For anyone that thinks he can use Personas 3 but not permit usage of WebGui: that`s not how it works (but there is the option to run Personas from within SAPGui). As you will need web skills for Personas, your users will use a browser to connect to SAP, and your SAP system must be prepared for this. Also, consider looking at your web landscape for SAP: consider that your users will access Personas 3 through a reverse proxy like Web Dispatcher. Nevertheless, you will have to activate some ICF nodes to be able to use Personas 3.

Activate ICF nodes

  • /default_host/sap/bc/personas
  • /default_host/sap/bc/personas3
  • /default_host/sap/bc/gui/sap/its/webgui

Tx: SICF

Node: default_host/sap/bc/personas

Activate service.

Node: /default_host/sap/bc/personas3

Activate service.

Yes

Node: /default_host/sap/bc/gui/sap/its/webgui

Activate service.

Test

Check the pre-requisites for having a working SAP WebGui installation. Validate that all services needed to run SAP WebGui are up and running. Not sure how to do that? Take a look at my previous blog on how to set up WebGui.

  • Tx: SICF
  • Virtual Host: DEFAULT_HOST
  • Service Path: /sap/bc/gui/sap/its/webgui

Filter

Test service

Result

Working.

Let the world know ...Tweet about this on TwitterShare on Google+Share on FacebookEmail this to someoneShare on LinkedIn

Fish with OData

Let the world know ...Tweet about this on TwitterShare on Google+Share on FacebookEmail this to someoneShare on LinkedIn

Rui Nogueira published a while back a blog series on SCN on how to implement an IoT scenario using a Raspberry Pi and HCP. I think the example shows very well how what the main use case of IoT is. When the blog was published, there was no SAP HCP IoT service available; if you want to implement the same example in a more correct way, you should use HCP IoT. Nevertheless, Rui`s example is easy to implement and shows how the different parts play together: client, server, user.

When I first came across Rui`s blog I noticed that he uses REST and goes through some effort to persist the data. I thought that it would be nice to adopt this to make use of OData. Took me some while to publish this blog J In the end, I did not adjusted his code, it merely served as an orientation. I wrote my own IoT server and client app. The result is a simple, clean and easy to read JEE app that uses JPA and Olingo for exposing the JPA entities and a Java client that does not need to be run on an IoT device. My user dashboard is very simple, implemented in D3.js, and only shows one sensor`s measurement data.

The client is a Java app that reads current weather data from openweathermap.org. To make this work, you`ll need an API key (free). In case you do not want this, I added a jMeter test that creates random temperature data (as seen in above picture). JMeter test file is located here: fish-with-odata\iotserver\test\jmeter\LoadData.jmx. The test is pre-configured to use localhost and port 7080. The test will run for 3 minutes as the 100 measurements are not created at once, but with a fixed time interval of 3 seconds.

The app

The source code can be found on GitHub: https://github.com/tobiashofmann/fish-with-odata

You will find two folders:

  • iotclient, containing the client app
  • iotserver, containing the server and user dashboard

Both are maven projects. It should not be a problem to transform them into Eclipse projects via mvn eclipse:eclipse, but while I developed both in Eclipse, I did not test transforming to an Eclipse project from maven. Sensor and Measurements are implemented using JPA. The relationship between both is that one sensor can have many measurement assigned, but a measurement can only be assigned to one sensor. In the Snesor class, this is done via @OneToMany

Sensor class

@Entity(name = "Sensor")
public
 class Sensor implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.TABLE)
     @Column(name = "ID")
     private long id;
     private String device;
     private String type;
     private String description;
     @OneToMany(mappedBy = "sensor", cascade = CascadeType.ALL)
     private List<Measurement> employees = new ArrayList<Measurement>();

Measurement class

@Entity(name = "Measurement")
public
 class Measurement implements Serializable {
     @Id
     @GeneratedValue(strategy = GenerationType.TABLE)
     @Column(name = "ID")
     private Long id;
     private String unit;
     @Temporal(TemporalType.TIMESTAMP)
     @Column(insertable = true, updatable = false)
     private Date createdAt;
     @Temporal(TemporalType.TIMESTAMP)
     @Column(insertable = false, updatable = true)
     private Date updatedAt;
     private Double value;
     @ManyToOne
     @JoinColumn(name = "SID", referencedColumnName = "ID")
     private Sensor sensor;

I am lazy so I let JPA decide when a measurement is created or updated. This may not be acceptable in most scenarios, especially when you depend on the exact time when the data was captured by the device and not when it was persisted in the DB. I implemented it that way to not have to take care of capturing the date in my client app and to keep the payload low.

Run server

To run the server:

mvn clean pre-integration-test

This will download the HCP SDK, install the server, run it on port 7080 and deploy the WAR file. After some while, the IoT server is ready.

A benefit of OData can be seen when comparing how Rui is consulting the latest added measurement for a sensor: he adds the latest measurement as an object to the sensor.

private Measurement lastMeasurement;

With OData, the latest added measurement for a sensor can be retrieved by simply adding some parameters to the URL:

$top parameter controls how many data points are returned. Beware that with OData, there is a page size defined that limits the max number of requests returned. This parameter is configurable in the class de.tobias.service.ODataSampleJPAServiceFactory

private static final int PAGE_SIZE = 50;
Assign any value to PAGE_SIZE you consider useful.

Run client

To run the client, you first must add your API key. This is done in the class de.itsfullofstars.iot. WeatherData. Add your API to APPID.

private static final String APPID = “YOUR API KEY”;

To run the client, create the jar:

mvn package
java –jar target\fishodataclient-1.0.0.jar

As an alternative, a jMeter test is included in the server: fish-with-odata\iotserver\test\jmeter\ LoadData.jmx

The final chart can be seen by accessing: http://localhost:7080/iotserver/. Depending on what data source you use, the chart will look like a flat line or like a heart attack.

Real data (Rio de Janeiro)

Fake data

Let the world know ...Tweet about this on TwitterShare on Google+Share on FacebookEmail this to someoneShare on LinkedIn

Initial setup of Personas 3 – 1- Change Profile Parameters

Let the world know ...Tweet about this on TwitterShare on Google+Share on FacebookEmail this to someoneShare on LinkedIn

The Personas 3 configuration guide contains all the information you need. At least two profile parameters need to changed to ensure that the Personas 3 health check passes:

  • em/global_area_MB
  • ztta/diag_area

em/global_area_MB

Change profile parameter em/global_area_MB to 1GB:

Tx: RZ10

I will run Personas 3 on a demo system, having as only user me. I do not have to change the default value therefore. If you want to or have to change the value, you can do so in the instance profile, under extended maintenance.

ztta/diag_area

Change profile parameter ztta/diag_area to 2º MB.

Save and activate profile.

Restart NW ABAP to make the new values effective.

Let the world know ...Tweet about this on TwitterShare on Google+Share on FacebookEmail this to someoneShare on LinkedIn