Month: November 2012

Step by Step guide to Styling Sharepoint Lists/Libraries Using Sharepoint Designer

Many Times there is requirement for Styling SharePoint items like Custom Lists, Document library, Pages etc… so as to Emphasize certain Data over other so that it is noticeable or to present it to end-user in such a way that it doesn’t appear to be a SharePoint listFor this requirement first thing is to identify what will be visible to end user. Is it a list or list webpart in a Site Page because in this approach when you’ll edit the list it will create XSLT on that particular page and won’t be visible elsewhere.

Here we are creating a Custom List ( Sample List).



And Add Few Columns to it. (say Employee Name, Comments, Performance etc…)


Employee name is a Single Line of text, Comments is a Multiple Line of text and Status is a Choice with 3 Values Met Expectations, Under Performed and Exceeded Expectations.

Once we’ve got this in place we will Remove title From Required list


and Modify this view to get the required fields in the view.


Now go to Site Actions and Edit Page in SharePoint Designer (and Then wait for it to load the site which will take long long time). Now on Left Pane select “List and Libraries” and from there Select Your List and Click DispForm.aspx in Main Area.

Performing Action in SharePoint Designer Workflow after Specific Time

For sending out a notification or Setting a field Value in SharePoint after a specific time or on a particular date (that you fetch from the List) easiest way to go around is create a SharePoint Designer workflows.

Here we’ll be setting Due Date Value Back to Blank.

Connect to Specific site in SharePoint Designer.

Click on Workflows in Left Nav.

Select the List you want to attach workflow to

Go To Initiate Form Parameters in Top Ribbon.

Add a New Field:

Set Value to ‘None’

Go to Find Interval Between Dates in Utility Section

Set it as “Find Days (or as appropriate) between Today and Current Item: “(by clicking fx J)

Go to Actions and Do Calculations (if You want to add more value to it )

Add Variable Created above with the value you need.

Then Pause for specific duration :

Go to Action and do Send Email or Set Field (action you want to perform)

Set your field to Blank Date field Created earlier

Save the Workflow.

Click on Workflow name in Navigation.

Select Start workflow automatically when Item is created

Save it and Publish it.

Dependency Records Error while importing Managed Solution

Error While Importing Managed Solution in CRM 2011:

Error:

Found 2 dependency records where unmanaged component is the parent of a managed component. First record (dependentcomponentobjectid = a7f9b236-452f-e211-aa3e-00155dc87c5a, type = AttributeMap, requiredcomponentobjectid = 8d4b6bc4-b4ed-e111-aba2-00155d018410, type= EntityMap, solution = b18c1343-ea7f-4eaa-abf7-31d81ade819c).

Cause:

The cause of above error it that there is custom Mapping between Managed Entity and Unmanaged Entity pre-existing in the system and system is not able to replace those mappings.

Resolution (More of a workaround):

  1. Unzip the managed solution.
  2. Edit customizations.xml, replace … tag inside with , Save.

    (Here you just removed all mappings)

  3. Zip the solution, Import it.
  4. Import Original Managed Solution solution. à Pay attention here you imported solution twice. Once without mappings, Once with that.

Thanks to Kjell L for the solution.

“AuditPFN” Issue while restoring MS Dynamics CRM 2011 Database Backup

While restoring CRM 2011 Database if you face following Error:

Error:

An exception occurred while executing a Transact-SQL statement or batch. (Microsoft.SqlServer.ConnectionInfo)
Database ‘DatabaseName’ cannot be started in this edition of SQL Server because it contains a partition function ‘AuditPFN’. Only Enterprise edition of SQL Server supports partitioning. Database ‘DatabaseName” cannot be started because some of the database functionality is not available in the current edition of SQL Server. (Microsoft SQL Server, Error: 905).

Cause:

The cause of above exception is the SQL Server you are importing from is SQL Server Enterprise Edition but SQL Server you are importing to is not same.

While creating Org in SQL Server Enterprise Edition a partition is created in the DB for auditing purpose. The AuditBase table uses partition which is available only in Enterprise Edition.

Resolution:

  1. Backup (1) SQL DB from where you want to take backup to restore 😉 (Used in case you messup anything in SQL)
  2. Run given script against that DB.

[sourcecode language=”sql”]

IF EXISTS (SELECT name FROM sys.partition_schemes WHERE name=’AuditPScheme’) BEGIN SELECT   CASE WHEN ind.type != 1    THEN     ‘DROP INDEX [dbo].[AuditBase].’ + QUOTENAME(ind.name) + ‘ ‘    ELSE ‘ ‘   END +   ‘CREATE ‘ + CASE is_unique WHEN 1 THEN ‘UNIQUE ‘ ELSE ” END  +   ind.type_desc + ‘ INDEX ‘ + QUOTENAME(ind.name  COLLATE SQL_Latin1_General_CP1_CI_AS )  + ‘ ON [dbo].’ +  QUOTENAME(OBJECT_NAME(object_id)) + ‘ (‘ +      REVERSE(SUBSTRING(REVERSE((    SELECT name + CASE WHEN sc.is_descending_key = 1 THEN ‘ DESC’ ELSE ‘ ASC’ END + ‘,’    FROM     sys.index_columns sc     JOIN sys.columns c ON sc.object_id = c.object_id AND sc.column_id = c.column_id    WHERE     OBJECT_NAME(sc.object_id) = ‘AuditBase’ AND     sc.object_id = ind.object_id AND     sc.index_id = ind.index_id    ORDER BY index_column_id ASC    FOR XML PATH(”)         )), 2, 8000)) + ‘)’ +   CASE WHEN ind.type = 1    THEN     ‘ WITH (DROP_EXISTING = ON) ON [PRIMARY]’    ELSE     ‘ ‘   END  as Script INTO #indexesScript FROM sys.indexes ind JOIN sys.partition_schemes ps on ind.data_space_id=ps.data_space_id WHERE   OBJECT_NAME(object_id) = ‘AuditBase’   AND ps.name = ‘AuditPScheme’   AND is_unique_constraint = 0 SELECT * FROM #indexesScript   DECLARE @recreateScript nvarchar(max) DECLARE indScript CURSOR FOR SELECT Script FROM #indexesScript OPEN indScript FETCH NEXT FROM indScript INTO @recreateScript   WHILE @@FETCH_STATUS = 0   BEGIN     BEGIN TRANSACTION t1   Execute sp_executesql @recreateScript     IF @@ERROR > 0   BEGIN    ROLLBACK TRAN t1    declare @message varchar(max)    set @message = ‘Audit history recreate index failed. SQL: ‘ + @recreateScript       RAISERROR (@message, 10,1)   END   ELSE   BEGIN    COMMIT TRAN   END   FETCH NEXT FROM indScript INTO @recreateScript   END   DROP PARTITION SCHEME AuditPScheme DROP PARTITION FUNCTION AuditPFN   CLOSE indScript   DEALLOCATE indScript DROP TABLE #indexesScript END

[/sourcecode]

3. Backup (2) DB again (Used for import on you non Enterprise Edition SQL Server)

4. Restore the above backup [Backup (2)].

Not My solution J Just found Online here.