Showing posts with label Web Service. Show all posts
Showing posts with label Web Service. Show all posts

Sunday, October 13, 2019

Beware: Open Project Online resource in 'Edit Resource' blocks the automated modification of that item

The Project Online ResourcePool can be automated managed, e.g. to update a (Custom)Field of an EnterpriseResource. Something that I became aware of is that the automated modification is blocked in case the resource is opened in 'Edit Resource' of the Project Online Web Application (PWA). Apparent PWA applies defensive locking, and already immediate locks the resource through checkout when opening it in the form, and not delayed / just-in-time at the moment of possible save. The automation is blocked both when doing the modification via ProjectServer REST service, as when via the ProjectServer.Client CSOM library.
Open a PO resource in the ‘Edit Form’
(<pwa-url>/_layouts/15/PWA/Admin/AddModifyUser.aspx )
Automation code-snippet to modify EnterpriseResource via REST service
 $body = "{ 'Name':'Test Name', 'Group':'Test Group' }";
 Patch-ReSTRequest $pwaUrl "ProjectServer/EnterpriseResources('$resourceId')" $body
Combination of 'Edit form' + automation execution results in error
{
  "error":
    {
       "code":"10101, Microsoft.ProjectServer.PJClientCallableException",
       "message":
           {
              "lang":"en-US",
              "value":"PJClientCallableException: CICOAlreadyCheckedOutToYou"
           }
    }
}

Sunday, October 24, 2010

Duet Enterprise Overview presentation at SAP TechEd 2010

Virtual SAP TechEd 2010 presents the recorded 1-hour session CD109 - Duet Enterprise Overview: Consume and Extend SAP Applications Through Microsoft SharePoint and Office. The presenters were from SAP AG, Microsoft Corp and CapGemini. In this session the business goals of Duet Enterprise are outlined, at high-level the advantages it brings for companies doing or considering SAP / Microsoft interoperability, discussion of the architecture and runtime flow, and the development toolset + process. Accompanied by (life and pre-recorded) demo's.
Some of the take-aways of this presentation:
  • Duet [Enterprise] Service Consumption Layer is the first version of SAP's project "Gateway", embedded in Duet. The aim of project "Gateway" is provide simplified access to SAP:
    SCL, internally referred to as 'Gateway Layer'

    Framework built as an NetWeaver ABAP add-on, enabling simplified access to SAP software from any device or environment using standard market protocols

  • Primarily, Duet Enterprise is working as an Add-On on both sides; NetWeaver stack and SharePoint stack
  • [SAP service-enabling] Business entities from SAP available as Web Services; [SAP consumption] Discover SAP information as External Content Types in BCS, and connect to SharePoint/Office.
  • The ready to use Duet Enterprise capabilities, are also building blocks that you can use and even build upon in your custom solutions
  • SharePoint Duet Enterprise front-end development distincts 3 Solution Types:
    1. Simple - by end-user; within the SharePoint GUI
    2. Intermediate - by Power User; via SharePoint designer
    3. Advanced - by a .NET developer; via Visual Studio

  • Study on the effort it takes to develop SAP/SharePoint integration learns that without Duet Enterprise it costs 6 times
  • Create solutions very fast to address business (needs) very quickly. Not create very big applications, but small ones and do it fast
  • SAP services are fairly complicated, with nested and complex structures. SAP WSDL's kinda have their own definition, slightly away from the WS*-standards
  • Duet Enterprise can either map SharePoint users to SAP users through the Duet Enterprise User Mapping component, or connect to a LDAP that this mapping.
See also slides of the presenation

Thursday, July 29, 2010

Standards-Based Interoperability between SAP NetWeaver 7.0 and Microsoft .NET 3.5/4.0

Microsoft opened a new interoperability area within MSDN on Web Service Interoperability between the major web services vendors. Amongst these naturally also SAP. The site contains an extensive (75 pages) Demonstration Scenario of the Collaboration Technology Support Center addressing information about how to set up standards-based Web services communication between Microsoft .NET Framework applications and SAP Application Server ABAP-based consumers and providers.

Saturday, November 28, 2009

An in-between project: WPF screensaver for communicating our company values + news

A few weeks ago one of the TopForce founders asked me for an idea for communicating company messages to the TopForce employees. He was considering the usage of a screensaver for this. He had several requirements:
  1. It must be easily possible for the TopForce management to push new messages on-the-fly to our employees
  2. The displayed screensaver is attractive and draws on the attention of both the TopForce employee as coincidental passers-by
  3. The screensaver has a professional layout and styling
Being a SharePoint guy and fan, I immediately thought of applying our SharePoint based intranet for the management and distribution of the screensaver messages. Management can be done via a dashboard page containing multiple ListViews for the different categories of messages. Distribution can be done via SharePoint Lists.asmx webservice. So that's for addressing requirement 1. For the second requirement I considered WPF, you can do all kind of screen graphics and (dynamic) behaviour with that - from very simple to most advanced. For the last requirement; well I'm a developer, not a designer. Different roles, and especially different talents. I directly admit that I do not posses enough designer talent. But luckily I've several colleagues that are especially strong on the User eXperience area. Frodo Jansen did a very good job on desinging the screen-layout, addressing the third requirement.
The sketch of the software architecture for this mini application looks like this:
An impression of the end-result:

Tuesday, September 29, 2009

Workaround for 401 problem with POST and NTLM authentication

Context: Invoke SharePoint Lists.asmx webservice from a WPF client to retrieve listitems. The SharePoint site is hosted by an external provider, and secured via NTLM authentication. To invoke the Lists webservice a WCF proxy is generated. The client WCF binding is set to basicHttpBinding, with security = NTLM.
Issue: When invoking the service from the WPF client, a 401 is returned. Via Fiddler inspected the http-request. The NTLM authentication protocol handling in 3-steps is visible, but despite that no succesfull authentication. A simple GET via WebClient to the Lists.asmx page, with same NTLM credentials applied does succeed.
And strangely, in case this is done before sending the POST webrequest, the latter does also succeed. That is..., when Fiddler is active. Without Fiddler monitoring the http transfer, the HTTP-GET request still succeeds, however the WCF proxy call then again fails.
Although I love Fiddler, it's no option to oblige application end-users to run it just to allow the WCF proxy call to succeed...
Instead I tried to implement the SOAP behaviour explicity self via WebClient, and abandon the WCF framework in this particular case. And this works!

N.B. The probable cause of the POST malfunctioning with HttpWebRequest / WCF proxy and NTLM authentication is described in the post 401 Error on HttpWebRequest with NTLM Authentication.

Friday, August 7, 2009

Tip - WCF LOB Adapter SDKs 'Add Adapter Service Reference' not present in VS2008

The WCF Lines of Business Adapter SDK contains development and runtime functionality to service-enable external applications. I downloaded and installed the SDK, but to my unpleasant surprise no change was visuable within the VS 2008 IDE. In particular, the promised 'WCF Adapter Service' project template is missing, as well as the 'Add Adapter Service Reference' menu option. As first repair I downloaded and installed the BizTalk Adapter Pack (which I'm going to need anyhow, since I want to service-enable SAP business functionality). However, still no change in VS2008...
After some fruitless searching on the web (bing-ing and googling...), I posted a question on the related forum. And thankfully with a quick and useful answer. When I installed the WCF LOB Adapter SDK I choose without really considering it the 'Typical' installation option. It appears however that the SDK authors do not consider the installation of the SDK 'Tools' to be part of the typical installation. A bit strange to my opinion for a development SDK, but instead handy for deployment of only the runtime parts of the SDK on an OTAP server. After augmenting the SDK installation I now do have both the 'WCF Adapter Service' project template as the 'Add Adapter Service Reference' menu option available.

Tuesday, July 14, 2009

Tip - howto retrieve non-required Lookup column via List webservice

When running my deployed Silverlight application on a remote test server, I ran into a runtime problem. Debugging (since I deployed to a remote test server without Visual Studio support, I needed to resort using 'System.Windows.Browser.HtmlPage.Window.Alert'...), I discovered that the cause was a missing column in the returned XElement result of the GetListItemsAsync List webservice call. The missing column is a lookup to information in another list, and non-required. And moreover, this column is not included in the default view (it is in my local development environment, therefore I did not experience the problem earlier). So there's the explanation why it is not included. The solution is to explicitly specify via the ViewFields parameter to include this field in the result. However, even then I did not get the column included (?) The cause of this is that not all items in the list have a value for this non-required field. And for that you have to cope by specifying that the viewfield may be nullable: