@@ -1792,6 +1792,18 @@ function PrepareSolutionMetadata($solutionMetadataRawContent, $contentResourceDe
17921792 }
17931793 return
17941794 }
1795+
1796+ # Define a helper function to handle null or empty arrays
1797+ function Get-ValidArray ($inputArray ) {
1798+ if ($null -eq $inputArray -or -not $inputArray -or $inputArray.Count -eq 0 ) {
1799+ if (! $global :baseMainTemplate.variables.TemplateEmptyArray ) {
1800+ $global :baseMainTemplate.variables | Add-Member - NotePropertyName " TemplateEmptyArray" - NotePropertyValue " [json('[]')]"
1801+ }
1802+ return " [variables('TemplateEmptyArray')]"
1803+ }
1804+ return $inputArray
1805+ }
1806+
17951807 try {
17961808 # BELOW IS OLD WAY OF CCP CONNECTOR CODE I.E CLV1 WHICH ONLY HAS CONNECTORUICONFIG AND POLLER CONFIG SECTION IN SOURCE
17971809 $ccpPollingConfig = [PSCustomObject ] @ {}
@@ -1811,6 +1823,19 @@ function PrepareSolutionMetadata($solutionMetadataRawContent, $contentResourceDe
18111823 {
18121824 $ccpPollingConfig = $null
18131825 $ccpConnector = $false
1826+
1827+ if ($null -eq $connectorData.graphQueries -or $connectorData.graphQueries.Count -eq 0 ) {
1828+ $connectorData.graphQueries = Get-ValidArray $connectorData.graphQueries
1829+ }
1830+
1831+ if ($null -eq $connectorData.dataTypes -or $connectorData.dataTypes.Count -eq 0 ) {
1832+ $connectorData.dataTypes = Get-ValidArray $connectorData.dataTypes
1833+ }
1834+
1835+ if ($null -eq $connectorData.sampleQueries -or $connectorData.sampleQueries.Count -eq 0 ) {
1836+ $connectorData.sampleQueries = Get-ValidArray $connectorData.sampleQueries
1837+ }
1838+
18141839 $templateSpecConnectorData = $connectorData
18151840 }
18161841 }
@@ -2081,12 +2106,14 @@ function PrepareSolutionMetadata($solutionMetadataRawContent, $contentResourceDe
20812106 $connectorObj = [PSCustomObject ]@ {}
20822107 # If direct title is available, assume standard connector format
20832108 if ($connectorData.title ) {
2109+ $graphQueriesValue = Get-ValidArray $connectorData.graphQueries ;
2110+ $dataTypesValue = Get-ValidArray $connectorData.dataTypes ;
20842111 $standardConnectorUiConfig = [PSCustomObject ]@ {
20852112 title = $connectorData.title ;
20862113 publisher = $connectorData.publisher ;
20872114 descriptionMarkdown = $connectorData.descriptionMarkdown ;
2088- graphQueries = $connectorData .graphQueries ;
2089- dataTypes = $connectorData .dataTypes ;
2115+ graphQueries = $graphQueriesValue ;
2116+ dataTypes = $dataTypesValue ;
20902117 # connectivityCriterias = $connectorData.connectivityCriterias;
20912118 }
20922119
@@ -2101,7 +2128,8 @@ function PrepareSolutionMetadata($solutionMetadataRawContent, $contentResourceDe
21012128
21022129 if (! $is1PConnector )
21032130 {
2104- $standardConnectorUiConfig | Add-Member - NotePropertyName " sampleQueries" - NotePropertyValue $connectorData.sampleQueries ;
2131+ $sampleQueriesValue = Get-ValidArray $connectorData.sampleQueries
2132+ $standardConnectorUiConfig | Add-Member - NotePropertyName " sampleQueries" - NotePropertyValue $sampleQueriesValue ;
21052133 $standardConnectorUiConfig | Add-Member - NotePropertyName " availability" - NotePropertyValue $connectorData.availability ;
21062134 $standardConnectorUiConfig | Add-Member - NotePropertyName " permissions" - NotePropertyValue $connectorData.permissions ;
21072135 $standardConnectorUiConfig | Add-Member - NotePropertyName " instructionSteps" - NotePropertyValue $connectorData.instructionSteps ;
@@ -2179,7 +2207,13 @@ function PrepareSolutionMetadata($solutionMetadataRawContent, $contentResourceDe
21792207 }
21802208 return $typeResult
21812209 }
2182- $connectorDataType = $ (getConnectorDataTypes $connectorData.dataTypes )
2210+
2211+ if ($connectorData.dataTypes -eq " [variables('TemplateEmptyArray')]" ) {
2212+ $connectorDataType = " custom log"
2213+ } else {
2214+ $connectorDataType = $ (getConnectorDataTypes $connectorData.dataTypes )
2215+ }
2216+
21832217 $isParserAvailable = $ ($contentToImport.Parsers -and ($contentToImport.Parsers.Count -gt 0 ))
21842218 $baseDescriptionText = " This Solution installs the data connector for $solutionName . You can get $solutionName $connectorDataType data in your Microsoft Sentinel workspace. Configure and enable this data connector in the Data Connector gallery after this Solution deploys."
21852219 $customLogsText = " $baseDescriptionText This data connector creates custom log table(s) $ ( getAllDataTypeNames $connectorData.dataTypes ) in your Microsoft Sentinel / Azure Log Analytics workspace."
0 commit comments