|
POST
|
@JeffK there are a lot of steps involved. I would recommend assistance from Esri, or a possibly a business partner. At a high level the steps are:
Backup databases
Restore databases to new SQL instance
Re-sync database users
Update existing Pro projects to reference new instance (recommend python script)
Update ArcGIS Server Data Store connections
Optionally, update the ArcGIS Server service's metadata
... View more
11-06-2024
11:52 AM
|
1
|
0
|
1447
|
|
POST
|
@TimoT I don't know the specific reasons why there are limitations (i.e. character limit, no special characters other than period), but this password is used to as the admin password for Portal's internal PostgreSQL database:
I'd have to check the later releases, but in earlier versions of Enterprise, when you attempt to migrate a Enterprise to a new set of servers using the webgisdr utility, the new Enterprise environment must have the same password for this internal database for the webgisdr to import successfully.
... View more
11-06-2024
10:43 AM
|
0
|
3
|
1683
|
|
POST
|
Hi @JeffK,
Are you moving SQL Server to a new server as well? If so, I'm assuming the server name is new, and therefore the SQL instance name is different. In ArcGIS Pro, you'll need to update the database connections to use the new instance. In Enterprise, you'll need to update the Data Store connections with a database connection file that is referencing the new SQL instance.
... View more
11-06-2024
10:26 AM
|
2
|
2
|
1464
|
|
DOC
|
@VigneshGopalakrishnan it looks like Enterprise 10.8.1 handles the config.json slightly different. To fix the error you're receiving, perform the following steps:
1. Right-click on the Copy Experience Builder App script tool > Properties
2. Select the Validation tab
3. Delete everything and paste in the below:
import arcpy, json
from arcgis.gis import GIS
from arcgis.gis import User
class ToolValidator:
# Class to add custom behavior and properties to the tool and tool parameters.
def __init__(self):
# set self.params for use in other function
self.params = arcpy.GetParameterInfo()
def initializeParameters(self):
# Customize parameter properties.
# This gets called when the tool is opened.
return
def disableIWA(self, paramIndex1, paramIndex2):
'''Disable IWA option if connecting to AGOL'''
if 'arcgis.com' in self.params[paramIndex1].value:
self.params[paramIndex2].enabled = False
else:
self.params[paramIndex2].enabled = True
def disableUsernamePassword(self, paramIndex1, paramIndex2, paramIndex3):
'''Disable username/password if using Windows Authentication'''
if self.params[paramIndex1].value == True:
self.params[paramIndex2].enabled = False
self.params[paramIndex3].enabled = False
if self.params[paramIndex1].value == False:
self.params[paramIndex2].enabled = True
self.params[paramIndex3].enabled = True
def usersDropDown(self, source, paramIndex1, paramIndex2):
'''Populate User Dropdown'''
sourceUserList = []
source_users = source.users.search(max_users=100000)
for user in source_users:
if user.user_types()['name'] not in ('Viewer', 'Editor', 'Field Worker'):
sourceUserList.append(user.username)
sourceUserFilter = self.params[paramIndex2].filter
sourceUserFilter.list = sourceUserList
def getUserContent(self, source, paramIndex1, paramIndex2):
'''Get User Content'''
contentList = []
username = str(self.params[paramIndex1].value)
username = username.replace("'", '')
user = User(source, username)
user_content = user.items(max_items=100000)
for item in user_content:
if item.type == 'Web Experience':
contentList.append(
str(item.title) + ' - ' + str(item.type) + ' - ' + str(item.id))
folders = user.folders
for folder in folders:
user_content = user.items(folder=folder['title'], max_items=100000)
for item in user_content:
if item.type == 'Web Experience':
contentList.append(
str(item.title) + ' - ' + str(item.type) + ' - ' + str(item.id))
contentList.sort()
contentFilter = self.params[paramIndex2].filter
contentFilter.list = contentList
def getTargetUserFolder(self, target, paramIndex1, paramIndex2):
'''Get Target User Folder'''
targetUserFolderList = ['ROOT']
user = User(target, self.params[paramIndex1].value)
for folder in user.folders:
targetUserFolderList.append(folder['title'])
targetUserFolderListFilter = self.params[paramIndex2].filter
targetUserFolderListFilter.list = targetUserFolderList
def updateParameters(self):
# Modify parameter values and properties.
# This gets called each time a parameter is modified, before
# standard validation.
# Remove Windows Authentication option for source if arcgis.com in URL
if not self.params[0].hasBeenValidated:
self.disableIWA(0, 1)
# Disable username/password for source if Windows Authentication option is True
for i in range(0, 2):
if not self.params[i].hasBeenValidated:
self.disableUsernamePassword(1, 2, 3)
# Connect to portal using username/password to populate dropdown for source users
if self.params[1].value == False:
for i in (0, 2, 3):
if not self.params[i].hasBeenValidated:
if self.params[0].value and self.params[2].value and self.params[3].value:
source = GIS(self.params[0].value, self.params[2].value, self.params[3].value,
verify_cert=False)
self.usersDropDown(source, 0, 4)
# Connect to portal using Windows Authentication to populate dropdown for source users
elif self.params[1].value == True:
if not self.params[1].hasBeenValidated:
if self.params[0].value:
source = GIS(self.params[0].value, verify_cert=False)
self.usersDropDown(source, 0, 4)
# Dropdown for source user's content
if self.params[1].value == False:
for i in (0, 2, 3, 4):
if not self.params[i].hasBeenValidated:
if self.params[0].value and self.params[4].value:
source = GIS(self.params[0].value, self.params[2].value, self.params[3].value,
verify_cert=False)
self.getUserContent(source, 4, 5)
elif self.params[1].value == True:
for i in (0, 1, 4):
if not self.params[i].hasBeenValidated:
if self.params[0].value and self.params[4].value:
source = GIS(self.params[0].value, verify_cert=False)
self.getUserContent(source, 4, 5)
# Get Web Map IDs in Experience Builder App
webMapVtab = self.params[6]
embedVtab = self.params[7]
if self.params[5].altered and not self.params[5].hasBeenValidated:
if self.params[1].value == False:
source = GIS(self.params[0].value, self.params[2].value, self.params[3].value, verify_cert=False)
elif self.params[1].value == True:
source = GIS(self.params[0].value, verify_cert=False)
webMapIdList = []
embededURLList = []
expAppID = self.params[5].value.split(' - ')[-1]
expApp = source.content.get(expAppID)
expAppJSON = expApp.get_data(try_json=True)
jsonFile = expApp.resources.get(file='config/config.json', try_json=True)
with open(jsonFile, 'r') as file:
resourceJSON = json.load(file)
# Create list to store data sources from Config.JSON file
for val in resourceJSON['dataSources']:
webmaps = []
if resourceJSON['dataSources'][val]['type'] == 'WEB_MAP':
webMapID = (resourceJSON['dataSources'][val]['itemId'])
webmaps.append(webMapID)
webmaps.append('')
if len(webmaps) > 0:
webMapIdList.append(webmaps)
for widget in expAppJSON['widgets']:
embededURLs = []
try:
embedURL = expAppJSON['widgets'][widget]['config']['expression']
embedURL = embedURL.split('>')[1]
embedURL = embedURL.split('<')[0]
embededURLs.append(embedURL)
embededURLs.append('')
except:
pass
if len(embededURLs) > 0:
embededURLList.append(embededURLs)
for val in resourceJSON['dataSources']:
otherDataSources = []
try:
serviceURL = resourceJSON['dataSources'][val]['url']
if serviceURL not in otherDataSources:
otherDataSources.append(serviceURL)
otherDataSources.append('')
except:
pass
if len(otherDataSources) > 0:
embededURLList.append(otherDataSources)
# Remove empty lists
for webmap in webMapIdList:
if len(webmap) == 0:
webMapIdList.remove(webmap)
for embed in embededURLList:
if len(embed) == 0:
embededURLList.remove(embed)
# Remove duplicates from list
embededURLList = [i for n, i in enumerate(embededURLList) if i not in embededURLList[:n]]
webMapVtab.values = webMapIdList
embedVtab.values = embededURLList
# Remove Windows Authentication option for target if arcgis.com in URL
if not self.params[8].hasBeenValidated:
self.disableIWA(8, 9)
# Disable username/password for target if Windows Authentication option is True
for i in range(8, 10):
if not self.params[i].hasBeenValidated:
self.disableUsernamePassword(9, 10, 11)
# Connect to portal using username/password to populate dropdown for target users
if self.params[9].value == False:
for i in (8, 10, 11):
if not self.params[i].hasBeenValidated:
if self.params[8].value and self.params[10].value and self.params[11].value:
target = GIS(self.params[8].value, self.params[10].value, self.params[11].value,
verify_cert=False)
self.usersDropDown(target, 8, 12)
# Connect to portal using Windows Authentication to populate dropdown for target users
elif self.params[9].value == True:
if not self.params[9].hasBeenValidated:
if self.params[8].value:
target = GIS(self.params[8].value, verify_cert=False)
self.usersDropDown(target, 8, 12)
# Connect to portal using username/password to populate dropdown for Target User's folder
if self.params[9].value == False:
for i in (8, 10, 11, 12):
if not self.params[i].hasBeenValidated:
if self.params[12].value:
target = GIS(self.params[8].value, self.params[10].value, self.params[11].value,
verify_cert=False)
self.getTargetUserFolder(target, 12, 13)
# Connect to portal using Windows Authentication to populate dropdown for Target User's folder
elif self.params[9].value == True:
for i in (8, 9, 12):
if not self.params[i].hasBeenValidated:
if self.params[12].value:
target = GIS(self.params[8].value, verify_cert=False)
self.getTargetUserFolder(target, 12, 13)
return
def updateMessages(self):
# Customize messages for the parameters.
# This gets called after standard validation.
return
# def isLicensed(self):
# # set tool isLicensed.
# return True
# def postExecute(self):
# # This method takes place after outputs are processed and
# # added to the display.
# return
... View more
11-03-2024
07:02 AM
|
0
|
0
|
35407
|
|
POST
|
Hi @PanGIS,
1. What type of collaboration are you creating (i.e. Enterprise --> AGOL, AGOL --> Enterprise, or bi-directional)?
2. When you set up the collaboration, did you specify to share the items as referenced or copies?
3. What version of ArcGIS Enterprise are you running?
... View more
10-31-2024
11:54 AM
|
0
|
2
|
1012
|
|
DOC
|
@VigneshGopalakrishnan the tools may not work for migrating Experience Builder applications between different environments. This should work for hosted feature services, and web maps, but there could be significant changes in applications that are not supported between different versions.
Make sure you click the arrow to download the zip file:
... View more
10-31-2024
06:21 AM
|
0
|
0
|
35512
|
|
DOC
|
@OliviaE thanks for the new data. I downloaded the FGD and published the feature class as a new service. I was then able to successfully run the truncate/append script. Can you try publishing the data as a new service, and test updating the new service using the script?
... View more
10-31-2024
06:15 AM
|
0
|
0
|
17190
|
|
DOC
|
@OliviaE the File Geodatabase is empty when I download and extract the Zip. Can you upload another copy?
... View more
10-30-2024
01:21 PM
|
0
|
0
|
17250
|
|
DOC
|
Hi @OliviaE, no, the size of the data should not be an issue. Can you share your service to an AGOL group and invite my account (jskinner_rats)? I can take a look to see if anything jumps out at me.
... View more
10-30-2024
10:48 AM
|
0
|
0
|
17260
|
|
POST
|
If you specify Add Field Values as Suffix it will handle duplicates by adding an _1, _2, etc.
... View more
10-29-2024
03:23 PM
|
1
|
0
|
1856
|
|
POST
|
Hi @nate0102,
Could you post your code? Below is an example I was able to get to work:
from arcgis.gis import GIS
# Variables
username = 'jskinner_rats'
password = '********'
itemID = '5b86f23053fc40aebb7197ce735a4dfc'
# Connect to portal
print("Connecting to AGOL")
gis = GIS("https://www.arcgis.com", username, password)
# Reference Table
print("Referencing table")
fLayer = gis.content.get(itemID)
editTable = fLayer.tables[0]
addFeatures = [
{
'attributes': {
'lga': 'test',
'scientificName': 'Acacia longifolia',
'classificationLocal': 'Very High Priority',
'localScientific': 'Acacia longifolia'
}
},
{
'attributes': {
'lga': 'test',
'scientificName': 'Amaryllis belladonna',
'classificationLocal': 'High Priority',
'localScientific': 'Amaryllis belladonna'
}
}
]
# Add record
print("Adding records")
for record in addFeatures:
editTable.edit_features(adds=[record])
print(result)
print('Finished')
... View more
10-29-2024
06:43 AM
|
0
|
1
|
1683
|
|
POST
|
Hi @SamBelisleLID1990, take a look at the Export Attachments tool, which is new at ArcGIS Pro version 3.3. This tool provides options on how to handle the name format of the exported attachments:
... View more
10-29-2024
05:54 AM
|
0
|
2
|
1876
|
|
POST
|
Try running the Append with the 'NO_TEST' option for the schema_type parameter.
... View more
10-25-2024
09:57 AM
|
1
|
0
|
1549
|
|
DOC
|
Hi @stevetaylor_perth,
No, the version discrepancy should not be an issue for web maps.
... View more
10-25-2024
05:39 AM
|
0
|
0
|
35764
|
|
POST
|
Hi @CW-GIS can you post an example of your fieldmap file?
Also, have you seen the example of using Field Mappings in the following example?
... View more
10-23-2024
12:22 PM
|
1
|
0
|
1402
|
| Title | Kudos | Posted |
|---|---|---|
| 1 | Wednesday | |
| 4 | 05-07-2020 05:14 PM | |
| 1 | 03-25-2026 04:16 AM | |
| 1 | 03-16-2026 01:00 PM | |
| 1 | 12-22-2025 10:39 AM |
| Online Status |
Offline
|
| Date Last Visited |
Thursday
|