MS InfoPath

抱歉過了一年沒有更新 (反正除了我也沒人看),概因在前公司網絡管理太嚴,把Wordpress擋了,貼文很不方便,所以就沒寫了。最近轉了公司,才可以貼一年後第一篇文。

在新公司裡用的是SharePoint 2010 Enterprise,這兒大量的使用MS InfoPath, Designer & VS workflow, 以及Event Receiver。這是我第一次接觸InfoPath,比我想像中的還要方便,好用。Microsoft雖然說了InfoPath 2013將會是最後的版本,以後不會有新版本了,但至今(2016年7月)還未有取代方案出現,暫時各大MVP都叫大家改用List form。。。根本是兩件事情,List form所需要的coding太多了,而且都集中以Client side為主,如果Form的邏輯太多,用戶用起來將會非常慢。

如要使用MS InfoPath,公司需要購買SharePoint Enterprise CAL;如果沒有Enterprise只有Standard,那麼所有form的使用者(users)都要安裝InfoPath Filler,不能使用browser去打開form和填form,用戶體驗自然差得多。

在mysite的Newsfeed可以貼圖, 在MySite則不行

如果跟足Microsoft建議的設定, 不同的Web Application要用不同Service Account (即是Application pool帳號), 恭喜你, 應該會遇到這個問題:

在自己的MySite可以貼圖, 在Team site或其他Site則不行.

原因很明顯, 執行Team Site的Web Application的Application pool帳號, 沒有權限寫資料到MySite的Database. 解決很簡單, 在SharePoint powerShell windows輸入以下:

$webApp = Get-SPWebApplication “<my site host>"
$webApp.GrantAccessToProcessIdentity(“domain\SPWebApp")

domain\SPWebApp 是Team Site的Web Application的Application pool帳號

執行後, 會在CA的Manage Web Application看到"domain\SPWebApp"被加到My Site host的Web application上

除此以外, 還會在MySite的Content Database加上權限啊

How People Picker work in SharePoint 2013

In the good old days, I mean SharePoint 2010 and previous versions, you would see People picker control always come with two icons. One is user verification button and another is address book. However in SharePoint 2013, you will find many pages with People Picker control missed these two icons.

在舊的SharePoint版本, People Picker都跟隨兩個小icon, 一個是Check name, 一個是Address book. 但在SharePoint 2013中很多頁面的People Picker control都不見了兩個icon (例如Assign user進SharePoint group的頁), 取而代之的是一個懂Auto complete的People Picker

image

最近遇到一個難題, 在沒有Address book情況下, 來自非SharePoint域名的用戶都加不到, 尋找不到, 即使已經在User Profile Application中確定那些用戶已經同步到User Profile database, 也是加不到. 在People Picker中輸入域名和用戶名, 都出現No exact match was found的錯誤。

我先直接講一下People Picker如何回傳結果, 首先, 當用戶輸入字元時 (可以是login, 中英人名, 或email)都有可能搜索到, People Picker會回傳以下三點的結果:

1. Client side Cache (並非在Browser history而是在Registry DomStore — HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\5.0\LowCache\Extensible Cache\DOMStore, 參考),
2. 指定的Domain Controller
3. 查找該people picker所在的Site Collection的User Information List (中文版Sharepoint會叫作「用戶資訊清單」

第1點方面, 只要用Browser的privacy mode就可以忽略

第2點, 預設People picker只會向SharePoint所在的domain DC詢問, 我上面遇到的就是這個問題, 我的SharePoint farm是裝在domainA.com之下. DomainA.com與DomainB.com是one-way trust, 必須要使用stsadm來設定好People Picker才懂得去找另一個域名的。(參考 Configure People Picker in SharePoint 2013)

致於第3點, 也是一個曾經令我頭痛的地方, 在我還未有設定好People Picker去查找DomainB.com前, 有一些Site Collection卻神奇的可以加DomainB.com的某些用戶, 有些則不能。要看User Information List有兩個方法, 一個是用PowerShell去列出來, 另一個是在網站URL後面加上/_Catalogs/Users/simple.aspx。使用PowerShell可以update, delete, add用戶, 但使用simple.aspx就只有readonly

User Information List是在以下情況下才會加入新名字的:
1. 有用戶被Assign到該Site collection底下的group
2. 有用戶在該Site Collection下觸發任何Change (add, modify, delete). 例如該SC容許Everyone參與權限(例如討論區), 任何用戶就可憑藉Everyone所授與的權限去make change, 然後被加到User Information List, 注意這並非即時的, 大概要3-5分鐘的時間

Office Web App fail to provide preview

公司的SharePoint 2013 farm, 裝備了Office Web App, 可以不用打開文件直接透過瀏覽器Preview.

但新安裝好的場遇到一個問題, 就是Excel文件都不能Preview, Mouse點下去只出現錯誤, 其他Word, PowerPoint, OneNote都能正確Preview

後來發覺是OWA不可以一開始就設定為View-only mode, 必須先以預設定「Edit and view」模式建立過一些文件, 然後才換成View-only.

設成Edit and view的PowerShell 如下:

Import-Module OffWebApps
Set-OfficeWebAppsFarm -EditingEnabled:$true

之後需要iisreset OWA

順帶一提要用OWA來編輯文件, 需要購買相關License, 一般來說只要用戶有MS Office 2013的license就可以用了:
http://technet.microsoft.com/en-us/library/ff431685(v=office.15).aspx

Office Web Apps licensing offers two options:

  • View-only. By default, Office Web Apps is view-only. View-only functionality is provided for free.
  • Edit and view. You’ll need to purchase an editing license to use the editing features of Office Web Apps with SharePoint 2013. You enable editing when you create the Office Web Apps Server farm.

If your organization licenses Office 2013 through a Volume Licensing program, you can enable Office Web Apps editing for SharePoint 2013 on-premises. This helps make sure that users have Office editing capabilities at home or in other locations where Office clients might not be installed. Editing licenses for Office Web Apps are not available for separate purchase.

For exact details about your license, refer to the Microsoft Software License Terms that is shown when you install Office Web Apps Server.

SharePoint 2013 provides new license enforcement that works with Office Web Apps. If you enable SharePoint licensing and then enable Office Web Apps editing, only the users who have the appropriate license can actually edit Office files in a browser. If no Office Web Apps editing licenses are applied for users, only viewing is supported.

For more information about how licensing works in SharePoint 2013, see Configure licensing in SharePoint Server 2013. The EditingEnabled parameter that enables editing is described in New-OfficeWebAppsFarm and Set-OfficeWebAppsFarm.

Files that are sent by the Share by link feature in SharePoint 2013 can be edited in Office Web Apps even when no editing license is present and when editing is disabled for the Office Web Apps Server farm.

 

 

香港的PMP考試

準備了半年, 今天終於成功考獲PMP。PMP全名是Project Management Professional Certification, 除了IT行業外, 其他需要Project Manager的行業如建築, 電工等的人, 如果有志當PM, 都可能需要這張證書。

根據PMI (即Project Management Institute) 的定義, PM是一種專業, 只要有PMP的資格, 擁有PMI-ism, 就可以橫跨各行去當PM。事實上, 我也認識有人從IT界的PM直接跳糟去工程界, 但我相信這種機會少之又少。

PMP的基本要求按此

達到學歷及工作經驗的要求後, 再加上35小時獲PMI認可的課程, 就可以去報考。這35小時你可以找坊間的教育中心, 由二千多到二萬多都有, 或是網上找遙距課程, 可以更平。我個人認為這35小時只是導讀吧了, 如果可以的話, 把錢和時間留來買和看參考書更好。

順帶提一下費用, 本人考的是5th Edition的試, 於2014年考時, 會員價考試費為US$405, 非會員US$555, 會員費用US$120, 所以想考PMP不可能不申請做會員的。

成為會員另一好處是, 會員可於官網免費下載PMBOK , PMBOK是PMP證書的教科書, 是必備的, 就算你買坊街的參考書, 參考書的某些章節也會叫你閱讀PMBOK作為比對, 另外, 考試中的用字 (Terms) 都是以PMBOK為準的。

全球的PMP考試承辦商為Prometic, 於香港唯一的考試場地在香港考試及評核局 (HKEAA), 地址在九龍新蒲崗爵祿街17號。

HKEAAHKEAA2

在HKEAA的五樓有一間Prometic專用的房間, 考試前可以在待考室收拾心情。考試時間有上下午兩節 0900-1300, 1330-1730. 注意, 在HKEAA附近幾乎沒有地方可以該你閒坐的, 所以早到了就乖乖走上五樓等吧 (沒有升降機)。

考試期間, 除了一張紙巾, 什麼都不可以帶進去, 你的食物飲料都要放考場外的休息區。每次出來想去洗手間再回來時, 都要重新檢查 (用金屬探測器…. 以及要求你把口袋全翻出來)。注意考試長達4小時, 而且冷氣有點凍, 最好帶水和外套, 需要的話帶一點小食和葯物以備不時之需。考試時請帶「HKID+信用卡」或「有你簽名的護照」。

最後, 給各位一些考試建議:

1. Rita的PMP參考書是坊間公認最好的, 而且它的題目最貼合實際考試的格式和深淺。
2. Ethic部份好像被抽起了 … 最少我的試完全不見了Ethic的部分。

SharePoint 2013 Prerequisite (for Win2008 R2 SP1)

如果安裝環境能接上互聯網, 執行SharePoint 2013安裝檔時會自動下載所謂「先決條件」(即使要先安裝好才能裝SP2013的種種軟件) 詳請看這

如果安裝環境不能上互聯網的話, 你把先決條件下載好, 放到某個資料夾, 然後執行以下這個CMD檔 (路徑自己改)

set PreReqPath="C:\Sharepoint-Prep"
C:\SharePoint_2013_DVD\PrerequisiteInstaller.exe /SQLNCli:%PreReqPath%\sqlncli.msi ^
    /PowerShell:%PreReqPath%\Windows6.1-KB2506143-x64.msu ^
    /NETFX:%PreReqPath%\dotNetFx45_Full_x86_x64.exe ^
    /IDFX:%PreReqPath%\Windows6.1-KB974405-x64.msu ^
    /Sync:%PreReqPath%\Synchronization.msi ^
    /AppFabric:%PreReqPath%\WindowsServerAppFabricSetup_x64.exe ^
    /IDFX11:%PreReqPath%\MicrosoftIdentityExtensions-64.msi ^
    /MSIPCClient:%PreReqPath%\setup_msipc_x64.msi ^
    /WCFDataServices:%PreReqPath%\WcfDataServices.exe ^
    /KB2671763:%PreReqPath%\AppFabric1.1-RTM-KB2671763-x64-ENU.exe ^
    /WCFDataServices56:%PreReqPath%\WcfDataServices56.exe

503 Service Unavailable

最近在一個新場安裝了SharePoint 2013, 依照舊程序, 安裝好後創建一個site collection, 然後這個site collection的IIS Application Pool改用一個低權限的帳號來跑, 當瀏覽該site collection時出現503 Service Unavailable的錯誤, 檢查IIS, 相應的Application pool顯示Stop. 重啟pool後再跑還是一樣。

依希記得503如IIS的執行權限有關, 反覆檢查pool的idenity用戶沒有打錯password, 還是一樣。但把該pool改由Farm Administrator帳號去執行就沒有錯誤, 能夠正常瀏覽到site collection。

經反覆求證後, 發現執行pool的帳戶必須要有Log on as a batch job的權限, 才能正常運作。正常來說, 當你在SharePoint的 Central Administration -> Security -> Configure service accounts, 把某個帳號分配到web application的application pool, SharePoint就會把該account放到IIS_IUSRS這個security group底下, 這個group預設就有Log on as a batch job的權限, 所以一般來說不會遇到我看到的錯誤。

可是, 在我的新場上, 由於某項group policy錯誤地執行了, 以致IIS_IUSRS沒有了Run as batch job權限。順帶一提, 執行Search Service的帳號需要Log on as a serviceRLog on as a serviceun as service的權限。

ref: Corey’s Guide to SharePoint Service Accounts

WARNING: The conversion of web application and most of the user to Claims mode is completed. However, one or more users could not be converted to Claims mode.

是咁的, 最近要把一個SharePoint 2010網站搬到SharePoint 2013, 在2010預設的認証模式(Authentication Mode)是Windows Classic, 在2013預設及建議都是用CLAIMS, 因此在舊場升級到新場的Site Collection, 盡可能要轉換成Claims, 避免日後的麻煩。

事實上, 我在測試時, 直接把SP2010 Classic mode的site collection, 以Attach content database的方法搬到SP2013 Claims mode 的web application底下, 直接運行, 舊user依舊可以登入, 完全沒有問題。但不怕一萬只怕萬一, 還是乖乖地依照Microsoft best practice去做轉換吧

Microsoft 建議的方法請參考這個網址, 我是依照當中的Convert SharePoint 2010 Products classic-mode web applications to SharePoint 2013 claims-based web applications來做, 簡單來說, 步驟為:

  1. 在SP2013場以Windows Classic mode 創建一個web application
  2. 把舊場的content DB移到新場, 以Mount-SPcontentdatabase 來attach 到新場
  3. 然後使用Convert-SPWebApplication –Identity “http://sharepoint.com" -From Legacy -To Claims -RetainPermissions 把web application由Classic轉成Claims

可是在我執行第三步時, 出現如下Warning:

Claims conversion warning

WARNING: The conversion of web application and most of the user to Claims mode is completed. However, one or more users could not be converted to Claims mode.

實在讓人頭大, 第一它沒有給我一個Correlation ID讓我去查log, 第二我測試登入搬到新場的site, 全部都成功登入, 到底是哪個user出現問題呢?

經過一輪研究後, 發現……

發現一) SharePoint 2013 April 2014 cumulative update 有 Claims conversion bug, 需要安裝 June 2014 CU來解決。

發現二) 在ULS log中, 只要找出 Category = CLAIMS Authentication 就可以找到相關log, 在我的測試中, 查看 Check level = unexpected 的, 就找到如下的字眼:

Statistics: ContentDatabases ‘2’, Site Collections ‘1’, Users Succeeded ‘0’, Users Failed ‘1’.

SPUser ‘1’: Could not get migration data for entity so SKIPPING. Check migrator for further logs. Entity Old Name: ‘vendordomain\administrator’

原來我的Conversion只有一個user有問題, 叫 ‘vendordomain\administrator’, 原因是舊場是由某Vendor建立的, 當時某vendor用他家的domain user登入過, 留下了user記錄, 在新場中根本沒有vendoerdomain, 當然不能轉換啦!

 

最後, 教大家如何確認user已經成功轉換, 最簡單的方法是轉換前和轉換後執行這一句:

Get-SPUser -Web “<site collection url>"

轉換前(Windows classic mode): domain\USERA
轉換後(CLAIMS): i:0#.w|domain\usera




Fail to run Product Configuration wizard due to missing update (but the update is applied!)

今天遇到個狀況, 就是Patch了Language Pack for SP1後, 不能執行Product Configuration Wizard

先說一下正常的更新(PATCH)步驟:

1. 在所有web和app server執行更新檔
2. 在所有web和app server執行Product Configuration Wizard
3. Reboot all servers

但今天在web服務器執行第2步時, 出現類似這個ERROR:

Server Patch missing

而當中的ERROR就是說你沒有裝某個Patch, 而這個Patch就是你正在裝的!

我嘗試重覆執行更新檔, 它說「There is no product affected by this package on this system」而不給執行, 然後Patch是不可以uninstall的, 怎麼辦?

這時有網友教我, 於miss了update的服務器執行一句PowerShell:

Get-SPProduct -Local

相關的registry就會更新, Product configuration wizard就可以跑啦!

參考