steffen.ulmer

12 Posts

Hi,

Just want to inform you what I have recently published a new How-To Guide on SDN with the title "Develop a custom master data object in SAP MDG (Master Data Governance)".

From my experience, many companies want to manage custom objects in a central master data system to be able to harmonize this information across their landscape. Custom objects can be individually defined objects such as assets or locations. Custom objects are typically less complex master data objects with a small and simple data model. They are often used as reference data in major objects such as material, suppliers and customers.

The How-To Guide describes the necessary steps to implement a custom object in SAP MDG. The guide is based on an object called “Location” and includes the following steps during the implementation phase:

  • Create a new Data Model
  • Define a new Business Object and Activity
  • Create a custom User Interface
  • Process Modeling
  • Test of the custom object

The target audiences of the document are typically technology consultants and MDM/MDG architects.

Please access the guide here:

http://www.sdn.sap.com/irj/scn/index?rid=/library/uuid/80cfacff-803f-2f10-ec92-9af0dd9fd89e

Best Regards
Steffen

Hi,

In the last couple of days I did some interesting stuff with SAP BPM. Basically I used BPM in the past to implement human centric workflows on top of MDM or MDG but it’s also very beneficial to deploy new services which are running independently from any user input.

The strategy of this approach is well known: Instead of developing new components, services or applications you reuse existing, well tested and often used components and building blocks and put them just together to get a new functionality.

In my case I did a prototype by leveraging the out of the box MDM Web Service in BPM and expose them as composition by giving the simple CRUD-MDM Services meaning. The requirements for the prototype were as follows:

  • In a master data harmonization scenario a remote system such as SAP ERP need to do a check in a central MDM repository before creating a new vendor master data record in ERP.
  • Because of that ERP needed to call a synchronous (web) service at MDM side to check if the potential new vendor already exists in MDM or not.
  • If the record already exists, MDM should return a list of candidates. Based on that information, ERP would inform a user about the fact that he is creating a duplicate vendor in ERP.
  • If no duplicates were found by the MDM Matching, the service must create a new vendor record and must return the unique key.

If you review the requirement it seems to be very easy because SAP MDM is shipped with configurable Web Services for generic operation like:

  • CRUD (Create, Read, Update, Delete)
  • Matching
  • Syndication
  • Validation
  • Etc

The problem is just:
How to put the different services together in the right sequence? – The answer is:

SAP Business Process Management!

This image gives you a high level architecture overview.

 

The image should highlight the idea: Instead of coding a Java EJB which calls itself the MDM Web Services and implement the logic with Java Code you can use BPM to develop this on code free basis.

The following image shows the process flow of the prototype: 

 

As you can see the process flow includes no human activity at all. Because of that an instantiation of a process will execute within (milli-)seconds and the calling system will get a synchronous response. Within the Exclusive Choices you can implement the logic with the expression editor or, if this is not sufficient, you can even call a complex Business Rule which might be implemented in SAP BRM.

From an implementation perspective I have done the following steps:

  1. Creation of MDM Web Service with the MDM WS Configurator
  2. Creation of a Process Composer Development Component in NWDS
  3. Definition of a XSD for Import and Export Interfaces
  4. Definition of a Web Service with one operation to start the BPM process
  5. Modeling of the BPM Process as shown above & assignment of the web service to the newly created trigger
  6. Import of the MDM Web Service in to the DC including a definition of Service Group
  7. Assignment of MDM Web Services to the automated activities
  8. Input/ Output Mapping on the automated activities and Mappings: Please be aware that you sometimes need to use the generic function “get” in the Expression editor
  9. Build & Deploy of the DC
  10. In NWA: Configure the Service Group
  11. Start WSNavigator and test the service

Last but not least I would like to share some benefits of this approach:

  • Save money and reduce costs during the development phase due to the fact that you can develop your own services with BPM very fast.
  • Reduce risk by reusing existing standard components instead of developing new code.
  • Enable business users to model their own services: BPM has two different views for modeling the flows. Business Users can define on a higher level the process flows. A Service Developer can later on do the details on the mappings etc in the Process Modeling Perspective. In a next release even more is planned by a integration of BPM into Streamworks for instance.

Regards
Steffen 

Hi,

SAP MDM 7.1 SP08 is now generally available since beginning of Oct, 2011 and is available to be downloaded on SAP Service Marketplace. I have already used it during beta testing phase at different customers and I`m really impressed about it. I would like to share some of my observations with you in this Blog to convince you to push for an upgrade.

Basically I believe that this SP differs a bit to the last two SPs (SP06 and SP07) since it delivers really some key enhancements which can be used to address real business requirements and (in case you did so) can give you the chance to throw out some workarounds which you might implemented in earlier releases. You might even see that you have implemented something which still  has room for optimization.

This blog does not mention all the bits and pieces and as well not all the updates and new features. If you would like to get more info you might read the Release Notes published on http://help.sap.com .

I would like to highlight 3 topics which I believe are really worth mentioning because they deliver real benefit:

1. Enhancements on Tuples

The Tuples support has been improved a lot and they go hand in hand with some enhancements in the Data Manager. On one hand side there are now enhanced tuples validation capabilities but, from my point of view, the biggest improvement has been done on the modeling part: You can now define “reverse navigation” on tuples. This means that a tuple does not have only one direction. For instance if you define a relationship by a tuple between a customer and a bank objects, you are now able to see in the bank object to which customer a relationship exists. This was only possible with workarounds in older version. If you think about having self-referring tuple-based relationships within the same table you can now really build hierarchy and even network structures. The main benefits are:

  • Capacity: You can now define hierarchies with thousands of nodes and leaf nodes. Since you are defining hierarchies in main tables you do not have to limit the amount of records. This limitation is simply gone.
  • Assigning none-leaf nodes: Since every node within a tuple based hierarchy is a normal record you can refer from every other record (and of course from other business objects) to that record. In the past you were only able to assign leaf nodes or manually created internal leaf nodes
  • Multiple parents: Which that new capabilities you can now even build networks i.e. assigning multiple parents to a node. This business requirement exists sometimes in the real world and can now be implemented with SAP MDM 7.1 SP08.

Generally the whole approach can simplify your data model dramatically and will reduce your day to day application maintenance costs.

In addition you will reduce your development costs during the project as well since you are acting on a smller amount of tables. Importing and Exporting data will be optimized as well due to simpler mappings and faster execution on a simpler data model.

2. Updates on the User Interface

2.1 Web User Interface

In the Web UI I would like to highlight only 2 features: First, the improved maintenance of MDM Destination by a new Web based tool called “MDM Destination Administration Tool”. This tool is part of the MDM Connector component and provides a convenient user interface enabling users to establish connections between an application and an MDM system.

The second enhancements will also be good news for many business users: After searching within a hierarchy table in the web UI you can now expand all the nodes below the result set. This can speed up the daily work if you have very deep hierarchies or hierarchies with a lot of records.

In the MDM Web Dynpro Components you can now also enable a option for displaying modeling based relationships: If you maybe try this feature you will see a nice new UI popping up with a visualization of the relationships through tuples.

2.2 Data Manager

The Data Manager has also been improved with alot of new features but  the features around displaying tuples are definitely worth mentioning: In record mode you are now able to display the tuple based hierarchies mentioned previously. Also data structure referring to a other main table are displayed in a “build in” modus. You can even navigate to the linked record and the Data Manager will automatically guide you to the corresponding table and/or record.

Expressions can now be copied in the expression editor. The SAP MDM Data Manager as well:

  • Displays now who/which user has checked out a record,
  • Displays with the new SP directly the remote keys within the record mode and
  • Is able to define assignments on tuples!
  • Is able to do mass updates on Tuples.

The value is obviously: Reduce implementation cost for the project manager; less stressed developer or data modeler.

3. Administration

On the administration side, there are also important new features:

  1. You can now define performance tracing as option in the MDM Console (for all MDM server types). This option logs information about each MDM activity completed on a server, helping to identify where performance bottlenecks may be occurring. Performance tracing can be enabled from the server configuration (.ini) file, CLIX, or from within MDM Console.
  2. Delta syndications can now be executed on Port level. This is important if you have define multiple ports for one system and you want to suppress unchanged records for each port. This was not possible in the past and your workaround was maybe to add more and more remote systems.
  3. Secure connections directly to Microsoft AD by SLDAP.

The enhancements on the Administration side will enable you to work more efficiently and to reduce operating costs.

4. Conclusion

Finally I would like to mention that I really believe that the new SP will

a) save time during implementation phase,

b) optimize the administration and the corresponding costs and

c) improve the usability of the MDM solution to be able to manage master data more accurate and simple.

 

Cheers

Steffen

BTW: I would like to thank especially Richard Savery to help me on some of that content. In addition i would like to thank Vic Hansen for all the support and valuable thinking he shared with me not only on this work.

Hi,
I have just released a new BPM tutorial which describes how to develop a very very simple BPM process. The source code is published as well.
As a prerequisite you need:

  • Sandbox/ Development System: SAP NetWeaver CE7.20 (incl. BPM usage type),
  • SAP NWDS,
  • administration user on the sandbox to create new users and to deploy a new dc,

The tutorial should be completed with approx. 60 minutes. At the end you will be able to run your first BPM process. In comparison to the tutorial in the SAP NWDS help you do not need any other system because the example process just uses pure CE features. Of course the tutorial is just a starting point but it should already give you an idea how to use/develop features like:

  • Swim lanes
  • Human activities
  • Process repository
  • Generating Web Dynpro UI's out of the BPM context
  • Modeling a BPM process flow
  • How to use the process composer
  • How to do mapping between activities and the context
  • How to create users and assign them to a swim lane
  • How you build, deploy and execute a process 

The demo process has just 2 swim lanes and 2 human activities. The following image gives you a overview of the process in BPMN:

Process in BPMN

At the end of the tutorial I give you some ideas how to enhance this example. The ideas are based on real life experience.

All the best

Steffen

Link to the article/tutorial:

http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/307336b8-098c-2d10-be9c-d41ae345f0ff

Link to the zipped-source file: (To import just open the NWDI and go to the infrastructure perspective and import the SC)

http://www.sdn.sap.com/irj/scn/index?rid=/library/uuid/a0f7366d-0a8c-2d10-7c81-cbd880577a9d

Hi,
In various discussions with customers,  the question often arises "where to place validations in an SAP MDM landscape". This is very relevant a landscape where MDM is used to store master data and BPM is used for human centric processes around master data. Because of this I'm writing this blog to give you an idea regarding the possibilities.
If you decide to combine MDM and BPM you can draw the following architecture picture:

image

By showing this image the various possibilities are more or less obvious:

  1. SAP MDM: The MDM tool itself comes at least with two options, which you both will utilize:
    a. By modeling a well defined data model: By using the correct data types and the correct modeling capabilities (using lookups, qualified tables, tuples in combination with single and multi-valued features) you can already build “implicit” validations. For instance, if you choose to use a data type “Integer” for a certain field, a user can only enter digits
    b. MDM Validations: MDM uses the concept of validations, which are basically Excel-like formulas that return a TRUE or FALSE value as the result of the validation. Please read this blog from Klaus David: MDM Validations
  2. SAP BRM: BRM gives companies the possibility to define, execute and manage business rules spanning across different business applications used by different departments within an organization. In BRM you can write rules and validations in a script language. In addition you can define so called decision tables. These rules and validations can be exposed as Web Services (>CE7.2) and thereby you can consume these functions or methods from almost any system; as well from MDM or of course from the Process layer.  This is especially useful where the rules can change frequently.
  3. Service Layer. You can also write  validations in your service layer, but more important is that you can expose and interface existing validations in existing backend systems. For example  you can expose SAP ERP validations by consuming RFCs in your Service layer by Web Services.  This option is very interesting if you use SAP’s CAF because this framework comes with many wizards and helpers to consume and expose services from SAP systems.
  4. User Interface Layer: In addition to the above,  you can also define your validations directly in the user interface layer. Especially “active validations” can be placed here because the user can’t even choose a wrong value, or see validation rules before entering data (e.g. mandatory fields in combination with contextual dependencies like account groups and must-fields). As well you can do pre-selections and pre-filtering of lookups in this layer.

In your project, you should make the effort carefully reviewwhere you place your validation. Generally and in long term I believe the BRM and of course the modeling itself is the right place. (BRM would have the advantage in that it is easy to maintain/change rules right ? so great if the business rules change frequently?)

Cheers
Steffen

PS: Many thanks to Jens Sauer, Rene Klumberg and Simon Townson for the help they provided during writing this blog.

Hi,
Implementing user centric business processes with SAP NetWeaver MDM and Guided Procedures was and is still very popular since it has many advantages in comparison to the standard MDM Workflow tool for certain use cases (like integrating additional services, custom UI's, cross system workflows etc). With the combination SAP NW MDM and SAP BPM/BRM you can do the same but you will add a lot of new features to your solutions as well like:

  • Code free based Modeling by a Visual Process Modeler with NetWeaver Developer Studio
  • Out of the box substitution, delegation and revoke functionality
  • Easily adaptable MDM Web User Interface consumed by BPM directly (Preview of SAP NetWeaver MDM WD Components, planned to be released at a later point in time)
  • Integrated Business Rules (code free) functionality (no / less logic in Web Dynpro code anymore)
  • Exception handling of broken instances
  • Deadlines and automated escalations
  • Use of standard MDM Web Services in automated BPM activities
  • Out of the box Notes and Attachments handling
  • Enhanced dynamic texts for process titles in Portal UWL
  • Reusable Sub-Processes and embedded Sub-Processes (with upcoming BPM release)
  • Enhanced monitoring capabilities
  • .. a lot more

Since some months I already implemented some “Proof of Designs” and demo scenarios to show these advantages. If you are interested you can view this ScreenCam:

Expanding the Reach of your MDM Solution with SAP BPM/BRM

 

The business benefits are more or less obviously:

  • Higher Master Data Accuracy
  • Lower TCO and implementation effort by out of the box functionalities and Reusable subprocesses
  • Increased flexibility & design collaboration
  • Enable your business users since the tools are mostly code free usable
  • Better Data Governance throughput
  • Better Tracking & Tracing capabilities
  • Faster Rollouts of new versions (No Thick clients, No Excel)

 

The following screenshot shows the designtime in theNetWeaver Developer Studio for BPM Modeling:

image"

This screenshot is a example of a decision table used in the scenario to determine the correct process flow for the corresponding input parameters:

image"

Last but not least this screenshot shows you the configuration option of the new MDM Web Dynpro  Components used in the BPM process:

image"

Please feel free to place comments or suggestions or contact me if you have questions.

 

Regards
Steffen Ulmer 
steffen.ulmer@sap.com

 

BTW: Many thanks to Rene Klumberg and Isam Awad for helping me writing and preparing this blog.

Hi,

since I was struggeling a little bit with using the MDM Java API within a Web Dynpro Development component I'm writing this Blog to give you a description HOW TO USE THE MDM JAVA API WITHIN A WEB DYNPRO DEVELOPMENT COMPONENT.

 In the past and with older NW release you can use the MDM Java API in a very easy way by defining the reference to the runtime within your Web Dynpro project itself. For the local compilation you just had to add the Libraries to your local build path and for the runtime you had the hard reference to the connector itself which was deployed on the server. The following picture shows you the OLD way:

 

USING MDM Java API : The old way within a Web Dynpro project

 

 

 

(see also: Referencing the MDM Java API during development and runtime  (Referencing the MDM Java API during development and runtime))

 

 

Java Build Path for local compilation

Hard reference for the Runtime on the server

 

USING MDM Java API:  IN A DEVELOPMENT COMPONENT (NWDI or Local Development)

 

 

 

Since NW CE7.1 the above mentioned way is deprecated and in CE7.1.1 it's even not possible at all! Because of that you must use the following way of using the MDM Java APi within your Web Dynpro Application:

 

 

 

1.  Create a new Development Component. Type: External Library<br />Use any name you want. Maybe it’s a good idea to use something like "<xy>/extlib/mdm". In my example I used "upod/externallibs/mdm"</p><p>!https://weblogs.sdn.sap.com/weblogs/images/63702/MDMJavaAPI_NewWay_1.JPG|height=469|alt=|width=426|src=https://weblogs.sdn.sap.com/weblogs/images/63702/MDMJavaAPI_NewWay_1.JPG|border=0!</p><p>2. Add MDM jar files to the External Library project below folder libraries:

You can do that by drag & drop from your Windows Explorer. Just imagine that you need to add the correct version in respect to your current MDM Server version.

 

 

 

3. Add puplic parts to your External Library DC<br />Add two puplic parts for COMPILATION and ASSEMBLY and add all the jar files to both public parts (as archive). 

 

 

 

4. Build and deploy the External Library DC

 

 

 

5. Switch to your Web Dynpro DC and define a new dependency

 

 

 

6. Reload your Web Dynpro DC and ensure that you have the mdm.jars in you build path automatically by defining these dependencies

 

 

!https://weblogs.sdn.sap.com/weblogs/images/63702/MDMJavaAPI_NewWay_5.JPG|height=340|alt=|width=614|src=https://weblogs.sdn.sap.com/weblogs/images/63702/MDMJavaAPI_NewWay_5.JPG|border=0!</body>

Hi SDN community,

At TechEd 2008 there will be an interesting session about "How to implement a Guided Procedures based creation process for the object business partners". The name of the session is "High Data Quality in Business Scenarios by Consuming Enterprise Services" (Las Vegas, Berlin).

The session will include a live demonstration that shows you how the following requirements can be achieved with SAP Netweaver components:

  • Ensure high data quality for new MDM records by consuming different services
  • Implement data governance process which consider a four-eye-principle during the creation
  • Consider different validations to ensure the completness and quality of the new record
  • Run a matching strategy during the creation to ensure that no duplicates will be created
  • Have a central list of tasks which each process member should work on
  • Provide a harmonized UI based on web technologies

Overall the scenario is based on best practices and many experiences which we (in SAP Consulting) have made in different MDM projects. I pretty sure that it will give you a very good insight about what you should consider during the blue print phase and will also give you solutions about how to solve these challenges.

The session will inform you how the above mentioned requirements can be satisfied by software solution/ techniques like

  • SAP CE7.1,
  • MDM 5.5,
  • Visual Composer,
  • CAF,
  • Web Dynpro Java,
  • SAP Busienss Objects Data Service as well with
  • External provided web services.

Hope to see you in the session

Steffen

Hi,
in my blog "Integrating MDM Item-Details-iView into a WebDynpro Application" (Integrating MDM Item-Details-iView into a WebDynpro Application) I have explained how to integrate a MDM-Item Details iView within a Web Dynpro Java application. Of course you can also implement this Web Dynpro application as Guided Procedures Callable Object. From my experience there is one big problem regarding the user acceptance: If a user enters data into the integrated iView and he forgets to click the "Save"-button before he clicks on the "Guided Procedures controll button" he will loose all the entered data because the iView hasn't saved the data yet to the repository.

The following screenshot shows you this circumstances:

image

Since SAP MDM 5.5 SP6 you have the possibility to add Custom Events to your ItemDetails iView: You can add such a Custom-event in the DesignTime within the Content Administartion of the Portal. The most important information are the following:
- Target => remember this value, you need it in the Web Dynpro application
- Namespace => remember this value, you need it in the Web Dynpro application
- Parameters => use at least [Save Success] and set a Parameter name

image"

After configurating these settings you must add into your Web Dynpro source code only two important things:

1. in the wdDoInit() Method: Subscribe to the Event:
WDPortalEventing.subscribe("urn:com.sap.test.save","savetest",wdThis.wdGetCatchEventAction());

Parameter 1 is the Namespace defined with the Item Details. Parameter 2 is Event Name and the third Parameter is the method which is called then the event is thrown.

2. A new event handler including the corresponding method:
wdGetCatchEventAction()
Thid method will be called as soon as the event is thrown on the page. You can add code like:
  public void onActionCatchEvent(com.sap.tc.webdynpro.progmodel.api.IWDCustomEvent wdEvent, java.lang.String dataObject )
  {
    //@@begin onActionCatchEvent(ServerEvent)
 String [] allFields = new String [1];

 msgMgr.reportWarning("dataObject: "+dataObject);

// Now you can split or detect the String. Within the String you will have the defined
// Parameter names and the corresponding values. Something like:
// saveall=true&recordId=1
 
    //@@end
  }

Regarding the MDM-GP Integration you can do the following:
By default all buttons which are calling a complete-method are disables. After catching the "Save success" event you can enable the Buttons for the process control (GP-Complete-Method), because the user has clicked (at east once) the SAVE button within the Item Details iView.

 You can see a screencam of the result here:

http://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/30e9149b-daae-2a10-ca9f-eeb0f4a43bcf

 

Steffen

In this blog I will document the performance improvements which we made at a MDM-project with a very large repository. Maybe you have also problems with your repository (MDM 5.5<SP5) regarding: - Loading the repository, - Adding/ Deleting fields via the SAP MDM Console, - Modifying record values via the Portal Busienss Package.  If you have these problems, switching to MDM5.5 SP5 can solve these difficulties. Let me describe our system landscape:We used MDM5.5 SP4 with a very large repository (~200 tables, many taxonomy records). We had bad response times within the Portal UI as well as it took very long to add or delete fields within the SAP Console. The mayor problem was that it took around 3 hours to load the repository after it was stopped. This handicaped the project team very much, because during the loading of the repository nobody was able to work with it. Solution descriptionTo enhance the performance we implemented the following tasks:1. Upgrade to MDM 5.5 SP5: We decided to upgrade to MDM5.5 SP5. Together with the upgrade we made the following 2. Landscape changes:- we devided the Portal and the MDM Server into two machines, and - we installed a new database on the local MDM-server.Further we checked the repository modelling and changed the follwoing technical settings in the repsoitory in order to enhance the performance: 3. Keywords: Set the property "Keyword" for all repository fields to "None" if there is no need to set it to "Normal". 4. Sort Index Exists: Change "Sort Index Exists" for all fields from "Normal" to "None", excepts the fields which should be sorted via the result set in the Data Manager (e.g.: Name, Description, ID). The sort index enables the sorting of the data in the named column in the Data Manager 5. Display fields: Reduce the number of display fields within the repository. Reduce the number in all tables! (also in lookup, qualified tables as well as the main table) 6. Delete unused tables and  fields: Check your repository if there are unused tables or not used fields. You should delete these fields and tables.  As a summary these are the reasons for the huge performance improvements:  - Upgarde to MDM 5.5 SP5,  - extra hardware (previously MDM was installed with Portal on one Box), - newly installed Database SW => repository was newly unarchived => no fragments - Technical Changes in the repository.   I hope that these experience will help you in your project if you have the described performance problems. Steffen Ulmer
You want to access the MDM ItemDetails iView directly without the MDM Search capabilities?
Or do you want to write your own MDM-WebDynpro iView and want to use the existing ItemDetails iView within this WebDynpro?

If so you should read this weblog.
The referred article will show you how to integrate the SAP MDM 5.5 Business Package- iView functionality into a SAP WebDynpro. With SAP MDM 5.5 SP4 there is a very good possibility to position the ItemDetails IView on a WebDynpro View via the iFrames-UI element. The result is that you have the capacity to use existing and configurable iView within your self-programmed WebDynpro application. This procedure will save you a lot of costs and time during the implementation phase. The integration of the HTMLB-based IView and the WebDynpro based outer-View is transparent and the user will feel like it is only one application.

Please open this article: Integrating MDM Item-Details-iView into a WebDynpro Application

You want to extend the SAP Master Data Management (MDM) 5.5 Business Package-iView functionality? You want to develop your own Web Dynpro for Java applications and they should interact with your existing MDM-UI within the Portal? If so you should read this weblog. The referred article will show you how to extend the SAP Master Data Management (MDM) 5.5 Business Package-iView functionality by using SAP Web Dynpro. With SAP MDM 5.5 SP4 there is a very good possibility to use Enterprise Portal Client Framework to throw certain MDM-repository information to a Web Dynpro for Java application which is positioned on the same Portal page. The article includes a detailed step by step description as well as the source code. Please open this article:

 Extending MDM 5.5 Business Package Functionality with Web Dynpro Using EPCF

 

Download Source Code: ZIP FILE

Filter Blog

By date:
By tag: