Sunday, May 16, 2010

ShareTalk Integration – WSS Adapter Web Service Request format is unrecognized

When you install the SharePoint Adapter Web Service for BizTalk, and browse to the BTSharePointAdapterWS.asmx Web Service, you will be prompted with an error that makes it seem like your installation of this Web Service was not successful:

Server Error in '/BTSharePointAdapterWS' Application.

Request format is unrecognized.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.InvalidOperationException: Request format is unrecognized

In fact your Web Service may be functioning correctly as mine was.  The issue is that the Service metadata is disabled by default.  To enable the Service metadata, you will need to update the web.config of the BTSharePointAdapterWS Application

image

 

Comment out, or remove the <remove name="Documentation"/> line in order to enable displaying the Service metadata.

image

 

Metadata will now be displayed correctly.

image

Friday, May 14, 2010

Microsoft Canadian Leadership Summit Day #2

On the 2nd and final day of the Canadian Leadership Summit, I  focused on Dynamics xRM and Windows XP to Windows 7 Migration. 

xRM/CRM

In the context of  “xRM”, the ‘x’ stands for “anything” meaning if you have a requirements to track relationships then Dynamics may be a good fit.

Relationships with many different entities

  • Employees
  • Customers
  • Vendors

Dynamics CRM Global Customer list

  • ING
  • Nortel
  • LG
  • Volvo
  • Sara Lee
  • Minnesota Twins
  • Vancouver Canucks
  • City of London
  • Pfizer
  • Barclays
  • Tourism Whistler

Dynamics xRM Deployments

  • Over 22 000 customers
  • 1.1 million users
  • 4000 worldwide partners
  • 50 worldwide hosting partners
  • Dynamics CRM runs on top of the xRM platform and is available in the Cloud (hosted by Microsoft) or On Premise
  • Experience is delivered through PC, Browser or Phone

 

Rapid Deployment

The session contained a video that included a complete Sports team management application built in less than 24 hours on the xRM platform by 4 Microsoft employees during the World Partner Conference in the summer of July 2009.  Surveys were posted on Twitter asking for ideas and requirements as to what people would like to see built.  The deliverable included a semi-detailed design and fully functional system within the allotted time.  The team then presented the solution to the attendees of the conference.  I have found a LiveMeeting of this event here.  Use  Meeting ID 8B74CC to view the content.

 

CRM Key Capabilities

  • Point and Click Application Development and Deployment
  • Out of the box user experiences (Outlook, Office, Mobile, Offline)
  • Leverages Microsoft Application Platform Technologies
    • SQL
    • Windows Server
    • SRS/SAS
    • WF
    • .Net

CRM 5 – The Road Ahead

Here are some of the themes that Microsoft is focusing for the next version of the software:

Simplicity

  • Insightful
  • Role-Tailored
  • Collaborative

Innovation

  • Social
  • Connected
  • Extensible

Value

  • Cloud and On-Premise
  • Solution Partners
  • Smooth Upgrade

SharePoint and XRM are Complementary

SharePoint and XRM have overlapping capabilities.  SharePoint has evolved beyond just storing Word documents.  It has become a platform that is capable of performing some tasks that a CRM is capable of .  On the flipside CRM, has some lightweight document management features.  The end result is that the two platforms work better, together.  If you owned both sets of technology, it makes sense to leverage both solutions to build the total package.

  • SharePoint better with unstructured data
  • xRM is better for structured Data

 

The next portion of the session involved Christian Gosselin, the CRM Practice Leader for CGI in Quebec, Canada.  CGI is a very experienced CRM implementer with over 50 Certified professionals on platform.

Christian, discussed some of the Business and IT Challenges that make CRM a viable option:

Typical Organizational Challenges

  • Rapid Innovation is a key mandate
  • Waiting for IT to deliver requested Applications
  • Business builds shadow applications(MS Access)  to survive
  • Poor productivity due to many different user interfaces and tools
  • Lack of intelligence/insight

IT Challenges

  • Limited budget and resources
  • Trying to support all requests coming from business
  • Option of  building or buying (both have big negatives in cost, time and scope)
  • Supporting hundreds of legacy applications
  • Difficult to deliver quick wins

xRM as a platform

xRM was built from a platform perspective and then added the application as opposed to some other vendors building the CRM application and then duct taping the platform around it in order to make it extensible.

xRM is a complete business application platform:

  • Data and Metadata Services
  • User experience services
  • Access and Security Services
    • Active Directory
  • Analytical Services
  • Extensibility Services
  • Integration Services
    • User Interface – Mash-ups
    • Web Services
    • Plug-ins
    • Data Integration
  • Architecture Services
    • Deploy once
    • Currency Conversion
    • Multi-language support
  • Platform Management Services
    • System Centre Operations Manage
  • Process Automation and Orchestration Services
    • WF
    • BizTalk
  • Point and Click Customization Services

Related Microsoft Technologies

  • Outlook
  • Office
  • SQL Server
  • .Net

One Platform, many Applications

Organizations use xRM for a variety of applications including:

    • Project Management
    • Recruitment Management
      • Professional Sports
    • Property Management
    • Employee Management
    • Asset Management
    • Supplier Management
    • Program Management
    • Customer Management

Benefits of building on Dynamics xRM

  • Drive Efficient and Effective IT
  • Develop the right business applications
  • Deliver Rapid Innovation and Agility
    • Don’t have to rebuild the plumbing
  • Demonstrate  Business Success
    • Let IT become the enabler and not the bottleneck

Real Life Projects

Christian then described some of the projects that his organization has been involved in:

  • Financial Services Client
    • Centralized and shared application accessible across Canada in English and French
    • Stronger, more profitable customer relationships
    • More Competitive advisor recruitment
    • Better regulatory compliance
    • New business insights
  • Government Client
    • Needed to communicate with other Government entities
    • Not one line of code was written
      • Customizations were accomplished through configuration
    • Better collaboration between Ministry and other agencies
    • Higher quality of information
    • Reduced manual data entry
    • Simplified communications
      • Ability to follow up on communications is more rapid
    • Increased business agility
  • Pharmaceutical Client
    • Tracking of drug/medical agents
    • Implementation was 9 weeks
    • More time spent on business requirements than on time to implement
    • Centralized application accessible from all of the the world in multiple languages
    • Minimal end user training
    • Ability to easily generate custom reports with Excel
    • Ability to quickly create new LOB applications

Dynamics CRM as a business application platform generally saves 50-70% of the development time as opposed to custom development

Windows XP to Windows 7 – A roadmap for success

The next area that I focused on was migrating from Windows XP to Windows 7.  A key component to a Windows 7 migration is the Windows Deployment kit wizard.  We saw a 7 year old upgrade his Windows XP system, with data, to Windows 7 using this wizard.  I should note that his father works for Microsoft in the Windows division so I suspect he had a little help.

When configuring the Windows Deployment kit, a wizard will walk you through the various options including:

  • Choose Migration type
    • Refresh this computer
      • save information and install new OS
    • Upgrade this computer
  • Specify computer name
  • Join domain or workgroup
  • Specify where to save your data and settings
    • Can specify network location
      • Local Disk
      • Network
  • Specify language and locals
  • Time Zone
  • Specify BitLocker configuration
  • Branding

 Advice

  • Refresh existing hardware – don’t have to wait for hardware replacement
  • Make the process fast and non-disruptive
  • Test wisely, but don’t expect things to break as often as before
  • That means fewer helpdesk calls

Microsoft’s Environment overview

  • Microsoft has offices in 105 countries
  • 89 000 employees globally
  • 70 000 venders globally
  • 220 windows deployment servers and product servers globally on a virtual server infrastructure
  • User is supported by 5 call centers globally

How did it go?

  • No new hardware purchases beyond 3 year refresh cycle
  • Very few compatibility issues  - mostly with Internet Explorer 8
  • Single image for each platform(x64 and x86) for entire globe 
  • Helpdesk staff was not increased
  • Deployment numbers
    • Beta > 60 K in 3 months
    • RC >90K in 3 months
    • RTM > 100k in 3 months

How was it possible?

  • User excitement
    • easier to achieve these days because of user satisfaction
  • Executive sponsorship and local goals
  • Vastly improved toolset
    • Task sequence automation
    • Hard-link data migration
    • Multi-cast and multi-stream deployment model

Early Adopters of Windows 7

  • T-Mobile
  • Dell
  • EDS
  • Avanade
  • Halliburton
  • Sheraton
  • Del Monte
  • StatollHydro
  • WiPro
  • Samsung
  • BMW
  • City of Miami

Recommended Deployment Tools

  • Microsoft Deployment Toolkit(MDT) Lite Touch and/or
  • System Center Configuration Manager (SCCM) 2007 Zero Touch
  • Automates what would be manual processes

Thursday, May 13, 2010

Microsoft Canadian Leadership Summit Day #1

I recently had an opportunity to attend the Microsoft Canadian Leadership Summit in Redmond and thought I would share some of my findings. The Leadership Summit allows Microsoft Canada to invite key customers and partners to discuss technology trends that are relevant to the Canadian business climate.  Below is a recap of some ad hoc notes that I made through-out the presentations.

 

Why use Microsoft products?

    • Standardization allows you to reduce costs
    • Flexibility is required to change directions as the economy demands it
    • Microsoft technologies allow you to manage costs and have agility
    • Microsoft provides building blocks that allows you to fill the gaps between legacy applications, 3rd party and core Microsoft offerings no matter whether they are on-premise or in the cloud.

Pressures continue to Intensify

    • New generation of workers
    • Security and Compliance continues to be a challenge as more and more integration occurs
    • Mobile and Distributed Workforces are increasing in numbers
    • Innovate without additional resources

Consumerization of IT

We use to go to work to have a more advanced IT Experience

    • Fast network download speeds
    • Stable email environments

Now people at home have more IT capabilities at home than in the office

    • Video conferencing
    • IM
    • Facebook
    • Wireless Access points

Customers can use Microsoft products to provide a balance between improved collaboration while implementing security and management of those services.  Some examples of these technologies include the Social networking features in SharePoint 2010 and Office Communication Server (OCS).

The Cloud

  • Decision to move to the cloud should be a business decision and not a technology decision
  • Need to trust in enterprise-class services that Microsoft provides
  • Delivering consistent connected experience across devices (PC, Mobile phone, Laptop, Consumer devices)
  • Microsoft has had success with a lot of large “house hold” companies moving their assets to the Azure cloud.  Announcements will be made shortly
  • Understanding Canadian Federal and Provincial privacy laws continue to create challenges

Low Cost Computing

  • More companies are able to leverage low cost platforms for mission critical applications.  Windows Server is an enterprise ready OS that is much more affordable than other enterprise offerings.  Migrating your traditional AIX/Oracle environments is feasible , and achievable , on the Windows Platform
  • Technology exists to maximize the efficiency of your IT infrastructure
  • Take advantage of new ways to acquire and deliver technology

 

Microsoft's Commitment to Customers

  • Over 1 Billion active Windows Users
  • 500 Million Office users
  • $9.5 Billion invested in R&D
  • Long Term, tenacious and Partner-Centric

Business climates are changing faster than they have before

  • Every minute on YouTube, 24 hours of video is uploaded by users
  • Starbucks – Office Online
    • Growth through stores
    • More cross selling and up selling
    • needed to extend technology into the store level
    • Microsoft Online Services - Email and SharePoint Team sites available to 19000 employees in-store to allow employees to collaborate on  how to grow the company$

Deep investments in infrastructure

  • $2.3 Billion invested in cloud infrastructure
  • Geo-replicated data to multiple data centres
  • public and private cloud flexibility
  • 30 000 engineers working on cloud services

Microsoft’s Commitment to services excellence

  • Financially backed uptime guarantees
  • SAS 70 and ISO 27001 compliant
  • carbon footprint innovation
  • Rapid innovation model

 

Office 2010 launch

Some key features:

  • Ignore conversation – will remove current user from all future Distribution Lists emails and place related emails into the deleted folder
  • Pictures of email recipient, from “My Site” show up in the bottom of compose email message
    • click on the picture and you see additional context from Facebook, LinkedIn and SharePoint
  • SharePoint 2010 Search –
    • refined search and meta data
      • filter by author, date and other meta data
    • Specify content in links i.e. PowerPoint
    • Preview slides before opening document
    • People Search
  • PowerPoint over the web
    • high fidelity without the need of Live Meeting
  • SharePoint - My Site
    • status updates, similar to Facebook
    • tagging competencies allows you to easily search and identify an expert in the related competency
    • Post on “Note board’ – much like Facebook’s “wall”
    • Enriched Org chart including pictures and metadata
      • surfaced using Silver Light
    • Improved Blogging capabilities
    • Tags and Notes
      • tag pretty much anything in SharePoint – blogs, documents which create a Tag Cloud
      • follow tags via newsfeed
    • Offline capabilities – use  SharePoint workspace
  • SharePoint 2010 wide scale adoption – early adopters include:
    • Global Crossing
    • Sony
    • Associated Press
    • Six Flags
    • Telus
    • Constellation Energy
    • Energizer
  • 8.6 Million Beta Downloads
  • 80 % Beta users encouraged others to download
  • 450 Customers in early adoption program
  • Edmonton Oilers (Professional Hockey) use SharePoint to collaborate on potentials players by aligning video with meta data and statistics 
    • Player Dashboard
    • Current prospects
    • Player video page
  • Oiler organization feels that SharePoint 2010 is very intuitive and straight forward to use
    • leverage messaging and collaboration features
  • 1000 Microsoft Partners are developing SharePoint 2010 solutions
  • 20 000 Microsoft Partners partners trained
  • 500 000 developers are using SharePoint

Microsoft Online Services

Why Customers are embracing the cloud:

    • Reduce CAPEX & OPEX
    • Predictable & Pay per use subscriptions
    • Focus on Market differentiation
    • Energy Efficiency
    • Latest versions with no server upgrades
    • Choice, Flexibility and Resource Agility
    • Merger, Acquisition and Divestitures
    • Up and Running quickly

Interesting quote from a Gartner reference":

“By 2012, 20% of businesses will own no IT Assets”.  Quite frankly I have a hard time believing this statement.

 

Microsoft Azure data canters include: Chicago, San Antonio, Northern Virgina, Dublin, Amsterdam, Singapore

No plans for Canada to have a data centre

  • Concerns about privacy and laws due to provincial jurisdiction

 

Customers moving to cloud

  • McDonalds
  • Rexel
  • Staples
  • Eddie Bauer
  • Phillips
  • GlaxoSmithKline
  • Blockbuster

Microsoft Online Services

  • 40 million Online paid seats
  • more than 5oo government agencies
  • Over 50% of the fortune 500
  • 9000 business customers

Sunday, April 18, 2010

BizTalk Adapter Pack 2.0 – Part 4 Sending XML IDocs to SAP

When I started this series, I was more focused on the challenges that are involved with receiving XML IDocs and the schema versions that are  tightly coupled to the version of SAP that you generated them on.  In Post 1 we discussed how the SAP Adapter will use the DOCREL version that is provided by SAP and line this up with your schema forcing you to be in sync with SAP Upgrades.  I wanted to better understand the implications on the Send side so you will find some of my notes below. The story is a little better on the Send side when sending XML IDocs.

 

  • When generating your XML IDoc schemas ensure that the RecieveIdoc Format = Typed.

image

  • Since BizTalk will be sending IDocs to SAP, you want to select “Client (Outbound operations)” and ensure that your schema has a name of “Send”.

image

  • You still want to be aware of the version of SAP that you will be connecting to but it is not as important as when you are choosing to Receive an XML IDoc.  You are best off asking your BASIS admin what version you are on.

image

  • My initial test scenario was generating a ZCONF32 – 700 version of my IDoc.  The version of SAP that I am connecting to is 700 so everything should work correctly.
  • As expected when I wired up my Receive Port to my Send Port, I am able to submit an IDoc to SAP successfully.  Something that I was interested in knowing was the namespace that was included in the context properties.

image

Something also to note is that when you import the Binding file, that was generated when you created your IDoc Schemas,  is the SOAP Action header configured in your send port.  You will notice that the Action includes the namespace for the Schema that was generated.

<BtsActionMapping xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Operation Name="Send" Action="http://Microsoft.LobServices.Sap/2007/03/Idoc/3/CONF32/ZCONF32/700/Send" />
</BtsActionMapping>

  • My next scenario included downloading schemas for version 710 of the IDoc(knowing that I am connecting to an SAP version that is set to version 700).  I updated my map to include this version of the schema. All of the “connection lines” in the mapper updated successfully which makes me think that there are no structural differences between these two versions – at least not with the data elements that I was trying to map. I redeployed the application and left the existing send port in tact.  I was prompted with a warning/error in the event viewer:

Event Type:    Warning
Event Source:    BizTalk Server 2009
Event Category:    (1)
Event ID:    5743
Date:        4/18/2010
Time:        8:50:45 AM
User:        N/A
Computer:    BizTalkServer
Description:
The adapter failed to transmit message going to send port "SendSAPIDoc" with URL "sap://CLIENT=XXX;LANG=EN;@a/SAPSERVER/XX?RfcSdkTrace=False&AbapDebug=False". It will be retransmitted after the retry interval specified for this Send Port. Details:"System.Xml.XmlException: Start element 'Send' from namespace 'http://Microsoft.LobServices.Sap/2007/03/Idoc/3/CONF32/ZCONF32/700/Send' expected. Found element 'ns0:Send' from namespace 'http://Microsoft.LobServices.Sap/2007/03/Idoc/3/CONF32/ZCONF32/710/Send'.

Server stack trace:
   at System.ServiceModel.AsyncResult.End[TAsyncResult](IAsyncResult result)
   at System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.End(SendAsyncResult result)
   at System.ServiceModel.Channels.ServiceChannel.EndCall(String action, Object[] outs, IAsyncResult result)
   at System.ServiceModel.Channels.ServiceChannel.EndRequest(IAsyncResult result)

Exception rethrown at [0]:
   at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
   at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
   at System.ServiceModel.Channels.IRequestChannel.EndRequest(IAsyncResult result)
   at Microsoft.BizTalk.Adapter.Wcf.Runtime.WcfClient`2.RequestCallback(IAsyncResult result)".

For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.

  • This error leads me to believe that the “magic” when sending XML IDocs is in the SOAP Action Header in the Send Port.  Upon updating the SOAP Action Header to reference the 710 version of the IDoc, I had success.

<BtsActionMapping xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Operation Name="Send" Action="http://Microsoft.LobServices.Sap/2007/03/Idoc/3/CONF32/ZCONF32/710/Send" />
</BtsActionMapping>

 

  • I checked the WE02 SAP Transaction and found that my IDoc was processed successfully as indicated by the green light.

image

 

Conclusion

What I am able to conclude from this exercise is that you are not bound by the version of DOCREL like you are when Receiving IDocs but rather by the structure of the IDoc itself.  I am pretty confident that you can update your SAP version without having to regenerate your schemas as long as the structure of the IDoc itself does not change.  This puts you in a similar risk category as using flat file schemas which I will discuss in the next post of this series.  Something that became evident is that the SOAP action header must match the version of the schema that you have generated.

Sunday, April 11, 2010

BizTalk Adapter Pack 2.0 – Part 3 Receiving multiple Flat File IDocs using SAP Adapter

In Part 2 of this series we discussed how you can receive IDocs from SAP in flat file format in order to avoid tight coupling with the version of SAP you are running as discussed in Post 1.

As I alluded to in the end of the Part 2 post, there is an issue when you include more than 1 IDoc schema in a Receive Pipeline that will be use the same Program ID and Receive location.

The behavior that I experienced when working through this scenario is the first message in my pipeline would be processed successfully but the second type(Vacations) would not.

 

 image

 

When I tried to process my 2nd type of IDoc (Employee Vacations) I would get the following error:

 

Event Type:    Error
Event Source:    BizTalk Server 2009
Event Category:    (1)
Event ID:    5719
Date:        4/11/2010
Time:        10:10:49 AM
User:        N/A
Computer:    *BizTalk Server*

Description:
There was a failure executing the receive pipeline: "SAPVersions.ReceiveSAPIDocs, SAPVersions, Version=1.0.0.0, Culture=neutral, PublicKeyToken=147585b889447deb" Source: "Flat file disassembler" Receive Port: "ReceiveIDocsFromSAP" URI: "sap://CLIENT=XX;LANG=EN;@a/SAPSERVER/XX?ListenerGwServ=sapgwXX&ListenerGwHost=SAPSERVERci&ListenerProgramId=*ProgramID*&RfcSdkTrace=False&AbapDebug=False" Reason: Unexpected data found while looking for:
'Z2HR_WS_SEG000'
The current definition being parsed is idocData. The stream offset where the error occured is 520. The line number where the error occurred is 2. The column where the error occured is 0.

For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.

 

In the rest of the post I will discuss how you can fix this problem manually and then discuss the Hot Fix from Microsoft that addresses this situation.  I recommend proceeding with the Hot Fix route as it is a more sustainable solution.  The manual steps include modifying a schema that was generated by the Consume Adapter Service Wizard.  The risk is you can manually modify one of these schemas only to have a colleague regenerate the schema and overwrite your manual change.  If you do proceed with the Hot Fix route you will want to ensure any other developers that will be generating IDoc schemas are also using this Hot Fix.  I also want to highlight that this Hot Fix should be applied to developer’s workstations as this fix addresses a design time issue.

 

Fixing issue manually

  • Open up your schema that contains the “meat” of your IDoc information in an XML Editor view.  Whenever you generate  SAP IDoc schemas you are bound to have multiple XSD schemas created.  You can expect 1 IDoc that includes the various complex types, another that acts as the “Request” container IDoc, a Response xsd and the “meat” xsd which will include most of the “core” details of the schema.
  • Scroll down until you find a section that includes tag_name=”EDI_DC40” tag_offset="0" and replace it with tag_name="ZHR_VAC" tag_offset="39" where “ZHR_WS” is the name of your IDoc type.

image

 

image

 

  • What you will find as you open your schemas is that all of them will have this tag_name="EDI_DC40" tag_offset="0" string included in the IDoc which prevents BizTalk from distinguishing one IDoc from another.
  • Once you have modified all IDocs in this fashion, redeploy and you should find that both(in my case) IDocs were processed successfully.

image

Fixing issue with HotFix

  • In KB977528 Microsoft describes the issue as “This problem occurs because the first Flat file disassembler pipeline component in the custom pipeline tries to disassemble all the IDOCs that are received. However, the IDOCs should be processed by different Flat file disassembler components that have different schemas”.

  • When using the HotFix, you download schemas the same way as you previously did

image

  • Note when you open up the schema, you will now notice that the same change that we applied manually has now been incorporated into the schema definition automatically.

image

  • If you have changed the name of you XSD files, make sure you update your receive pipeline, deploy and restart your host instance(s).  You should now be able to receive both types of flat file IDocs without issue

image

 

Note:

My developer workstation is a 64 bit machine so when I navigated to the Hot Fix Web site it detected that my system was a 64 bit system and provided me with a 64 bit patch.  The problem is that Visual Studio runs in 32 bit mode and since this fix is a design time issue my issue was not resolved until I downloaded the 32 bit version of this KB.  I logged onto a 32 bit machine and navigate to the same site in order to get the 32 bit fix.

 

image

 

Thus far we have been  focusing on receiving IDocs.  A reader has asked if I can demonstrate how to sent a flat file schema to SAP using the BizTalk Adapter Pack so that will be the next post in this series.

Sunday, March 14, 2010

BizTalk Adapter Pack – SAP Binding ReceiveTimeout

 

One of the most important configurations to make inside a SAP Receive location is the “receiveTimeout” property.  The documentation describes this property as:

“Specifies the WCF message receive timeout. Essentially, this means the maximum amount of time the adapter waits for an inbound message. The default is 10 minutes.

Cc185372.Important(en-US,BTS.10).gifImportant

For inbound operations such as receiving IDOCs, we recommend setting the timeout to the maximum possible value, which is 24.20:31:23.6470000 (24 days). When using the adapter with BizTalk Server, setting the timeout to a large value does not impact the functionality of the adapter.”

The default value(10 minutes), is too short of a period for BizTalk to stop listening for messages from SAP.  For instance, if your organization has a weekly back up scheduled for SAP, it will likely take longer than 10 minutes.  The documentation indicates that there is no impact to using a large number so I am not sure why the default is only 10 minutes.

 

image

 

Just to give a practical example of what you can expect when SAP goes down (either planned or unplanned) from a BizTalk perspective.

SAP going down

Event Type:        Warning

Event Source:    BizTalk Server 2009

Event Category:                (1)

Event ID:              5740

Date:                     3/13/2XXX

Time:                     10:01:31 PM

User:                     N/A

Computer:          SERVER

Description:

The adapter "WCF-Custom" raised an error message. Details "The WCF service host at address sap://CLIENT=XXX;LANG=EN;@a/SAPServer/00?ListenerGwServ=SAPGateWay00&ListenerGwHost=SAPServer&ListenerProgramId=IDOC&RfcSdkTrace=False&AbapDebug=False has faulted and as a result no more messages can be received on the corresponding receive location. To fix the issue, BizTalk Server will automatically attempt to restart the service host.".

For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.

Event Type:        Warning

Event Source:    BizTalk Server 2009

Event Category:                (1)

Event ID:              5740

Date:                     3/13/2XXX

Time:                     10:01:31 PM

User:                     N/A

Computer:          SERVER

Description:

The adapter "WCF-Custom" raised an error message. Details "Microsoft.Adapters.SAP.RFCException: Details: ErrorCode=RFC_FAILURE. AdapterErrorMessage=An exception has occurred on the listener while executing RfcWaitForRequest..

   at Microsoft.ServiceModel.Channels.Common.Design.AdapterAsyncResult.End()

   at Microsoft.ServiceModel.Channels.Common.Channels.AdapterReplyChannel.EndTryReceiveRequest(IAsyncResult result, RequestContext& requestContext)

   at Microsoft.Adapters.Internal.LayeredChannelBindingElement.LayeredInboundChannel`1.System.ServiceModel.Channels.IReplyChannel.EndTryReceiveRequest(IAsyncResult result, RequestContext& context)

   at System.ServiceModel.Dispatcher.ReplyChannelBinder.EndTryReceive(IAsyncResult result, RequestContext& requestContext)

   at System.ServiceModel.Dispatcher.ErrorHandlingReceiver.EndTryReceive(IAsyncResult result, RequestContext& requestContext)".

For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.

 

Event Type:        Warning

Event Source:    BizTalk Server 2009

Event Category:                (1)

Event ID:              5740

Date:                     3/13/2XXX

Time:                     10:01:32 PM

User:                     N/A

Computer:          SERVER

Description:

The adapter "WCF-Custom" raised an error message. Details "The faulted WCF service host at address sap://CLIENT=XXX;LANG=EN;@a/SAPServer/00?ListenerGwServ=SAPGateWay00&ListenerGwHost=SAPServer&ListenerProgramId=IDOC&RfcSdkTrace=False&AbapDebug=False could not be restarted, and as a result no messages can be received on the corresponding receive location. BizTalk Server will continue trying to start the service host until it succeeds or the receive location is disabled.

To fix the problem, you may choose to:

1. Use the error information given to fix the problem.

2. Restart the receive location.

3. Keep waiting for BizTalk to recycle the service host. Another event will notify if the service host is successfully started.

SAP coming back up

Event Type:        Information

Event Source:    BizTalk Server 2009

Event Category:                (1)

Event ID:              8112

Date:                     3/13/2XXX

Time:                     11:03:13 PM

User:                     N/A

Computer:          SERVER

Description:

The WCF service host at address sap://CLIENT=XXX;LANG=EN;@a/SAPServer/00?ListenerGwServ=SAPGateWay00&ListenerGwHost=SAPServer&ListenerProgramId=IDOC&RfcSdkTrace=False&AbapDebug=False was successfully restarted, therefore the associated receive location can now receive messages.

For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.

 

You are now able to receive messages from SAP without any intervention.  Had we not set an appropriate ReceiveTimeout, the receive location would have still be down when SAP tried to push this IDoc to our system.

image

 

You never want your middleware to be the cause of an outage so it is important to understand when your dependant servers/services have scheduled maintenance so that you can ensure that your application can sustain this downtime.  Configuring the ReceiveTimeout to an appropriate value will reduce the chance that BizTalk will be down due to someone else's maintenance window.

BizTalk Adapter Pack 2.0 – SAP Adapter IDoc Schema Versioning Part 2

In my first post, I discussed how the BizTalk Adapter pack Consume Adapter Service wizard tightly couples the IDoc schema version with the version of SAP that you used to generate the schema with.  The goal of this post is to discover how you can avoid this tight coupling and hopefully survive an SAP upgrade.  I know the organization that I work for would not be pleased with having to update all of our IDoc schemas when we do our next SAP Upgrade just because the version of SAP has been incremented.

When the BizTalk Adapter Pack came out I was pretty excited that I could throw away my Flat File schemas and pipelines.  While true, it comes at a cost.  When using the XML Receive pipeline with the new Adapter, the Adapter will use data in the SAP Control record to determine what version of the message you retrieving from SAP and will assign a namespace to your message, that contains SAP version information, before depositing it in the message box. If have not changed your SAP version since generating your IDocs you are in business.  If you have upgraded your SAP system or have generated the wrong schemas for your SAP version then you will be in a lot of pain. 

To get around this tight coupling issue, you can revert back to the old style of IDoc processing which involves flat files and pipelines.  Now there is nothing really wrong with this model, but it does require a few extra steps and is not as “clean” a solution as using the XML Receive pipeline.

I will now take you through how you generate a flat file schema that can be used to process different versions of the same IDoc.  When I say different schemas this means that the version, and therefore namespace, are different but structurally the documents are the same.  Note that I will not go through all steps required to generate an IDoc schema, only those that are important to generate a Flat File schema.  To see a more comprehensive walk through of generating an IDoc schema, please see my Webcast.

 

  • When using Consume Adapter Service wizard, ensure that “GenerateFlatFileCompatible” is set to true.

image

When you set the GenerateFlatFileCompatible property to true, you will now see the flat file specific data within the Schema specification.

image

Without setting GenerateFlatFileCompatible ,  the schema will not contain this flat file information.

image

image

  • You also want to indicate the “ReceiveIDocFormat” will be a String.  You will find out why this is important later on in this post.

image

  • Once the schemas have been imported into Visual Studio, enable “Flat File Extensions” to the “core schema”.  When using the BizTalk Adapter Pack Consume Adapter Service wizard you will generate more than 1 schema unlike the old .Net Connector version where you would always only generate 1 schema.  By “core schema” I mean the one that contains the “meat” of your schema, not one that contains the shell(all of the imported schemas) or any of the base type schemas.

image

  • You will now need to create a Receive Pipeline and add a Flat File disassembler

PipelineComponentDesigner

  • Add your “shell” schema to the document schema property

image

  • Build and Deploy your application
  • When configuring your SAP Receive location you will want to specify your Receive Pipeline as opposed to XML Receive

image

  • On the Binding tab, set the “ReceiveIdocFormat” to String

image

  • On the Messages tab, provide an XPath expression that will extract the flat file data so it can be disassembled by the Receive Pipeline.  The XPath expression that I used is:

    /*[local-name()='ReceiveIdoc']/*[local-name()='idocData']

    The adapter is essentially wrapping this flat file in XML tags so that it can make it through the adapter stack as an XML message. 

    Also ensure the “Node encoding” is set to String as the default is “XML”

image

  • Start your application and you are good to go

 

  • Up until this point, I have not modified the namespace of my schema and everything worked well as expected

image 

 

  • However, the purpose of this post is to demonstrate how we can break away from the default namespaces that are generated by the adapter.

image

  • Since I have redeployed the application, the message subscription have also been updated:

 image

  • Start your application up and it should function with this new namespace and therefore subscription.

 

  • The next test is to generate a different version of an SAP IDoc and ensure receiving a different version of the IDoc does not break our application.  If you recall from Post 1 we received an error in this situation.  From the Consume Adapter Service wizard, I am deliberately going to generate a schema that has a DOCREL  greater than my current SAP version.

image

  • My subscription is updated and is looking for a “710” IDoc where as SAP is going to generate a
    “700” IDoc

image

  • I received, processed and delivered the message downstream without issue

image

  • Even though SAP, populated the Control record with DOCREL = 700, I am able to process this message because this DOCREL is not being used to derive the target namespace like it is when you use the XML Receive pipeline.  This is really where the value of the Flat file pipeline comes in as it will use the namespace in the schema that is configured inside the pipeline instead of having the Adapter generate a namespace automatically.   This also works as the structure of the 700 IDoc has not changed in the 710 IDoc.  If the structure of the IDoc changes with the version number then you have no other option than to regenerate your schemas.

image

 Gotcha!

So everything is fine and dandy until you try to deploy another IDoc with the same Program Id/Partner Profile.  There is bug with the BizTalk Adapter Pack that prevents you from deploying multiple IDoc Flat File schemas with the same Program ID.  Look for a workaround with my next post in this series.  I should be able to turn that post around quicker than this one.