You are currently working on UAT 

Tridion Docs Architectural Runway Update plus latest ISHRemote news and example scripts (TXS2021)

Hi all,

The technology heavy virtual conference called Tridion Experience Summit (TXS2021) is in progress. I believe you can still register on https://www.rws.com/TXS2021/ albeit to make sure that you are on the mailing list for the next one. The recordings will stick around there for 60 days, so I was told. Once I have the proper deep link, I will update this post, videos starting with "TXS 2021" on https://community.rws.com/product-groups/tridion/tridion-docs/m/videos 

This blog post is to highlight the architectural session regarding Tridion Docs (formerly known as Trisoft InfoShare, LiveContent Architect, Knowledge Center) with a focus on the API - SOAP and REST flavoured.
Besides that an update of what is already available in ISHRemote v0.14 and a hands on explanation on the plans forward for ISHRemote as posted on https://community.rws.com/product-groups/tridion/tridion-docs/b/weblog/posts/automating-on-tridion-docs---the-plan-of-ishremote-v7-0 

Below the example code I demo'd during this webinar.

# 20211208 TXS 2021 by ddemeyer
#
# Getting Started
#

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12  # as PSGallery switched to HTTPS over Tls12 and higher
Install-Module ISHRemote -Repository PSGallery -Scope CurrentUser -Force 

New-IshSession -WsBaseUrl https://example.com/ISHWS/ -IshUserName admin -IshPassword admin
# or 
New-IshSession -WsBaseUrl https://example.com/ISHWS/  # Relying on Network Credentials
# or
$ishSession = New-IshSession -WsBaseUrl https://lvndevdemeyer.../ISHWSDita/ -PSCredential admin2  #-IgnoreSslPolicyErrors

Get-Command -Module ISHRemote
Get-Command -Module ISHRemote | Out-GridView
Get-Help -Name New-IshSession -Examples

# Having an implicit session means you get auto complete
Set-IshMetadataField -Name ...
$ishSession


#
# End-of-line is preferably pipe (|) instead of escape next character (back tick `)
# Initialize connection, drop in temp $ishobjects, you get autocomplete
#


#
# Managing Annotations
#
# using ImportExcel module

Get-IshPublicationOutput -LogicalId GUID-03081B9A-11E4-4862-845B-27339E0C400D
Get-IshAnnotation -IshObject (Get-IshPublicationOutput -LogicalId GUID-03081B9A-11E4-4862-845B-27339E0C400D) | Export-Excel

$metadataFilter = Set-IshMetadataFilterField -Name DOC-LANGUAGE -Level Lng -FilterOperator Equal -Value en
$ishObjects = Get-IshDocumentObj -LogicalId GUID-F6DEEACC-8925-46B3-9EF3-5DAB76B4386F -MetadataFilter $metadataFilter
Get-IshAnnotation -IshObject $ishObjects | Export-Excel



#
# Walking the folder structure
#

$metadataFilter = Set-IshMetadataFilterField -Level Lng -Name CHECKED-OUT-BY -FilterOperator In -Value ("Admin, Admin2")
$requestedMetadata = Set-IshRequestedMetadataField -Level Lng -Name FISHSTATUSTYPE
$ishObjects = Get-IshFolder -FolderPath "\General\Mobile Phones Demo\" -FolderTypeFilter @("ISHModule", "ISHMasterDoc", "ISHLibrary", "ISHIllustration", "ISHTemplate")  -Recurse | 
Foreach-Object {
    Write-Host ("Handling folder[$($PSItem.name)]...")
    $ishObjects = Get-IshFolderContent -IshFolder $PSItem -VersionFilter Latest -LanguagesFilter @("en","fr") -MetadataFilter $metadataFilter -RequestedMetadata $requestedMetadata
    # Create some report, some extra checks, a transformation, etc
    Write-Output $ishObjects
} |
Out-GridView -PassThru



#
# Your card-field setup, including custom fields up to IMetadataBinding (IHandler)
#
New-IshSession -WsBaseUrl https://mecdev14qa.../ISHWSSQL2019/ -IshUserName admin -IshPassword admin #15.0.0
Get-IshTypeFieldDefinition | Out-GridView



#
# Simple Search Query, relying on Full-Text-Index
#

Search-IshDocumentObj -MaxHitsToReturn 2000 -SimpleQuery "red AND blue OR green" |
Out-GridView -PassThru

Search-IshDocumentObj -Count -SimpleQuery "red AND blue OR green"


#
# Rich Search Query, relying on Full-Text-Index, _but_ relying on the SOAP-WCF xml models
#
# https://docs.rws.com/955882/651598/tridion-docs-14-sp4/searchquery
$xmlQueryAllVersions = @"
<ishquery>
    <and>
      <ishfield name='ISHANYWHERE' level='none' ishoperator='contains'>*</ishfield>
    </and>
    <ishsort>
      <ishsortfield name='ISHSCORE' level='none' ishorder='d'/>
      <ishsortfield name='FTITLE' level='logical' ishorder='d'/>
    </ishsort>
    <ishobjectfilters>
      <ishversionfilter>AllVersions</ishversionfilter>
      <ishtypefilter>ISHModule</ishtypefilter>
      <ishtypefilter>ISHMasterDoc</ishtypefilter>
      <ishtypefilter>ISHLibrary</ishtypefilter>
      <ishtypefilter>ISHTemplate</ishtypefilter>
      <ishtypefilter>ISHIllustration</ishtypefilter>
      <ishlanguagefilter>en</ishlanguagefilter>
    </ishobjectfilters>
</ishquery>
"@
$ishObject = Search-IshDocumentObj -MaxHitsToReturn 1000 -XmlQuery $xmlQueryAllVersions
$ishObject[0] | Format-List
$ishObject[0].ftitle_logical_value
$ishObject.ftitle_logical_value



#
# PowerShell (Core) AND/OR Windows PowerShell Demo
#
dir C:\GITHUB\ISHRemote\Source\ISHRemote\Trisoft.ISHRemote\bin\Debug\ISHRemote 
Import-Module "C:\GITHUB\ISHRemote\Source\ISHRemote\Trisoft.ISHRemote\bin\Debug\ISHRemote"  # Loading development module
New-IshSession -WsBaseUrl https://mecdev14qa.../ISHWSSQL2019/ -IshUserName admin -IshPassword admin  # 15.0.0
Get-Command -Module ISHRemote
Get-Help -Name New-IshSession -Full

Besides this session titled "Sneak previews along the way to modernized architecture in Tridion Docs" I would also highlight:

  1. Future proof your content with Semantic AI in Tridion
  2. Prioritizing developers with upcoming new OpenAPI in Tridion Docs
  3. Keeping track of organization-wide comments in Review Space
  4. Streamlining deployment and automating business tasks with Tridion Docs

Enjoy the holidays!

Dave