Wednesday, 30 December 2015

Office 365 Workflow (Default Functionality)

A - OBJECTIVE: after you have subscribed to Office 365, you can leverage on its out-of-the-box workflow mechanism & functionality to build processes.

Note: You are supposed to have SharePoint Designer 2013 (free of charge). Visio (licensed) is a nice to have tool when your workflow is complicated.

B - PROBLEMS :

Several scenarios will be described in section C but the default workflow functionality is quite limited in terms of utilities for large-scale & complicated workflows.

Considerations in workflow design:

1. For workflow at list or library items, try to finish the workflow whenever it is possible ; i.e. not keep the workflow in the standby mode because it will consume resources immensively.

2. For site workflow, try to run it once a day

3. At the end of each stage, the section "Transition to stage" only allow you to go to two other stages including "End of Workflow" stage (i.e. an IF clause with only 2 branches).

4. Workflow Task List & History List should be newly created for each workflow because of the default limitation of 5,000 items per list.

5. Permission to run workflow: if you try sending emails to some SharePoint groups in the workflow but you do not have permission to view the Group, the workflow will be suspended.

If you are keen to build a more complicated process at Office 365, a third-party product called Nintex for Office 365 can be considered with a separate cost http://www.nintex.com/workflow-platform/nintex-workflow/workflow-for-office-365

C - SOLUTION:

Scenario 1: to build a review & approval process

Step 1: admin group will be notified whenever there is a new document added into the library.


Step 2: after assessed (i.e. Status is not Submitted anymore), check if the document is rejected



Step 3: if the admin approves the documents for being reviewed


Step 4: to set the all reviewers to local variables


Step 5: to email to all reviewers when there is a review added to the document


Step 6: when all reviews are added (which is 3 in this case), the admin will be notified


Scenario 2: to build a daily reminder process



At line 2 of the scenario 2, mouse over the whole action, click Properties. In the RequestHeaders box, choose the variable dictionary




D - SOURCE CODE:

To provide source code

Topic Coverage in this blog:

1. SharePoint
2. Enterprise Content Management
3. Database

Recommendation Foci:

1. Best Practices
2. Safeguarding Measures against future error re-occurrennces.

Thursday, 6 March 2014

Search Service Application

A - OBJECTIVE: to create a new Search Service Application.

B - PROBLEMS :

1. Search Application: Index Component grows bigger when more content is populated at SharePoint farm.

2. Available Drive Space: this should have at least twice the value of physical memory (RAM). By default, all Search components are saved at C drive and it will consume this drive; hence, it leads to many operational issues. For example: permissions removed silently due to the problem at Virtual memory swap file.

C - SOLUTION:

1. Search Availability: to ensure the Search service is available to users, "Query Processing" and "Index" components should be replicated at all SharePoint servers.


2. Index Components of Search Application should be allocated at a separate drive to cater for future growth & access speed.
# to move the Index Components at all SharePoint servers to drive I
New-SPEnterpriseSearchIndexComponent -SearchTopology $new -IndexPartition 0 -SearchServiceInstance $hostWFE1 -RootDirectory "I:\FEOshareSearchComponents2015"
New-SPEnterpriseSearchIndexComponent -SearchTopology $new -IndexPartition 0 -SearchServiceInstance $hostWFE2 -RootDirectory "I:\FEOshareSearchComponents2015"
New-SPEnterpriseSearchIndexComponent -SearchTopology $new -IndexPartition 0 -SearchServiceInstance $hostApp -RootDirectory "I:\FEOshareSearchComponents2015"


D - SOURCE CODE:
### GET THE EXISTING ENVIRONMENT PARAMETERS ###
$ssa = Get-SPEnterpriseSearchServiceApplication "Search Service Application - FEOshare"
$current=Get-SPEnterpriseSearchTopology -SearchApplication $ssa -Active
$new=New-SPEnterpriseSearchTopology -Clone -SearchApplication $ssa -SearchTopology $current


# list all search servers deployed in the farm
$hostApp = Get-SPEnterpriseSearchServiceInstance -Identity "kc1mspappprd01"
$hostWFE1 = Get-SPEnterpriseSearchServiceInstance -Identity "kc1mspwfeprd01"
$hostWFE2 = Get-SPEnterpriseSearchServiceInstance -Identity "kc1mspwfeprd02"

# check the settings of the search application
Get-SPEnterpriseSearchStatus -SearchApplication "Search Service Application - FEOshare"


### RE-CONFIGURE TO ALLOCATE SEARCH COMPONENTS ###

# delete the old configuration at the default location (drive C)
$del = Get-SPEnterpriseSearchComponent -SearchTopology $new | ? {$_.Name -eq "IndexComponent1"}
Remove-SPEnterpriseSearchComponent -Identity $del -SearchTopology $new


# create new INDEX components at new location
# must configure RootDirectory https://technet.microsoft.com/en-us/library/jj219721.aspx
New-SPEnterpriseSearchIndexComponent -SearchTopology $new -IndexPartition 0 -SearchServiceInstance $hostWFE1 -RootDirectory "L:\FEOshareSearch2015"
New-SPEnterpriseSearchIndexComponent -SearchTopology $new -IndexPartition 0 -SearchServiceInstance $hostWFE2 -RootDirectory "L:\FEOshareSearchComponents2015"
New-SPEnterpriseSearchIndexComponent -SearchTopology $new -IndexPartition 0 -SearchServiceInstance $hostApp -RootDirectory "I:\FEOshareSearchComponents2015"


# create new QUERY PROCESSING component at new location
New-SPEnterpriseSearchQueryProcessingComponent -SearchTopology $new -SearchServiceInstance $hostWFE1
New-SPEnterpriseSearchQueryProcessingComponent -SearchTopology $new -SearchServiceInstance $hostWFE2

### SET THE NEW TOPOLOGY TO BE ACTIVE ###
Set-SPEnterpriseSearchTopology -Identity $new