SCMS_AO_URL_READ returns Communication error when called from SAP Portal - content-management-system

We have upgraded our development SAP system from (ECC6 and SAP Portal) from SPS3 to SPS5.
Now when a user logs onto the SAP Portal and run a bespoke Java Web Dynpro screen (which in turn calls SAP standard Function Module SCMS_AO_URL_READ in order to retrieve a UWL), an exception is returned.
When the Function Module SCMS_AO_URL_READ is manually called from the SAP ECC system (by running transaction SE37 from the SAP GUI) and the same parameters are passed, no exception is returned.
Investigation has shown that the failure occurs when SAP standard Function Module RFC_PING for destination SAPGUI is called (the call sequence is SCMS_AO_URL_READ -> SCMS_DOC_URL_READ -> SCMS_URL_GENERATE -> perform location_from_client -> perform location_from_lca -> SCMS_LOCATION_GET -> SCMS_FE_CHECK_REG_SERVER -> SCMS_FE_CHECK_GUI -> RFC_PING). The exception
'Communication failure' is being returned.
This error did not occur pre-patching, or in an identical system that we have which has not been patched.
Any ideas why the parameters are not being automatically populated?
Thanks.

After further investigation we found that the issue is caused when the user has access to the Authorisation Object S_RFC_ADM.
I do not know why this is yet (especially as SAP authorisations are supposed to be accumulative and not have exclusions), but that is definitely the issue.

I don't know the details of the function modules involved, but the purpose is clear - the program wants to make sure that a "real" SAP GUI is present, and obviously that's not the case when you're in the WebDynpro world. The RFC destination SAPGUI is a "virtual" destination that always points "back" to the GUI instance of the user session executing the program. I'd recommend creating a SAPnet message and asking SAP directly.

Related

SOAP UI mock server groovy scripting

Currently i am having two SOAP projects(A and B) imported from WSDL files.
I created a mock server with one of the projects(A) and from my application i am able to call the mock server and get response.
Now i want to go further and try to invoke a request to another service situated in another project(B) when a soap operation is called in mock server project(A).The Project B is a call to another application.
Can i write groovy scripts to do this?
so whenever an operation A1 is called in project A after a time lapse a request needs to be sent from project B which might be an operation B1.
Here actually i am trying to simulate an external application using soap ui.
I understand i can do it by writing a program using java but thought i could do this in short time using soap ui.
As question i wanted to know if my thought is right of using soap ui or should i go do it through another tool or writing a java app.

Adding relying parties in ADFS using C# or Powershell

I need to add Relying parties in ADFS everytime a new client comes on. I would like to automate this by just specifying either the url to the federation metadata or a file picker for the admin to load the federation metadata file.
I have been following the instructions on this site Adding a New Relying Party Trust
However I get the following error
ADMIN0120: The client is not authorized to access the endpoint
net.tcp://localhost:1500/policy.
The client process must be run with elevated administrative privileges.
not sure what I am doing wrong. I guess the bigger question is : is this the best way to set up Relying parties and Claims using code or should I use powershell commands?
This error doesn't means you have code issue. It is something related to the privilege. Test it by right mouse click the client and "Run as administrator" to see if it goes through.
As per your link, there are three ways:
Using the AD FS 2.0 Management console
Using the Windows PowerShell command-line interface
Programmatically using the AD FS 2.0 application programming interface (API)
All three are equally valid - the only difference is how much work you have to do for each e.g. the wizard is lots of mouse clicks.
What I do is set up the RP the first time via the wizard and then save the setup using PowerShell (Get RP, Get Claims etc.) and then use these to set up subsequent ones as you migrate from dev. to test. to staging etc.

Insert message into a process running in gwt-console-server from external application?

I'm a jBPM noob running jBPM5.4 in AS7. I have tried posting this question on the jBPM duscussion board, but no luck, so I thought I'd try here on stack.
My Goal: Create the process in guvnor, run it in gwt-console-server, have my java application feed information to the process, and follow the current state in the jbpm Console.
So far, I have installed the jbpm console and console server as well as Guvnor and designer on jBOSS AS7. I am able to create a process in Guvnor and run and monitor that process from the jbpm Console. The missing piece is that I do not understand how to externally insert messages to the process that is running.
Using eclipse and the jBPM example, I can run a process and insert messages, but my goal is to use the jbpm console to monitor the processes.
I assume I need to access the knowledgesession running in the gwt-console-server, but I'm not sure how to do that. Is it safe to access/modify a session that is persisted out to a database (ie, both gwt-console-server and my custom app would be able to modify it) and then the jbpm console would read from it?
I see in the BPM Console reference (https://community.jboss.org/wiki/BPMConsoleReference) that there is an Integration Layer, but there is nothing about how to leverage that - and the like in the doc is broken :(
Can someone point me to an example of an external application feeding messages to a jbpm process that is being monitored by jbpm-console or suggest ways to accomplish this?
Thanks very much for any insight.
-J
PS. I have the new jBPM Developer's Guide, but can't find anything in it to help me with this (so if I am missing something, I can handle a reference back to that guide).
The jBPM console has a REST api that exposes a subset of the functionality. For example, if you model this feeding of information as the start of a process, or the sending of a signal, you could use the signal REST method to send this information to the console for processing.
It's also fine to use an external ksession to update a process instance. As long as they are using the same database to store the information, everything should be fine.
It turns out that the console is just using the logs, so as long as you log to the same DB the console is using (with JPAWorkingMemoryDbLogger) everything pretty much automagically works. You can use either JBPMHelper.newStatefulKnowledgeSession(kbase) or JBPMHelper.loadStatefulKnowledgeSession(kbase, sessionId) depending on if you want to use the knowledge session started from the Console. Also, if you borrow the Console's session, don't dispose it of course.
I read somewhere that you can give the session a business id (and soon do the same from your own code so that they automatically use the same session), but currently when I want to borrow the Console's session I use a kludge that just assumes the highest session is the one I want (it will be as long as the console is already running).

SSRS 2008 R2 Change Shared Data Source for Production vs Test

I am trying to figure out the best way to mitigate this situation. My project team consists of 3 developers each with their own instances of SSRS installed. We have 2 external SSRS servers that we must push updates to in order for the customer to review and for us to test and there is a 3rd external server coming online that will not be administered by us.
I have been trying to find a way to set the Shared Data Source to the current environment regardless of the system it is on. I had thought that just a common naming convention for the ReportServer address would be fine, but we've already found them to be inconsistent on the production and test servers. My next attempt was to specify an ODBC connection and let each person create a system DSN with connection information, but after an entire day of messing with it and continually getting errors, I'm not convinced it's the way to go. ( The most recent error being "The specified DSN contains an architecture mismatch between the Driver and Application" ). I have tried going through Windows ODBC DSN msc to create the DSN and I have tried using Report Builder 3.0 to create one and neither seem to work.
So I guess at this point I just have to ask, is there a best practice for going about this? I'd like to do local development and testing via the "Run" button inside Report Builder and then I'd just like to upload the file to the Report Manager and have it work regardless of the URL for the Report Server.
If the properties (connectionstring, etc) for shared data sources don't change much on your servers, the following may work for you: in the properties for your project set OverwriteDataSources = False for the appropriate configurations. Set it to true only temporarily to change the data source, if needed.
That way any dev can safely deploy to the servers, without affecting the data source, even if (s)he locally changed something (e.g. the connection string) to match a personal environment.
Not an optimal solution, but relatively easy to set up.

SQL 2008 R2 - Reporting Services, using Data Model with Report Builder 3 over internet causes crash, any ideas?

Background:
I have a Windows 2008 R2 box set up with SQL 2008 R2 both the Data Engine and Reporting Services.
I have configured Reporting Services to use custom authentication (FormsAuthentication) that I wrote.
The custom authentication gets passed the name of a user to treat as the admininistrator assuming they login correctly in the Reporting Services configuration files.
The custom authentication when queried by Reporting Services about the current users permissions will always return true when logged in as the user configured as the administrator.
I have uploaded a Data Model to Reporting Services (using the built in Report Manager app) which uses a Data Source I added (also using built in Report Manager app) which connects to a database on the same box.
I have a ASP.NET MVC3 web app (also on same box) that is configured to use the Reporting Services web service to do things like list existing reports, run existing reports and a link to start Report Builder 3.
The ASP.NET MVC3 web app shares it user logins with Reporting Services, i.e. the custom authentication used by Reporting Services verifies user details by looking at the same data as the web app.
The ASP.NET MVC3 web app is available externally.
Problem:
If I log into the web app remotely, start Report Builder 3 via link, login as UserA, use the Report Wizard with options >> Create dataset >> select Data Model (see above) as the source of data >> choose 1 table of data (e.g. Organisations) >> click button to preview data >> click next -- BANG - REPORT BUILDER 3 HANGS.
If I log into the web app locally on the server hosting everything, start Report Builder 3 via link, login as UserA, use the Report Wizard with options >> Create dataset >> select Data Model (see above) as the source of data >> choose 1 table of data (e.g. Organisations) >> click button to preview data >> click next >> choose row/column groups and values, report style and click finish. I can then run the report and save it. -- EVERYTHING WORKS!
Things I looked at:
If I do a SQL Profiler Trace against
the both the Reporting Services
database and the database that the
Data Model is using in the case where
it hangs it appears Reporting
Services is getting into some kind of
loop continuously asking the
Reporting Services databases if there
are any running jobs. When it works
it never asks the Reporting Services
about Running jobs at this point.
If I use the Data Source the Data Model uses in Report Builder 3 as the data source then it does work. HOWEVER this then prompts for a SQL Server login and requires the you open the SQL Server port on both the server and the remote machine! Not good.
This is driving me crazy. Any body with elite skills in the black magic of using Reporting Services 2008 R2 and Report Builder 3 that can help be figure this out will be deserving of everying computing award going.
EDIT: I found this while Googling again (Forum post, Google Cache) and got really excited but couldn't quite make sense of what the poster was saying and changes I made trying to follow it just broke all Reporting Services access so I rolled back the changes. Unfortunately the forum is archieved (and a bit rubbish) so I can't contact or leave a message for the poster.
Peter, my experience with Reporting Services is extremely limited; I've been building reports for SQL Azure Reporting Services using BIDS.
I had a problem whereby BIDS was crashing when I attempted to preview a report and it took me hours to work out that my reports weren't checked out of version control and BIDS couldn't save them. Rather than giving me any kind of meaningful error message, Visual Studio simply crashed on me.
Maybe, just maybe, your issue is that Report Builder can't save the report and is crashing for a similar reason. However, from your description, I'd suggest that if it is the case, it's likely to be a permissions issue rather than a read-only one. I'd check that the security context for the access of data is as you expect when logging in remotely.
Sorry that I can't give you a definitive answer, but maybe it will suggest somewhere new to look.
It turns out that this is caused by a school boy error by Microsoft of using one connection and not opening/closing it appropriately. MS were able to give us this workaround when we called them:
Basically after you've got the Report Builder 3 clickOnce app installed, locate it on your computer and then inside the system.net tag of the app.config file add the tags below.
<connectionManagement>
<add address="*" maxconnection="1024"/>
</connectionManagement>