How to Enjoy Stress Free Business Travel

If you happen to be one of those executives who travels all the time, then understand that the job can be a bit stressful. Corporate travel can take a lot out of a person; from losing sleep because of different time zones, to eating foods than you might typically while you’re at home.

If happen to be an international puddle jumper to get to meeting across the globe this can be even more trying for stress levels. From language barriers to making sure the corporate office gave you the right electronic system for travel authorization (ESTA) for the customs of the country you’re visiting can be nerve racking.

Nevertheless, business travelers continue to perform for their employers, and even though this may be a bit stressful there are ways for you make your trip a bit more enjoyable to take the edge off. Today, we will be covering these tips; let’s get started!

Ways to Enjoy Your Business Trip

1. Keep All Your Ducks in a Row

When you are going off on another business trip it’s a good to keep organized with everything you need for your trip to keep your sanity. Keeping your travel documents such as visas, your passport, boarding passes, and hotel and vehicle rentals in one place saves you face and won’t cause you to have a meltdown.

2. Stay Loyal to Brands

If you happen to travel a lot, it’s a good idea to keep working with hotels, transportation companies, and laundry services consistently. Not only will people recognize you regularly, but you will start gaining loyalty and possibly discounted rates. However, many times the company you work for will handle the expenses and itemization for your corporate travel, but nonetheless, corporate regulars tend to get treated better by staff when they see familiar faces.

If you are a serial business traveler who consistently stops at the same hotel, you can even leave your laundry there and pick it up when your return a week later, this is a practical tip that will save room in your luggage.

3. Take Advantage of Tech that’s Available

Technology can be a lifesaver nowadays, from using noise canceling headphones when babies are crying to those who are constantly talking around you this can be Zen-like to have peace and quiet. There are also a variety of apps that will help you melt stress away from meditation apps to finding alternative transportation to finding hidden restaurants. The point is that you should take advantage of the best tech tools, so you can enjoy your trip a bit more.

4. Make Time for You

Typically, there will be down time on your trip, unless you’re under the gun, and have to take the red eye home. You should be able to unwind from your long day by checking out the hotel’s spa facilities, or by simply grabbing a drink at the hotel’s cocktail lounge. Furthermore, if you have more than one day, and you happen to be somewhere interesting you should take advantage of local sights, and make your trip a bit more memorable.

As a final reflection on business travel, you could come to the conclusion that, yes it is stressful, but it’s up to you to make the difference in how you handle the business trip when it comes to being organized. Thanks to technology there are numerous ways in how you can handle your day-to-day situation as well as taking time to relax for yourself. http://bit.ly/2DVIQgG #SAP #SAPCloud #AI

API First Approach and API Management With Swagger

ICYDK: Over the last year, all the new software components delivered by our software engineering teams have exposed HTTP standard REST APIs. This choice gave us a lot of benefits in terms of modularization and cooperation from an architectural point of view. But, we also had to learn new tools and practices in order to share documentation, design software solutions, and manage the evolution of our services.

We write private APIs (no need to deal with a public API portals or API economies). We also recently decided to adopt an open source solution based on Swagger tooling (I think there’s no need to introduce it or justify the choice in this post, there’s a lot of very well written stuff out there). https://goo.gl/TChann #DataIntegration #ML

HCITracker is now CPITracker

Back in March, I launched HCITracker, which is a Twitter feed that tracks updates to the core components of SAP Cloud Platform Integration, such as the underlying Apache Camel framework, the Java runtime etc.

Officially, though, the HCI abbreviation has not existed since the HANA Cloud Integration name was dropped, so HCITracker needed a new name.

Better late than never, right? HCITracker is now CPITracker! If you were already following the account on Twitter, you don’t need to do anything; you are still following it under its new name. If you are not following it, well… you know what to do

In addition, I’ve also added tracking of the Script API version, so if you’re using the Script API JAR file in your integration development work, CPITracker will now let you know when a new version is out.

About the CPI build number

A couple of people have asked me how I determine the CPI build number in CPITracker, in order to track how it changes over time.

That’s a really good question, and the answer is all about OSGi bundles. In a nutshell, a bundle is a collection of Java classes and configuration files, that you can dynamically install and uninstall as a unit. The SAP Cloud Platform Integration service consists of hundreds of such bundles installed on your tenant.

CPITracker’s approach to finding the CPI build number was based on the idea, that at least one of these bundles would have a version number matching the build number. In the following, I will describe the steps I took to find such a bundle.

The first order of business is to get programmatic access to every installed bundle. How do we go about that? Take a look at the Bundle interface documentation. If we can get a Bundle object, we can call its getBundleContext() method to get a BundleContext object. The BundleContext interface has a getBundles() method, which returns all installed bundles.

So, the problem of accessing all installed bundles has been reduced to getting a single Bundle object. To that end, we can use the static method getBundle of the FrameworkUtil class, which takes a Class object, and returns a Bundle object representing the bundle containing that class (assuming it belongs to a bundle, of course).

Now the problem of accessing all installed bundles has been reduced to finding a Java class that belongs to a bundle. Here’s a likely candidate, that you interact with every time you add a script to an integration flow: com.sap.gateway.ip.core.customdev.util.Message.

Putting all this together, here’s a few lines of Groovy that iterates over each installed bundle: def knownBundleClass = ‘com.sap.gateway.ip.core.customdev.util.Message’ def entryBundle = FrameworkUtil.getBundle(Class.forName(knownBundleClass)) def bundleContext = entryBundle.getBundleContext() bundleContext.getBundles().each { b -> // Process each Bundle object here }

Now that we know how to access all installed bundles, it’s straightforward to find every bundle, whose version number matches the current CPI build number (which is 2.35.7 at the time of writing). The following complete Groovy script does exactly that, and builds an XML message body containing the bundles. import com.sap.gateway.ip.core.customdev.util.Message import groovy.xml.MarkupBuilder import org.osgi.framework.FrameworkUtil def Message matchingVersionBundles(Message message) { def sw = new StringWriter() def builder = new MarkupBuilder(sw) def matchingVersionBundles = getMatchingVersionBundles(‘2.35.7’) builder.bundles { matchingVersionBundles.each { b -> bundle { id(b.getSymbolicName()) name(b.getHeaders().get(‘Bundle-Name’)) version(b.getVersion().toString()) } } } message.setBody(sw.toString()) return message } def getBundleContext() { def knownBundleClass = ‘com.sap.gateway.ip.core.customdev.util.Message’ def entryBundle = FrameworkUtil.getBundle(Class.forName(knownBundleClass)) if (entryBundle == null) { throw new AssertionError(“No OSGi bundle for class ${knownBundleClass}”) } entryBundle.getBundleContext() } def getMatchingVersionBundles(String version) { getBundleContext().getBundles().findAll() { b -> b.getVersion().toString() == version } }

As I write this, the script generates the following output: com.sap.it.node.stack.profile Node Stack Profile Bundle for Stack iflmap 2.35.7 com.sap.it.node.stack.repository Node Stack Repsository Bundle for Stack iflmap 2.35.7

I chose the com.sap.it.node.stack.repository bundle, and watched it over a period of time, to confirm that its version number does in fact match the CPI build number. The CPITracker code uses this bundle, and the technique described above, to determine the CPI build number. http://bit.ly/2mXv7hj #SAP #SAPCloud #AI