Quantcast
Channel: SCN : Blog List - Process Integration (PI) & SOA Middleware
Viewing all 676 articles
Browse latest View live

Browsing File System of a Java-only System

$
0
0

NetWeaver Process Integration is transiting towards a single Java stack system – good examples here are new Java-only installation options that are available for it in NetWeaver 7.3 releases: Advanced Adapter Engine Extended (AEX) that became available as of release 7.3 and Process Orchestration (PO) that became available as of Enhancement Pack 1 for release 7.3. Having the system running in Java-only installation, there is still a demand to access its local file system – e.g. to browse local directories or to get access to specific files that are stored there. Log Viewer that is available as a part of NetWeaver Administrator and that is used to get access to log and trace files of AS Java does not fulfill this requirement absolutely since there are cases when it is necessary to just navigate some specific directory in order to retrieve a list of files that are stored there or to browse contents of the file that is not AS Java log/trace file. In AS ABAP, there is a useful transaction that was fulfilling these requirements and commonly used for these purposes – AL11 (Display SAP directories). And this is something that many users are missing in Java-only installations. Fortunately, AS Java provides analogous functionality for accessing file system as AS ABAP’s AL11 – this functionality will be discussed in this blog. The described functionality is not PI-specific, but is relevant for any AS Java system like Enterprise Portal, etc.

 

An integral part of any AS Java system is HTTP Provider that provides a low level communication and transportation service for AS Java over HTTP. One of important features of it is capability of accessing file system via HTTP – that is actually the key for the topic that is discussed in this blog.

 

In order to be able to get read access to some directory of the file system of AS Java system, it is necessary to configure the respective alias. To do this, follow steps described below:

 

1. Log in to NetWeaver Administrator of the corresponding AS Java system, navigate to work center Configuration, then choose option Infrastructure and run the tool Java HTTP Provider Configuration (it is also accessible via a short link: /nwa/http ).

 

2. Go to the tab Virtual Hosts, select the required virtual host for which file system you would like to grant HTTP based access to the file system.

 

3. On the tab General of the selected virtual host configuration, ensure that the check box Directory List is active.


HTTP Provider - virtual host - general.png

 

4. Now switch to the tab Aliases of the selected virtual host configuration – here you can maintain an alias for the local directory that you would like to access via HTTP.

 

HTTP Provider - virtual host - aliases.png

 

As soon as the alias is maintained, we now can access the respective file directory using it. In order to do it, just use the following URL syntax: http://<AS Java host>:<Java HTTP port>/<alias> . As a result, we get a web access over HTTP via any web browser supported by the queried AS Java system to the file system. We can now navigate to sub-folders and browse contents of files (text and binary) that are located there. Below are several screenshots demonstrating this functionality in action.

 

HTTP access to file system - directory.png

HTTP access to file system - sub directory.png

HTTP access to file system - picture.png

HTTP access to file system - text.png

 

If the check box Directory List is not active on the tab General of the selected virtual host configuration, browsing file system of it will be denied and HTTP error 403 will be returned:

 

HTTP access to file system - 403.png

 

As it can be seen, there are technical possibilities of getting read access to file system of Java-only system without necessity of getting direct OS access (e.g. via shell/terminal access, etc.) to the corresponding host.


NetWeaver PI - I want my ccBPM's back!

$
0
0

I probably won't make too many friends with this blog, but in any case I wanted to voice my concerns about where PI is...

 

Firstly, I've been using PI (PO, XI and whatever else it's called this month) since version XI3.0 first became available quite a few years ago. I've probably built several hundred interfaces to-date and have always been a staunch supporter of the product. So long as an interface is designed appropriately, PI can do many things that others say it can't.

 

The product has come a long way since those early days and the new development environment with iFlows in eclipse is fantastic. Once you are used to it, it's far better than navigating the Directory tree and managing heaps of receiver determination and interface determinations, and even ICO's (integrated Configuration Objects).

 

For stateful processing, PI used to have ccBPM as the integrated BPM tool. It was based on ABAP-stack Business Workflow, although this was largely hidden from the development environment. It definitely had its issues, but it worked and was nicely integrated into the toolset.

 

Now with the java-only versions of PI we have PO which includes NetWeaver BPM as a replacement for ccBPM (it can do more but here I'm only talking about interfacing). SAP have kind of taken away our ccBPM and then made us pay to get it back as NW BPM.

 

I've been playing around with the combination of PI and BPM (as a PO install) for a couple of months now and have the following points to make:

 

  • Even though PI and BPM are on the one system, they are not integrated well (if at all). In fact in the latest sp the integration is nothing more than the message id.
  • BPM uses a very clunky java build process with software components and development components that don't match nicely with PI's SLD based software logistics.
  • What you would think are core use-cases fail in BPM. For example a web service call from a BPM process step, through PI, resulting in a soap-fault crashes the BPM process. This is a known fault and SAP have been working on a fix for about 4+ weeks now.
  • The development environment is clunky. There is a known bug where sometimes your deployed BPM process is always one version behind.
  • The BPM history is next to useless for a developer and you constantly need to be checking the java traces.
  • For logging purposes during build you need to write your own java beans as the context variable display is not enough.
  • I honestly don't believe it's a production grade system yet (although I'm sure their are customers using it).

 

 

As a staunch supporter of the PI product for years now, its disappointing that it seems to have taken a leap backwards here. I never thought I'd say it, but I want my ccBPM's back. It just makes it harder to defend the product with the constant barrage of un-informed information from SI's about how we should use WebSphere, Tibco, or whatever else...

 

What SAP need to do (and quickly):

 

  1. Get rid of the BPM software component, development component, NWDI (yuck!) nonsense and bring it inline to how PI manages objects.
  2. Integrate the logs asap. From the PI message monitor I want to be able to click a link to view a graphical log of any BPM process.
  3. Fix up the bugs around soap faults (SAP have this underway, but it was promised a few weeks ago and its not ready yet - how could they release the software in that state?).
  4. The BPM process history needs to be greatly expanded to show "actual", "useful" error messages and not just "an error occurred" (that's rubbish SAP!). Developers also need the capability to fully inspect data elements throughout the process and not just 'data objects' that have been placed in the process.

 

Enough of a rant from me... I'm sure the product will be more integrated and more bug-free as time goes on, but for those of us at the coalface who are evangelising the use of PI/PO, it certainly makes life more difficult right now.

ABAP proxy specifics on a NetWeaver 7.3 system

$
0
0

Why this blog?

 

Some time ago, we upgraded our SAP PI 7.11 system to a new SAP PI 7.3 system. At the same time, the back end system was upgraded to a SAP NetWeaver BI 7.3.

 

A lot of communication has been set up using ABAP proxies.

 

During the upgrade, we struggled a lot setting up ABAP proxies on the 2 new environments. That the reason for writing this small blog.

Just to share what we have done to solve the problems we had.

 

Scope and context

 

A lot of how-to guides, SCN threads and documents are available concerning ABAP proxy configuration. I will not repeat all this in here.

I just want to highlight 2 things we faced:

 

  • RFC connection to the Enterprise Services Repository

 

     Connection SAP_PROXY_ESR (with that exact name) must be created on the back end system.
     This seems to be mandatory on a NetWeaver 7.3 system.
We got our inspiration from KBA
     1759641.

 

  • It seems that SAP added more checks for (header) data being pushed to the back end system. That's why we kept on receiving errors during our ABAP proxy test. The solution was, in our case, to push the namespace too. This was not the case on our SAP PI 7.11 system.
    In terms of ABAP mappings, this means we had to add extra coding:
    ddddddddddddd.jpg         

     To be sure about the correct values for these parameters, go to the back end system, take
     transaction SPROXY and test the class.
     A template will be generated where test data can be filled in. Within that template, the
     expected header data is clearly displayed.

 

Questions or remarks?

 

If you have a (technical) question, feel free to send me an e-mail or post your thought or question.

Correlation-ID based Message Search in PI 7.31 EHP1 (is possible from SP07)

$
0
0

We have gone through very painful days earlier where we were trying to find out the messages (BPM instance in fact) that have a certain value as part of its Correlation id.

 

SAP had made our life easy to some extent on this front. It had come up with two more options as part of the message search (no need to configure the user defined message search) based on two parameters that get populated during runtime. This is available only from the SP07.

 

Till PI 7.31 EHP1, SP06 (No need to mention explicitly that it is Java only) we use to have the message monitoring as below.

 

Screenshot-SP06.jpg

 

But, let’s see the luxury that we have from SP07.

 

Screenshot-1.jpg

 

Message Search based on Reference IDs.

 

Screenshot-2.jpg

 

And here comes our Birthday boy….Message Search based on the Correlation ID.

 

Screenshot-3.jpg

SAP tool to migrate dual stack ID objects to Integrated Configuration Objects (ICO) - PI 7.3 EHP1, SP07

$
0
0

Here comes the revolutionary tool from SAP that can migrate all your dual stack ID objects to Java only ICO objects. Yes, really a true hassle free business converting the dual stack configuration objects to java only objects.

 

This is possible only from SP07 of PI 7.3 EHP1.

 

In order to access the tool, PI instance has to be SSL enabled in the first place.

 

SSL enabling of your PI 7.31 Server.

 

Secondly, the user should have the roles SAP_XI_API_DISPLAY_J2EE, SAP_XI_API_DEVELOP_J2EE in source and target system respectively.

 

Once it is SSL enabled, access the tool using the URL https://<host>:<port>/webdynpro/resources/sap.com/tc~pi~tools~dirmig~wd/DirectoryCockpit

You end up arriving at the below screen.

 

Screenshot-1.jpg

 

Scenario Migration

This is basically used to migrate all the objects that correspond to a complete Configuration Scenario.

 

Configuration

This is used to configure the Systems that are used in the integration and the Renaming rules that you want to use to rename the objects like Communication Channels, Business Components, Party and Routing Expressions etc.

 

Channel Migration

Used for migrating the communication channels.

 

Let’s how the migration is being done in each of the above cases.

 

Scenario Migration

 

The complete Configuration Scenario Migration is done based on the Sender Agreement (Receiver Determination if a Sender Agreement doesn’t exists as in the case of IDOC or PROXY). The tool gets all the objects of the complete configuration scenario by traversing through the Sender Agreement (Receiver Determination) till the Receiver Agreement of the respective configuration scenario.

 

Once you enter Scenario Migration, you will get the below screen in which you find the corresponding steps to be carried out.

 

Screenshot-2.jpg

 

In System Selection, you need to select the source system (in which you have all your classical dual stack based configuration objects) and the target system (in which you want to create the ICO objects for the respective source ID objects).

 

After providing the details, you move on to Scenario Selection where you need to select a Sender Agreement / Receiver Agreement (individually or all that exist in a particular configuration scenario). After migration, the respective IDOC AAE and the SOAP AAE will be created automatically.

 

Once you move on to the next option, Scenario Matcher, the tool validates whether all the involved objects can be migrated to an ICO in the target system.

 

Next is the Preview and Renaming. Here you can preview all the corresponding objects.  You can rename the objects if you want using the renaming rules that we create as part of the Configuration migration. You can also check the adapter engine for the communication channels as part of this task. And as a result, all the ABAP based receiver communication channels will be transformed to JAVA based communication channels (ABAP IDoc to JAVA IDoc, ABAP XI to JAVA SOAP and ABAP HTTP to JAVA HTTP).

 

And finally, Object Creation. This creates all the objects and will be associated to a change list. You can view this change list in the target system’s integration Directory and can activate the same.

 

Configuration Migration

 

Configuration Migration is used to configure the systems that can be used as the source systems (you can select the available systems or you can add manually) and also to create any renaming rules for renaming the objects like Communication channels, Business components, Party, and Routing expressions.

 

Screenshot-3.jpg

 

Renaming the business systems still depend on the transport targets that were defined in the SLD.

 

Channel Migration

 

We go for this option when we want to migrate many channels from one system to another.

 

Screenshot-4.jpg

 

Populate the source and destination system details and move on to the next step.

 

Choose all the communication channels that you want to migrate. And click on Next.

 

In the Object Creation, you will confirm to create the objects in the target system. All the objects will be created and associated with a change list in the target system. Log into the target system, change the details and activate them.

Reading PI Server Host Dynamically

$
0
0

I recently came across this requirement and thought of sharing it.

Requirement: In one of my project, we had a normal scenario. There was nothing complicated about this, I had to pick up a file from the source location and summarize the data and send it in a mail to a certain distribution list. This interface was working for the US zone and was developed in the PI servers for the US. The same interface had to be done for the Europe zone, but for the Europe, the PI servers were different. To add to this, the email distribution list was the same for both Production systems, US and Europe.

Problem: We did the testing in the Dev servers of both US and Europe and the mail was being generated and received by the recipients in the mail distribution list, we moved it to Quality and then to Production for both the US and Europe servers. However, since the distribution list was the same for all the 3 systems and whenever the interface was triggered from Dev, Quality or Production systems the recipients were not able to distinguish at first glance from which system the mail had been sent, the US systems or Europe systems

Proposed solution I thought by adding the system ID in the mail it would solve the confusion, so I wrote a small UDF to generate the system ID and based on the system ID I would send whether the mail was sent from the US Dev or Test or Production environment or from the Europe. Below is the screenshot of the UDF.

SysID.jpg

 

 

This solution was not exactly the way desired, but rather it was required that I had read the hostname from the URL http://Hostname:port/dir/start/index.jsp  and send them the hostname from which PI server the scenario was executed.

Proposed new Solution: Reading the Hostname was not possible with our normal graphical mapping, I could not hardcode it as it had to be retrieved dynamically, so I had to modify the existing UDF to read the Hostname.

Below is the modified UDF where I am reading the Hostname and dynamically sending it to the output, mail distribution list.

 

hostname.jpg

 

Below is the code:

AbstractTrace trace = container.getTrace();

String hostname ="";

try

{

                 InetAddress addr = InetAddress.getLocalHost();

               hostname = addr.getHostName();

}

catch(Exception e)

{

                trace.addWarning(e+"");

}

                                return hostname;

 

Hope this will help, in case you come across a similar requirement

SAP PI and Integration round up of SAPPHIRENOW

$
0
0

I’m on the plane back from Orlando, where I the last week have attended the ASUG and SAPPHIRENOW event. I thought that I wanted to share some of the idea and inspiration that I have received while I was on ground. This will focus mostly on the SAP Process Integration and integration that I’m working with. I think there are many other people showing what they have experienced in other areas.

 

For SAP PI I did go the influence session with Udo Paltzer, to get briefed on the status and what was going on. There was not a lot of other session going on around SAP PI, probably not because SAPPHIRENOW is more focus on the business value.

 

Udo had done a roadmap session for the IFG (International Focus Group for SAP PI). I cannot find the replay, if you know where it is then let me know. I’ll not cover them here, mostly because there was not a new feature that I could fall in love with.

 

SP 7 for SAP PI 7.31 is now available and SP 8 will come 1/8. They will add new functionality to enhance the functionality in the SPs and of cause fix bugs.

A feature that is being added with SP 7 is a wizard to migrate from the Dual stack objects to integrated objects. It is a nice feature that will make it easier to migrate objects. You will still have to make sure that channels are configured correctly if you are moving from ABAP to JAVA based adapters. It will save some time but it will still be a time consuming project.

 

Around the move to from ccBPM to BPMN and the single stack. You would still have to migrate all ccBPMs manually. So it will require a lot of testing and development. Udo mentioned just to leave the dual stack running and then get a new single stack for future development. I don’t see this as ideal because it doubles the cost of running the servers, because you would have two set of servers to maintain. It would probably be a good idea to get something up and run on the single PO stack. Then start the migration away from the dual stack to the single stack, it will still cost a migration project. That can be quite expensive. The development time will not be huge, but the testing part will require resources.

 

Udo was looking for customers who wanted to talk about what they experiences with the PO or with B2B tool. So if you want to present at Teched do sent him an email.

 

The Netweaver 7.4 is being released. This is similar to Netweaver 7.3.1 at least for the PI/PO part. The portal needed some new codeline and that is the reason while the new version has been created. The service packs for both versions will be released around the same time form the current release schedule. I guess that this was just as with XI 3.0 and PI 7.0, which was also identical form a XI/PI perspective.

 

One of the things that I wanted to learn more about was the SAP HANA Cloud Integration (HCI probably not an official abbreviation). What it was and how it will impact SAP PI.

 

The short answer is:

In the short term it does not have any impact on the strategy. There will still be a need for on-premise SAP PI to solve the current use cases.

 

Currently HCI only supports scenarios from local systems to SAP’s cloud offerings. Some packaged already exists and they are developing more to support all use-cases they see as relevant. The license for using them is based on a percentage of the cost of the cloud solution.

 

Later the solution would be open to allow others to use and enhance the solution. This will enable partner specific solutions. Where you can create an any-to-any connection. You will need to open the firewall to be able to access systems behind the firewall or probably have a VPN connection. My understanding was at this would be possible around the end of the year.

 

The development objects and mapping will look the same. So objects can be moved between the two systems. It will probably be using the Eclipse based tooling from NWDS. The runtime would be a bit different since it will run in the cloud and on a Sybase database. When it will run on HANA is unclear and probably does not matter since it will not give a lot of performance improvements.

 

The BPMN package is not schedule for inclusion at the moment. Licensing was not clear either. I was hoping that it could be a good hosted solution to make some of the integration instead of having to buy and manage a SAP PI system. It could be useful for some of my small clients.

 

I had expected that this write up would be rather short but it looks like I did get to cover some different areas.

 

One great thing about the trip was that I was able to go see an Atlas V rocket launch on the Wednesday. It is the first time I get to see such a rocket go up. It was a small rocket but it made a great noise and defiantly worth seeing if you are in the area.

raket.jpg

This is my image of the launch, i guess that you need to be using a bigger camera and not just my mobilephone to take better pictures at the distance. One of the people I was standing besides got this images form the same difference http://drh68.zenfolio.com/p275028033

 

Disclaimer: I’m writing this on my own and it is based on my impressions. I can have misinterpreted things or be unable to formulate it correct. 

MDM to File and JMS with ICO (one sender two receivers)

$
0
0

This is MDM to file and JMS scenario.SAP PI version is 7.31 dual stack. Master Data is managed in MDM and integrated with legacy systems with SAP PI. I have used FCC in both receiver channels to convert xml to text file. Integrated Configuration is used in ID Part to bypass Integration Engine.  MDM version is 7.1 and JMS side we are using IBM Web sphere Message Broker (WMB).

 

I did not cover creating MDM port, syndication maps. You can find all in this link.

 

ESR Objects

Sender Message (External Definition):

 

1. Sender Message.png

 

Receiver Data Type

 

2.receiver data type.png

 

 

Receiver Message Type

 

3. Receiver Message.png

 

Sender Service Interface

 

4.Sender service interface.png


 

First Receiver service Interface

 

5.First Receiver service interface.png

 

 

Second Receiver service Interface

 

6.Second Receiver Service interface.png

 

Message mapping

 

 

7.message mapping.png

 

 

First Operation Mapping

 

 

8.First Operation mapping.png

 

Second Operation Mapping

 

9.Second Operation mapping.png

 

ID Objects

 

Business Component

TEST Business Component will be used sender and receiver.

 

10.Communication Component.png

Sender MDM communication channel

 

MDM Adapter installation use this link.

 

11.MDM channel.png

 

First Receiver Channel JMS Adapter

 

12.JMS channel.png

 

Module Tab page

Message transform Bean used to convert xml to flat file.

13.JMS module.png

 

Second Receiver channel File Adapter

 

14.File.png

 

Processing and FCC tab

 

15.File FCC,VS.png

 

Integrated Configuration

 

Inbound Processing

 

16.ICO Inbound Processing.png

 

 

Receiver

 

Both the receiver TEST Communication Component is used.

17.ICO Receiver.png

 

Receiver interfaces

 

18.Receiver Interfaces.png

 

Outbound Processing First Receiver (JMS Channel)

 

19. ICO Outbound Processing.png

 

Outbound Processing Second Receiver (File Channel)

 

19.1. ICO Outbound Processing.png

 

Now we are done with ESR and ID configurations.

 

 

Scenario Testing

 

Go to MDM data manager and select the record to edit or create new one.  Once you are done with editing press Shift+Enter.

Make sure the port is automatic. So once you save the record, the copy of the record will be available in MDM ready folder in xml format.

Now the record will be picked up by MDM adapter from ready folder.

 

20 Testing.png

JMS Adapter Audit logs

 

 

24.JMS Message Audit logs.png

 

 


 

25.JMS Audit logs.png

File Adapter Audit logs

 

26.File Auditlogs.png

 

 

 

JMS output from JMS system logs

 

23.JMS output.png

 

File output

 

22. File output.png

 

Hope this will help you...




PI adjustments for app and dB server split

$
0
0

Recently, I was involved in a project with the goal of splitting app server and dB to split them on different hosts. If app and dB server are on the same host, there's no confusion as there's only a single host. However, if in case of dB and app server split, dB host should be taken for technical systems.

 

We got following errors after app/dB split.

 

- Error with cache notification.

 

cache.png

- Adapter engine not found.

AE.png

 

- Business system not found on execution of LCR_GET_OWN_BUSINESS_SYSTEM.

 

We had to do the following steps in the below order to get it working:

  1. Recreate SAP technical systems

a) Delete existing technical systems for SAP systems.

b) Regenerate these technical systems (RZ70).

 

2.Regenerate PI business system and technical systems of type "Process Integration"

a)Delete all technical systems of type 'Process Integration'.

b) Delete PI business system

c) Execute PI self registration:

In  SAP Net Weaver Administrator:

Configuration Management --> Scenarios --> Configuration Wizard : All Configuration Tasks --> PI SLD Self Registration

This step:

                i) Regenerates technical systems of type 'Process Integration'

                ii) Recreates PI business system. If PI business system is not deleted in 2 b), this step will fail. If you want to use a different name, it should be done                     after all steps are complete.

 

3.Restart integration builder / integration repository / RWB and AE.

Net weaver Administrator:

SAP Netweaver Administrator --> Operation

Management --> Systems --> Start&Stop --> Java EE Applications

 

  1. com.sap.aii.af.app (Adapter Engine)
  2. com.sap.xi.directory (Integration Builder/Configuration)
  3. com.sap.xi.repository (Integration Builder/Design)
  4. com.sap.xi.rwb (Runtime Workbench)

 

4.Adjust all SAP business systems to use the new technical system. The technical systems should appear as below.

correct.png

 

Hopefully it can save someone some time in trying to work these out.

Configuration of Ariba Network Adapter with Client Certificate in NetWeaver PI

$
0
0

Overview Of Ariba Network Adapter

 

Ariba Network provides you with a single point of integration to thousands of suppliers. Similarly, it provides each supplier with a single point of integration to multiple large buying organizations. You use Ariba Network to find suppliers to purchase products or services from and to invite suppliers to form trading relationships. After suppliers accept the invitations, you can send purchase orders to them through Ariba Network.

 

Suppliers receive the purchase orders and return invoices, etc. Each supplier has an Ariba Network account and can specify how it wants to receive orders and generate order confirmations, ship notices, and invoices, etc.

 

Ariba provides PI standard delivery content of Data Mappings between Business application and Ariba Network for Purchase Order and Invoice business scenarios.


 

The Ariba Network Adapter for SAP NetWeaver implements round tripcommunication between your SAP ERP system and Ariba Network. It allows your SAP ERP system to send and receive cXML documents to and from Ariba Network by

mapping data elements between IDoc and cXML.


The Ariba Network Adapter for SAP NetWeaver runs on the SAP NetWeaver Process Integration (PI), and can be thought of as a library for SAP NetWeaver PI. This library includes integration processes and Java libraries that implement the cXML transport protocol and provide a set of facilities for resolving differences between SAP and Ariba Network.


The following graphic illustrates how the Ariba Network Adapter for SAP NetWeaver enables the communication flow between Ariba Network and the SAP ERP system.


 

In this particular document I am not going to the detail configuration of Ariba Network adapter, instead of that I have provided an overview how to configure Client Certificate in Ariba Network adapter.


1 Login to SAP NetWeaver PI NWA.

 


 

 

2 In NWA ( click on Configuration Management tab and then Security. Click on Certificates and Keys link as highlighted below.

 


 

3 Click on Add View button.


 

4 In the View Name field, enter Ariba, Description field, enter Key Storage for Ariba Network Adapter, and click on Create.

 


Configuration of Ariba Network Adapter with Client Certificate in NetWeaver PI -- II Part

$
0
0

 

An empty custom key storage view named AN is created as displayed below.

 


 

5 To create the keypair, click on the Create button as highlighted below.


 

6 Add a new key storage entry to the view as follows:

1 In the Entry Name field, enter AribaKeypair. Retain the default values for the remaining fields.


 

2 Under Subject Properties, enter values as displayed below. Make sure that the common Name field (CN) value highlighted in red circle refers to a fully qualified DNS domain name of a web server.

 

 

3 Click Next in step 3.

4. review the information under Subject Properties and click on Finish button.


 

7 Select the AribaKeypair in the Key Storage View Details and click on Generate CSR Request button.

 

 

1 To download the AribaKeypair.pem CSR file, click on Download link as highlighted below.

 


 

2 Open the AribaKeypair.pem in a text editor. It appears as follows.

 

Then the generated CSR must be signed by one of the trusted CAs supported by Ariba Network

List of Trusted Certificate Authorities given below:

When you purchase a sign digital certificate, it must refer to an organization that is

trusted by Ariba Network. The trusted certificate authorities are :

ABAecom

AddTrust

American Express

ANX Network

BelSign

Belgacom

Digital Signature Trust Co.

Equifax

GlobalSign

GoDaddy

Thawte

TrustCenter

VeriSign

Then CSR response, which is the public certificate received from the trusted CA, must be imported into the custom SAP NetWeaver PI Key storage view. Import the CSR response in to the Key storage as follows:

 


1 Click on Import CSR Response button.

 

 

 

After that same public certificate must also be applied in the AN Buyer account. Configuration details of Ariba Network adapter is attached below.

 

SFTP - Certificate and Troubleshooting - Guide for Seeburger - Adapter

$
0
0

Hello,

 

in recent years, the SFTP-protocol has become an important piece in the B2B area. Therefor Seeburger had already provided an adapter for PI several years ago.

Although there is also an option existing now to use the SAP SFTP-Adapter which is shipped with PI, there is still a large customer base existing for the Seeburger-Adapter.

 

With this blog, I want to provide you again with a "HowTo" - Guide that has been created based on the experience of Seeburger-Consultants in various projects. It is not complete but covers many different issues that you might encounter with certificates in your SFTP- Setup.

 

Please be aware: This document does not replace the SFTP-Adapter-Documentation but should be used like an additional FAQ - Reference.

It is not an "official" document but will also be updated with feedback provided in this blog.

 

 

The following (temporary) Link allows for viewing and downloading the document (as pdf).

 

https://mft.seeburger.de/portal-seefx/~public/e32ac89b-d1d6-4719-807e-8b4244c5baf8?download

 

Let me know if you encounter any difficulties. Looking forward to your feedback.

Working with Images/PDFs in PI using UDF

$
0
0

Recently one of our customers asked me about PI capability of handling PDFs. This discussion really got interesting when we started scoping requirement. Just handling PDFs turned out like PI will receive multiple images as base64 encoded string in payload. PI will merge these image file, convert it into PDF and then long list of DOs and Don’ts ultimately send base64 encoded pdf file to 3rd party application.

 

My experience with PDF till that point of time was restricted to moving pdf files from one folder to another using AAE so I thought of creating POC first to see what can be achieved through PI.

 

I started to look out for Ideas at SDN forum and found some of my ex-colleagues (not one ) have implemented some sort of complex PDF handling in PI. Key take away for me here was iText.


iText is a very powerful open source library. Using it’s APIs we can work with PDFs/images in more way than I can count. This library exactly fitted requirement for my poc.

 

At SDN forum most of the suggestions are to create adapter module or JAVA mapping. Java programming is not best of my traits and I find it easy to work with UDF. Anyway I don’t have to create actual PDF file at source but to send it as base64 encoded string so UDF is best suited for this.

 

Scope: - PI will receive base64 encoded image as a string in payload. PI will merge these images and create a base64 encoded PDF. PI will put the base64 encoded PDF into a field in target payload which in turn will create xml file at target FTP.

 

Algorithm: - here I am explaining the basic algorithm.

  1. Read base64 encoded string from payload
  2. For each encode image:
    1. Decode the image
    2. Convert the image to PDF
    3. Add pdf to existing one.
  3. Convert PDF to base64 encoding
  4. Return string to payload.

 

Implementation:-

For this implementation itext jar “itextpdf-5.4.1.jar” has been used.

Import instructions:-

import com.itextpdf.text.Document;

import com.itextpdf.text.pdf.codec.Base64;

import com.itextpdf.text.*;

import com.itextpdf.text.Image;

import com.itextpdf.text.pdf.PdfWriter;

 

 

UDF.JPG

 

This is advanced UDF for type queue having one input of type string.  I have segregated the UDF code in multiple part for better understanding. I have also included the full version of UDF in last part of blog.

 

Part 1:Declarations:-

String merge = null; // store base64 encoded merged PDF document
Document pdfDoc = new Document();  //  Constructs a new Document with A4 page size
ByteArrayOutputStream output = new ByteArrayOutputStream(); // store pdf in byte array
PdfWriter writer = null;  // Constructs a PdfWriter
Image img = null;   // Constructs a PdfWriter


Part 2:Processing each encoded node:-

for(int i =0; i<encodedImgStr.length; i++)
{
.
// Code for merging images and creating PDF as described in part 3 and 4
.
}

 

Part 3:Decode the encoded image and read it into bytes:

String imgStr = encodedImgStr[i];
byte[] imgBytes = Base64.decode(imgStr);

 

Part 4:Convert images to PDF and merge:-

try{             // get an instance of an image                img = Image.getInstance(imgBytes);             // get the plain height of the image               float imgHeight = img.getPlainHeight() + 100;                // get the plain height of the image                 float imgWidth = img.getPlainWidth() + 100;                // create the page for the document               Rectangle pageSize = new Rectangle(imgWidth, imgHeight);                // set the page size of the pdf                 pdfDoc.setPageSize(pageSize);   /* below code is executed only once. When first image is processed*/                if(i ==0)                {   /*below method gets an instance of PdfWriter “writer”. pdfDoc  is the document that has to be written and output is the OutputStream the writer has to write which in this case is ByteArrayOutputStream. */                      writer = PdfWriter.getInstance(pdfDoc, output);                    writer.open();
 pdfDoc.open();                }

// Below method convert image to PDF. At each loop image is converted to pdf and new page is appended.
pdfDoc.add(img);

       }
 catch (Exception e) {
 }

 

Part 5:Close Document and Writer:-

// once document is written to output stream close the document and writer
pdfDoc.close();
 writer.close();

 

Part 6:Convert output stream to byte:


// Create a new byte array pdfBytes and copy valid content of output stream output to pdfBytes.
byte [] pdfBytes = output.toByteArray ();

 

Part 7:Encode bytes to base64 encoding:-


// encode PDF bytes to base64.
merge = Base64.encodeBytes(pdfBytes);
// Add merged base64 encoded pdf to resultlist.
 result.addValue(merge);

 

 

 

message mapping.JPG

 

 

Below is the input message. Field “fileData” contains encoded images. For this POC I am not actually using “FileType”. I am using SOAP UI to test my interface.

 

Input Message.JPG

 

 

I have used the same structure for output as well. Below is the output message.

 

Output Message.JPG

 

 

I have written small code in NWDS using iText library to decode base64 string and create a PDF file.

Sample Code:-


import com.itextpdf.text.pdf.codec.*;

public class decodePDF {

            public static void main(String[] args) {            // TODO Auto-generated method stub               String file1 = "C:/Documents and Settings/Desktop/iText/PIencoded.txt";               String file2 = "C:/Documents and Settings/Desktop/iText/PIadapter encoded2.pdf";                Base64.decodeFileToFile(file1,file2);      }

}

 

 

Full version of UDF mergeDoc UDF.

 

String merge = null;

Document pdfDoc = new Document();

ByteArrayOutputStream output = new ByteArrayOutputStream();

PdfWriter writer = null;

Image img = null;


        for(int i =0; i<encodedImgStr.length; i++)     {        String imgStr = encodedImgStr[i];        byte[] imgBytes = Base64.decode(imgStr);         try{            img = Image.getInstance(imgBytes);            float imgHeight = img.getPlainHeight() + 100;                    float imgWidth = img.getPlainWidth() + 100;                  Rectangle pageSize = new Rectangle(imgWidth, imgHeight);                 pdfDoc.setPageSize(pageSize);            if(i ==0)            {               writer = PdfWriter.getInstance(pdfDoc, output);               writer.open();                           pdfDoc.open();                        }                        pdfDoc.add(img);                     }                  catch (Exception e) {                }          }


 pdfDoc.close();


writer.close(); 


byte [] pdfBytes = output.toByteArray ();

merge = Base64.encodeBytes(pdfBytes);

result.addValue(merge);

 

 

We can use iText library to achieve functionality like encryption, removing malicious codes, modify metadata etc. I am still exploring it and hope to find many interesting features we can use.

How to send message from AAE to IE

$
0
0

Recently, I implemented a interface. The IDOC is already used by ICO which run on AAE. But I need to use receiver plian http adapt, as the AAE_HTTP adapter not support dymanatic config. We cannot change the ICO. First we use the MQ as media. AAE send the message to MQ, then IE pick it from MQ through JMS adapter.

 

One day a light struck on me, just like an apple atack the Newton.

Why not use http adapter, the http is the PI internal message exchange protocol.

Then the solution become to that AAE send the message through receiver AAE http, IE use the sender http adapter.

 

Perfect!

 

This is on PI 7.3.

 

I show the screenshot below.

 

1.ICO config, use receiver AAE HTTP to send msg to IE

 

 

2. Receiver AAE HTTP Channel

 

3. configuration scenario

 

 

 

4. Send plain http adapter use in configuration scenario

Reducing integration effort by leveraging SAP enterprise services part1

$
0
0

The motivation of the blog is a conversation I had with couple of friends. They had implemented a new SAP functionality but were hassled by the amount of effort spent in integration. They eventually completed the task but after lots of crazy hours on late nights and sometimes weekends. As both the integration as well as the functional person is a friend and didn't know about using enterprise services, I realised that perhaps not everyone is using enterprise services. Further, I was designing and implementing a solution to integrate SAP ECC with an external application for managing distributors and thought to write this post.  Our integration required sending master data from SAP and transactional data updates in SAP ECC in OTC / P2P process area triggered from the external application.

 

Starting with the basics, look at the definition from SAP from BBA guide.

Enterprise Services: Web services using a common enterprise data model based on process components, business objects, and global data types, and following consistent communication patterns. SAP exposes software functionality as enterprise services.

There's good documentation at http://esworkplace.sap.com/ .

 

In integration world, I see them as equivalent of classes in application development. If you're able to use pre-existing content, most of the work is already done for you.

 

Why to go for enterprise services instead of trying to build them from scratch - what are the practical benefits?

 

-  Leverages pre-built solutions reducing in substantial development effort reductions.  We were able to reduce development effort to around 60% of initial estimates and even this is high because of the first time efforts in understanding their architecture and doing some prototyping.

 

- Easy to extend: Any project will require customization not delivered by standard solution and normally making changes later on is very time-consuming. Most of the functionality is already covered and even if additional changes are required - SAP has given a nice framework to customize them first in PI and then carry out adjustments on SAP system in ABAP stack.

 

- Comes with a lot of bells and whistles: Have error handling, data validation pre-built.

 

The following points need to be considered though:

- We utilised various software component versions and there were two mechanisms to get them installed in our landscape.

a) Some require installation of an add-on in ECC requiring BASIS effort (e.g. ECC-SE add-on to be installed by BASIS).

 

b) Others require activation of irreversible business functions (e.g. ESOA_OPS01 for services in SAP APPL). It's important to understand that some of the business functions can't be reversed and hence some amount of regression testing of affected areas need to be performed. SAP provides a test catalogue about the impacted functionality which can help in determining the impact. We tried them first in sandbox. Initially the activation didn't go smoothly resulting in ABAP dumps which go away on activation. However, it's painful as you have to wait for a transaction to dump before activating it. After an OSS message, finally we regenerated all programs of EA-APPL, ECC-SE and SAP_APPL software components.

 

At a very broad level, there are 5 different activities that need to be done.

i ) Identify which services meet requirements completely ( or to the largest possible extent ). There can be more than one service for a given business function ( e.g SalesOrderERPCreateRequestConfirmation_In_V1 and SalesOrderERPCreateRequestConfirmation_In_V2 for sales order creation ). I noticed two things: The former wasn't able to meet all our requirements and has been deprecated as well.  Like any other artefact in software engineering it's best to avoid deprecated services.

 

ii) PI configuration: This was straight forward in our case as it was simple SOAP to proxy and reverse.

           

            iii) Back end ABAP adjustments: These were made to fill in organizational data as the third party system doesn't have concept of some of the                 organisational structure, data etc.

 

iv) BASIS activities: Installation of add-ons (e.g. ECC-SE add on via SAINT), regeneration of affected ABAP programs via SGEN.

 

v) Co-ordination of regression testing: This may involve change management, regression testing and functional owner of the application / process area.

 

Some of the points we learnt from experience:

 

- Be ready to spend time in advance of the actual development in prototyping and investigation. However, it pays back in later stages of projects.

 

- We had to build application logging on ECC side so that in case of errors a functional person knows what to look for.

 

- There was one instance where we had to overwrite SAP solution. Fortunately, it can always be over-written as a post-exit method in the implementing ABAP class.

 

- Update some of the system parameters ( e.g. icm/keep_alive_timeout parameter in downstream PI systems). While transporting ESR contents, we realised that the transport import was failing after 5 minutes. These ESR transports with stnadard SAP content can get really big and it's best to send them in separate transports (for each SWCV) . Our first attempt in trying to import them took 22 minutes in total!

 

In part2, I'll describe the steps in more detail to make the implementation process clearer but from our experience, SOA is definitely not dead!

Link to part 2 : http://scn.sap.com/community/pi-and-soa-middleware/blog/2013/06/04/reducing-integration-effort-by-leveraging-sap-enterprise-services-part2


Reducing integration effort by leveraging SAP enterprise services part2

$
0
0

This is in continuation of the first blog on reducing integration effort by using SAP enterprise services ( http://scn.sap.com/community/pi-and-soa-middleware/blog/2013/06/04/reducing-integration-effort-by-leveraging-sap-enterprise-services )

I'll describe the steps in more detail here.

Step1.   Identify services required.

            Go to http://esworkplace.sap.com/ and identify the service required. There're various ways you can navigate the content. If you're implementing a new scenario, typically a complete process , you can use integration scenarios ( e.g. agency business ) . Using solution map is higher level ( e.g Sales Order Management ) . Business Scenario Description seems hybrid of the above two and I prefer that. Then, in each bundle you can navigate to the service operation and read through the documentation. Make sure the selected operation is not deprecated. SAP has good documentation around features, configuration required in backend system, error handling and any business function required.

 

Step2.  Identify system set up requirements

Identifying all operations will help to come up with a list of requirements for system set up. It's relatively straight-forward in PI as we just need to import the software component. However, for the back end system, there can be couple of scenarios:

- Service requiring business function activation (e.g. SAP APPL 6.04 requires LOG_ESOA_OPS_2 activation) .

- Service requiring add-ons to be installed by BASIS in SAINT transaction (e.g.  ESA ECC-SE 604 requires BASIS to install ECC-SE add on).

Get the ECC activities organised (as mentioned in part1, some of the business functions are irreversible) and import corresponding PI SWCVs into ESR - these could be downloaded from SMP and imported as usual.

 

Step3. Check components are completely installed in the system.

  Go to transaction SPROXY. If the ECC system satisfies all the pre-requisites and PI has the components as well, the SWCVs should appear in transaction SPROXY.

SPROXY.PNG

In SLD, the ECC technical system should have the additions appearing as a software component version in Installed software of the ECC technical system.

TS.PNG

 

Step4. Create custom software component version. This is strictly not required but in experience, there's always a need to customize messages and hence it should be created with the required service's SWCVs as the underlying SWCV.

ESR.PNG

 

Step5. Test: Once the services are in ECC, you can use them to start doing testing.

Use transaction SPROXY for testing - this should help to identify the elements required in the message to be populated and the business documents processed. In experience, this is where you'll spend the maximum time trying to identify what is required, where to populate the information etc.

You can test using SOAMANAGER as well but I prefer to just use SPROXY and then when the PI configuration is complete use SOAPUI.


Step6. There will be cases where the standard doesn't fit the requirement completely. In that case, perform a data type enhancement in SAP PI in the custom namespace.

DTenh.PNG

This should make the data type enhancement show up in ECC SPROXY.  Creating the proxy here will update the ECC structures which are used by backend ECC classes for business document processing.

DTenhECC.PNG

 

Step7. Some Hints: As usual, testing can be done by configuration in ID and using SOAP UI. Just couple of hints here:

Many of the standard services are sync and ensure that message logging for sync interfaces is on.

The messages appear in SXMB_MONI in ECC only when there's an error (not application error but more like a system error like configuration, input message not conforming to length / type restrictions etc).

For debugging, you can create a comm channel with your username and turn on HTTP debugging if you're trying to investigate the SOAP message (say headers).

 

Step 8:  Special case: Lean Order being too Lean !

For one of the scenarios, while creating sales order we realised that lean order doesn't have the fields we're interested in. However, there's a good document on SMP about "Enhancement Options for the Lean Order Interface" and it was very helpful

 

Step 9: Generate some positive karma - Do some good for people maintaining it later. As the development on ECC side is going to involve mostly enhancements, two things can really be useful.

            - Keep all the enhancements in a composite enhancement.

            - Create a checkpoint group so that it's easier to debug messages.

 

Step 10:  Logging in SAP: For synchronous interfaces, SAP does return the proper messages back to the calling application. However, the functional team doesn't have access / interest to access PI to look at the errors. Hence, we had to build logic to update the messages as an application log (which can be checked in SLG1). This in some ways satisfies their requirement to look at the system to figure out what's going on.

This is one area where perhaps either I'm missing something or SAP needs to provide information so that users / functional consultants can monitor the messages. Many functional consultants don't want to even try to look at XML.

 

A simple class can be created to log the information and call them at appropriate enhancement points. However, we also created a generic method to convert any exception into a BAPI message.

Code can be referenced here.

https://github.com/viksingh/abaputilities/blob/master/exception_to_message_table

 

Couple of observations where things could potentially by improved by SAP.

- There should be a free tool by SAP to let users/ functional teams monitor messages during testing. I'm aware of AIF but don't have experience as it's not free.

- Lack of out of box support for JSON RESTful web service in SAP PI. The initial requirement was to use them but then the source application had to be modified to use CXF to generate SOAP web service calls on the calling application side. I was almost ashamed to go back to the third party

 

Some of the books & articles I found useful.

SAP Press Book: "Developing Enterprise Services for SAP": Although I referenced this book only recently, I found an absolute joy to read and did pick up many things. This definitely helped to refine some of the ideas.

http://www.sap-press.com/products/Developing-Enterprise-Services-for-SAP.html

 

Enterprise Services Enhancement Guide

http://scn.sap.com/docs/DOC-18402

 

SOA MADE EASY WITH SAP

http://scn.sap.com/docs/DOC-17416

 

Blog-Add a field to LORD API

http://scn.sap.com/people/tony.rosenthal/blog/2011/03/18/ecc-lean-order-adding-a-field-to-the-lord-api

How to send a Test Message from RWB

$
0
0

How to send a test message from RWB in PI 7.3 EHP1

 

Introduction

 

This document is focused to give a better understanding on testing the interface by sending the message from Run-Time workbench (RWB).As we all know that, we can test the interface by sending test message from RWB. From PI 7.3 the RWB has changed rapidly and it is having many advanced features.Even though this is known to every one, it may helpful for those who recently upgrade to PI 7.3.

 

In SAP PI 7.3 we have a central tool for overview monitoring the Integration Scenarios in our landscape which is SAP Solution Manger. With these features we can review the information about the processes or Messages.Run-time Workbench (RWB) can be used as a quick test tool for sending the payload directly to integration engine or Adapter engine.

 

Prerequisites: User should have this role " SAP_XI_RWB_SERV_USER_MAIN "

 

 

Step 1:Go to PI Home page and click on configuration and monitoring Home which is available under configuration and monitoring.


Untitled.jpg

Step 2:  you will get the below screen. Here you will find the three tabs.


  Monitoring 2) Configuration and Administration  3) Testing.

Untitled.jpg

Step 3:Go to testing tab and click on send test message option under testing.

Untitled.jpg

Step 4:you will get the below screen, here we have two options under integration server

  Integration engine and Adapter engine.

Untitled.jpg

Step 5:Click on integration engine you will find the below screen

Untitled.jpg

Fill the details like sender component/interface and interface Namespace/ user name and password and quality of service like below.

Untitled.jpg

Step 6:Paste the payload from Message Mapping.

Untitled.jpg

Click on send message.

Untitled.jpg

You will get the pop-up message “Message Sent” like in the above screen.

 

Step 7:Your message will send to integration engine. You can check the message either in Message monitoring and SXMB_MONI.

Untitled.jpg

You can see the Payload which we sent from RWB in pipeline steps.

Go to inbound/outbound message payload.

Untitled.jpg

It is the same payload which we copied from Message mapping in step 6.

In this way you can send the message from RWB to test the interface.

 

Regards

Bhargava krishna

Archiving files with orginal file name using SFTP Sender Channel

$
0
0

Hi Experts,

 

We are trying to arhcive files in a sender system using the "Archive files on SFTP sender "option available in SFTP Sender Channel under advanced mode.We are using ASMA to get Filename dynamically .We have given the path also for archiving.

 

The problem is we are able to archive the files but when only with .txt being appended to orginal filename.

 

For eg

 

If we are picking files 123.xml,345.xsl the files are getting archived in archive folder as 123.xml.txt ,345.xsl.txt. We want it as 123.xml ,345.xsl only .

 

Please suggest how to go ahead with the issue

 

Thanks

Swathi

Java 7 Webstart with SAP PI Integration Builder tools

$
0
0

I just received the update for Java 7 on a client laptop. I have an idea that update of software is a good thing it keeps the system updated and hopefully have fewer security problems. It seems to be a recurring issue with the Java platform. 

Java 7 Webbstart.png

I wanted to start my development with SAP PI and the Integration Builder tools. So I was looking forward to see how it would perform. I have seen the Java 7 update on a terminal server on another client. Here there java 7 was unable to start the Enterprise Service Builder or Integration Builder.

On my client laptop I was able to start both tools on the PI 7.31 systems. It did take quite a long time and when they finally started they were using 300mb. In Java 6 they only took up 200mb when they started. If you have 4 windows open then it is the difference in using the swap file or not.

My challenges are that I was not able to start the java 7 version always and it took forever to start, if it did decide to start. So I had to find a way to use the Java 6 WS to run the tools.

 

 

The easiest was to use a Windows Shortcut to manage and start the tools. So I created a shortcut for each system and then in the target I had the following information

 

"C:\Program Files\Java\jdk1.6.0_35\jre\bin\javaws.exe" http://server:54000/rep/start/sso/repository.jnlp

 

C:\Program Files\Java\jdk1.6.0_35\jre\bin\javaws.exe" http://server:54000/dir/start/sso/directory.jnlp

 

 

The javaws needs to be updated to where you are locating your java 6 WS and the server url should be updated to point to your server.

 

 

Then I could just copy the shortcuts for PID, PIT and PIP, and just changed the server and port. I now have 6 shortcuts to start the PI tools with. The single sign on does not work, but I can manage to enter my password when starting the Swing tools.

Open PI Initiative (OPI2) – A view “behind the scenes”

$
0
0

Lately I came across the following blog about code sharing and spotted a reference to the OPI2 project. I found the subject of the blog appealing since the motives are quite similar to what let to creation of OPI2. There are often requirements which you cannot solve with the standard means and you have to start to design and develop an extension or own solution to tackle the challenges at work. A lot of material can be found in the SCN or on other websites such as Stack Overflow. However, they usually give good tips to start but are sometimes not mature enough to be used without much tinkering.

 

With the Open PI Initiative we want to deliver some ready-to-use solutions for special integration needs that are not in the PI standard distribution. I don’t know if all of you are aware of our section in the PI space, but with this blog I wanted to show some of our recent activities.

 

State of Play

 

As with most open source projects most of the work is done by the projects core team. A lot of this work is maintenance work such as guaranteeing that the solutions are working with the available SAP NetWeaver PI releases. We are usually testing and enhancing for lots of releases in parallel. Also for the 7.31 AEX Java-only installations we had to enhance the offerings so that they now run perfectly fine on “classic” configuration scenarios on double-stack installations as well as in an Integrated Configuration on a single-stack installation.

 

We are also building new features into our offerings. The AS2 adapter for example got extended with new features such as Dynamic Configuration of the connection parameters or certificate-based authentication for the Receiver Communication Channel. We are also providing customer-specific versions that are not released in the standard distribution because they are tailored for a very specific purpose.

 

Nevertheless, we are getting lots of questions regarding the usage of the offerings. Let me answer that question with the following statement: Yes, this software runs in production environments of lots of companies. Furthermore, the contribution part from the community regarding bug finding and solution suggestions works very well. It’s also interesting and surprising which companies use the OPI2 solutions. Since the start of the OPI2 project there have been over 4500 downloads. But usually we get the information about productive users only by chance. Normally, the user contacts us only if there is an issue with the solutions and luckily this is not often the case. Also from our experience we could identify the trend that Scandinavian countries seem to be avid open source users and contributors (or they just like to interact with the project team).

 

Summary

 

In the end, one of the main advantages despite the community-based evolution of open source is the learning aspects for all parties involved. This leads to mature and well-tested software. We are encouraging everyone to submit code extension or feature requests, but want to especially highlight that we always welcome new contributors. And last but not least …keep hacking!

Viewing all 676 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>