Error issuing part using Maximo integration framework MXINVISSUE - maximo

We are upgrading from Maximo 7.5 to 7.6.1. Our web service that uses MXINVISSUEInterface is throwing an exception when we try to issue a part that is marked as a spare part and the work order has an asset. The exception says "BMXAA4195 - A value is required for the Organization field on the SPAREOBJECT object." The part is not in the SPAREPART table for the asset so it is trying to add it, but for some reason the ORGID is not populated from the MXINVISSUE_MATUSETRANSType object.
I re-generated the WSDL on the new server and rebuilt the solution, but after populate a new required field, I still get the same error.
Is there a system property that must be set. It works in 7.5 writing the record to MATUSETRANS and SPAREPART.

This sounds like a bug, so you might raise a Support Case with IBM about it. For a workaround until IBM releases a fix and you install said fix, consider the following options.
Can you set the Default Insert Site for the user using the web service?
Is it practical to put a Default Value on SPAREPART.ORGID?
Create an automation script called SPAREPART.NEW that will somehow figure out an ORGID to use. To "figure out", my first would be to check if mbo has an owner that has an ORGID and, assuming it does, use that.

Related

Guidewire PolicyCenter The object you are trying to update was changed by another user. Please try your change again

I'm having this weard mistake "The object you are trying to update was changed by another user. Please try your change again." I would like to know what is the reason of this without context. There are no logs about it, no exception stacktrace, no information about this mistake in documentation. I believe this is something about Bundles but I want to now the exact reason
GW throws several exceptions related, by example ConcurrentDataChangeException, DBVersionConflictException depending of entity type. It occurs when a bean is modified concurrent by two or more transactions (bundle).
This error usually happens because on one bundle two transaction changes are trying to commit where prior bundle is still not committed.
Let us understand with one example- There is user which does a policy change to add any contact or any other business operation. And at the same time another user open same transaction in his GW PC UI and tries to do some business operation at this GW system throws this error on UI because the pervious bundle is still not committed.
The error trace leads you to some OOTB java classed and I think you can get it from PCLogs from PC UI Server logs.
Hopes this clarifies you.
Actually this happens because your object was updated by someone else on the DB during your db read from the DB and your attempt to write it back into the DB.
GW does this by leveraging the version check from your database object.
The exception message actually tells you who and when did the conflicting update. There're no stack traces that will point you to the cause of the other update.
Root causes might be several - from distributed cache in clustered env going out of sync to actually having some other party doing work on the same entities as you do. So the fix is per case really.

How to check if website name provided is available and free in Azure SDK for dot net

I'm trying to create a web app in azure using
azure.WebApps
.Define(name)
.WithExistingWindowsPlan(plan)
.WithExistingResourceGroup(resourceGroupName)
.CreateAsyn()
Since the name must be globally unique, how can I check if the name exist already?
Similar to Erndob's comment there - I'll extend it by saying that catch the error and look into the specifics. If it's failing with a name not unique error - that's your check failing right there. Any other failures should be treated differently.

Liferay model listener ordering

Following is my requirement :
Whenever site is created, with help of GroupListener we are adding some custom attributes to created site.
So assume that you are crating "Liferay Test" site then it will have some fix custom attribute "XYZ" with value set in GroupListeners onAfterCreate method.
I can see this value in custom fields under site settings.
Now based on this values, we are creating groups in another system(out of liferay, using webservices).
So far so good.
Whenever we are deleting the site we need to remove the equivalent groups from other system via web service.
But while deleting site, in GroupListener we are not able to retrieve the custom attributes.
On further debug by adding expando listener, I observed that Expando listeners are getting called first and then delete method of GroupLocalService/GroupListener.
And hence we are not able to delete the groups present in another system.
So I was wondering if we can have ordering defined for listeneres.
Note: Since we were not getting custom attributes in listeners we implemented GroupLocalServiceImpl and with this we are getting custom attributes in delete method on local environment but not on our stage environment which has clustering.
You shouldn't use the ModelListeners for this kind of change, rather create ServiceWrappers, e.g. wrap the interesting methods in GroupLocalService (for creation as well as deletion).
This will also enable you to react to failures to create records in your external system etc.

SSIS Woes: Dynamic OData Connection for Same SharePoint List on Multiple Sites

I am having an issue using an OData SharePoint List Source with a dynamically changing connection string (inside the OData Connection Manager). The OData Source inside of my Data Flow Task fails to validate with the error message, “Cannot acquire a managed connection from the run-time connection manager” when executing the DFT from a parent package.
I have done some extensive Googling, and combed the forums relentlessly; however, I have not found anything that seems to offer a solution to this problem. Any help figuring out a solution would be greatly appreciated!
Here is the general flow of the main SSIS package:
Truncate staging table
Get all Site Collection URLs and their GUIDs from SQL Table
Execute Package Task for each site collection (foreach ADO loop container)
Extract data from UserInformationList (OData source)
Add a column for the GUID of this site collection
Load the data into staging table
etc. . .
Main Package:
Child Package Control FLow:
E-L UserInformationList DFT:
Package Output With Error Message:
When testing the entire solution, everything (tasks, parameters, variables, etc.) behaves properly until 3.1(see above), when the OData Source fails during validation. The only aspects of the source and connection manager that change are the URL and ConnectionString for the connection manager; the specific SharePoint list that I access on each site never changes. When the solution enters the child package, the URL and ConnectionString for the Connection Manager are properly set, prior to entering the DFT.
When testing the child package via the Execute Package Task, using hard-coded parameter values, the child package fails to validate.
When testing just the child package, there are no errors and the list information is stored in the database, as expected. However, with individual testing, the OData Connection Manager uses the default value of the package parameters.
Things I have tried so far:
Set DelayValidation to True
Changing the debugging runtime from 64 to 32 bit (and back again)
Use collection to specify the list (in the OData Source Editor)
Use resource path to specify the list (in the OData Source Editor)
Running the child package as a Farm Admin
Running the solution as Farm Admin
Other information:
SharePoint 2013
Data Tools for Visual Studios 2012
Microsoft’s OData Source for SQL Server 2012
i think you don't have access to the source sharepoint or you are not passing the right credentials thats why you are getting this error. Please use valid connection and test your connections.
I had the same issue while I was reading the URL for OData source from database. In my case, I was passing old value for URL which has changed in the SharePoint side that is, the DB had URL value http://sharepointsite/News but the actual site was modified by user to http://sharepointsite/NewsUpdated
So, check the passing URL value in your case in case you still having this issue
I had the same issue, and it looks like at the moment of starting for loop container, you need to provide a valid value for the URL variable, it will be overwritten this or the other way, but if I would go with "0" or null I would get the same error as you

re-using ServiceStack validation in Winforms offline client

We have a working website using ServiceStack as the back end that amounts to a complex data-entry form.
My users have requested an "offline editor" for the forms. To use the offline program, the user will have to connect to the ServiceStack service, create empty instances of the forms, and then I will save the POCOs from the service to disk using ServiceStack's JSON serializer. From there the user can log off the service and edit the POCOs. When they're done, they reconnect to the service, and post/put the edited POCO object.
This all works great. My question involves validation. The validation logic is built into my Service.Interface library, which isn't available offline. The winforms program references only the POCO library and the ServiceStack "common" libraries, which do not look like they include the ServiceStack.Validation namespace.
Is there a way I can rearrange my project so that both the service and the Winforms client can run Validation against the POCOs, so that they can have data validation while offline?
UPDATE:
getting closer, I think - I moved all of the Validation classes into their own project. From my Winforms project, I can now manually set up a validator for a POCO class like this:
ServiceStack.FluentValidation.IValidator<SomePOCO> IValidator;
IValidator = new Tonto.Svc.Validation.SomePOCOValidator();
ServiceStack.FluentValidation.Results.ValidationResult vr =
IValidator.Validate(_rpt);
I can see the validator constructor being set up and the rules being initialized, but the .Validate method doesn't seem to do anything. (object comes back as valid, and breakpoints into custom validator code never get there).
UPDATE #2
I discovered my validator code wasn't running from Winforms because my validators all specify a servicestack ApplyTo Put/Post only (see sample code below). When I remove the entire Ruleset clause, though, then validation happens in my service on GETs - something I never want.
Can anyone think of a way to configure the validator rules to run for POST/PUT only when called from ServiceStack, but to also always run when NOT in servicestack? So close!
public class SomePOCOValidator : AbstractValidator<SomePOCO>
{
public SomePOCO()
{
RuleSet(ApplyTo.Put | ApplyTo.Post, () =>
{
(rules)
});
}
}
If your validation is doing anything interesting, then it probably HAS to be done "online".
Maybe just allow your client to save the POCOs locally until they go back online, at which point you send them up to your server. Any transactions that are okay, get processed normally, and any that fail, get returned for the user to edit (so your client will need some smarts to have a working set of POCOs for editing)...
If you don't want ANY extra stuff on the client, just have the transactions that fail to validate get stuffed into a "needs_corrections" table on the server, and then code up a supervisor-sort of screen to manage that table.
The validation framework that ServiceStack uses is named FluentValidation. There is no WinForms support in it. Jeremy Skinner the creator of FluentValidation answerd a question about this back in 2010 on his forum here.
Personally I don't use FV with WinForms - the vast majority of my projects are web-based with the occasional WPF project.
However, if I was going to do this then I probably wouldn't validate the controls directly, but instead use a ViewModel which is bound to the controls. I'd use a fairly strict convention where the names of the controls would match the names of the properties that they're bound to. Then, after validation completes I'd walk the control hierarchy to find the control with the name that matches the property that failed validation (I'm not sure how you'd do this in WinForms, but in WPF I'd use LogicalTreeHelper.FindLogicalNode) and then use the ErrorProvider to set the appropriate error.
Jeremy
I was able to work out a solution that allowed me to use ServiceStack validation libraries on both a ServiceStack client and an offline client. Here are the details.
Move all AbstractValidators to their own project: Proj.Svc.Validation.
get rid of all RuleSets in your AbstractValidators.
Reference Proj.Svc.Validation from Proj.Svc.Interface and Proj.OfflineWinformsClient projects.
Turn OFF the ValidationFeature() plugin in your service. All validation will have to be done manually. This means no iOC injected validators in your service classes.
When it's time to validate, either from your service or the offline client, manually declare the validator and use it like this.
IValidator validator = new
Tonto.Svc.Validation.SomePOCOValidator();
ServiceStack.FluentValidation.Results.ValidationResult vr =
validator.Validate(poco);
if (!vr.IsValid)
(throw exception or notify user somehow);

Resources