Workflow Manager Fail with “Trusted provider is missing” error


I encountered this problem with a customer where one of our workflow heavy applications stopped to function .

The error I got within ULS Logs look like

00000003-0000-0ff1-ce00-000000000000  trusted provider is missing

Turns out it is a security change to the IIS Application for the “Workflow Management Site” where the Authentication provider included

Asp.Net Impersonation Enabled 
Along with other changes to that IIS application .

 

This customer is using SharePoint 2013 Enterprise on premises with NTLM only in a windows integrated mode , no SSL .

After narrowing down the issue to “Authentication problem” I did setup a new WFM with OOB configuration.

Asp.Net Impersonation Disabled 

I have checked all those settings below this will fix this issue after you restart the application pool.

See Below

Best of Luck.

WFM_SiteSec

 

 

 

 

Advertisements

SharePoint 2013 TypeError: Unable to get property ‘replace’ of undefined or null referenceTypeError


You get the following error when you attempt to edit list items or list views.

TypeError: Unable to get property ‘replace’ of undefined or null referenceTypeError: Unable to get property ‘replace’ of undefined or null reference

TypeError: Unable to get property ‘replace’ of undefined or null referenceTypeError: Unable to get property ‘replace’ of undefined or null referenceTypeError: Unable to get property ‘_events’ of undefined or null reference.

Problem :

this happened after an automatic windows update installed the January 2016 SharePoint Server cumulative updates.

Solution :

First , try to run the SharePoint Products upgrade wizard on the SharePoint host with administrative rights.

Second Install the January 2016 SharePoint foundation ( I know that was not required before but for some hideous reason , this is coming back again )

You can get this download from here ..

https://technet.microsoft.com/en-us/library/dn789211(v=office.14).aspx

After the installation  ,please re run the SharePoint upgrade wizard it might leave the server in an unstable state ( some components may take the update and some don’t , that is why you need to run this wizard).

Best of luck

PS: This is a deja vu  from a similar issue in 2007 …. no more comments

SharePoint audit in action


The Triangle SharePoint User Group  ( TriSPUG) meeting for Tuesday  03JUN2014 at the Microsoft building in Durham .
I finally finished the presentation and the slides and the code samples on codeplex.

 

Please find attached

The code samples are here https://spauditdemo.codeplex.com/

 

Let me know if you have any questions.

 

Best of luck

SharePoint audit in action

SPAuditDemo
SPAuditDemo
Splash
Splash

 

Secure Store Service did not performed the operation


Error : Secure Store Service did not performed the operation”

The Error : Along with the grammar issue , ( not that English is my third language ) is a valid one,

With all sorts of errors on the SP log , System and application logs.

This was only a symptom to a bigger problem

Database log file growing out of size (in our case filled the disk space)

 

Those failed write to the DB file from the Log, happen often in slow disk environments (not sure why)

In some case it will show this error on the backup logs (: The transaction log for database ‘Name of DB’ is full)

How to solve this short term problem (PS : this is how I solved it but I am not sure if this is the correct way)

  1. Do no panic, it is a SQL problem.
  2. Go to the SQL Management tools, change the DB Options Recovery mode from Full to Simple.
  3. Perform a full DB Backup to any other disk.
  4. Change the DB Options Recovery mode from Simple back to full.
  5. You should be back online by now.

     

HAVING MULTIPLE USERPROFILE SYNC SERVICES


Having Multiple UserProfile Sync services

In an architecture I worked on I was isolating two service groups , I wanted to isolate a service group that service some SP Applications from others , with security , information leakage and other concerns in mind ( like having own managed metadata services , and profile services etc.)

The problem was having two or More UserProfile Synchronization services, While many might say , why , and you don’t need another one , or it can’t be done.

Simply the problem is that User Profiles are always tied to the mySite host and that is a global configuration setting on the service application (your first provisioned UPS application ).

The opted design:

You can have multiple UserProfile Sync services but they can each reside on a single SharePoint hos within your farm.

You cannot have multiples on the same host , as it is simply a Forefront Identify management engine ( Geneva ) and given the complexity of this thing , I would not even think about running two of them on the same host.

The main problem :

After declaring success on this front and having the two sync service application , each with multiple and different AD connections , I noticed that the sync works fine , to all sites and content . yet the farm backup job fails sporadically with this error on the log.

[8/21/2013 9:11:08 PM] FatalError: Object SP-USER-PROFILE-SERVICE failed in event OnBackup.

For more information, see the spbackup.log or sprestore.log file located in the backup directory.

SPDuplicateObjectException: An object of the type Microsoft.Office.Server.Administration.ProfileSynchronizationUnprovisionJob

named “ProfileSynchronizationUnprovisionJob” already exists under the parent Microsoft.SharePoint.Administration.SPTimerService named “SPTimerV4”. Rename your object or delete the existing object.

The main solution:

The cause of the problem is the incremental backup that took longer than usual and got into the AD Sync cycle of one of the Sync Services.

The solution is simple, Stop both SYNC services, start both sync services ( on each respective server) , push the backup window a few hours apart.

That solved my problem. Hope is solves yours.

Best of Luck

The closed type does not have a corresponding settable property


I have encountered this error with a BCS application that I built and was working for some time.

The Exception / error is

"The closed type does not have a corresponding  <PropertyName> settable property"

The BCS application was working inside a farm connection to a list in another network and anther farm for sure.
 

The List column names were changed ( at least one of them  ) and that did break the proxy that was compiled for that BCS model to work  with

 

How to detect such problem :

Browse to the service wcf interface that should show the fields ( you will need to see the source of the page to see the field name from the atom feed)

match those to your Model mapped name ( that is normally dynamically configured by VS ) 

see the mismatched fields, fix your code and rebuild and redeploy
( and call the list owner let them know of the change and don’t get angry )

 

Lesson Learned : Cannot depend on uncontrolled lists as solid schemas.

I think the main problem is that the feed sends the Fields display name and not the Internal Name of the list which is unique and static

 

Microsoft Please have a fix (or guidance)

 

Best of luck

 

 

 

Error with User Profile services


Error with User Profile services

The server encountered an unexpected error in the synchronization engine:

“BAIL: MMS(268): eafam.cpp(1510): 0x80230304 (The image or dimage already has an attribute with that name.)

BAIL: MMS(268): eafam.cpp(901): 0x80230304 (The image or dimage already has an attribute with that name.)

BAIL: MMS(268): eafam.cpp(1013): 0x80230304 (The image or dimage already has an attribute with that name.)

BAIL: MMS(268): amexec.cpp(1701): 0x80230304 (The image or dimage already has an attribute with that name.)

BAIL: MMS(268): amexec.cpp(2086): 0x80230304 (The image or dimage already has an attribute with that name.)

BAIL: MMS(268): eaf.cpp(1417): 0x80230304 (The image or dimage already has an attribute with that name.)

BAIL: MMS(268): eaf.cpp(657): 0x80230304 (The image or dimage already has an attribute with that name.)

ERR: MMS(268): synccoreimp.cpp(5266): 0x80230304 – export-flow failed 0x80230304

BAIL: MMS(268): synccoreimp.cpp(5267): 0x80230304 (The image or dimage already has an attribute with that name.)

BAIL: MMS(268): synccoreimp.cpp(4858): 0x80230304 (The image or dimage already has an attribute with that name.)

BAIL: MMS(268): synccoreimp.cpp(10873): 0x80230304 (The image or dimage already has an attribute with that name.)

BAIL: MMS(268): synccoreimp.cpp(10557): 0x80230304 (The image or dimage already has an attribute with that name.)

BAIL: MMS(268): synccoreimp.cpp(2545): 0x80230304 (The image or dimage already has an attribute with that name.)

ERR: MMS(268): synccoreimp.cpp(6483): 0x80230304 – MV to CS synchronization failed 0x80230304: [{F81CD149-ADC9-4720-89E2-E9CBD2CE39A9}]

BAIL: MMS(268): synccoreimp.cpp(6486): 0x80230304 (The image or dimage already has an attribute with that name.)

ERR: MMS(268): syncmonitor.cpp(2515): SE: Rollback SQL transaction for: 0x80230304

MMS(268): SE: CS image begin

MMS(268): SE: CS image end

Forefront Identity Manager 4.0.2450.34″

The Microsoft article does not actually describe the problem nor the solution, yet it is very simple .

The FIM engine [That is the Sync engine described in the message] is the Forefront Identity Manager

The problem is : One or more properties are being overwritten by mistake to the temp storage by the Sync engine.

In my case ( and the most common one ) it was the AD Attributes (Both with Import direction )

AD Attribute “Title” – > SP Profile “Title”

AD Attribute “Title” – > SP Profile “Job Title”


Solution : If the Microsoft solution does not do it for you (like it didn’t work for me)

  1. Simply remove both mappings.
  2. Do a full Profile Sync.
  3. Add the first mapping and Do full profile sync (monitor errors)
  4. Add the Second mapping and do full profile sync (monitor errors)

Thank you Google ….. and Microsoft.

Best of luck.

Design and Develop SharePoint 2007 64 Bit Workflow


As we all know , there has been a problem with the Microsoft templates that ship with VS 2008 and VSSe.

But I found this great article By Sahil Malik ,  that has a fix.

http://blah.winsmarts.com/2008-7-Authoring_SharePoint_2007_Workflows_using_VS2008.aspx

Simply edit your project to add the two workflow types 

open the .csproj with  Notepad

 At the Project\PropertyGroup element, append , see the sample file.

<ProjectTypeGuids>{14822709-B5A1-4724-98CA-57A101D1B079};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>

 – At the Project element, right below <Import Project = “$MSBuild .. “, add the following element

<Import Project=”$(MSBuildExtensionsPath)\Microsoft\Windows Workflow Foundation\v3.5\Workflow.Targets” />

That worked for me.


Fun MS Windows Fact (not that funny)


Since the 90s DOS  Days I knew about this .

You cannot create a file or folder that is

  1. CON or CON0 – CON9
  2. PRN or PRN0 – PRN9
  3. AUX or AUX0 -AUX9  
  4. NUL  or NUL0 – NUL9
  5. COM or COM0 – COM9
  6. LPT or LPT0 – LPT 9

With this funny error message

[The specified device  name is invalid ]

but 20 years later Microsoft has not given up those reserved words.

The problem , if you are moving files or folders from other non-windows systems to a windows system you can get some copy failures etc

Here is the official ms posting.http://support.microsoft.com/kb/279868

Using Multiple ASP SQL Role providers on multiple SharePoint Sites.


I found this problem as I was extending a SharePoint site to use FBA and the client wanted the users of Site 2 in a different database  than that of  Site 1.

Here are some concepts first

You have multiple FBA profile providers , Membership Provider , and Role Provider.

You need to have the following per site

Site1

  • Site1MembershipProvider
  • Site1RoleProvider
  • Site1ProfileProvider

Site2

  • Site1MembershipProvider
  • Site1RoleProvider
  • Site1ProfileProvider

Etc,…

All in one web.Config file / application

While that is obviously not doable without custom provider , yet , you will still have the challenge of dynamically switching the provider at runtime.

Here is the fix no coding needed.

ProfileCommon class only points to the properties under the  Default provider

Yet, you can trick it with the following.

<profile enabled=”true” defaultProvider=”SQLProfile”>

<!–  The “name” attribute of each property entry corresponds, that is the ProfileCommon properties–>

<properties>

<add name=”FirstName” />

<add name=”MiddleName” />

<add name=”LastName” />

<!– Required Sharepoint properties follow… –>

<add name=”PreferredName” defaultValue=”NA” />

<add name=”WorkEmail” defaultValue=”unknown@NA.com” />

<add name=”WorkPhone” type=”System.String” defaultValue=”NA” />

<!– Required for the Custom Profile Site1 –>

<add name=”Site1FirstName”  type=”string” provider =”FBASite1Profile”/>

<add name=”Site1MiddleName” type=”string” provider =”FBASite1Profile”/>

<add name=”Site1LastName”   type=”string” provider =”FBASite1Profile”/>

</properties>

<providers>

<add name=”SQLProfile” type=”System.Web.Profile.SqlProfileProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a” connectionStringName=”AspNetSqlProvider” applicationName=”/” />

<add name=”FBASite1Profile” type=”System.Web.Profile.SqlProfileProvider” connectionStringName=”FBASite1ConnectionString” applicationName=”Site1Application” />

</providers>

<add name=”FBASite2Profile” type=”System.Web.Profile.SqlProfileProvider” connectionStringName=”FBASite2ConnectionString” applicationName=”Site2Application” />

</providers>

<add name=”FBASite3Profile” type=”System.Web.Profile.SqlProfileProvider” connectionStringName=”FBASite3ConnectionString” applicationName=”Site3Application” />

</providers>

</profile>

Accessing the profile through code

Creating a profile

MembershipUser  newUser = Membership.Providers[“Site1Membership”].CreateUser(UsernameTextbox.Text, PasswordTextbox.Text,EmailTextbox.Text, passwordQuestion,passwordAnswer, chkActive.Checked,(object)Guid.NewGuid(), out status);

ProfileCommon pc = (ProfileCommon)ProfileBase.Create(newUser.UserName);

pc.SetPropertyValue(“Site1FirstName”, FirstName.Text);

pc.SetPropertyValue(“Site1MiddleName”, MiddleName.Text);

pc.SetPropertyValue(“Site1LastName”, LastName.Text);

pc.Save();

Reading a profile

MembershipUser user = Membership.Providers[“Site1Membership”].GetUser(username,false);

ProfileCommon pc = (ProfileCommon)ProfileBase.Create(user.UserName);

FirstName.Text = pc.GetPropertyValue(“Site1FirstName”).ToString() ;

MiddleName.Text= pc.GetPropertyValue(“Site1MiddleName”).ToString();

LastName.Text = pc.GetPropertyValue(“Site1LastName”).ToString();

Good Luck .