Hi,
Before deployment of
Codification, below is the required configuration in the site
1/ Check if Chrono config list
exists, if not, create it with columns ChronoFieldColumnName and
ChronoIncrementValue
2/ Check if target document
library exists, if not, report error and stop execution
3/ populate Chrono config list
with details from the target list i.e. add Target list GUID under Title Column,
text ‘Chrono’ under ChronoFieldColumnName
4/ Check if Codification config
list exists, if not, create it with columns
SourcePrefix,SourcePostfix,TargetColumn,FormatDigit,WebUrl,SiteUrl,LibraryName
5/ Add the chrono, BU, Entity
and Codification fields in target document library
6/ if doc lib, set sets settings
to enforce display of edit form after doc creation
if list make the field mandatory
7/ Add the content editor web
part to the document library->editform.aspx
8/Assign the txt link to
the content editor link
// Codification.bat
@ECHO OFF
PowerShell -NoProfile -ExecutionPolicy
Bypass -Command "&
'C:\DeploymentScript\CodificationDeploymentScript\CodificationScript.ps1'"
PAUSE
// CodificationInputs.xml
<?xml version="1.0"
encoding="utf-8"?>
<Inputs>
<ConnectSPConfigOnline
SiteURL="siteurl" UserName="username"
Password="password"></ConnectSPConfigOnline>
<ConnectSPOnline
SiteURL="siteurl " UserName="username"
Password="password"></ConnectSPOnline>
<ChronoConfigList
Title="MC2ChronoConfigList" URL="MC2ChronoConfigList"
Template="GenericList"
ChronoFieldColumnName="ChronoFieldColumnName"
ChronoIncrementValueColumnName="ChronoIncrementValue"/>
<CodificationConfigList Title="MC2CodificationConfigList"
URL="MC2CodificationConfigList" Template="GenericList"
SourcePrefixColumnName="SourcePrefix"
SourcePostfixColumnName="SourcePostfix"
TargetColumnColumnName="TargetColumn"
FormatDigitColumnName="FormatDigit"
FormatDigitColumnValue="{SourcePrefix} {Chrono:4.d} {SourcePostfix}"
WebUrlColumnName="WebUrl" SiteUrlColumnName="SiteUrl"
LibraryColumnName="LibraryName"/>
<ChronoConfigListFields>
<ChronoConfigListField Title="ChronoFieldColumnName"
InternalName="ChronoFieldColumnName" Group="ListGroup"
Type="Text"/>
<ChronoConfigListField
Title="ChronoIncrementValue" InternalName="ChronoIncrementValue"
Group="ListGroup"
Type="Number"/>
</ChronoConfigListFields>
<ChronoTargetLists>
<ChronoTargetList Title="subsitecdoclib"
URL="subsitecdoclib" Template="DocumentLibrary"
ContentType="Item" ListFieldTitle="Chrono" ListFieldInternalName="Chrono"
ListFieldGroup="ListGroup" ListFieldType="Number"
ListFieldIncrementValue="1"/>
</ChronoTargetLists>
<CodificationConfigListFields>
<CodificationConfigListField Title="SourcePrefix"
InternalName="SourcePrefix" Group="ListGroup"
Type="Text"/>
<CodificationConfigListField
Title="SourcePostfix" InternalName="SourcePostfix"
Group="ListGroup"
Type="Text"/>
<CodificationConfigListField
Title="TargetColumn" InternalName="TargetColumn"
Group="ListGroup" Type="Text"/>
<CodificationConfigListField
Title="FormatDigit" InternalName="FormatDigit"
Group="ListGroup" Type="Text"/>
<CodificationConfigListField Title="WebUrl"
InternalName="WebUrl" Group="ListGroup"
Type="Text"/>
<CodificationConfigListField
Title="SiteUrl" InternalName="SiteUrl"
Group="ListGroup" Type="Text"/>
<CodificationConfigListField
Title="LibraryName" InternalName="LibraryName"
Group="ListGroup" Type="Text"/>
</CodificationConfigListFields>
<CodificationTargetLibs>
<CodificationTargetLib
Title="subsitecdoclib" URL="subsitecdoclib"
Template="DocumentLibrary" ContentType="Item"
ListFieldGroup="ListGroup" ListFieldType="Text"
ListSourcePostfixFieldTitle="Entity"
ListSourcePostfixFieldInternalName="Entity" ListTargetColumnFieldTitle="Codification"
ListTargetColumnFieldInternalName="Codification"
ListSourcePrefixFieldTitle="BU"
ListSourcePrefixFieldInternalName="BU"/>
</CodificationTargetLibs>
<AddWebParts>
<AddWebPart
Title="CodificationWebPart" RelativePageUrl="/sites/MC2Mig-DevSite/subsitec/subsitecdoclib/Forms/EditForm.aspx"
WebPartPath="C:\JB\DeploymentScript\CodificationDeploymentScript\CodificationWebPart.webpart"
ContentLink="/sites/MC2Mig-DevSite/Style%20Library/js/Codification.txt"/>
</AddWebParts>
</Inputs>
Output
##############################################################
Logging #########################################
$date= Get-Date -format
MMddyyyyHHmmss
start-transcript -path
.\Log_$date.doc
###################################################
Get input parameters from XML ###############################
$outChronoItems =
New-Object System.Collections.Generic.List[System.Object]
$outCodificationItems =
New-Object System.Collections.Generic.List[System.Object]
# Get content from XML
file
[xml]$xmlData=Get-Content
".\CodificationInputs.xml"
# ConnectSPOnline
node
[System.Xml.XmlElement]$connectSPOnline
= $xmlData.Inputs.ConnectSPOnline
$siteURL=$connectSPOnline.SiteURL
$userName=$connectSPOnline.UserName
$password=$connectSPOnline.Password
# ConnectSPConfigOnline
node
[System.Xml.XmlElement]$connectSPConfigOnline
= $xmlData.Inputs.ConnectSPConfigOnline
$siteConfigURL=$connectSPConfigOnline.SiteURL
$userNameConfig=$connectSPConfigOnline.UserName
$passwordConfig=$connectSPConfigOnline.Password
#Get Codification Config
list details
[System.Xml.XmlElement]$configCodificationList
= $xmlData.Inputs.CodificationConfigList
$configCodificationListTitle=$configCodificationList.Title
$configCodificationListUrl=$configCodificationList.URL
$configCodificationListTemplate=$configCodificationList.Template
$configCodificationListSourcePrefixColumnName=$configCodificationList.SourcePrefixColumnName
$configCodificationListSourcePostfixColumnName=$configCodificationList.SourcePostfixColumnName
$configCodificationListTargetColumnColumnName=$configCodificationList.TargetColumnColumnName
$configCodificationListFormatDigitColumnName=$configCodificationList.FormatDigitColumnName
$configCodificationListFormatDigitColumnValue=$configCodificationList.FormatDigitColumnValue
$configCodificationListWebUrlColumnName=$configCodificationList.WebUrlColumnName
$configCodificationListSiteUrlColumnName=$configCodificationList.SiteUrlColumnName
$configCodificationListLibraryColumnName=$configCodificationList.LibraryColumnName
# Codification Target Libs
node
[System.Xml.XmlElement]$codificationtargetlibs
= $xmlData.Inputs.CodificationTargetLibs
# Target List Fields node
#[System.Xml.XmlElement]$listfields
= $xmlData.Inputs.ListFields
# Target Config List
Fields node
[System.Xml.XmlElement]$CodificationConfiglistfields
= $xmlData.Inputs.CodificationConfigListFields
# Web Parts node
[System.Xml.XmlElement]$webparts
= $xmlData.Inputs.AddWebParts
#########Chrono
#Get Config list details
[System.Xml.XmlElement]$configChronoList
= $xmlData.Inputs.ChronoConfigList
$configChronoListTitle=$ConfigChronoList.Title
$configChronoListUrl=$ConfigChronoList.URL
$configChronoListTemplate=$ConfigChronoList.Template
$configListChronoFieldColumnName=$ConfigChronoList.ChronoFieldColumnName
$configListChronoFieldIncrementValue=$ConfigChronoList.ChronoIncrementValueColumnName
# Target Lists node
[System.Xml.XmlElement]$chronotargetlists
= $xmlData.Inputs.ChronoTargetLists
# Target List Fields
node
[System.Xml.XmlElement]$chronolistfields
= $xmlData.Inputs.ListFields
# Target Config List
Fields node
[System.Xml.XmlElement]$ChronoConfiglistfields
= $xmlData.Inputs.ChronoConfigListFields
##########################################################
Get Credentials ######################################
function
GetCredentials()
{
try
{
write-host -ForegroundColor Green "Get Credentials and connect to SP
Online site: " $siteURL
#
Convert password to secure string
$secureStringPwd
= ConvertTo-SecureString -AsPlainText $Password -Force
#
Get the credentials
$credentials
= New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList
$userName,$secureStringPwd
#
Connect to SP online site
Connect-PnPOnline
–Url $siteURL –Credentials $credentials
}
catch{
write-host $_.Exception.Message;
}
}
function
GetConfigCredentials()
{
try
{
write-host
-ForegroundColor Green "Get Credentials and connect to SP Online site for
COnfig: " $siteConfigURL
#
Convert password to secure string
$secureConfigStringPwd
= ConvertTo-SecureString -AsPlainText $passwordConfig -Force
#
Get the credentials
$credentialsConfig
= New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList
$userNameConfig,$secureConfigStringPwd
#
Connect to SP online site
Connect-PnPOnline
–Url $siteConfigURL –Credentials $credentialsConfig
}
catch{
write-host $_.Exception.Message;
}
}
#######################################################
Create Codification Configuration List#############################
function
CreateCodificationConfigList()
{
try
{
write-host -ForegroundColor Green "Creating Codification Config
List"
$getConfigList=Get-PnPList -Identity $configCodificationListUrl
#
Check if list exists
if($getConfigList)
{
write-host
-ForegroundColor Magenta $listURL " - Codification Config List already
exists"
}
else
{
#
Create new
list
write-host -ForegroundColor Magenta "Creating
Codification Config list: "
$configCodificationListUrl
New-PnPList -Title $configCodificationListTitle -Url
$configCodificationListUrl -Template
$configCodificationListTemplate
}
}
catch
{
write-host $_.Exception.Message;
}
}
#################################################################Create
Configuration List Fields#####################################
function
CreateCodificationConfigListFields()
{
try
{
write-host -ForegroundColor Green "Creating Codification Config List
Fields"
# Loop through List Fields XML node
foreach($CodificationConfiglistfield in
$CodificationConfiglistfields.CodificationConfigListField)
{
# Get List Field node parameters
$CodificationConfiglistfieldTitle=$CodificationConfiglistfield.Title
$CodificationConfiglistfieldinternalname=$CodificationConfiglistfield.InternalName
$CodificationConfiglistfieldgroup=$CodificationConfiglistfield.Group
$CodificationConfiglistfieldtype=$CodificationConfiglistfield.Type
$getConfigListFields=Get-PnPField -List $configCodificationListUrl
foreach($field in $getConfigListFields)
{
if($field.InternalName -eq $CodificationConfiglistfieldinternalname)
{
$tag=$tag+1;
}
}
if($tag)
{
write-host -ForegroundColor Magenta $CodificationConfiglistfieldTitle
"-List Field Already exists"
}
else
{
Add-PnPField -List $configCodificationListTitle -DisplayName
$CodificationConfiglistfieldTitle -InternalName
$CodificationConfiglistfieldinternalname -Type $CodificationConfiglistfieldtype
-Group $CodificationConfiglistfieldgroup -AddToDefaultView
}
}
}
catch
{
write-host $_.Exception.Message;
}
}
function
HideCodificationConfiglist()
{
try
{
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client")
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client.Runtime")
write-host -ForegroundColor Green "Get Credentials and connect to SP
Online Root site: " $siteConfigURL
# Convert password to secure string
$secureStringConfigPwd = ConvertTo-SecureString -AsPlainText $passwordConfig
-Force
#Setup Credentials to connect
$credentialsConfig = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($userNameConfig,$secureStringConfigPwd)
#Set up the context
$context = New-Object Microsoft.SharePoint.Client.ClientContext($siteConfigURL)
$context.Credentials = $credentialsConfig
#Get the List
$list = $context.Web.Lists.GetByTitle($configCodificationListTitle)
$list.Hidden = $true
$list.Update()
$context.ExecuteQuery()
Write-Host "List Hidden Successfully!"
}
catch
{
write-host $_.Exception.Message;
}
}
#################################################################################################################
#################################################################Create
Target Lib#####################################
function
CreateTargetLibs()
{
try
{
write-host -ForegroundColor Green "Creating Target Libs"
# Loop through List XML node
foreach($codificationtargetlib in $codificationtargetlibs.CodificationTargetLib)
{
# Get List node parameters
$listTitle=$codificationtargetlib.Title
$listURL=$codificationtargetlib.URL
$listTemplate=$codificationtargetlib.Template
$listItemTemplate=$codificationtargetlib.ContentType
#$listFieldTitle=$list.ListFieldTitle
#$listFieldInternalName=$list.ListFieldInternalName
$listFieldGroup=$codificationtargetlib.ListFieldGroup
#
$listSourcePostfixFieldTitle=$codificationtargetlib.ListSourcePostfixFieldTitle
$listSourcePostfixFieldInternalName=$codificationtargetlib.ListSourcePostfixFieldInternalName
$listTargetColumnFieldTitle=$codificationtargetlib.ListTargetColumnFieldTitle
$listTargetColumnFieldInternalName=$codificationtargetlib.ListTargetColumnFieldInternalName
$listSourcePrefixFieldTitle=$codificationtargetlib.ListSourcePrefixFieldTitle
$listSourcePrefixFieldInternalName=$codificationtargetlib.ListSourcePrefixFieldInternalName
#write-host $listSourcePrefixFieldTitle
# Get the list object
$getList=Get-PnPList -Identity $listURL
$getListFields=Get-PnPField -List
$listTitle
# Check if list exists
if($getList)
{
write-host -ForegroundColor Magenta $listURL " - List
already exists"
$listGUID=Get-PnPList -Identity
$listURL
#$outCodificationItems.Add($listGUID.Id.ToString()+";"+$listFieldTitle)
#$outCodificationItems.Add($listGUID.Id.ToString()+";"+$listFieldTitle+":"+$listSourcePostfixFieldTitle+"@"+$listTargetColumnFieldTitle)
#$outCodificationItems.Add($listGUID.Id.ToString()+";"+$listSourcePrefixFieldTitle+":"+$listSourcePostfixFieldTitle+"@"+$listTargetColumnFieldTitle)
$outCodificationItems.Add($listGUID.Id.ToString()+";"+$listTitle);
$outCodificationItems.ToArray()
if($listTemplate -eq "DocumentLibrary")
{
write-host $listTitle "is a document
library"
$doclb=Set-PnPList -Identity $listURL -EnableContentTypes $true
}
}
else
{
# Create new list
write-host -ForegroundColor Magenta "Target library is
not available: " $listURL
exit
}
#SourcePrefix
foreach($field in $getListFields)
{
if($field.InternalName -eq $listSourcePrefixFieldInternalName)
{
$tag=$tag+1;
}
}
if($tag)
{
write-host -ForegroundColor Magenta $listSourcePrefixFieldTitle "-List
Field Already exists"
}
else
{
$fielditem=Add-PnPField -List $listTitle -DisplayName
$listSourcePrefixFieldTitle -InternalName $listSourcePrefixFieldInternalName
-Type Text -Group $listfieldgroup -AddToDefaultView -Required
}
#SourcePostfix
foreach($field in $getListFields)
{
if($field.InternalName -eq $listSourcePostfixFieldInternalName)
{
$tag=$tag+1;
}
}
if($tag)
{
write-host -ForegroundColor Magenta $listSourcePostfixFieldTitle "-List
Field Already exists"
}
else
{
$fielditem=Add-PnPField -List $listTitle -DisplayName
$listSourcePostfixFieldTitle -InternalName $listSourcePostfixFieldInternalName
-Type Text -Group $listfieldgroup -AddToDefaultView
-Required
}
#TargetColumn
foreach($field in $getListFields)
{
if($field.InternalName -eq $listTargetColumnFieldInternalName)
{
$tag=$tag+1;
}
}
if($tag)
{
write-host -ForegroundColor Magenta $listTargetColumnFieldTitle "-List
Field Already exists"
}
else
{
$fielditem=Add-PnPField -List $listTitle -DisplayName
$listTargetColumnFieldTitle -InternalName $listTargetColumnFieldInternalName
-Type Text -Group $listfieldgroup -AddToDefaultView
-Required
}
}
}
catch
{
write-host $_.Exception.Message;
}
}
function
AddListGUIDsToCodificationConfigLIst()
{
try
{
foreach($outCodificationItem in $outCodificationItems)
{
$semicolonpos=$outCodificationItem.IndexOf(";")
$listCodificationGUIDvalue=$outCodificationItem.Substring(0, $semicolonpos)
$targetLibName=$outCodificationItem.Substring($semicolonpos+1)
$listCodificationGUIDvaluearr="{"+$listCodificationGUIDvalue+"}"
Write-Host $listCodificationGUIDvaluearr
$spCodificationQuery="<View
Scope=`"RecursiveAll`"><Query><Where><Eq><FieldRef
Name = 'Title'/><Value Type
='Text'>"+$listCodificationGUIDvaluearr+"</Value></Eq></Where></Query></View>"
$listCodificationItems = Get-PnPListItem -List $configCodificationListUrl
-Query
$spCodificationQuery
write-host
$listCodificationItems.Count
$listCodificationItemsCount=$listCodificationItems.Count
if($listCodificationItemsCount -eq 0)
{
write-host -ForegroundColor Green "Adding Target Library details to
Codification Config
List"
$newItem = Add-PnPListItem -List
$configCodificationListTitle
$itmfield=Set-PnPListItem -List $configCodificationListTitle -Identity $newItem
-Values @{"Title" = $listCodificationGUIDvaluearr;$configCodificationListWebUrlColumnName=$siteURL;$configCodificationListSiteUrlColumnName=$siteConfigURL;$configCodificationListFormatDigitColumnName=$configCodificationListFormatDigitColumnValue;$configCodificationListLibraryColumnName=$targetLibName}
}
elseif($listCodificationItemsCount -eq 1)
{
write-host -ForegroundColor Magenta $listCodificationGUIDvaluearr "Already
Exists"
}
}
}
catch
{
write-host $_.Exception.Message;
}
}
#################################################################################################################
#################################################################Add
the Web Parts #####################################
function AddWebPart()
{
try
{
write-host -ForegroundColor Green "Adding Web Parts"
# Loop through Web Parts XML node
foreach($webpart in $webparts.AddWebPart)
{
$webPartRelativePageUrl=$webpart.RelativePageUrl
$webPartPath=$webpart.WebPartPath
$webPartTitle=$webpart.Title
$webPartContentLink=$webpart.ContentLink
$getwebpart=Get-PnPWebPart -ServerRelativePageUrl $webPartRelativePageUrl
-Identity
$webPartTitle
if($getwebpart)
{
write-host -ForegroundColor Magenta $webPartTitle "-Web Part Already
exists"
$webpart = Get-PnPWebPart -ServerRelativePageUrl $webPartRelativePageUrl
-Identity
$webPartTitle
$webpartId=$webpart.Id
Set-PnPWebPartProperty -ServerRelativePageUrl $webPartRelativePageUrl -Identity
$webpartId -Key ContentLink -Value $webPartContentLink
write-host -ForegroundColor Magenta $webPartTitle "-Web Part ContentLink
has been updated"
}
else
{
Add-PnPWebPartToWebPartPage -ServerRelativePageUrl $webPartRelativePageUrl
-Path $webPartPath -ZoneId "Header" -ZoneIndex 1
write-host -ForegroundColor Magenta $webPartTitle "-Web Part has been
Added"
$webpart = Get-PnPWebPart -ServerRelativePageUrl $webPartRelativePageUrl
-Identity
$webPartTitle
$webpartId=$webpart.Id
Set-PnPWebPartProperty -ServerRelativePageUrl $webPartRelativePageUrl -Identity
$webpartId -Key ContentLink -Value $webPartContentLink
write-host -ForegroundColor Magenta $webPartTitle "-Web Part ContentLink
has been
updated"
}
}
}
catch
{
write-host $_.Exception.Message;
}
}
#######################################################
Create Configuration List#############################
function
CreateChronoConfigList()
{
try
{
write-host -ForegroundColor Green "Creating Chrono Config List"
$getChronoConfigList=Get-PnPList -Identity $configChronoListUrl
#
Check if list exists
if($getChronoConfigList)
{
write-host
-ForegroundColor Magenta $configChronoListUrl " - Chrono Config List
already exists"
}
else
{
#
Create new
list
write-host -ForegroundColor Magenta "Creating Chrono
Config list: " $configChronoListUrl
New-PnPList -Title $configChronoListTitle -Url $configChronoListUrl
-Template $configChronoListTemplate
}
}
catch
{
write-host $_.Exception.Message;
}
}
#################################################################################################################
#################################################################Create
Chrono Configuration List Fields#####################################
function
CreateChronoConfigListFields()
{
try
{
write-host -ForegroundColor Green "Creating Chrono Config List
Fields"
# Loop through List Fields XML node
foreach($ChronoConfiglistfield in $ChronoConfiglistfields.ChronoConfigListField)
{
# Get List Field node parameters
$ChronoConfiglistfieldTitle=$ChronoConfiglistfield.Title
$ChronoConfiglistfieldinternalname=$ChronoConfiglistfield.InternalName
$ChronoConfiglistfieldgroup=$ChronoConfiglistfield.Group
$ChronoConfiglistfieldtype=$ChronoConfiglistfield.Type
$getChronoConfigListFields=Get-PnPField -List $configChronoListUrl
foreach($field in $getChronoConfigListFields)
{
if($field.InternalName -eq $ChronoConfiglistfieldinternalname)
{
$tag=$tag+1;
}
}
if($tag)
{
write-host -ForegroundColor Magenta $ChronoConfiglistfieldTitle "-List
Field Already exists"
}
else
{
Add-PnPField -List $configChronoListTitle -DisplayName
$ChronoConfiglistfieldTitle -InternalName $ChronoConfiglistfieldinternalname
-Type $ChronoConfiglistfieldtype -Group $ChronoConfiglistfieldgroup
-AddToDefaultView
}
}
}
catch
{
write-host $_.Exception.Message;
}
}
function
HideChronoConfiglist()
{
try
{
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client")
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client.Runtime")
write-host -ForegroundColor Green "Get Credentials and connect to SP
Online Root site: " $siteConfigURL
# Convert password to secure string
$secureStringConfigPwd = ConvertTo-SecureString -AsPlainText $passwordConfig
-Force
#Setup Credentials to connect
$credentialsConfig = New-Object
Microsoft.SharePoint.Client.SharePointOnlineCredentials($userNameConfig,$secureStringConfigPwd)
#Set up the context
$context = New-Object Microsoft.SharePoint.Client.ClientContext($siteConfigURL)
$context.Credentials = $credentialsConfig
#Get the List
$list = $context.Web.Lists.GetByTitle($configCodificationListTitle)
$list.Hidden = $true
$list.Update()
$context.ExecuteQuery()
Write-Host "Chrono Config List Hidden Successfully!"
}
catch
{
write-host $_.Exception.Message;
}
}
#################################################################Create
Target Chrono Lists#####################################
function
CreateTargetLists()
{
try
{
write-host -ForegroundColor Green "Creating Target Lists"
# Loop through List XML node
foreach($chronotargetlist in $chronotargetlists.ChronoTargetList)
{
# Get List node parameters
$listChronoTitle=$chronotargetlist.Title
$listChronoURL=$chronotargetlist.URL
$listChronoTemplate=$chronotargetlist.Template
$listItemChronoTemplate=$chronotargetlist.ContentType
$listChronoFieldTitle=$chronotargetlist.ListFieldTitle
$listChronoFieldInternalName=$chronotargetlist.ListFieldInternalName
$listChronoFieldGroup=$chronotargetlist.ListFieldGroup
$listChronoFieldIncrementValue=$chronotargetlist.ListFieldIncrementValue
# Get the list object
$getChronoList=Get-PnPList -Identity $listChronoURL
$getChronoListFields=Get-PnPField -List
$listChronoTitle
# Check if list exists
if($getChronoList)
{
write-host -ForegroundColor Magenta $listChronoURL " -
List already exists"
$listGUID=Get-PnPList -Identity
$listChronoURL
$outChronoItems.Add($listGUID.Id.ToString()+";"+$listChronoFieldTitle+":"+$listChronoFieldIncrementValue);
$outChronoItems.ToArray()
if($listTemplate -eq "DocumentLibrary")
{
write-host $listChronoTitle "is a document library"
$doclb=Set-PnPList -Identity $listChronoURL -EnableContentTypes $true
}
}
else
{
# Create new list
write-host -ForegroundColor Magenta "Target list is not
available: " $listChronoURL
exit
}
foreach($field in $getChronoListFields)
{
if($field.InternalName -eq $listChronoFieldInternalName)
{
$tag=$tag+1;
}
}
if($tag)
{
write-host -ForegroundColor Magenta $listChronoFieldTitle "-List Field
Already exists"
}
else
{
$fielditem=Add-PnPField -List $listChronoTitle -DisplayName
$listChronoFieldTitle -InternalName $listChronoFieldInternalName -Type Number
-Group $listChronoFieldGroup -AddToDefaultView
-Required
}
}
}
catch
{
write-host $_.Exception.Message;
}
}
function
AddListGUIDsToChronoConfigLIst()
{
try
{
foreach($outChronoItem in $outChronoItems)
{
$semicolonpos=$outChronoItem.IndexOf(";")
$colonpos=$outChronoItem.IndexOf(":")
$listChronoGUIDvalue=$outChronoItem.Substring(0,
$semicolonpos)
$chronofieldpattern=
";(.*):"
$chronoFieldValue=[regex]::match($outChronoItem,
$chronofieldpattern).Groups[1].Value
$chronoFieldIncrementValue=$outChronoItem.Substring($colonpos+1)
$listChronoGUIDvaluearr="{"+$listChronoGUIDvalue+"}"
$spChronoQuery="<View Scope=`"RecursiveAll`"><Query><Where><Eq><FieldRef
Name = 'Title'/><Value Type
='Text'>"+$listChronoGUIDvaluearr+"</Value></Eq></Where></Query></View>"
$listChronoItems = Get-PnPListItem -List $configChronoListUrl -Query
$spChronoQuery
$listChronoItemsCount=$listChronoItems.Count
if($listChronoItemsCount -eq 0)
{
$newItem = Add-PnPListItem -List
$configChronoListTitle
$itmfield=Set-PnPListItem -List $configChronoListTitle -Identity $newItem
-Values @{"Title" = $listChronoGUIDvaluearr;
$configListChronoFieldColumnName = $chronoFieldValue;
$configListChronoFieldIncrementValue=$chronoFieldIncrementValue}
}
elseif($listChronoItemsCount -eq 1)
{
write-host -ForegroundColor Magenta $listChronoGUIDvaluearr "Already
Exists"
}
}
}
catch
{
write-host $_.Exception.Message;
}
}
#################################################################################################################
function
SetClassicExperience()
{
try
{
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client")
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client.Runtime")
$secureStringPwd = ConvertTo-SecureString -AsPlainText $password -Force
#Setup Credentials to connect
$credentials = New-Object
Microsoft.SharePoint.Client.SharePointOnlineCredentials($userName,$secureStringPwd)
#Set up the context
$clientContext = New-Object Microsoft.SharePoint.Client.ClientContext($siteURL)
$clientContext.Credentials = $credentials
$lists=$clientContext.Web.Lists
$clientContext.Load($lists)
$clientContext.ExecuteQuery()
foreach($list in $lists)
{
foreach($codificationtargetlib in
$codificationtargetlibs.CodificationTargetLib)
{
# Get List node parameters
$codificationdocLibTitle=$codificationtargetlib.Title
#write-host $codificationdocLibTitle
if($list.Title -eq $codificationdocLibTitle)
{
$list.ListExperienceOptions = "ClassicExperience"
$list.Update()
$clientContext.ExecuteQuery()
write-host -ForegroundColor Green "Classic Experience has been applied
to"$list.Title
}
}
}
}
catch
{
write-host $_.Exception.Message;
}
}
#################################################################
Initiate #####################################
function Initiate()
{
write-host
-ForegroundColor Green "Initiating the script..................
"
#
Get Credentials and connect to SP Online site
GetConfigCredentials
#
Call the required functions
CreateChronoConfigList
CreateChronoConfigListFields
#HideChronoConfiglist
CreateCodificationConfigList
CreateCodificationConfigListFields
#HideCodificationConfiglist
GetCredentials
CreateTargetLists
GetConfigCredentials
AddListGUIDsToChronoConfigLIst
GetCredentials
CreateTargetLibs
GetConfigCredentials
AddListGUIDsToCodificationConfigLIst
GetCredentials
AddWebPart
SetClassicExperience
#
Disconnect from the server
Disconnect-PnPOnline
write-host
-ForegroundColor Green "Completed!!!!"
}
#################################################################################################################
Initiate
Stop-Transcript
1/Chrono Configuration list with
required columns and values
2/ Codification Configuration
list with required columns and values
No comments:
Post a Comment