Register K2 for SharePoint with SharePoint O365 for K2 Five

พอดีมีโอกาสจะต้อง Config K2 for SharePoint ของ K2 Five เพื่อ Upload เอกสารจาก K2 ขึ้น SharePoint O365 ซึ่งเจอปัญหาระหว่างทางพอสมควร จึงอยากเขียน Blog นี้มา เพื่อทำเป็น Reference เผื่อในอนาคตนะครับ เผื่อใครที่จะเจอปัญหาเดียวกัน

ก่อนจะเริ่มขออ้างอิงสมัยก่อน แต่ก่อนนั้น ตอนที่เป็น K2 4.7 และ O365 ใหม่ๆ เราจะสามารถโยนเอกสารขึ้น SharePoint ได้ง่ายๆ โดย Register ผ่าน Service Instance ที่ชื่อว่า SharePoint Content ซึ่งเคยเขียนรายละเอียดไว้ที่ Blog นี้

แต่อนิจจา Service Instance นี้ได้หายไปจาก K2 Five เนื่องด้วยเหตุผลที่ว่า O365 ต้องเป็นการ Authentication ผ่าน oAuth เท่านั้น จึงทำให้กระบวนการ COnfiguration จะยากขึ้นหน่อย แต่ไม่ยากเกินไปครับ

ก่อนอื่นเลย จะต้องมี Prerequisite ดังนี้ครับ

  • K2 ต้องมี SSL ซึ่งก็คือ URL ของ K2 ต้องเป็น https นั้นเอง
  • เครื่อง K2 จะต้องเปิด Site เหล่านี้ เพื่อให้ O365 วิ่งลงมาเชื่อมต่อได้
    • /Runtime
    • /Identity
    • /autodiscover
  • เครื่อง K2 จะต้องออก Internet ได้ เพราะว่าต้องวิ่งไปหา trust.k2.com
  • ต้องใช้ Account ที่เป็น Tenant Admin ของ 365 เพราะว่าต้องสร้าง App Catalog ด้วย
  • Tenant Admin นั้นต้องมีสิทธิ์เป็น Admin ใน Server Right ของ K2
  • K2 กับ O365 ใช้ AAD เดียวกัน

ถ้าเราทำ Prerequisite เรียบร้อย เราก็พร้อมล่ะ มาเริ่มกันได้เลย

1. Set up App Catalog
ก็เข้าไปที่ O365 Portal Admin แล้วไปที่ SharePoint Admin Center แล้วกด Open ใน Menu Apps

หลังจากนั้น Click App Catalog แล้วก็ใส่ชื่อ App Catalog ที่เราต้องการ

เมื่อสร้างเสร็จก็จะได้ App Catalog หน้าตาประมาณนี้

2. Deploy K2 for SharePoint App ขึ้น App Catalog

ในกรณีที่เราต้องการเชื่อมต่อระหว่าง K2 on Premise ไปหา O365 ทาง K2 แนะนำให้ Deploy App จาก Folder Installer ขึ้นไป ซึ่งอยู่ที่ Installation/SharePoint Online/K2 for SharePoint.app เพื่อ Make sure ว่า App จะตรง version กัน

แต่ในกรณีที่เราต้องการเชื่อมต่อระหว่าง K2 Cloud ไปหา O365 อันนี้ให้ไป Download K2 Five for SharePoint จาก SharePoint Store ได้เลย

3. เมื่อทำการ Deploy App เสร็จ ก็ให้ไปที่ Add an app เพื่อ App “K2 for SharePoint” ขึ้นมาใน App Catalog

4. เมื่อ Add เสร็จแล้ว App นั้นจะไปอยู่ใน Site Contents เราก็ Click ที่ icon เพื่อทำการ Register ได้เลย

5. มาถึงขั้นตอนสำคัญ เมื่อ Click ไปจะขึ้นหน้า Wizard เพื่อให้เราใส่ URL ของ K2 ของเรา ซึ่งจำเป็นจะต้องใส่ https นะ เช่น ในที่นี้ เราก็ใส่ https://ventek-k2-53 แล้วกด Next ซึ่งการทำงานส่วนนี้ทาง K2 จะไปหา Description ของ Site ต่างๆ ผ่าน /autodiscover เพื่อทำการ Register ให้เรา (ผ่านหน้า relayingAdd)

6. จะมีการ Link ไปหา K2 URL จาก O365 เพื่อให้เราใส่ Login อีกครั้ง ถ้าสังเกตดู จะเห็นว่าตอนนี้ URL จะเป็นของ K2 ล่ะ ตรงนี้ให้เราใส่ Tenant Admin เหมือนเดิม เพื่อทำการ Register นะ ไม่อย่างนั้น จะเกิดปัญหา Authentication Error แบบนี้

ถ้าลงได้เรียบร้อยจะได้หน้าตาแบบนี้ ก็ปล่อยให้มันหมุนๆจนเสร็จ

สำหรับคนที่เจอปัญหา 404 File not found ซึ่งมักจะเป็นในกรณีที่มีการทำ Reverse Proxy

ให้ลองเข้า /Runtime/Runtime/Form/K2+Application+Configure+Server/ ดูว่าเข้าได้มั้ยเพราะว่าบาง Proxy เมื่อเห็น + ใน URL จะทำการ Ignore ไป เราต้องไป Allow มันนะ

สุดท้ายแล้วจะได้หน้าตาประมาณนี้มา

ณ ขั้นตอนนี้ คือเราทำการ Register เชื่อมต่อระหว่าง K2 ของเรา กับ O365 เป็นที่เรียบร้อย

7. ทำการ Registration Wizard โดย Click ที่ Menu “Registration Wizard” ภายใต้ Administration

8. Deploy App มาเราจะใช้ K2 for SharePoint ที่ Site ไหนบ้าง โดย Click ที่ Menu “Manage App Deployments (SharePoint)

ขั้นตอนนี้จะให้เราใส่ Site Collection บน O365 ที่เราต้องการ Enable App นี้ เราก็ใส่ URL ไปแล้วเลือก Apply All Paths ก็เป็นอันจบ

9. Activate App

เมื่อเราทำการ Setting ทั้งหมดเสร็จแล้วก็มาทำการ Activate App ภายใต้ Menu “Manage App Activation” ซึ่งจะให้เราเลือก Site Collection แล้วก็ทำการ Activate ได้เลย

ณ ตอนนี้เราลง App สมบูรณ์แล้ว ขั้นตอนต่อไปก็จะไปสร้าง SMO ที่ Site Collection ที่เราเชื่อมต่อ

10. สร้าง SMO ที่ Site Collection

ให้ไปที่ Site Contents แล้วเลือก Documents Library ที่เราต้องการ Upload เอกสารไป ที่ Site Contents

จะเห็นว่าที่ Ribbon Menu จะมี Menu K2 ขึ้นมาล่ะ เราก็เลือก Application

เราก็เลือกจะสร้าง SMO ซึ่งพอเสร็จขั้นตอนนี้ เราจะเห็นว่าจะมีการสร้าง Service Instance ใหม่ให้เรา ภายใต้ SharePoint 2013 Service Instance แล้วเราก็จะสามารถสร้าง SMO จาก Document Library ได้ล่ะ

servicetester

โดย SMO นี้ก็จะมี Method ให้เราใช้หลายอย่าง แต่ที่เราจะใช้ก็คือ Upload Documents นั้นเอง

ลองเอา test.txt ขึ้นไป ก็จะได้ประมาณนี้บน O365

เป็นอันว่าจบกระบวนการ

Key Takeaway ก็คือ

  1. ใช้ Account Tenant ในการ Login และเชื่อมต่อ ของทั้งกระบวนการ
  2. ถ้ามีการใช้ Reverse Proxy ต้องระวังเรื่องเครื่องหมาย + ที่โดน Ignore
  3. ถ้าเจอ Error เรื่อง Authenticate SignoutURL ลอง run อีกรอบ เพราะว่าเจอเหมือนกัน

[K2 for SharePoint] – Configuration Tip สำหรับ SharePoint 2016

สวัสดีครับ รอบนี้ได้ configure K2 4.7 กับ SharePoint 2016 มาเลยมี tip เพิ่มเติมจาก blog รอบที่แล้ว (ดูได้ที่นี่) มาให้อ่านกัน

ก่อนลง SharePoint 2016 จะเหมือนกับ 2013 คือ ต้องลง prerequisite installer ก่อน แต่ในรอบนี้ ถึงแม้ server เราจะต่อ internet ได้แต่ก็ไม่สามารถ download อะไรได้เลย สุดท้ายก็ต้องมา download เอง แต่เดี๋ยวก่อน!! ถ้าเรา download มาเองแล้วมาลงเอง อาจจะ error ใน step configure SharePoint ได้ ใน step นี้ แนะนำ http://nikcharlebois.com/installing-the-sharepoint-2016-prerequisites-offline-using-powershell/ ให้ download file จากในนี้ได้เลย และให้ใส่ command ตาม เป็นอันจบ

Step หลังจากนี้ ก็ทำเหมือนกับ SharePoint 2013 เลย หลังจากลงเสร็จก็ enable service ตามด้านล่าง (แนะนำให้ใช้ command line ทั้งหมด เพราะว่า ถ้าทำผ่าน UI จะ set บางส่วนไม่ได้)

  • Subscription Service

    $account = Get-SPManagedAccount <Account Name>
    $appPoolSubSvc = New-SPServiceApplicationPool -Name SettingsServiceAppPool -Account $account
    $appSubSvc = New-SPSubscriptionSettingsServiceApplication -ApplicationPool $appPoolSubSvc -Name SettingsServiceApp -DatabaseName <Database Name>
    $proxySubSvc = New-SPSubscriptionSettingsServiceApplicationProxy -ServiceApplication $appSubSvc

  • App Management Service

    $account = Get-SPManagedAccount <Account Name>
    $appPoolAppSvc = New-SPServiceApplicationPool -Name AppServiceAppPool -Account $account
    $appAppSvc = New-SPAppManagementServiceApplication -ApplicationPool $appPoolAppSvc -Name AppServiceApp -DatabaseName <Database Name>
    $proxyAppSvc = New-SPAppManagementServiceApplicationProxy -ServiceApplication $appAppSvc

  • User Profile Service

    $appPool = New-SPServiceApplicationPool -Name HostedAppPool -Account (Get-SPManagedAccount “<Account Name>“)
    $app_UPA = New-SPProfileServiceApplication -Name UPA -PartitionMode -ApplicationPool $appPool

    ตรงนี้จะมีความต่างจาก SharePoint 2013 นิดหน่อย ตรงที่ไม่มี User Profile Synchronization Service ให้ start แต่ในมุมของเราให้สร้าง User Profile Service ให้เรียบร้อย พอสร้างแล้วจะมีปุ่มให้กด Manage

UPS01

Configure Synchronization Connections ให้เรียบร้อย ก็จะใช้งานได้ปกติ

UPS02

UPS03

  • Enable NetBIOS สำหรับ User Profile Service Name ให้ไปดูที่หน้า App Management Service แล้วใส่ชื่อตาม

    $UserProfileServiceApp = Get-SPServiceApplication -name <User Profile Service Name>
    $UserProfileServiceApp.NetBIOSDomainNamesEnabled = 1
    $UserProfileServiceApp.Update()

  • Shell Admin grant SPShellAdmin ให้ user ที่จะเป็นคนรัน app deployment

    Add-SPShellAdmin -UserName <Account Name>
    Get-SPDatabase | ?{$_.Name -eq “<WSS Content DB>“} | Add-SPShellAdmin -Username <Account Name>
    Get-SPDatabase | ?{$_.Name -eq “<SharePoint Admin DB>“} | Add-SPShellAdmin -Username <Account Name>
    Get-SPDatabase | ?{$_.Name -eq “<SharePoint Config DB>“} | Add-SPShellAdmin -Username <Account Name>
    Get-SPDatabase | ?{$_.Name -eq “<App Management Service DB>“} | Add-SPShellAdmin -Username <Account Name>
    Get-SPDatabase | ?{$_.Name -eq “<User Profile Service DB>“} | Add-SPShellAdmin -Username <Account Name>
    Get-SPDatabase | ?{$_.Name -eq “<User Profile DB>“} | Add-SPShellAdmin -Username <Account Name>

ถ้าทำเรียบร้อยก็ให้รัน K2 for SharePoint App Deployment ได้เลย 🙂

[K2 SmartForms]-Upload File แบบใหญ่ๆ

สวัสดีครับ กลับมาเจอกันอีกแล้วในปลายปีที่เหมาะกับการไปเที่ยว แต่หลายๆ คนก้ไม่ได้ไปเที่ยว ยังต้องนั่งทำงานอยู่ (เหมือนผม T^T)  คราวนี้เราจะพูดถึงเรื่องที่เกือบทุก application ต้องใช้ นั่นก็คือ ไฟล์แนบ

โดยปกติไฟล์แนบที่ใช้กันใน application จะมีทางเลือกในการเก็บไฟล์ตามด้านล่าง

  1. เก็บไฟล์ใน database => สะดวก, สามารถแยก archive ได้ แต่ถ้าเก็บเยอะๆ หรือไฟล์ขนาดใหญ่ ก็จะมีปัญหาเรื่อง performance
  2. เก็บไฟล์ใน share path => เก็บไฟล์ขนาดใหญ่ได้ แต่ archive ลำบาก และในส่วนของ K2 จะต้องลง component เพิ่มเพื่อเก็บ file ลง share drive
  3. เก็บไฟล์ใน system อื่น => ที่เคยเจอมาก็เป็น SharePoint (แต่สุดท้ายก็ลงใน database อยู่ดี), WebService (ที่ไม่รู้เอาไปเก็บปลายทางไว้ที่ไหน) หรืออาจจะเป็น Document Management อย่างอื่นๆ

ในด้าน Document Management Solution ที่เกี่ยวกับ K2 ปกติจะเป็นการใช้ K2 + SharePoint โดย K2 จะเป็นตัวช่วยในการทำ application และ SharePoint จะเป็น storage ในการเก็บไฟล์ ถ้าเป็นไฟล์ขนาดเล็ก ก็คงไม่ค่อยมีปัญหาอะไร แต่ถ้าต้องเก็บไฟล์ขนาดใหญ่ล่ะ จะทำอย่างไรดี???

มาดูในฝั่ง K2 กันก่อน จาก recommendation K2 จะรองรับไฟล์ขนาดประมาณ 300 MB (ผ่านการเรียก SmartObject เพื่อ save ไฟล์ลง database) แต่ถ้าเกินกว่านี้ ไม่แนะนำ และอาจจะเจอ error ได้ ดังนั้น option ที่มีคือ การเก็บไฟล์ตรงไปที่ destination ตรงๆ เลย พอคิดได้แล้ว ก็จะมีคำถามอยู่ในใจว่า เราจะสามารถเอา file มาจาก file attachment control ของ SmartForms มา upload ได้อย่างไร?

การทำงานของ file attachment control ก็จะเหมือน control สำหรับทำ file attachment ทั่วไป คือ จะ load file ไปวางไว้ใน temporary folder ซักที่หนึ่ง แล้วค่อยเอา file ไปใช้งานต่อ โดยจะใช้ temporary folder structure ตามด้านล่าง

TempFilePath Info

(A) – เป็น fix path อยู่ใน C:\ProgramData\IsolatedStorage

(B) – จะต่างกันไปตามแต่ละ server

(C) – จะเหมือนกันในทุก server คือ StrongName.sv3o0piwfpl3mmnmzxoxnb4xggpgeagc\AssemFiles

(D) – จะ generate ใหม่ทุกครั้งที่แนบ file สามารถหาได้จาก file attachment control

TempFilePath

เมื่อเลือก file เพื่อ upload ไปแล้ว เวลาดึงข้อมูลออกมาจาก file attachment control จะได้มาในรูปของ xml ตามด้านล่าง

<collection>TestC.txt4uko05zx.hsd\TestC.txt</collection>

โดยตัวที่ผมทำเป็นตัวหนาไว้ ก็คือค่า (D) นั่นเอง สำหรับ solution ที่ผมได้ทดลองทำจะเป็นการ upload file ขึ้น SharePoint สิ่งที่ผมทำมีดังนี้

  1. เอา xml ที่เห็นด้านบน มาตัด เพื่อหาชื่อ file และมาต่อกับ temporary folder เพื่อสามารถเปิดอ่าน file ขึ้นมาได้

//fileInfo คือ

string fileName = fileInfo.Substring(fileInfo.IndexOf(“‘FileName’><value>”) + 18, (fileInfo.IndexOf(“</v”) – fileInfo.IndexOf(“‘FileName’><value>”) – 18));

string fileExtension = fileName.Substring(fileName.IndexOf(“.”));

string currentDate = DateTime.Now.ToString(“yyyyMMddHHmmssff”);

//Rename file name to be unique => ใส่วันที่ และเวลาเพื่อให้ชื่อ file ไม่ซ้ำ
fileName = fileName.Replace(fileExtension, “”) + “-” + currentDate + fileExtension;

 

string filePath = fileInfo.Substring(fileInfo.IndexOf(“‘FilePath'”));
filePath = filePath.Substring(filePath.IndexOf(“‘FilePath’><value>”) + 18, (filePath.IndexOf(“</v”) – filePath.IndexOf(“‘FilePath’><value>”) – 18));

//หา file path มาแล้ว ต่อด้วย .temp เพราะตอน file ถูกใส่ใน temporary folder control จะ add .temp ให้หลังชื่อ file
filePath = tempFilePath + filePath + “.temp”;

2.  ใช้ FileStream class สำหรับอ่าน file ขึ้นมาเป็น stream

FileStream contentStream = new FileStream(filePath, FileMode.Open, FileAccess.Read);

3.  Upload file ขึ้น SharePoint

//Url ที่ใช้ต้องเป็น url ถึงระดับ site ที่ต้องการ เช่น http://portal/sites/TestSite

ClientContext ctx = new ClientContext(sharePointUrl);

Web web = ctx.Web;

FileCreationInformation flciNewFile = new FileCreationInformation();
flciNewFile.ContentStream = contentStream;
flciNewFile.Url = fileName;
flciNewFile.Overwrite = true;

List docs = web.Lists.GetByTitle(libraryName);
Microsoft.SharePoint.Client.File uploadFile = docs.RootFolder.Files.Add(flciNewFile);
ctx.Load(uploadFile);
ctx.ExecuteQuery();

หลังจากสร้างเป็น class เรียบร้อย เราก็สามารถเอา class นี้ไปเรียกใช้ผ่าน SmartObject ได้เป็นอันเสร็จพิธี 🙂  แล้วพบกันใหม่คราวหน้าครับ

อนึ่ง. ได้ทดลองและทดสอบกับ K2 4.6.9 + SharePoint Foundation 2013 ถ้าเอาไปใช้กับ version อื่น โปรดตรวจสอบความถูกต้องก่อนใช้

อสอง. reference link ของ SharePoint upload large file มาจาก https://msdn.microsoft.com/en-us/library/office/dn904536.aspx

[K2 for SharePoint] – Configuration Checklist

สวัสดีครับ ช่วงที่ผ่านมาได้มีโอกาส configure K2 for SharePoint 2013 แบบจริงจัง (คือ ปกติไม่จริงจัง ใช่ไหม = =’) และพบปัญหาในการทำค่อนข้างเยอะ เพราะ step ในการ configure ส่วน SharePoint ที่ต้องทำเยอะจนจำไม่ไหว เลยอยากจด step คร่าวๆ เพื่อเป็นแนวทางสำหรับผู้ที่สนใจ อยากลอง หรือโดนบังคับให้ทำ (ซึ่งคิดว่า กลุ่มหลังสุดน่าจะเยอะกว่า 555) และเผื่อกันลืม (จริงๆ สาเหตุที่เขียนน่าจะเป็นอันหลังนี่แหละ)

 

ต้องขอเกริ่นก่อนว่า (ข้างบนยาวๆ นี่ไม่ใช่รึ??) การ configure K2 for SharePoint 2013 จะต่างกับ K2 for SharePoint 2010 ค่อนข้างเยอะ อย่างแรกคือ ไม่จำเป็นที่จะต้องไปลง program K2 for SharePoint ที่เครื่อง SharePoint อีกต่อไป สิ่งที่ต้องทำก็คือ ลง K2 for SharePoint ที่เครื่อง K2 และไป run โปรแกรม Application Deployment บนเครื่อง SharePoint App อย่างที่สองคือ ไม่ support SharePoint foundation แล้ว (เพราะ Microsoft ไม่ได้เปิดให้ 3rd party tool เข้าไป connect) แต่ถ้าใช้เป็น SharePoint 2010 site บน SharePoint 2013 ก็ยังจะสามารถใช้ feature บางส่วนของ K2 for SharePoint ได้

 

มาเริ่มกันที่ส่วนแรก ก่อนที่จะ configure User ที่จะใช้ run Application Deployment ต้องเตรียม permission ตามด้านล่าง

  • Local Administrator บน SharePoint Server
  • K2 Administrator (ให้สิทธิ์ Admin บน Server Rights ของ K2)
  • Site Collection Administrator บน App Catalog Site Collection
  • db_owner บน database SharePoint_Config
  • SharePoint Shell Access role (grant role SharePoint Shell Access ให้ user ดูวิธีได้ตามนี้ https://technet.microsoft.com/en-us/library/ff607596(v=office.15).aspx)
  • User ที่ใช้ run ต้องไม่เป็น SharePoint Service Account หรือเป็น Application pool account ของ SharePoint site ใดๆ

 

SharePoint Service ที่ต้องใช้สำหรับการทำ Application Deployment

App deployment

  • App Management Service
  • Subscription Setting Service
  • User Profile Service

สำหรับ App Management Service และ Subscription Setting Service สามารถทำตาม step ใน link นี้ได้เลย https://technet.microsoft.com/en-us/library/fp161234(v=office.15).aspx  *บางคนที่คุ้นเคยกับ help ของ Microsoft ปกติจะมีวิธีทำมาให้ 2 แบบคือ ผ่าน UI หรือ command แต่สำหรับ article นี้ ส่วนที่ใช้ power shell command จะต้อง run นะครับ ไม่มี UI มาให้ ดังนั้นห้ามข้าม step ครับ

สิ่งที่จะเป็นคำถามแรกหลังจากเปิดหน้านี้คือ DNS กับ CNAME ถ้าเรามี permission สำหรับสร้าง DNS ก็จะสบายหน่อย แต่ถ้าไม่มีสิ่งที่ทำได้คือ ให้ fix ชื่อ ของ application ที่จะใช้ไว้ใน host file ของ SharePoint server ก่อน เพื่อให้สามารถ configure ได้ ซึ่งสิ่งที่เราต้องรู้ใน step นี้ 2 อย่างคือ domain name และ prefix

Domain name แนะนำให้ใช้ชื่อเดียวกับ domain ที่เราอยู่ ส่วน Prefix จะเป็นอะไรก็ได้ แต่ถ้าให้ดูง่ายก็ควรจะเป็น Apps นำหน้า และใส่ environment ตามหลัง เช่น AppsDev (แต่ถ้าเป็น production อาจจะใช้ Apps เลยก็ได้) ในส่วนนี้ถ้าเราต้องใส่ url ใน host file ไว้ก่อน ให้ใส่เป็น -K2Test ไว้ด้วย เพราะตัว Application Deployment จะพยายาม ping ชื่อ App ที่เป็น -K2Test เพื่อทดสอบว่า DNS set ไว้ถูกต้องหรือไม่ แต่หลังจาก configure เสร็จเรียบร้อยแล้ว ยังไงก็ต้อง set DNS นะครับ เพราะตอนสร้าง App ใช้จริงๆ SharePoint จะสร้างเป็น url Prefix + Generate ID + Domain Name ซึ่งไม่สามารถเดาได้ว่า url จะเป็นชื่ออะไรครับ

Host Fix

ตัวอย่างการ fix ใน host

  สำหรับ User Profile Service สามารถทำตาม step ใน link นี้ https://technet.microsoft.com/en-us/library/ee721049(v=office.15).aspx  *ทำถึง Phase 2 – Create a synchronization connection to a directory service ก็พอ จากนั้นให้ grant permission ให้ user ที่จะเอาไป run Application Deployment เป็น Full Control ใน User Profile Service 

 

Check list

  • ลง K2 for SharePoint บนเครื่อง K2 โดยใช้ K2 service account
  • ตรวจสอบ Service ของ SharePoint ที่เปิดว่า เปิดครบหรือไม่
  • Create app catalog บน SharePoint และ grant Contribute permission ให้ user ที่จะ deploy
  • run Application Deployment ในเครื่อง SharePoint โดย login ไปด้วย user ที่เรา set permission ไว้ด้านบน (ใช้ K2 service account และ grant สิทธิให้ตามด้านบนก็ได้ แต่เหมือนเคยอ่านเจอว่า ควรจะแยกให้เป็น user อีกอันไปเลย) สามารถดู step โดยละเอียดได้ที่นี่ http://help.k2.com/onlinehelp/K2ForSharePoint/ICG/4.6.11/default.htm#Install_Topics/OnPrem/On-Premises_Installation.htm%3FTocPath%3DInstall%7CSharePoint%25202013%2520(On-Prem)%2520Installation%7C_____0
  • สร้าง site ใหม่สำหรับทดสอบ และลองหา K2 for SharePoint app จาก App catalog และกด Add เข้า site

 

หลังจากผ่าน step มามากมาย เราก็จะได้เห็นหน้านี้จนได้ T^T

K2 for SharePoint

 

หวังว่า จะเป็นประโยชน์กับคนที่ต้องทำนะครับ สำหรับวันนี้ขอลาไปก่อนครับ